Merge pull request #799 from kebby/master
authorMarek Safar <marek.safar@gmail.com>
Tue, 12 Nov 2013 08:38:48 +0000 (00:38 -0800)
committerMarek Safar <marek.safar@gmail.com>
Tue, 12 Nov 2013 08:38:48 +0000 (00:38 -0800)
Task.WhenAllCore<T> now handles empty argument list correctly. Fixes #15956

2503 files changed:
.gitignore
Makefile.am
README [deleted file]
README.md [new file with mode: 0644]
acinclude.m4
autogen.sh
configure.in
data/Browsers/.gitattributes [new file with mode: 0644]
data/Browsers/ChangeLog [new file with mode: 0644]
data/Browsers/Compat.browser [new file with mode: 0644]
data/config.in
data/net_2_0/Browsers/.gitattributes [deleted file]
data/net_2_0/Browsers/ChangeLog [deleted file]
data/net_2_0/Browsers/Compat.browser [deleted file]
data/net_2_0/Browsers/Makefile.am
data/net_4_0/Browsers/.gitignore [new file with mode: 0644]
data/net_4_0/Browsers/Makefile.am [new file with mode: 0644]
data/net_4_0/Makefile.am
data/net_4_5/Browsers/.gitignore [new file with mode: 0644]
data/net_4_5/Browsers/Makefile.am [new file with mode: 0644]
data/net_4_5/Makefile.am
docs/current-api
docs/public-api
eglib/acinclude.m4
eglib/configure.ac
eglib/src/gfile-posix.c
eglib/src/gfile-win32.c
eglib/src/giconv.c
eglib/src/gmodule-win32.c
eglib/src/gstring.c
external/cecil
external/ikvm
libgc/acinclude.m4
libgc/alloc.c
libgc/include/private/gc_locks.h
libgc/include/private/gcconfig.h
libgc/include/private/pthread_stop_world.h
libgc/obj_map.c
libgc/pthread_stop_world.c
libgc/ptr_chck.c
m4/po.m4
man/mkbundle.1
man/mono.1
mcs/build/common/Consts.cs.in
mcs/build/gensources.sh
mcs/build/library.make
mcs/build/profiles/basic.make
mcs/build/profiles/mobile_static.make [new file with mode: 0644]
mcs/build/profiles/monotouch.make
mcs/build/profiles/monotouch_runtime.make
mcs/build/rules.make
mcs/class/Accessibility/Accessibility-net_2_0.csproj
mcs/class/Accessibility/Accessibility-net_4_0.csproj
mcs/class/Accessibility/Accessibility-net_4_5.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_2_0.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_0.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-net_4_5.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-tests-net_2_0.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-tests-net_4_0.csproj
mcs/class/Commons.Xml.Relaxng/Commons.Xml.Relaxng-tests-net_4_5.csproj
mcs/class/Compat.ICSharpCode.SharpZipLib/Compat.ICSharpCode.SharpZipLib-net_2_0.csproj
mcs/class/Cscompmgd/Cscompmgd-net_2_0.csproj
mcs/class/Cscompmgd/Cscompmgd-net_4_0.csproj
mcs/class/Cscompmgd/Cscompmgd-net_4_5.csproj
mcs/class/Cscompmgd/Cscompmgd-tests-net_2_0.csproj
mcs/class/Cscompmgd/Cscompmgd-tests-net_4_0.csproj
mcs/class/Cscompmgd/Cscompmgd-tests-net_4_5.csproj
mcs/class/CustomMarshalers/CustomMarshalers-net_2_0.csproj
mcs/class/CustomMarshalers/CustomMarshalers-net_4_0.csproj
mcs/class/CustomMarshalers/CustomMarshalers-net_4_5.csproj
mcs/class/EntityFramework.SqlServer/EntityFramework.SqlServer-net_4_5.csproj
mcs/class/EntityFramework/EntityFramework-net_4_5.csproj
mcs/class/Facades/Makefile
mcs/class/Facades/System.Collections.Concurrent/AssemblyInfo.cs
mcs/class/Facades/System.Collections.Concurrent/Makefile
mcs/class/Facades/System.Collections.Concurrent/System.Collections.Concurrent.dll.sources
mcs/class/Facades/System.Collections.Concurrent/TypeForwarders.cs
mcs/class/Facades/System.Collections/AssemblyInfo.cs
mcs/class/Facades/System.Collections/Makefile
mcs/class/Facades/System.Collections/System.Collections.dll.sources
mcs/class/Facades/System.Collections/TypeForwarders.cs
mcs/class/Facades/System.ComponentModel.Annotations/AssemblyInfo.cs
mcs/class/Facades/System.ComponentModel.Annotations/Makefile
mcs/class/Facades/System.ComponentModel.Annotations/System.ComponentModel.Annotations.dll.sources
mcs/class/Facades/System.ComponentModel.Annotations/TypeForwarders.cs
mcs/class/Facades/System.ComponentModel.EventBasedAsync/AssemblyInfo.cs
mcs/class/Facades/System.ComponentModel.EventBasedAsync/Makefile
mcs/class/Facades/System.ComponentModel.EventBasedAsync/System.ComponentModel.EventBasedAsync.dll.sources
mcs/class/Facades/System.ComponentModel.EventBasedAsync/TypeForwarders.cs
mcs/class/Facades/System.ComponentModel/AssemblyInfo.cs
mcs/class/Facades/System.ComponentModel/Makefile
mcs/class/Facades/System.ComponentModel/System.ComponentModel.dll.sources
mcs/class/Facades/System.ComponentModel/TypeForwarders.cs
mcs/class/Facades/System.Diagnostics.Contracts/AssemblyInfo.cs
mcs/class/Facades/System.Diagnostics.Contracts/Makefile
mcs/class/Facades/System.Diagnostics.Contracts/System.Diagnostics.Contracts.dll.sources
mcs/class/Facades/System.Diagnostics.Contracts/TypeForwarders.cs
mcs/class/Facades/System.Diagnostics.Debug/AssemblyInfo.cs
mcs/class/Facades/System.Diagnostics.Debug/Makefile
mcs/class/Facades/System.Diagnostics.Debug/System.Diagnostics.Debug.dll.sources
mcs/class/Facades/System.Diagnostics.Debug/TypeForwarders.cs
mcs/class/Facades/System.Diagnostics.Tools/AssemblyInfo.cs
mcs/class/Facades/System.Diagnostics.Tools/Makefile
mcs/class/Facades/System.Diagnostics.Tools/System.Diagnostics.Tools.dll.sources
mcs/class/Facades/System.Diagnostics.Tools/TypeForwarders.cs
mcs/class/Facades/System.Dynamic.Runtime/AssemblyInfo.cs
mcs/class/Facades/System.Dynamic.Runtime/Makefile
mcs/class/Facades/System.Dynamic.Runtime/System.Dynamic.Runtime.dll.sources
mcs/class/Facades/System.Dynamic.Runtime/TypeForwarders.cs
mcs/class/Facades/System.Globalization/AssemblyInfo.cs
mcs/class/Facades/System.Globalization/Makefile
mcs/class/Facades/System.Globalization/System.Globalization.dll.sources
mcs/class/Facades/System.Globalization/TypeForwarders.cs
mcs/class/Facades/System.IO/AssemblyInfo.cs
mcs/class/Facades/System.IO/Makefile
mcs/class/Facades/System.IO/System.IO.dll.sources
mcs/class/Facades/System.IO/TypeForwarders.cs
mcs/class/Facades/System.Linq.Expressions/AssemblyInfo.cs
mcs/class/Facades/System.Linq.Expressions/Makefile
mcs/class/Facades/System.Linq.Expressions/System.Linq.Expressions.dll.sources
mcs/class/Facades/System.Linq.Expressions/TypeForwarders.cs
mcs/class/Facades/System.Linq.Parallel/AssemblyInfo.cs
mcs/class/Facades/System.Linq.Parallel/Makefile
mcs/class/Facades/System.Linq.Parallel/System.Linq.Parallel.dll.sources
mcs/class/Facades/System.Linq.Parallel/TypeForwarders.cs
mcs/class/Facades/System.Linq.Queryable/AssemblyInfo.cs
mcs/class/Facades/System.Linq.Queryable/Makefile
mcs/class/Facades/System.Linq.Queryable/System.Linq.Queryable.dll.sources
mcs/class/Facades/System.Linq.Queryable/TypeForwarders.cs
mcs/class/Facades/System.Linq/AssemblyInfo.cs
mcs/class/Facades/System.Linq/Makefile
mcs/class/Facades/System.Linq/System.Linq.dll.sources
mcs/class/Facades/System.Linq/TypeForwarders.cs
mcs/class/Facades/System.Net.NetworkInformation/AssemblyInfo.cs
mcs/class/Facades/System.Net.NetworkInformation/Makefile
mcs/class/Facades/System.Net.NetworkInformation/System.Net.NetworkInformation.dll.sources
mcs/class/Facades/System.Net.NetworkInformation/TypeForwarders.cs
mcs/class/Facades/System.Net.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.Net.Primitives/Makefile
mcs/class/Facades/System.Net.Primitives/System.Net.Primitives.dll.sources
mcs/class/Facades/System.Net.Primitives/TypeForwarders.cs
mcs/class/Facades/System.Net.Requests/AssemblyInfo.cs
mcs/class/Facades/System.Net.Requests/Makefile
mcs/class/Facades/System.Net.Requests/System.Net.Requests.dll.sources
mcs/class/Facades/System.Net.Requests/TypeForwarders.cs
mcs/class/Facades/System.ObjectModel/AssemblyInfo.cs
mcs/class/Facades/System.ObjectModel/Makefile
mcs/class/Facades/System.ObjectModel/System.ObjectModel.dll.sources
mcs/class/Facades/System.ObjectModel/TypeForwarders.cs
mcs/class/Facades/System.Reflection.Emit.ILGeneration/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit.ILGeneration/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit.ILGeneration/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit.Lightweight/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit.Lightweight/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit.Lightweight/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit/Makefile [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit.dll.sources [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Emit/TypeForwarders.cs [new file with mode: 0644]
mcs/class/Facades/System.Reflection.Extensions/AssemblyInfo.cs
mcs/class/Facades/System.Reflection.Extensions/Makefile
mcs/class/Facades/System.Reflection.Extensions/System.Reflection.Extensions.dll.sources
mcs/class/Facades/System.Reflection.Extensions/TypeForwarders.cs
mcs/class/Facades/System.Reflection.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.Reflection.Primitives/Makefile
mcs/class/Facades/System.Reflection.Primitives/System.Reflection.Primitives.dll.sources
mcs/class/Facades/System.Reflection.Primitives/TypeForwarders.cs
mcs/class/Facades/System.Reflection/AssemblyInfo.cs
mcs/class/Facades/System.Reflection/Makefile
mcs/class/Facades/System.Reflection/System.Reflection.dll.sources
mcs/class/Facades/System.Reflection/TypeForwarders.cs
mcs/class/Facades/System.Resources.ResourceManager/AssemblyInfo.cs
mcs/class/Facades/System.Resources.ResourceManager/Makefile
mcs/class/Facades/System.Resources.ResourceManager/System.Resources.ResourceManager.dll.sources
mcs/class/Facades/System.Resources.ResourceManager/TypeForwarders.cs
mcs/class/Facades/System.Runtime.Extensions/AssemblyInfo.cs
mcs/class/Facades/System.Runtime.Extensions/Makefile
mcs/class/Facades/System.Runtime.Extensions/System.Runtime.Extensions.dll.sources
mcs/class/Facades/System.Runtime.Extensions/TypeForwarders.cs
mcs/class/Facades/System.Runtime.InteropServices/AssemblyInfo.cs
mcs/class/Facades/System.Runtime.InteropServices/Makefile
mcs/class/Facades/System.Runtime.InteropServices/System.Runtime.InteropServices.dll.sources
mcs/class/Facades/System.Runtime.InteropServices/TypeForwarders.cs
mcs/class/Facades/System.Runtime.Numerics/AssemblyInfo.cs
mcs/class/Facades/System.Runtime.Numerics/Makefile
mcs/class/Facades/System.Runtime.Numerics/System.Runtime.Numerics.dll.sources
mcs/class/Facades/System.Runtime.Numerics/TypeForwarders.cs
mcs/class/Facades/System.Runtime.Serialization.Json/AssemblyInfo.cs
mcs/class/Facades/System.Runtime.Serialization.Json/Makefile
mcs/class/Facades/System.Runtime.Serialization.Json/System.Runtime.Serialization.Json.dll.sources
mcs/class/Facades/System.Runtime.Serialization.Json/TypeForwarders.cs
mcs/class/Facades/System.Runtime.Serialization.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.Runtime.Serialization.Primitives/Makefile
mcs/class/Facades/System.Runtime.Serialization.Primitives/System.Runtime.Serialization.Primitives.dll.sources
mcs/class/Facades/System.Runtime.Serialization.Primitives/TypeForwarders.cs
mcs/class/Facades/System.Runtime.Serialization.Xml/AssemblyInfo.cs
mcs/class/Facades/System.Runtime.Serialization.Xml/Makefile
mcs/class/Facades/System.Runtime.Serialization.Xml/System.Runtime.Serialization.Xml.dll.sources
mcs/class/Facades/System.Runtime.Serialization.Xml/TypeForwarders.cs
mcs/class/Facades/System.Runtime/AssemblyInfo.cs
mcs/class/Facades/System.Runtime/Makefile
mcs/class/Facades/System.Runtime/System.Runtime.dll.sources
mcs/class/Facades/System.Runtime/TypeForwarders.cs
mcs/class/Facades/System.Security.Principal/AssemblyInfo.cs
mcs/class/Facades/System.Security.Principal/Makefile
mcs/class/Facades/System.Security.Principal/System.Security.Principal.dll.sources
mcs/class/Facades/System.Security.Principal/TypeForwarders.cs
mcs/class/Facades/System.ServiceModel.Http/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.Http/Makefile
mcs/class/Facades/System.ServiceModel.Http/System.ServiceModel.Http.dll.sources
mcs/class/Facades/System.ServiceModel.Http/TypeForwarders.cs
mcs/class/Facades/System.ServiceModel.Primitives/AssemblyInfo.cs
mcs/class/Facades/System.ServiceModel.Primitives/Makefile
mcs/class/Facades/System.ServiceModel.Primitives/System.ServiceModel.Primitives.dll.sources
mcs/class/Facades/System.ServiceModel.Primitives/TypeForwarders.cs
mcs/class/Facades/System.Text.Encoding.Extensions/AssemblyInfo.cs
mcs/class/Facades/System.Text.Encoding.Extensions/Makefile
mcs/class/Facades/System.Text.Encoding.Extensions/System.Text.Encoding.Extensions.dll.sources
mcs/class/Facades/System.Text.Encoding.Extensions/TypeForwarders.cs
mcs/class/Facades/System.Text.Encoding/AssemblyInfo.cs
mcs/class/Facades/System.Text.Encoding/Makefile
mcs/class/Facades/System.Text.Encoding/System.Text.Encoding.dll.sources
mcs/class/Facades/System.Text.Encoding/TypeForwarders.cs
mcs/class/Facades/System.Text.RegularExpressions/AssemblyInfo.cs
mcs/class/Facades/System.Text.RegularExpressions/Makefile
mcs/class/Facades/System.Text.RegularExpressions/System.Text.RegularExpressions.dll.sources
mcs/class/Facades/System.Text.RegularExpressions/TypeForwarders.cs
mcs/class/Facades/System.Threading.Tasks.Parallel/AssemblyInfo.cs
mcs/class/Facades/System.Threading.Tasks.Parallel/Makefile
mcs/class/Facades/System.Threading.Tasks.Parallel/System.Threading.Tasks.Parallel.dll.sources
mcs/class/Facades/System.Threading.Tasks.Parallel/TypeForwarders.cs
mcs/class/Facades/System.Threading.Tasks/AssemblyInfo.cs
mcs/class/Facades/System.Threading.Tasks/Makefile
mcs/class/Facades/System.Threading.Tasks/System.Threading.Tasks.dll.sources
mcs/class/Facades/System.Threading.Tasks/TypeForwarders.cs
mcs/class/Facades/System.Threading/AssemblyInfo.cs
mcs/class/Facades/System.Threading/Makefile
mcs/class/Facades/System.Threading/System.Threading.dll.sources
mcs/class/Facades/System.Threading/TypeForwarders.cs
mcs/class/Facades/System.Windows/AssemblyInfo.cs [deleted file]
mcs/class/Facades/System.Windows/Makefile [deleted file]
mcs/class/Facades/System.Windows/System.Windows.dll.sources [deleted file]
mcs/class/Facades/System.Windows/TypeForwarders.cs [deleted file]
mcs/class/Facades/System.Xml.ReaderWriter/AssemblyInfo.cs
mcs/class/Facades/System.Xml.ReaderWriter/Makefile
mcs/class/Facades/System.Xml.ReaderWriter/System.Xml.ReaderWriter.dll.sources
mcs/class/Facades/System.Xml.ReaderWriter/TypeForwarders.cs
mcs/class/Facades/System.Xml.Serialization/AssemblyInfo.cs [deleted file]
mcs/class/Facades/System.Xml.Serialization/Makefile [deleted file]
mcs/class/Facades/System.Xml.Serialization/System.Xml.Serialization.dll.sources [deleted file]
mcs/class/Facades/System.Xml.Serialization/TypeForwarders.cs [deleted file]
mcs/class/Facades/System.Xml.XDocument/AssemblyInfo.cs
mcs/class/Facades/System.Xml.XDocument/Makefile
mcs/class/Facades/System.Xml.XDocument/System.Xml.XDocument.dll.sources
mcs/class/Facades/System.Xml.XDocument/TypeForwarders.cs
mcs/class/Facades/System.Xml.XmlSerializer/AssemblyInfo.cs
mcs/class/Facades/System.Xml.XmlSerializer/Makefile
mcs/class/Facades/System.Xml.XmlSerializer/System.Xml.XmlSerializer.dll.sources
mcs/class/Facades/System.Xml.XmlSerializer/TypeForwarders.cs
mcs/class/I18N/CJK/I18N.CJK-net_2_0.csproj
mcs/class/I18N/CJK/I18N.CJK-net_4_0.csproj
mcs/class/I18N/CJK/I18N.CJK-net_4_5.csproj
mcs/class/I18N/CJK/I18N.CJK-tests-net_2_0.csproj
mcs/class/I18N/CJK/I18N.CJK-tests-net_4_0.csproj
mcs/class/I18N/CJK/I18N.CJK-tests-net_4_5.csproj
mcs/class/I18N/CJK/ISO2022JP.cs
mcs/class/I18N/CJK/Test/I18N.CJK.Test.cs
mcs/class/I18N/Common/I18N-net_2_0.csproj
mcs/class/I18N/Common/I18N-net_4_0.csproj
mcs/class/I18N/Common/I18N-net_4_5.csproj
mcs/class/I18N/MidEast/I18N.MidEast-net_2_0.csproj
mcs/class/I18N/MidEast/I18N.MidEast-net_4_0.csproj
mcs/class/I18N/MidEast/I18N.MidEast-net_4_5.csproj
mcs/class/I18N/MidEast/I18N.MidEast-tests-net_2_0.csproj
mcs/class/I18N/MidEast/I18N.MidEast-tests-net_4_0.csproj
mcs/class/I18N/MidEast/I18N.MidEast-tests-net_4_5.csproj
mcs/class/I18N/Other/I18N.Other-net_2_0.csproj
mcs/class/I18N/Other/I18N.Other-net_4_0.csproj
mcs/class/I18N/Other/I18N.Other-net_4_5.csproj
mcs/class/I18N/Rare/I18N.Rare-net_2_0.csproj
mcs/class/I18N/Rare/I18N.Rare-net_4_0.csproj
mcs/class/I18N/Rare/I18N.Rare-net_4_5.csproj
mcs/class/I18N/West/I18N.West-net_2_0.csproj
mcs/class/I18N/West/I18N.West-net_4_0.csproj
mcs/class/I18N/West/I18N.West-net_4_5.csproj
mcs/class/I18N/West/I18N.West-tests-net_2_0.csproj
mcs/class/I18N/West/I18N.West-tests-net_4_0.csproj
mcs/class/I18N/West/I18N.West-tests-net_4_5.csproj
mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_2_0.csproj
mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_0.csproj
mcs/class/IBM.Data.DB2/IBM.Data.DB2-net_4_5.csproj
mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_2_0.csproj
mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_0.csproj
mcs/class/ICSharpCode.SharpZipLib/ICSharpCode.SharpZipLib-net_4_5.csproj
mcs/class/Makefile
mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_2_0.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_4_0.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms-net_4_5.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms-tests-net_2_0.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms-tests-net_4_0.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms-tests-net_4_5.csproj
mcs/class/Managed.Windows.Forms/System.Windows.Forms/Hwnd.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/MenuStrip.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStrip.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/ToolStripMenuItem.cs
mcs/class/Managed.Windows.Forms/System.Windows.Forms/XplatUIX11.cs
mcs/class/Managed.Windows.Forms/build-csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildItemGroup.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskItem.cs [new file with mode: 0644]
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskItemGroup.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/ConditionFactorExpresion.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/DirectoryScanner.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Engine.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Import.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Project.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Target.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/Toolset.cs
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_2_0.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_3_5.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_0.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-net_4_5.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_2_0.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_3_5.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_4_0.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine-tests-net_4_5.csproj
mcs/class/Microsoft.Build.Engine/Microsoft.Build.Engine.dll.sources
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/ProjectTest.cs
mcs/class/Microsoft.Build.Engine/Test/Microsoft.Build.BuildEngine/TargetTest.cs
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_2_0.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_3_5.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_0.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-net_4_5.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_2_0.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_3_5.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_4_0.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework-tests-net_4_5.csproj
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework.dll.sources
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/BuildEventArgs.cs
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/BuildFinishedEventArgs.cs
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/BuildStartedEventArgs.cs
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/BuildStatusEventArgs.cs
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/ICancelableTask.cs [new file with mode: 0644]
mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/LazyFormattedBuildEventArgs.cs [new file with mode: 0644]
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_2_0.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_3_5.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_0.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-net_4_5.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_2_0.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_3_5.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_4_0.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks-tests-net_4_5.csproj
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/GenerateResource.cs
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/GetReferenceAssemblyPaths.cs
mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/ResolveAssemblyReference.cs
mcs/class/Microsoft.Build.Utilities/Makefile
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_2_0.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_3_5.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_0.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-net_4_5.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_2_0.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_3_5.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_4_0.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities-tests-net_4_5.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities.Test.csproj
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolLocationHelper.cs
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs
mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities_test.dll.sources
mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolTaskTest.cs [new file with mode: 0644]
mcs/class/Microsoft.Build/Makefile
mcs/class/Microsoft.Build/Microsoft.Build-net_4_0.csproj
mcs/class/Microsoft.Build/Microsoft.Build-net_4_5.csproj
mcs/class/Microsoft.Build/Microsoft.Build-tests-net_4_0.csproj
mcs/class/Microsoft.Build/Microsoft.Build-tests-net_4_5.csproj
mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/Project.cs
mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectCollection.cs
mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectItem.cs
mcs/class/Microsoft.Build/Microsoft.Build.Evaluation/ProjectProperty.cs
mcs/class/Microsoft.Build/Microsoft.Build.Logging/ConsoleLogger.cs
mcs/class/Microsoft.Build/Microsoft.Build.Logging/FileLogger.cs
mcs/class/Microsoft.Build/Microsoft.Build_test.dll.sources
mcs/class/Microsoft.Build/Test/Microsoft.Build.Logging/ConsoleLoggerTest.cs [new file with mode: 0644]
mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_0.csproj
mcs/class/Microsoft.CSharp/Microsoft.CSharp-net_4_5.csproj
mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_2_0.csproj
mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_0.csproj
mcs/class/Microsoft.VisualC/Microsoft.VisualC-net_4_5.csproj
mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_0.csproj
mcs/class/Microsoft.Web.Infrastructure/Microsoft.Web.Infrastructure-net_4_5.csproj
mcs/class/Mono.C5/Mono.C5-net_2_0.csproj
mcs/class/Mono.C5/Mono.C5-net_4_0.csproj
mcs/class/Mono.C5/Mono.C5-net_4_5.csproj
mcs/class/Mono.C5/Mono.C5-tests-net_2_0.csproj
mcs/class/Mono.C5/Mono.C5-tests-net_4_0.csproj
mcs/class/Mono.C5/Mono.C5-tests-net_4_5.csproj
mcs/class/Mono.CSharp/Mono.CSharp-net_2_0.csproj
mcs/class/Mono.CSharp/Mono.CSharp-net_4_0.csproj
mcs/class/Mono.CSharp/Mono.CSharp-net_4_5.csproj
mcs/class/Mono.CSharp/Mono.CSharp-tests-net_2_0.csproj
mcs/class/Mono.CSharp/Mono.CSharp-tests-net_4_0.csproj
mcs/class/Mono.CSharp/Mono.CSharp-tests-net_4_5.csproj
mcs/class/Mono.CSharp/Mono.CSharp.dll.sources
mcs/class/Mono.CSharp/Test/Evaluator/ExpressionsTest.cs
mcs/class/Mono.Cairo/Mono.Cairo-net_2_0.csproj
mcs/class/Mono.Cairo/Mono.Cairo-net_4_0.csproj
mcs/class/Mono.Cairo/Mono.Cairo-net_4_5.csproj
mcs/class/Mono.Cairo/Mono.Cairo.dll.sources
mcs/class/Mono.Cairo/Mono.Cairo/CairoDebug.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/Color.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/Context.cs
mcs/class/Mono.Cairo/Mono.Cairo/DirectFBSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/Distance.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/FontFace.cs
mcs/class/Mono.Cairo/Mono.Cairo/FontOptions.cs
mcs/class/Mono.Cairo/Mono.Cairo/GlitzSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/Gradient.cs
mcs/class/Mono.Cairo/Mono.Cairo/ImageSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/LinearGradient.cs
mcs/class/Mono.Cairo/Mono.Cairo/Matrix.cs
mcs/class/Mono.Cairo/Mono.Cairo/NativeMethods.cs
mcs/class/Mono.Cairo/Mono.Cairo/PSSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/Path.cs
mcs/class/Mono.Cairo/Mono.Cairo/Pattern.cs
mcs/class/Mono.Cairo/Mono.Cairo/PdfSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/Point.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/PointD.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/RadialGradient.cs
mcs/class/Mono.Cairo/Mono.Cairo/Region.cs [new file with mode: 0644]
mcs/class/Mono.Cairo/Mono.Cairo/ScaledFont.cs
mcs/class/Mono.Cairo/Mono.Cairo/SolidPattern.cs
mcs/class/Mono.Cairo/Mono.Cairo/Surface.cs
mcs/class/Mono.Cairo/Mono.Cairo/SurfacePattern.cs
mcs/class/Mono.Cairo/Mono.Cairo/SvgSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/Win32Surface.cs
mcs/class/Mono.Cairo/Mono.Cairo/XcbSurface.cs
mcs/class/Mono.Cairo/Mono.Cairo/XlibSurface.cs
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_2_0.csproj
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_0.csproj
mcs/class/Mono.Cecil.Mdb/Mono.Cecil.Mdb-net_4_5.csproj
mcs/class/Mono.Cecil/Mono.Cecil-net_2_0.csproj
mcs/class/Mono.Cecil/Mono.Cecil-net_4_0.csproj
mcs/class/Mono.Cecil/Mono.Cecil-net_4_5.csproj
mcs/class/Mono.CodeContracts/Mono.CodeContracts-net_4_5.csproj
mcs/class/Mono.CodeContracts/Mono.CodeContracts-tests-net_4_5.csproj
mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_2_0.csproj
mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_0.csproj
mcs/class/Mono.CompilerServices.SymbolWriter/Mono.CompilerServices.SymbolWriter-net_4_5.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_2_0.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_0.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-net_4_5.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-tests-net_2_0.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-tests-net_4_0.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite-tests-net_4_5.csproj
mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0/SQLiteDataReader.cs
mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_2_0.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_0.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-net_4_5.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-tests-net_2_0.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-tests-net_4_0.csproj
mcs/class/Mono.Data.Tds/Mono.Data.Tds-tests-net_4_5.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_2_0.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_0.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-net_4_5.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-tests-net_2_0.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-tests-net_4_0.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft-tests-net_4_5.csproj
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/Connection.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/ExceptionEventRequest.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/MethodMirror.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/StepEventRequest.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/TypeMirror.cs
mcs/class/Mono.Debugger.Soft/Mono.Debugger.Soft/VirtualMachine.cs
mcs/class/Mono.Debugger.Soft/Test/dtest-app.cs
mcs/class/Mono.Debugger.Soft/Test/dtest.cs
mcs/class/Mono.Http/Mono.Http-net_2_0.csproj
mcs/class/Mono.Http/Mono.Http-net_4_0.csproj
mcs/class/Mono.Http/Mono.Http-net_4_5.csproj
mcs/class/Mono.Management/Mono.Attach/VirtualMachine.cs
mcs/class/Mono.Management/Mono.Management-net_2_0.csproj
mcs/class/Mono.Management/Mono.Management-net_4_0.csproj
mcs/class/Mono.Management/Mono.Management-net_4_5.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_2_0.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_0.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-net_4_5.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-tests-net_2_0.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-tests-net_4_0.csproj
mcs/class/Mono.Messaging.RabbitMQ/Mono.Messaging.RabbitMQ-tests-net_4_5.csproj
mcs/class/Mono.Messaging/Mono.Messaging-net_2_0.csproj
mcs/class/Mono.Messaging/Mono.Messaging-net_4_0.csproj
mcs/class/Mono.Messaging/Mono.Messaging-net_4_5.csproj
mcs/class/Mono.Messaging/Mono.Messaging-tests-net_2_0.csproj
mcs/class/Mono.Messaging/Mono.Messaging-tests-net_4_0.csproj
mcs/class/Mono.Messaging/Mono.Messaging-tests-net_4_5.csproj
mcs/class/Mono.Options/Mono.Options-net_2_0.csproj
mcs/class/Mono.Options/Mono.Options-net_4_0.csproj
mcs/class/Mono.Options/Mono.Options-net_4_5.csproj
mcs/class/Mono.Options/Mono.Options-tests-net_2_0.csproj
mcs/class/Mono.Options/Mono.Options-tests-net_4_0.csproj
mcs/class/Mono.Options/Mono.Options-tests-net_4_5.csproj
mcs/class/Mono.Parallel/Mono.Parallel-net_4_0.csproj
mcs/class/Mono.Parallel/Mono.Parallel-net_4_5.csproj
mcs/class/Mono.Parallel/Mono.Parallel-tests-net_4_0.csproj
mcs/class/Mono.Parallel/Mono.Parallel-tests-net_4_5.csproj
mcs/class/Mono.Posix/Mono.Posix-build.csproj
mcs/class/Mono.Posix/Mono.Posix-net_2_0.csproj
mcs/class/Mono.Posix/Mono.Posix-net_4_0.csproj
mcs/class/Mono.Posix/Mono.Posix-net_4_5.csproj
mcs/class/Mono.Posix/Mono.Posix-tests-net_2_0.csproj
mcs/class/Mono.Posix/Mono.Posix-tests-net_4_0.csproj
mcs/class/Mono.Posix/Mono.Posix-tests-net_4_5.csproj
mcs/class/Mono.Posix/Mono.Posix_test.dll.sources
mcs/class/Mono.Posix/Mono.Unix.Native/NativeConvert.cs
mcs/class/Mono.Posix/Mono.Unix.Native/Syscall.cs
mcs/class/Mono.Posix/Mono.Unix/Catalog.cs
mcs/class/Mono.Posix/Mono.Unix/UnixPath.cs
mcs/class/Mono.Posix/Mono.Unix/UnixSymbolicLinkInfo.cs
mcs/class/Mono.Posix/Test/Mono.Unix/ReadlinkTest.cs [new file with mode: 0644]
mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_2_0.csproj
mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_0.csproj
mcs/class/Mono.Security.Win32/Mono.Security.Win32-net_4_5.csproj
mcs/class/Mono.Security/Mono.Math/BigInteger.cs
mcs/class/Mono.Security/Mono.Security-build.csproj
mcs/class/Mono.Security/Mono.Security-net_2_0.csproj
mcs/class/Mono.Security/Mono.Security-net_4_0.csproj
mcs/class/Mono.Security/Mono.Security-net_4_5.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_2_0.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_4_0.csproj
mcs/class/Mono.Security/Mono.Security-tests-net_4_5.csproj
mcs/class/Mono.Security/Mono.Security.Authenticode/AuthenticodeDeformatter.cs
mcs/class/Mono.Security/Mono.Security.Authenticode/PrivateKey.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/CryptoConvert.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/MD2.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/MD2Managed.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/MD4.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/MD4Managed.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/PKCS1.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/PKCS8.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/RC4.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/SymmetricTransform.cs
mcs/class/Mono.Security/Mono.Security.Cryptography/TlsHMAC.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/CipherSuite.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslCipherSuite.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslHandshakeHash.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
mcs/class/Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/KeyAttributesExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
mcs/class/Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
mcs/class/Mono.Security/Mono.Security.X509/ITrustAnchors.cs
mcs/class/Mono.Security/Mono.Security.X509/PKCS12.cs
mcs/class/Mono.Security/Mono.Security.X509/X509CRL.cs
mcs/class/Mono.Security/Mono.Security.X509/X509Certificate.cs
mcs/class/Mono.Security/Mono.Security/StrongName.cs
mcs/class/Mono.Security/Test/Mono.Security.Cryptography/ARC4ManagedTest.cs
mcs/class/Mono.Security/Test/Mono.Security.Cryptography/MD2ManagedTest.cs
mcs/class/Mono.Security/Test/Mono.Security.Cryptography/MD2Test.cs
mcs/class/Mono.Security/Test/Mono.Security.Cryptography/MD4ManagedTest.cs
mcs/class/Mono.Security/Test/Mono.Security.Cryptography/MD4Test.cs
mcs/class/Mono.Security/Test/Mono.Security.X509/X509CertificateTest.cs
mcs/class/Mono.Simd/Mono.Simd-net_2_0.csproj
mcs/class/Mono.Simd/Mono.Simd-net_4_0.csproj
mcs/class/Mono.Simd/Mono.Simd-net_4_5.csproj
mcs/class/Mono.Tasklets/Mono.Tasklets-net_2_0.csproj
mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_0.csproj
mcs/class/Mono.Tasklets/Mono.Tasklets-net_4_5.csproj
mcs/class/Mono.Web/Mono.Web-net_2_0.csproj
mcs/class/Mono.Web/Mono.Web-net_4_0.csproj
mcs/class/Mono.Web/Mono.Web-net_4_5.csproj
mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_2_0.csproj
mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_0.csproj
mcs/class/Mono.WebBrowser/Mono.WebBrowser-net_4_5.csproj
mcs/class/Moonlight.Build.Tasks/Moonlight.Build.Tasks-net_2_0.csproj
mcs/class/Moonlight.Build.Tasks/Moonlight.Build.Tasks-net_4_0.csproj
mcs/class/Moonlight.Build.Tasks/Moonlight.Build.Tasks-net_4_5.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_2_0.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_0.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-net_4_5.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-tests-net_2_0.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-tests-net_4_0.csproj
mcs/class/Novell.Directory.Ldap/Novell.Directory.Ldap-tests-net_4_5.csproj
mcs/class/Npgsql/Npgsql-net_2_0.csproj
mcs/class/Npgsql/Npgsql-net_4_0.csproj
mcs/class/Npgsql/Npgsql-net_4_5.csproj
mcs/class/Npgsql/Npgsql-tests-net_2_0.csproj
mcs/class/Npgsql/Npgsql-tests-net_4_0.csproj
mcs/class/Npgsql/Npgsql-tests-net_4_5.csproj
mcs/class/OpenSystem.C/OpenSystem.C-net_2_0.csproj
mcs/class/OpenSystem.C/OpenSystem.C-net_4_0.csproj
mcs/class/OpenSystem.C/OpenSystem.C-net_4_5.csproj
mcs/class/PEAPI/PEAPI-net_2_0.csproj
mcs/class/PEAPI/PEAPI-net_4_0.csproj
mcs/class/PEAPI/PEAPI-net_4_5.csproj
mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_2_0.csproj
mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_0.csproj
mcs/class/RabbitMQ.Client/src/client/RabbitMQ.Client-net_4_5.csproj
mcs/class/System.ComponentModel.Composition.4.5/Makefile
mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/Microsoft/Internal/GenerationServices.cs
mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/System/ComponentModel/Composition/MetadataViewGenerator.cs
mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/System/ComponentModel/Composition/MetadataViewProvider.cs
mcs/class/System.ComponentModel.Composition.4.5/src/ComponentModel/System/ComponentModel/Composition/Primitives/ExportedDelegate.cs
mcs/class/System.ComponentModel.Composition/System.ComponentModel.Composition-net_4_0.csproj
mcs/class/System.ComponentModel.Composition/System.ComponentModel.Composition-net_4_5.csproj
mcs/class/System.ComponentModel.DataAnnotations/Makefile
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_2_0.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_0.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-net_4_5.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-tests-net_2_0.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-tests-net_4_0.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations-tests-net_4_5.csproj
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/CompareAttribute.cs [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/CreditCardAttribute.cs [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DataType.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/DataTypeAttribute.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/EmailAddressAttribute.cs [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/FileExtensionsAttribute.cs [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/MaxLengthAttribute.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/MinLengthAttribute.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/PhoneAttribute.cs [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/RangeAttribute.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/RegularExpressionAttribute.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/StringLengthAttribute.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/TimestampAttribute.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/ValidationAttribute.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/ValidationResult.cs
mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations_test.dll.sources
mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/AssociatedMetadataTypeTypeDescriptionProviderTests.cs
mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/CompareAttributeTest.cs [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/CreditCardAttributeTest.cs [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/EmailAddressAttributeTest.cs [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/FileExtensionsAttributeTest.cs [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/PhoneAttributeTest.cs [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/mobile_static_System.ComponentModel.DataAnnotations.dll.sources [new file with mode: 0644]
mcs/class/System.ComponentModel.DataAnnotations/net_4_5_System.ComponentModel.DataAnnotations.dll.sources
mcs/class/System.Configuration.Install/System.Configuration.Install-net_2_0.csproj
mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_0.csproj
mcs/class/System.Configuration.Install/System.Configuration.Install-net_4_5.csproj
mcs/class/System.Configuration/System.Configuration-net_2_0.csproj
mcs/class/System.Configuration/System.Configuration-net_4_0.csproj
mcs/class/System.Configuration/System.Configuration-net_4_5.csproj
mcs/class/System.Configuration/System.Configuration-tests-net_2_0.csproj
mcs/class/System.Configuration/System.Configuration-tests-net_4_0.csproj
mcs/class/System.Configuration/System.Configuration-tests-net_4_5.csproj
mcs/class/System.Configuration/System.Configuration/AppSettingsSection.cs
mcs/class/System.Configuration/System.Configuration/CallbackValidator.cs
mcs/class/System.Configuration/System.Configuration/CallbackValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/ClientConfigurationSystem.cs
mcs/class/System.Configuration/System.Configuration/CommaDelimitedStringCollection.cs
mcs/class/System.Configuration/System.Configuration/CommaDelimitedStringCollectionConverter.cs
mcs/class/System.Configuration/System.Configuration/ConfigInfo.cs
mcs/class/System.Configuration/System.Configuration/ConfigXmlTextReader.cs
mcs/class/System.Configuration/System.Configuration/Configuration.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationAllowDefinition.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationAllowExeDefinition.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationCollectionAttribute.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationConverterBase.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationElement.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationElementCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationElementCollectionType.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationElementProperty.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationErrorsException.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationFileMap.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationLocation.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationLocationCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationLockCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationManager.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationPermission.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationPermissionAttribute.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationProperty.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationPropertyAttribute.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationPropertyCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationPropertyOptions.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationRemoveElement.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSaveEventArgs.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSaveEventHandler.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSaveMode.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSectionCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSectionGroup.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationSectionGroupCollection.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationUserLevel.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/ConfigurationValidatorBase.cs
mcs/class/System.Configuration/System.Configuration/ConnectionStringSettings.cs
mcs/class/System.Configuration/System.Configuration/ConnectionStringSettingsCollection.cs
mcs/class/System.Configuration/System.Configuration/ConnectionStringsSection.cs
mcs/class/System.Configuration/System.Configuration/ContextInformation.cs
mcs/class/System.Configuration/System.Configuration/DefaultSection.cs
mcs/class/System.Configuration/System.Configuration/DefaultValidator.cs
mcs/class/System.Configuration/System.Configuration/DpapiProtectedConfigurationProvider.cs
mcs/class/System.Configuration/System.Configuration/ElementInformation.cs
mcs/class/System.Configuration/System.Configuration/ExeConfigurationFileMap.cs
mcs/class/System.Configuration/System.Configuration/ExeContext.cs
mcs/class/System.Configuration/System.Configuration/GenericEnumConverter.cs
mcs/class/System.Configuration/System.Configuration/IgnoreSection.cs
mcs/class/System.Configuration/System.Configuration/InfiniteIntConverter.cs
mcs/class/System.Configuration/System.Configuration/InfiniteTimeSpanConverter.cs
mcs/class/System.Configuration/System.Configuration/IntegerValidator.cs
mcs/class/System.Configuration/System.Configuration/IntegerValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/InternalConfigurationFactory.cs
mcs/class/System.Configuration/System.Configuration/InternalConfigurationHost.cs
mcs/class/System.Configuration/System.Configuration/InternalConfigurationRoot.cs
mcs/class/System.Configuration/System.Configuration/KeyValueConfigurationCollection.cs
mcs/class/System.Configuration/System.Configuration/KeyValueConfigurationElement.cs
mcs/class/System.Configuration/System.Configuration/KeyValueInternalCollection.cs
mcs/class/System.Configuration/System.Configuration/LongValidator.cs
mcs/class/System.Configuration/System.Configuration/LongValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/NameValueConfigurationCollection.cs
mcs/class/System.Configuration/System.Configuration/NameValueConfigurationElement.cs
mcs/class/System.Configuration/System.Configuration/PositiveTimeSpanValidator.cs
mcs/class/System.Configuration/System.Configuration/PositiveTimeSpanValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/PropertyInformation.cs
mcs/class/System.Configuration/System.Configuration/PropertyInformationCollection.cs
mcs/class/System.Configuration/System.Configuration/PropertyValueOrigin.cs
mcs/class/System.Configuration/System.Configuration/ProtectedConfiguration.cs
mcs/class/System.Configuration/System.Configuration/ProtectedConfigurationProvider.cs
mcs/class/System.Configuration/System.Configuration/ProtectedConfigurationProviderCollection.cs
mcs/class/System.Configuration/System.Configuration/ProtectedConfigurationSection.cs
mcs/class/System.Configuration/System.Configuration/ProtectedProviderSettings.cs
mcs/class/System.Configuration/System.Configuration/ProviderSettings.cs
mcs/class/System.Configuration/System.Configuration/ProviderSettingsCollection.cs
mcs/class/System.Configuration/System.Configuration/RegexStringValidator.cs
mcs/class/System.Configuration/System.Configuration/RegexStringValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/RsaProtectedConfigurationProvider.cs
mcs/class/System.Configuration/System.Configuration/SectionGroupInfo.cs
mcs/class/System.Configuration/System.Configuration/SectionInfo.cs
mcs/class/System.Configuration/System.Configuration/SectionInformation.cs
mcs/class/System.Configuration/System.Configuration/StringValidator.cs
mcs/class/System.Configuration/System.Configuration/StringValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/SubclassTypeValidator.cs
mcs/class/System.Configuration/System.Configuration/SubclassTypeValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanMinutesConverter.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanMinutesOrInfiniteConverter.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanSecondsConverter.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanSecondsOrInfiniteConverter.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanValidator.cs
mcs/class/System.Configuration/System.Configuration/TimeSpanValidatorAttribute.cs
mcs/class/System.Configuration/System.Configuration/TypeNameConverter.cs
mcs/class/System.Configuration/System.Configuration/ValidatorCallback.cs
mcs/class/System.Configuration/System.Configuration/WhiteSpaceTrimStringConverter.cs
mcs/class/System.Configuration/System.Configuration_test_net_2_0.dll.config [new symlink]
mcs/class/System.Configuration/System.Configuration_test_net_4_0.dll.config [new symlink]
mcs/class/System.Configuration/System.Configuration_test_net_4_5.dll.config [new symlink]
mcs/class/System.Configuration/Test/App.config [new file with mode: 0644]
mcs/class/System.Configuration/Test/System.Configuration/ConfigurationManagerTest.cs
mcs/class/System.Core/Makefile
mcs/class/System.Core/System.Collections.Generic/HashSet.cs
mcs/class/System.Core/System.Core-build.csproj
mcs/class/System.Core/System.Core-net_2_0.csproj
mcs/class/System.Core/System.Core-net_4_0.csproj
mcs/class/System.Core/System.Core-net_4_5.csproj
mcs/class/System.Core/System.Core-tests-net_2_0.csproj
mcs/class/System.Core/System.Core-tests-net_4_0.csproj
mcs/class/System.Core/System.Core-tests-net_4_5.csproj
mcs/class/System.Core/System.IO.MemoryMappedFiles/MemoryMappedFile.cs
mcs/class/System.Core/System.Linq.Expressions/BinaryExpression.cs
mcs/class/System.Core/System.Linq.Expressions/ConditionalExpression.cs
mcs/class/System.Core/System.Linq.Expressions/ConstantExpression.cs
mcs/class/System.Core/System.Linq.Expressions/ElementInit.cs
mcs/class/System.Core/System.Linq.Expressions/Expression.cs
mcs/class/System.Core/System.Linq.Expressions/ExpressionVisitor.cs
mcs/class/System.Core/System.Linq.Expressions/Extensions.cs
mcs/class/System.Core/System.Linq.Expressions/LambdaExpression.cs
mcs/class/System.Core/System.Linq.Expressions/MemberAssignment.cs
mcs/class/System.Core/System.Linq.Expressions/MemberBinding.cs
mcs/class/System.Core/System.Linq.Expressions/MemberExpression.cs
mcs/class/System.Core/System.Linq.Expressions/MemberListBinding.cs
mcs/class/System.Core/System.Linq.Expressions/MemberMemberBinding.cs
mcs/class/System.Core/System.Linq.Expressions/MethodCallExpression.cs
mcs/class/System.Core/System.Linq.Expressions/NewArrayExpression.cs
mcs/class/System.Core/System.Linq.Expressions/NewExpression.cs
mcs/class/System.Core/System.Linq.Expressions/ParameterExpression.cs
mcs/class/System.Core/System.Linq.Expressions/TypeBinaryExpression.cs
mcs/class/System.Core/System.Linq.Expressions/UnaryExpression.cs
mcs/class/System.Core/System.Linq.Parallel/RangeList.cs
mcs/class/System.Core/System.Threading/ReaderWriterLockSlim.cs
mcs/class/System.Core/System/TimeZoneInfo.AdjustmentRule.cs
mcs/class/System.Core/System/TimeZoneInfo.Android.cs
mcs/class/System.Core/System/TimeZoneInfo.TransitionTime.cs
mcs/class/System.Core/System/TimeZoneInfo.cs
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Call.cs
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Coalesce.cs
mcs/class/System.Core/Test/System.Linq.Expressions/ExpressionTest_Equal.cs
mcs/class/System.Core/Test/System.Linq/EnumerableMoreTest.cs
mcs/class/System.Core/Test/System.Linq/ParallelEnumerableTests.cs
mcs/class/System.Core/Test/System.Threading/ReaderWriterLockSlimTest.cs
mcs/class/System.Core/Test/System/TimeZoneInfo.AdjustmentRuleTest.cs
mcs/class/System.Core/Test/System/TimeZoneInfo.TransitionTimeTest.cs
mcs/class/System.Core/Test/System/TimeZoneInfoTest.cs
mcs/class/System.Core/basic_System.Core.dll.sources
mcs/class/System.Core/mobile_static_System.Core.dll.sources [new file with mode: 0644]
mcs/class/System.Core/monodroid_System.Core.dll.sources
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_2_0.csproj
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_0.csproj
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-net_4_5.csproj
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-tests-net_2_0.csproj
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-tests-net_4_0.csproj
mcs/class/System.Data.DataSetExtensions/System.Data.DataSetExtensions-tests-net_4_5.csproj
mcs/class/System.Data.Linq/System.Data.Linq-net_2_0.csproj
mcs/class/System.Data.Linq/System.Data.Linq-net_4_0.csproj
mcs/class/System.Data.Linq/System.Data.Linq-net_4_5.csproj
mcs/class/System.Data.Linq/System.Data.Linq-tests-net_2_0.csproj
mcs/class/System.Data.Linq/System.Data.Linq-tests-net_4_0.csproj
mcs/class/System.Data.Linq/System.Data.Linq-tests-net_4_5.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_2_0.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_0.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-net_4_5.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-tests-net_2_0.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-tests-net_4_0.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient-tests-net_4_5.csproj
mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciCalls.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient.Oci/OciStatementHandle.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleCommand.cs
mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs
mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_2_0.csproj
mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_0.csproj
mcs/class/System.Data.Services.Client/System.Data.Services.Client-net_4_5.csproj
mcs/class/System.Data.Services.Client/mobile_static_System.Data.Services.Client.dll.sources [new file with mode: 0644]
mcs/class/System.Data.Services/Makefile
mcs/class/System.Data.Services/System.Data.Services-net_2_0.csproj
mcs/class/System.Data.Services/System.Data.Services-net_4_0.csproj
mcs/class/System.Data.Services/System.Data.Services-net_4_5.csproj
mcs/class/System.Data.Services/System.Data.Services-tests-net_2_0.csproj
mcs/class/System.Data.Services/System.Data.Services-tests-net_4_0.csproj
mcs/class/System.Data.Services/System.Data.Services-tests-net_4_5.csproj
mcs/class/System.Data/Makefile
mcs/class/System.Data/System.Data-net_2_0.csproj
mcs/class/System.Data/System.Data-net_4_0.csproj
mcs/class/System.Data/System.Data-net_4_5.csproj
mcs/class/System.Data/System.Data-tests-net_2_0.csproj
mcs/class/System.Data/System.Data-tests-net_4_0.csproj
mcs/class/System.Data/System.Data-tests-net_4_5.csproj
mcs/class/System.Data/System.Data.Common/DataContainer.cs
mcs/class/System.Data/System.Data.Common/TaskHelper.cs
mcs/class/System.Data/System.Data/DataRowCollection.cs
mcs/class/System.Data/mobile_static_System.Data.dll.sources [new file with mode: 0644]
mcs/class/System.Design/System.Design-net_2_0.csproj
mcs/class/System.Design/System.Design-net_4_0.csproj
mcs/class/System.Design/System.Design-net_4_5.csproj
mcs/class/System.Design/System.Design-tests-net_2_0.csproj
mcs/class/System.Design/System.Design-tests-net_4_0.csproj
mcs/class/System.Design/System.Design-tests-net_4_5.csproj
mcs/class/System.DirectoryServices.Protocols/Assembly/AssemblyInfo.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/AsqResponseControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/AuthType.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/BerConverter.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/CompareResponse.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/CrossDomainMoveControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DeleteResponse.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DereferenceAlias.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DereferenceConnectionCallback.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DirSyncRequestControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DirSyncResponseControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DirectoryAttributeModification.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DirectoryAttributeOperation.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DirectoryControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DirectoryIdentifier.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DirectoryNotificationControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DirectoryOperation.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DirectoryResponse.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DirectorySynchronizationOptions.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DomainScopeControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DsmlDirectoryIdentifier.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DsmlDocumentProcessing.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DsmlErrorProcessing.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DsmlErrorResponse.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/DsmlResponseOrder.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/ErrorResponseCategory.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/ExtendedDNControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/ExtendedDNFlag.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/ExtendedResponse.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/LazyCommitControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/LdapDirectoryIdentifier.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/LocatorFlags.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/ModifyDNResponse.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/ModifyResponse.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/PageResultRequestControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/PageResultResponseControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/PartialResultProcessing.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/PermissiveModifyControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/ReferralCallback.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/ReferralChasingOptions.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/ResultCode.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/SearchOption.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/SearchResultEntry.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/SearchResultReference.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/SearchScope.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/SecurityDescriptorFlagControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/SecurityMasks.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/SecurityProtocol.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/ShowDeletedControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/SortKey.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/SortRequestControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/SortResponseControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/TreeDeleteControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/VerifyNameControl.cs
mcs/class/System.DirectoryServices.Protocols/System.DirectoryServices.Protocols/VlvResponseControl.cs
mcs/class/System.DirectoryServices/System.DirectoryServices-net_2_0.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_0.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-net_4_5.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-tests-net_2_0.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-tests-net_4_0.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices-tests-net_4_5.csproj
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryOperationException.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryPartition.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryReplicationMetadata.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryRole.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryRoleCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchedule.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchema.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaClass.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaClassCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaProperty.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaPropertyCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySecurity.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryServerDownException.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySite.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLink.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLinkBridge.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLinkCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteOptions.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySubnet.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySubnetCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySyntax.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryTransportType.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ApplicationPartition.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ApplicationPartitionCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/AttributeMetadata.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/AttributeMetadataCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryContext.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryContextType.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryEntryConfiguration.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryServer.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryServerCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/Domain.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainCollisionOptions.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainController.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainControllerCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainMode.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/Forest.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestMode.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustCollisionException.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustCollisionType.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustDomainInfoCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustDomainInformation.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustDomainStatus.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipCollision.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipCollisionCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipInformation.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/GlobalCatalog.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/GlobalCatalogCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/HourOfDay.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/LocatorOptions.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/MinuteOfHour.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/NotificationStatus.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/PropertyTypes.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyActiveDirectorySchemaClassCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyActiveDirectorySchemaPropertyCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyDirectoryServerCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlySiteCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlySiteLinkBridgeCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlySiteLinkCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyStringCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationConnection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationConnectionCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationCursor.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationCursorCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationFailure.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationFailureCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationNeighbor.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationNeighborCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperation.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperationCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperationInformation.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperationType.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationSecurityLevel.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationSpan.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SchemaClassType.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SecurityMasks.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersErrorCategory.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersErrorInformation.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersEvent.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersOperationException.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersOptions.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncUpdateCallback.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelName.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelNameCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelNameCollisionOptions.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelNameStatus.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustDirection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustRelationshipInformation.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustRelationshipInformationCollection.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustType.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices.dll.sources
mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectoryAccessRule.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectoryAuditRule.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectoryRights.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectorySecurityInheritance.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/DirectoryServicesCOMException.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/DirectorySynchronization.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/DirectorySynchronizationOptions.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/DirectoryVirtualListView.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/DirectoryVirtualListViewContext.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/ExtendedDN.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/ExtendedRightAccessRule.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/ListChildrenAccessRule.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/PasswordEncodingMethod.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/PropertyAccess.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/PropertyAccessRule.cs [new file with mode: 0644]
mcs/class/System.DirectoryServices/System.DirectoryServices/PropertySetAccessRule.cs [new file with mode: 0644]
mcs/class/System.Drawing.Design/System.Drawing.Design-net_2_0.csproj
mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_0.csproj
mcs/class/System.Drawing.Design/System.Drawing.Design-net_4_5.csproj
mcs/class/System.Drawing/System.Drawing-net_2_0.csproj
mcs/class/System.Drawing/System.Drawing-net_4_0.csproj
mcs/class/System.Drawing/System.Drawing-net_4_5.csproj
mcs/class/System.Drawing/System.Drawing-tests-net_2_0.csproj
mcs/class/System.Drawing/System.Drawing-tests-net_4_0.csproj
mcs/class/System.Drawing/System.Drawing-tests-net_4_5.csproj
mcs/class/System.Drawing/System.Drawing/Font.cs
mcs/class/System.Drawing/Test/System.Drawing/TestFont.cs
mcs/class/System.Dynamic/System.Dynamic-net_4_0.csproj
mcs/class/System.Dynamic/System.Dynamic-net_4_5.csproj
mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_2_0.csproj
mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_0.csproj
mcs/class/System.EnterpriseServices/System.EnterpriseServices-net_4_5.csproj
mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_2_0.csproj
mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_0.csproj
mcs/class/System.IdentityModel.Selectors/System.IdentityModel.Selectors-net_4_5.csproj
mcs/class/System.IdentityModel/System.IdentityModel-net_2_0.csproj
mcs/class/System.IdentityModel/System.IdentityModel-net_4_0.csproj
mcs/class/System.IdentityModel/System.IdentityModel-net_4_5.csproj
mcs/class/System.IdentityModel/System.IdentityModel-tests-net_2_0.csproj
mcs/class/System.IdentityModel/System.IdentityModel-tests-net_4_0.csproj
mcs/class/System.IdentityModel/System.IdentityModel-tests-net_4_5.csproj
mcs/class/System.Interactive.Async/Assembly/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.Interactive.Async/Makefile [new file with mode: 0644]
mcs/class/System.Interactive.Async/System.Interactive.Async.dll.sources [new file with mode: 0644]
mcs/class/System.Interactive.Async/more_build_args [new file with mode: 0644]
mcs/class/System.Interactive.Providers/Assembly/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.Interactive.Providers/Makefile [new file with mode: 0644]
mcs/class/System.Interactive.Providers/System.Interactive.Providers.dll.sources [new file with mode: 0644]
mcs/class/System.Interactive.Providers/more_build_args [new file with mode: 0644]
mcs/class/System.Interactive/Assembly/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.Interactive/Makefile [new file with mode: 0644]
mcs/class/System.Interactive/System.Interactive.dll.sources [new file with mode: 0644]
mcs/class/System.Interactive/more_build_args [new file with mode: 0644]
mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_0.csproj
mcs/class/System.Json.Microsoft/System.Json.Microsoft-net_4_5.csproj
mcs/class/System.Json/Makefile
mcs/class/System.Json/System.Json-net_2_0.csproj [new file with mode: 0644]
mcs/class/System.Json/System.Json-net_4_0.csproj
mcs/class/System.Json/System.Json-net_4_5.csproj
mcs/class/System.Json/System.Json-tests-net_4_0.csproj
mcs/class/System.Json/System.Json-tests-net_4_5.csproj
mcs/class/System.Management/System.Management-net_2_0.csproj
mcs/class/System.Management/System.Management-net_4_0.csproj
mcs/class/System.Management/System.Management-net_4_5.csproj
mcs/class/System.Management/System.Management/ManagementQuery.cs
mcs/class/System.Management/System.Management/ObjectQuery.cs
mcs/class/System.Messaging/System.Messaging-net_2_0.csproj
mcs/class/System.Messaging/System.Messaging-net_4_0.csproj
mcs/class/System.Messaging/System.Messaging-net_4_5.csproj
mcs/class/System.Messaging/System.Messaging-tests-net_2_0.csproj
mcs/class/System.Messaging/System.Messaging-tests-net_4_0.csproj
mcs/class/System.Messaging/System.Messaging-tests-net_4_5.csproj
mcs/class/System.Net.Http.Formatting/System.Net.Http.Formatting-net_4_5.csproj
mcs/class/System.Net.Http.WebRequest/Assembly/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.Net.Http.WebRequest/Makefile [new file with mode: 0644]
mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest.dll.sources [new file with mode: 0644]
mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest/WebRequestHandler.cs [new file with mode: 0644]
mcs/class/System.Net.Http/Assembly/AssemblyInfo.cs
mcs/class/System.Net.Http/Makefile
mcs/class/System.Net.Http/System.Net.Http-net_4_5.csproj
mcs/class/System.Net.Http/System.Net.Http-tests-net_4_5.csproj
mcs/class/System.Net.Http/System.Net.Http.Headers/ContentDispositionHeaderValue.cs
mcs/class/System.Net.Http/System.Net.Http.Headers/HeaderInfo.cs
mcs/class/System.Net.Http/System.Net.Http.Headers/HttpHeaderValueCollection.cs
mcs/class/System.Net.Http/System.Net.Http.Headers/HttpHeaders.cs
mcs/class/System.Net.Http/System.Net.Http.Headers/Lexer.cs
mcs/class/System.Net.Http/System.Net.Http.Headers/MediaTypeHeaderValue.cs
mcs/class/System.Net.Http/System.Net.Http.Headers/NameValueHeaderValue.cs
mcs/class/System.Net.Http/System.Net.Http.Headers/NameValueWithParametersHeaderValue.cs
mcs/class/System.Net.Http/System.Net.Http.Headers/ProductHeaderValue.cs
mcs/class/System.Net.Http/System.Net.Http.Headers/ProductInfoHeaderValue.cs
mcs/class/System.Net.Http/System.Net.Http.Headers/TransferCodingHeaderValue.cs
mcs/class/System.Net.Http/System.Net.Http/HttpClient.cs
mcs/class/System.Net.Http/System.Net.Http/HttpClientHandler.cs
mcs/class/System.Net.Http/System.Net.Http/HttpContent.cs
mcs/class/System.Net.Http/System.Net.Http/StreamContent.cs
mcs/class/System.Net.Http/Test/System.Net.Http/HttpClientTest.cs
mcs/class/System.Net.Http/Test/System.Net.Http/HttpRequestMessageTest.cs
mcs/class/System.Net.Http/monotouch_System.Net.Http.dll.sources [new file with mode: 0644]
mcs/class/System.Net/Assembly/AssemblyInfo.cs
mcs/class/System.Net/Assembly/TypeForwarders.cs
mcs/class/System.Net/System.Net-net_2_0.csproj
mcs/class/System.Net/System.Net-net_4_0.csproj
mcs/class/System.Net/System.Net-net_4_5.csproj
mcs/class/System.Numerics/System.Numerics-net_4_0.csproj
mcs/class/System.Numerics/System.Numerics-net_4_5.csproj
mcs/class/System.Numerics/System.Numerics-tests-net_4_0.csproj
mcs/class/System.Numerics/System.Numerics-tests-net_4_5.csproj
mcs/class/System.Numerics/System.Numerics/BigInteger.cs
mcs/class/System.Numerics/System.Numerics/ChangeLog
mcs/class/System.Numerics/System.Numerics/Complex.cs
mcs/class/System.Numerics/System.Numerics_test.dll.sources
mcs/class/System.Numerics/Test/System.Numerics/BigIntegerTest.cs
mcs/class/System.Numerics/Test/System.Numerics/ChangeLog
mcs/class/System.Numerics/Test/System.Numerics/ComplexTest.cs [new file with mode: 0644]
mcs/class/System.Reactive.Core/System.Reactive.Core-net_4_5.csproj
mcs/class/System.Reactive.Debugger/System.Reactive.Debugger-net_4_5.csproj
mcs/class/System.Reactive.Experimental/System.Reactive.Experimental-net_4_5.csproj
mcs/class/System.Reactive.Interfaces/System.Reactive.Interfaces-net_4_5.csproj
mcs/class/System.Reactive.Linq/System.Reactive.Linq-net_4_5.csproj
mcs/class/System.Reactive.PlatformServices/System.Reactive.PlatformServices-net_4_5.csproj
mcs/class/System.Reactive.Providers/System.Reactive.Providers-net_4_5.csproj
mcs/class/System.Reactive.Runtime.Remoting/System.Reactive.Runtime.Remoting-net_4_5.csproj
mcs/class/System.Reactive.Windows.Forms/System.Reactive.Windows.Forms-net_4_5.csproj
mcs/class/System.Reactive.Windows.Threading/System.Reactive.Windows.Threading-net_4_5.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_0.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching-net_4_5.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching-tests-net_4_0.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching-tests-net_4_5.csproj
mcs/class/System.Runtime.Caching/System.Runtime.Caching/MemoryCacheEntryPriorityQueue.cs
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_0.csproj
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-net_4_5.csproj
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-tests-net_4_0.csproj
mcs/class/System.Runtime.DurableInstancing/System.Runtime.DurableInstancing-tests-net_4_5.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_2_0.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_0.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-net_4_5.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-tests-net_2_0.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-tests-net_4_0.csproj
mcs/class/System.Runtime.Remoting/System.Runtime.Remoting-tests-net_4_5.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-tests-net_2_0.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-tests-net_4_0.csproj
mcs/class/System.Runtime.Serialization.Formatters.Soap/System.Runtime.Serialization.Formatters.Soap-tests-net_4_5.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_2_0.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_0.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-net_4_5.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-tests-net_2_0.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-tests-net_4_0.csproj
mcs/class/System.Runtime.Serialization/System.Runtime.Serialization-tests-net_4_5.csproj
mcs/class/System.Runtime.Serialization/mobile_static_System.Runtime.Serialization.dll.sources [new file with mode: 0644]
mcs/class/System.Security/System.Security-net_2_0.csproj
mcs/class/System.Security/System.Security-net_4_0.csproj
mcs/class/System.Security/System.Security-net_4_5.csproj
mcs/class/System.Security/System.Security-tests-net_2_0.csproj
mcs/class/System.Security/System.Security-tests-net_4_0.csproj
mcs/class/System.Security/System.Security-tests-net_4_5.csproj
mcs/class/System.ServiceModel.Activation/Assembly/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.ServiceModel.Activation/Makefile [new file with mode: 0644]
mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation.dll.sources [new file with mode: 0644]
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_0.csproj
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-net_4_5.csproj
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-tests-net_4_0.csproj
mcs/class/System.ServiceModel.Discovery/System.ServiceModel.Discovery-tests-net_4_5.csproj
mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_0.csproj
mcs/class/System.ServiceModel.Routing/System.ServiceModel.Routing-net_4_5.csproj
mcs/class/System.ServiceModel.Web/Makefile
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/JsonSerializationReader.cs
mcs/class/System.ServiceModel.Web/System.Runtime.Serialization.Json/TypeMap.cs
mcs/class/System.ServiceModel.Web/System.ServiceModel.Syndication/Atom10FeedFormatter.cs
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_2_0.csproj
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_0.csproj
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-net_4_5.csproj
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-tests-net_2_0.csproj
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-tests-net_4_0.csproj
mcs/class/System.ServiceModel.Web/System.ServiceModel.Web-tests-net_4_5.csproj
mcs/class/System.ServiceModel.Web/Test/System.Runtime.Serialization.Json/DataContractJsonSerializerTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Activation/WebScriptServiceHostFactoryTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Channels/WebMessageEncodingBindingElementTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Configuration/WebHttpBindingElementTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/WebHttpBehaviorTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/WebHttpEndpointTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Description/WebScriptEnablingBehaviorTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Dispatcher/WebHttpDispatchOperationSelectorTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/Atom10FeedFormatterTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/Atom10ItemFormatterTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/AtomPub10CategoriesDocumentFormatterTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/AtomPub10ServiceDocumentFormatterTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/Rss20FeedFormatterTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/Rss20ItemFormatterTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/ServiceDocumentTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/SyndicationElementExtensionTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/SyndicationFeedTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/SyndicationItemTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/SyndicationLinkTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/TextSyndicationContentTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/UrlSyndicationContentTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Syndication/XmlSyndicationContentTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebOperationContextTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel.Web/WebServiceHostTest.cs
mcs/class/System.ServiceModel.Web/Test/System.ServiceModel/WebHttpBindingTest.cs
mcs/class/System.ServiceModel.Web/Test/System/UriTemplateTest.cs
mcs/class/System.ServiceModel.Web/mobile_static_System.ServiceModel.Web.dll.sources [new file with mode: 0644]
mcs/class/System.ServiceModel/Assembly/AssemblyInfo.cs
mcs/class/System.ServiceModel/Makefile
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeAnd.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeArgument.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeArgumentReference.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeArithmeticOperation.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeArrayItem.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeArrayLength.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeAssignment.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeBinaryComparison.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeBinaryOperation.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeBlock.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeBuilder.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeCast.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeClass.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeCustomAttribute.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeDecrement.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeEquals.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeExpression.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeFieldReference.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeFor.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeForeach.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeGenerationHelper.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeIf.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeIncrement.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeIs.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeItem.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeLiteral.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeMethod.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeMethodCall.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeModule.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeNew.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeNewArray.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeNotEquals.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeOr.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeProperty.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodePropertyReference.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeReturn.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeSelect.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeSelfIncrement.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeTryBlock.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeUnaryOperation.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeValueReference.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeVariableDeclaration.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeVariableReference.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeWhen.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeWhile.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/CodeWriter.cs
mcs/class/System.ServiceModel/Mono.CodeGeneration/Exp.cs
mcs/class/System.ServiceModel/System.ServiceModel-net_2_0.csproj
mcs/class/System.ServiceModel/System.ServiceModel-net_4_0.csproj
mcs/class/System.ServiceModel/System.ServiceModel-net_4_5.csproj
mcs/class/System.ServiceModel/System.ServiceModel-tests-net_2_0.csproj
mcs/class/System.ServiceModel/System.ServiceModel-tests-net_4_0.csproj
mcs/class/System.ServiceModel/System.ServiceModel-tests-net_4_5.csproj
mcs/class/System.ServiceModel/System.ServiceModel.Activation/IServiceHostFactory.cs [deleted file]
mcs/class/System.ServiceModel/System.ServiceModel.Activation/ServiceHostFactory.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/BinaryMessageEncodingBindingElement.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/CompressionFormat.cs [new file with mode: 0644]
mcs/class/System.ServiceModel/System.ServiceModel.Channels/Message.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/TextMessageEncodingBindingElement.cs
mcs/class/System.ServiceModel/System.ServiceModel.Channels/WebSocketTransportSettings.cs
mcs/class/System.ServiceModel/System.ServiceModel.Description/ContractDescription.cs
mcs/class/System.ServiceModel/System.ServiceModel.Description/ContractDescriptionGenerator.cs
mcs/class/System.ServiceModel/System.ServiceModel.Description/OperationDescription.cs
mcs/class/System.ServiceModel/System.ServiceModel.Description/ServiceEndpoint.cs
mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ClientOperation.cs
mcs/class/System.ServiceModel/System.ServiceModel.Dispatcher/ClientRuntime.cs
mcs/class/System.ServiceModel/System.ServiceModel.dll.sources
mcs/class/System.ServiceModel/System.ServiceModel/AllEnums.cs
mcs/class/System.ServiceModel/System.ServiceModel/ChannelFactory_1.cs
mcs/class/System.ServiceModel/System.ServiceModel/ClientProxyGenerator.cs
mcs/class/System.ServiceModel/System.ServiceModel/FaultException_1.cs
mcs/class/System.ServiceModel/System.ServiceModel/InstanceContext.cs
mcs/class/System.ServiceModel/System.ServiceModel/NetTcpBinding.cs
mcs/class/System.ServiceModel/System.ServiceModel/NetTcpSecurity.cs
mcs/class/System.ServiceModel/System.ServiceModel/ServiceHostingEnvironment.cs
mcs/class/System.ServiceModel/System.ServiceModel/SpnEndpointIdentity.cs
mcs/class/System.ServiceModel/mobile_System.ServiceModel.dll.sources
mcs/class/System.ServiceModel/mobile_static_System.ServiceModel.dll.sources [new file with mode: 0644]
mcs/class/System.ServiceModel/net_4_5_System.ServiceModel.dll.sources
mcs/class/System.ServiceProcess/System.ServiceProcess-net_2_0.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_0.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess-net_4_5.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess-tests-net_2_0.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess-tests-net_4_0.csproj
mcs/class/System.ServiceProcess/System.ServiceProcess-tests-net_4_5.csproj
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-net_4_5.csproj
mcs/class/System.Threading.Tasks.Dataflow/System.Threading.Tasks.Dataflow-tests-net_4_5.csproj
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/ReceivingTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/TransformManyBlockTest.cs
mcs/class/System.Threading.Tasks.Dataflow/Test/System.Threading.Tasks.Dataflow/WriteOnceBlockTest.cs
mcs/class/System.Transactions/Makefile
mcs/class/System.Transactions/System.Transactions-net_2_0.csproj
mcs/class/System.Transactions/System.Transactions-net_4_0.csproj
mcs/class/System.Transactions/System.Transactions-net_4_5.csproj
mcs/class/System.Transactions/System.Transactions-tests-net_2_0.csproj
mcs/class/System.Transactions/System.Transactions-tests-net_4_0.csproj
mcs/class/System.Transactions/System.Transactions-tests-net_4_5.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_2_0.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_0.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-net_4_5.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-tests-net_2_0.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-tests-net_4_0.csproj
mcs/class/System.Web.Abstractions/System.Web.Abstractions-tests-net_4_5.csproj
mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_2_0.csproj
mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_0.csproj
mcs/class/System.Web.ApplicationServices/System.Web.ApplicationServices-net_4_5.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_2_0.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_0.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-net_4_5.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-tests-net_2_0.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-tests-net_4_0.csproj
mcs/class/System.Web.DynamicData/System.Web.DynamicData-tests-net_4_5.csproj
mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_2_0.csproj
mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_0.csproj
mcs/class/System.Web.Extensions.Design/System.Web.Extensions.Design-net_4_5.csproj
mcs/class/System.Web.Extensions.Design_1.0/System.Web.Extensions.Design_1.0-net_2_0.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-net_2_0.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_0.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-net_4_5.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-tests-net_2_0.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-tests-net_4_0.csproj
mcs/class/System.Web.Extensions/System.Web.Extensions-tests-net_4_5.csproj
mcs/class/System.Web.Extensions_1.0/System.Web.Extensions_1.0-net_2_0.csproj
mcs/class/System.Web.Http.SelfHost/System.Web.Http.SelfHost-net_4_5.csproj
mcs/class/System.Web.Http/System.Web.Http-net_4_5.csproj
mcs/class/System.Web.Mvc/System.Web.Mvc-net_2_0.csproj
mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_2_0.csproj
mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_4_0.csproj
mcs/class/System.Web.Mvc2/System.Web.Mvc2-net_4_5.csproj
mcs/class/System.Web.Mvc3/System.Web.Mvc3-net_4_5.csproj
mcs/class/System.Web.Razor/System.Web.Razor-net_4_5.csproj
mcs/class/System.Web.Routing/System.Web.Routing-net_2_0.csproj
mcs/class/System.Web.Routing/System.Web.Routing-net_4_0.csproj
mcs/class/System.Web.Routing/System.Web.Routing-net_4_5.csproj
mcs/class/System.Web.Routing/System.Web.Routing-tests-net_2_0.csproj
mcs/class/System.Web.Routing/System.Web.Routing-tests-net_4_0.csproj
mcs/class/System.Web.Routing/System.Web.Routing-tests-net_4_5.csproj
mcs/class/System.Web.Routing/System.Web.Routing/PatternParser.cs
mcs/class/System.Web.Routing/System.Web.Routing/Route.cs
mcs/class/System.Web.Routing/Test/System.Web.Routing/RouteTest.cs
mcs/class/System.Web.Services/Makefile
mcs/class/System.Web.Services/System.Web.Services-net_2_0.csproj
mcs/class/System.Web.Services/System.Web.Services-net_4_0.csproj
mcs/class/System.Web.Services/System.Web.Services-net_4_5.csproj
mcs/class/System.Web.Services/System.Web.Services-tests-net_2_0.csproj
mcs/class/System.Web.Services/System.Web.Services-tests-net_4_0.csproj
mcs/class/System.Web.Services/System.Web.Services-tests-net_4_5.csproj
mcs/class/System.Web.Services/System.Web.Services.Description/MessageCollection.cs
mcs/class/System.Web.Services/mobile_static_System.Web.Services.dll.sources [new file with mode: 0644]
mcs/class/System.Web.WebPages.Deployment/System.Web.WebPages.Deployment-net_4_5.csproj
mcs/class/System.Web.WebPages.Razor/System.Web.WebPages.Razor-net_4_5.csproj
mcs/class/System.Web.WebPages/System.Web.WebPages-net_4_5.csproj
mcs/class/System.Web/System.Web-net_2_0.csproj
mcs/class/System.Web/System.Web-net_4_0.csproj
mcs/class/System.Web/System.Web-net_4_5-1.csproj
mcs/class/System.Web/System.Web-net_4_5-2.csproj
mcs/class/System.Web/System.Web-net_4_5.csproj
mcs/class/System.Web/System.Web-tests-net_4_5.csproj
mcs/class/System.Web/System.Web.Configuration_2.0/HttpCapabilitiesBase.cs
mcs/class/System.Web/System.Web.Configuration_2.0/HttpRuntimeSection.cs
mcs/class/System.Web/System.Web.Configuration_2.0/LruCache.cs [new file with mode: 0644]
mcs/class/System.Web/System.Web.Configuration_2.0/WebConfigurationManager.cs
mcs/class/System.Web/System.Web.Util/HttpEncoder.cs
mcs/class/System.Web/System.Web.dll.sources
mcs/class/System.Web/System.Web/HttpResponse.cs
mcs/class/System.Web/System.Web/HttpRuntime.cs
mcs/class/System.Web/Test/System.Web.Util/MachineKeySectionUtilsTest.cs
mcs/class/System.Web/Test/System.Web/AppBrowsersTest.cs
mcs/class/System.Windows.Forms.DataVisualization/Makefile
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_0.csproj
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-net_4_5.csproj
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-tests-net_4_0.csproj
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization-tests-net_4_5.csproj
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnchorStyle.cs [deleted file]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Annotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationCollection.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationGroup.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationPathPoint.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationPositionChangingEventArgs.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationSmartLabelStyle.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ArrowAnnotation.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Axis.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AxisScaleView.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AxisScrollBar.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Border3DAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/BorderSkin.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CalloutAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Chart.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartArea.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartElement.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartGraphics.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartNamedElementCollection.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartSerializer.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Cursor.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CursorEventArgs.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomLabel.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomLabelCollection.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomProperties.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomizeLegendEventArgs.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/DataFormula.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/DataManipulator.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/DataPoint.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/DataPointCollection.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/DataPointCustomProperties.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/EllipseAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/FTestResult.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/HitTestResult.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/HorizontalLineAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ImageAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LabelStyle.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Legend.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCell.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCellCollection.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCellColumn.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCellColumnCollection.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCollection.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendItem.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendItemsCollection.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LineAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/PolygonAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/PolylineAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/PrintingManager.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/RectangleAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ScrollBarEventArgs.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Series.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/SmartLabelStyle.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/StatisticFormula.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/StripLine.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/StripLinesCollection.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/TTestResult.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/TextAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Title.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/TitleCollection.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ToolTipEventArgs.cs
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/VerticalLineAnnotation.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ViewEventArgs.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ZTestResult.cs [new file with mode: 0644]
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.csproj
mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.dll.sources
mcs/class/System.Windows.Forms.DataVisualization/Test/ChartingTests.csproj
mcs/class/System.Windows/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.Windows/Makefile [new file with mode: 0644]
mcs/class/System.Windows/System.Windows.dll.sources [new file with mode: 0644]
mcs/class/System.Windows/TypeForwarders.cs [new file with mode: 0644]
mcs/class/System.XML/Mono.Xml.Schema/XmlSchemaValidatingReader.cs [changed mode: 0644->0755]
mcs/class/System.XML/Mono.Xml.Schema/XsdValidatingReader.cs
mcs/class/System.XML/Mono.Xml.Xsl/XslStylesheet.cs
mcs/class/System.XML/System.Xml-build.csproj
mcs/class/System.XML/System.Xml-net_2_0.csproj
mcs/class/System.XML/System.Xml-net_4_0.csproj
mcs/class/System.XML/System.Xml-net_4_5-1.csproj
mcs/class/System.XML/System.Xml-net_4_5.csproj
mcs/class/System.XML/System.Xml-tests-net_2_0.csproj
mcs/class/System.XML/System.Xml-tests-net_4_0.csproj
mcs/class/System.XML/System.Xml-tests-net_4_5.csproj
mcs/class/System.XML/System.Xml.Schema/BuiltInDatatype.cs
mcs/class/System.XML/System.Xml.Schema/XmlAtomicValue.cs
mcs/class/System.XML/System.Xml.Schema/XmlSchemaSet.cs
mcs/class/System.XML/System.Xml.Schema/XmlSchemaValidator.cs
mcs/class/System.XML/System.Xml.Serialization/MapCodeGenerator.cs
mcs/class/System.XML/System.Xml.Serialization/XmlSchemaImporter.cs
mcs/class/System.XML/System.Xml/XQueryConvert.cs
mcs/class/System.XML/System.Xml/XmlConvert.cs
mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaDatatypeTests.cs
mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaSetTests.cs
mcs/class/System.XML/Test/System.Xml.Schema/XmlSchemaValidatorTests.cs [changed mode: 0644->0755]
mcs/class/System.XML/Test/System.Xml.Xsl/XslTransformTests.cs
mcs/class/System.XML/Test/System.Xml.Xsl/standalone_tests/Makefile
mcs/class/System.XML/Test/System.Xml.Xsl/standalone_tests/xslttest.cs
mcs/class/System.XML/mobile_static_System.Xml.dll.sources [new file with mode: 0644]
mcs/class/System.Xaml/System.Xaml-net_4_0.csproj
mcs/class/System.Xaml/System.Xaml-net_4_5.csproj
mcs/class/System.Xaml/System.Xaml-tests-net_4_0.csproj
mcs/class/System.Xaml/System.Xaml-tests-net_4_5.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-net_2_0.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_0.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-net_4_5.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-tests-net_2_0.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-tests-net_4_0.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq-tests-net_4_5.csproj
mcs/class/System.Xml.Linq/System.Xml.Linq/XContainer.cs
mcs/class/System.Xml.Linq/System.Xml.Linq/XElement.cs
mcs/class/System.Xml.Linq/System.Xml.Linq/XName.cs
mcs/class/System.Xml.Linq/System.Xml.Linq/XNode.cs
mcs/class/System.Xml.Linq/System.Xml.Linq/XObject.cs
mcs/class/System.Xml.Linq/System.Xml.Linq/XUtil.cs
mcs/class/System.Xml.Linq/System.Xml.Schema/Extensions.cs
mcs/class/System.Xml.Linq/Test/System.Xml.Linq/XElementTest.cs
mcs/class/System.Xml.Serialization/AssemblyInfo.cs [new file with mode: 0644]
mcs/class/System.Xml.Serialization/Makefile [new file with mode: 0644]
mcs/class/System.Xml.Serialization/System.Xml.Serialization.dll.sources [new file with mode: 0644]
mcs/class/System.Xml.Serialization/TypeForwarders.cs [new file with mode: 0644]
mcs/class/System/Makefile
mcs/class/System/Microsoft.CSharp/CSharpCodeCompiler.cs
mcs/class/System/Microsoft.CSharp/CSharpCodeGenerator.cs
mcs/class/System/Mono.Http/NtlmClient.cs
mcs/class/System/System-build.csproj
mcs/class/System/System-net_2_0.csproj
mcs/class/System/System-net_4_0.csproj
mcs/class/System/System-net_4_5-1.csproj
mcs/class/System/System-net_4_5-2.csproj
mcs/class/System/System-net_4_5.csproj
mcs/class/System/System-tests-net_2_0.csproj
mcs/class/System/System-tests-net_4_0.csproj
mcs/class/System/System-tests-net_4_5.csproj
mcs/class/System/System.CodeDom.Compiler/TempFileCollection.cs
mcs/class/System/System.CodeDom/CodeNamespace.cs
mcs/class/System/System.Collections.Concurrent/BlockingCollection.cs
mcs/class/System/System.Collections.Concurrent/ConcurrentBag.cs
mcs/class/System/System.Collections.Generic/SortedList.cs
mcs/class/System/System.Collections.ObjectModel/ObservableCollection.cs
mcs/class/System/System.ComponentModel/Component.cs
mcs/class/System/System.Configuration/SettingValueElement.cs
mcs/class/System/System.Diagnostics/TraceImpl.cs
mcs/class/System/System.Diagnostics/TraceListener.cs
mcs/class/System/System.Diagnostics/TraceSource.cs
mcs/class/System/System.IO.Compression/CompressionLevel.cs
mcs/class/System/System.IO.Compression/DeflateStream.cs
mcs/class/System/System.Net.Mail/SmtpClient.cs
mcs/class/System/System.Net.NetworkInformation/NetworkChange.cs
mcs/class/System/System.Net.NetworkInformation/NetworkInterface.cs
mcs/class/System/System.Net.Security/LocalCertificateSelectionCallback.cs
mcs/class/System/System.Net.Security/SslStream.cs
mcs/class/System/System.Net.Sockets/Socket_2_1.cs
mcs/class/System/System.Net.WebSockets/ClientWebSocket.cs
mcs/class/System/System.Net.WebSockets/ClientWebSocketOptions.cs
mcs/class/System/System.Net.WebSockets/WebSocketException.cs
mcs/class/System/System.Net.WebSockets/WebSocketMessageType.cs
mcs/class/System/System.Net.WebSockets/WebSocketReceiveResult.cs
mcs/class/System/System.Net/DigestClient.cs
mcs/class/System/System.Net/Dns.cs
mcs/class/System/System.Net/EndPointListener.cs
mcs/class/System/System.Net/FtpWebRequest.cs
mcs/class/System/System.Net/HttpConnection.cs
mcs/class/System/System.Net/HttpListenerRequest.cs
mcs/class/System/System.Net/HttpStatusCode.cs
mcs/class/System/System.Net/HttpWebRequest.cs
mcs/class/System/System.Net/HttpWebResponse.cs
mcs/class/System/System.Net/ListenerAsyncResult.cs
mcs/class/System/System.Net/MacProxy.cs
mcs/class/System/System.Net/ServicePointManager.cs
mcs/class/System/System.Net/WebClient.cs
mcs/class/System/System.Net/WebConnection.cs
mcs/class/System/System.Net/WebRequest.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/OSX509Certificates.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/PublicKey.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X500DistinguishedName.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509BasicConstraintsExtension.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Certificate2.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Chain.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509EnhancedKeyUsageExtension.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509ExtensionCollection.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509KeyUsageExtension.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509Store.cs
mcs/class/System/System.Security.Cryptography.X509Certificates/X509SubjectKeyIdentifierExtension.cs
mcs/class/System/System.Security.Cryptography/AsnEncodedData.cs
mcs/class/System/System.Text.RegularExpressions/Regex.cs
mcs/class/System/System.Timers/Timer.cs
mcs/class/System/System/AndroidPlatform.cs
mcs/class/System/System/Platform.cs
mcs/class/System/System/Uri.cs
mcs/class/System/System/UriComponents.cs
mcs/class/System/System_test.dll.sources
mcs/class/System/Test/Microsoft.CSharp/CSharpCodeProviderTest.cs
mcs/class/System/Test/Microsoft.CSharp/CodeGeneratorFromCompileUnitTest.cs
mcs/class/System/Test/System.Collections.Concurrent/BlockingCollectionTests.cs
mcs/class/System/Test/System.Diagnostics/TraceSourceTest.cs
mcs/class/System/Test/System.IO.Compression/GzipStreamTest.cs
mcs/class/System/Test/System.Net.Sockets/UdpClientTest.cs
mcs/class/System/Test/System.Net.WebSockets/ClientWebSocketTest.cs [new file with mode: 0644]
mcs/class/System/Test/System.Net/DnsTest.cs
mcs/class/System/Test/System.Net/FtpWebRequestTest.cs
mcs/class/System/Test/System.Net/HttpWebRequestTest.cs
mcs/class/System/Test/System.Security.Cryptography.X509Certificates/X509ChainTest.cs
mcs/class/System/Test/System/UriTest.cs
mcs/class/System/Test/System/UriTest3.cs
mcs/class/System/mobile_System.dll.sources
mcs/class/System/mobile_static_System.dll.sources [new file with mode: 0644]
mcs/class/System/monotouch_System.dll.sources
mcs/class/SystemWebTestShim/SystemWebTestShim-net_2_0.csproj
mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_0.csproj
mcs/class/SystemWebTestShim/SystemWebTestShim-net_4_5.csproj
mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_0.csproj
mcs/class/WebMatrix.Data/WebMatrix.Data-net_4_5.csproj
mcs/class/WebMatrix.Data/WebMatrix.Data-tests-net_4_0.csproj
mcs/class/WebMatrix.Data/WebMatrix.Data-tests-net_4_5.csproj
mcs/class/WindowsBase/System.Collections.ObjectModel/ObservableCollection.cs
mcs/class/WindowsBase/System.IO.Packaging/PackagePart.cs
mcs/class/WindowsBase/System.Windows/DependencyObject.cs
mcs/class/WindowsBase/Test/System.Windows/DependencyObjectTest.cs
mcs/class/WindowsBase/WindowsBase-net_2_0.csproj
mcs/class/WindowsBase/WindowsBase-net_4_0.csproj
mcs/class/WindowsBase/WindowsBase-net_4_5.csproj
mcs/class/WindowsBase/WindowsBase-tests-net_2_0.csproj
mcs/class/WindowsBase/WindowsBase-tests-net_4_0.csproj
mcs/class/WindowsBase/WindowsBase-tests-net_4_5.csproj
mcs/class/build-rx-dll-sources.sh
mcs/class/corlib/Makefile
mcs/class/corlib/Microsoft.Win32/UnixRegistryApi.cs
mcs/class/corlib/Mono.Math.Prime.Generator/ChangeLog [deleted file]
mcs/class/corlib/Mono.Math.Prime.Generator/NextPrimeFinder.cs [deleted file]
mcs/class/corlib/Mono.Math.Prime.Generator/PrimeGeneratorBase.cs [deleted file]
mcs/class/corlib/Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs [deleted file]
mcs/class/corlib/Mono.Math.Prime/ChangeLog [deleted file]
mcs/class/corlib/Mono.Math.Prime/ConfidenceFactor.cs [deleted file]
mcs/class/corlib/Mono.Math.Prime/PrimalityTests.cs [deleted file]
mcs/class/corlib/Mono.Math/BigInteger.cs [deleted file]
mcs/class/corlib/Mono.Math/ChangeLog [deleted file]
mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeBase.cs [deleted file]
mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeDeformatter.cs [deleted file]
mcs/class/corlib/Mono.Security.Authenticode/ChangeLog [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/CryptoConvert.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/CryptoTools.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/KeyPairPersistence.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/PKCS1.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/PKCS8.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/RSAManaged.cs [deleted file]
mcs/class/corlib/Mono.Security.Cryptography/SymmetricTransform.cs [deleted file]
mcs/class/corlib/Mono.Security.X509.Extensions/BasicConstraintsExtension.cs [deleted file]
mcs/class/corlib/Mono.Security.X509.Extensions/ChangeLog [deleted file]
mcs/class/corlib/Mono.Security.X509.Extensions/KeyUsageExtension.cs [deleted file]
mcs/class/corlib/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/ChangeLog [deleted file]
mcs/class/corlib/Mono.Security.X509/ITrustAnchors.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/PKCS12.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/TestAnchors.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/TrustAnchors.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X501Name.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509CRL.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Certificate.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509CertificateCollection.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Chain.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509ChainStatusFlags.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Extension.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Extensions.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Store.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X509Stores.cs [deleted file]
mcs/class/corlib/Mono.Security.X509/X520Attributes.cs [deleted file]
mcs/class/corlib/Mono.Security/ASN1.cs [deleted file]
mcs/class/corlib/Mono.Security/ASN1Convert.cs [deleted file]
mcs/class/corlib/Mono.Security/BitConverterLE.cs [deleted file]
mcs/class/corlib/Mono.Security/ChangeLog [deleted file]
mcs/class/corlib/Mono.Security/PKCS7.cs [deleted file]
mcs/class/corlib/Mono.Security/StrongName.cs [deleted file]
mcs/class/corlib/System.Collections.Generic/List.cs
mcs/class/corlib/System.Collections.ObjectModel/Collection.cs
mcs/class/corlib/System.Collections/CollectionBase.cs
mcs/class/corlib/System.Collections/StructuralComparisons.cs
mcs/class/corlib/System.Diagnostics/ConditionalAttribute.cs
mcs/class/corlib/System.Diagnostics/DebuggableAttribute.cs
mcs/class/corlib/System.Globalization/CultureInfo.cs
mcs/class/corlib/System.IO/Directory.cs
mcs/class/corlib/System.IO/FileStream.cs
mcs/class/corlib/System.IO/Path.cs
mcs/class/corlib/System.IO/Stream.cs
mcs/class/corlib/System.IO/StreamWriter.cs
mcs/class/corlib/System.Reflection.Emit/ConstructorBuilder.cs
mcs/class/corlib/System.Reflection.Emit/ConstructorOnTypeBuilderInst.cs
mcs/class/corlib/System.Reflection.Emit/DynamicILInfo.cs
mcs/class/corlib/System.Reflection.Emit/DynamicMethod.cs
mcs/class/corlib/System.Reflection.Emit/EnumBuilder.cs
mcs/class/corlib/System.Reflection.Emit/GenericTypeParameterBuilder.cs
mcs/class/corlib/System.Reflection.Emit/ILGenerator.cs
mcs/class/corlib/System.Reflection.Emit/MethodBuilder.cs
mcs/class/corlib/System.Reflection.Emit/ModuleBuilder.cs
mcs/class/corlib/System.Reflection.Emit/TypeBuilder.cs
mcs/class/corlib/System.Reflection/AssemblyName.cs
mcs/class/corlib/System.Reflection/Binder.cs
mcs/class/corlib/System.Reflection/IntrospectionExtensions.cs
mcs/class/corlib/System.Reflection/MonoGenericClass.cs
mcs/class/corlib/System.Reflection/MonoMethod.cs
mcs/class/corlib/System.Reflection/MonoParameterInfo.cs [new file with mode: 0644]
mcs/class/corlib/System.Reflection/MonoProperty.cs
mcs/class/corlib/System.Reflection/ParameterInfo.cs
mcs/class/corlib/System.Reflection/RuntimeReflectionExtensions.cs
mcs/class/corlib/System.Reflection/TypeAttributes.cs
mcs/class/corlib/System.Reflection/TypeDelegator.cs
mcs/class/corlib/System.Reflection/TypeInfo.cs
mcs/class/corlib/System.Runtime.CompilerServices/ConditionalWeakTable.cs
mcs/class/corlib/System.Runtime.CompilerServices/TaskAwaiter.cs
mcs/class/corlib/System.Runtime.CompilerServices/TaskAwaiter_T.cs
mcs/class/corlib/System.Runtime.InteropServices/Marshal.cs
mcs/class/corlib/System.Runtime/GCLatencyMode.cs
mcs/class/corlib/System.Security.Cryptography/CryptoConfig.fullaot.cs
mcs/class/corlib/System.Security.Cryptography/DSACryptoServiceProvider.cs
mcs/class/corlib/System.Security.Cryptography/DSASignatureDeformatter.cs
mcs/class/corlib/System.Security.Cryptography/DSASignatureFormatter.cs
mcs/class/corlib/System.Security.Cryptography/HMAC.cs
mcs/class/corlib/System.Security.Cryptography/HMACMD5.cs
mcs/class/corlib/System.Security.Cryptography/HMACRIPEMD160.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA1.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA256.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA384.cs
mcs/class/corlib/System.Security.Cryptography/HMACSHA512.cs
mcs/class/corlib/System.Security.Cryptography/MACTripleDES.cs
mcs/class/corlib/System.Security.Cryptography/RSACryptoServiceProvider.cs
mcs/class/corlib/System.Security.Cryptography/RSAPKCS1SignatureDeformatter.cs
mcs/class/corlib/System.Security.Cryptography/RSAPKCS1SignatureFormatter.cs
mcs/class/corlib/System.Security.Cryptography/ToBase64Transform.cs
mcs/class/corlib/System.Security.Principal/WindowsIdentity.cs
mcs/class/corlib/System.Text/Decoder.cs
mcs/class/corlib/System.Text/UTF8Encoding.cs
mcs/class/corlib/System.Threading.Tasks/CyclicDeque.cs
mcs/class/corlib/System.Threading.Tasks/Parallel.cs
mcs/class/corlib/System.Threading.Tasks/Task.cs
mcs/class/corlib/System.Threading.Tasks/TaskActionInvoker.cs
mcs/class/corlib/System.Threading.Tasks/TaskContinuation.cs
mcs/class/corlib/System.Threading.Tasks/TaskFactory.cs
mcs/class/corlib/System.Threading.Tasks/TpScheduler.cs
mcs/class/corlib/System.Threading/CancellationToken.cs
mcs/class/corlib/System.Threading/ManualResetEventSlim.cs
mcs/class/corlib/System.Threading/SemaphoreSlim.cs
mcs/class/corlib/System.Threading/SynchronizationContext.cs
mcs/class/corlib/System.Threading/Thread.cs
mcs/class/corlib/System.Threading/ThreadPool.cs
mcs/class/corlib/System.Threading/Timer.cs
mcs/class/corlib/System/AggregateException.cs
mcs/class/corlib/System/Array.cs
mcs/class/corlib/System/Attribute.cs
mcs/class/corlib/System/BitConverter.cs
mcs/class/corlib/System/Console.cs
mcs/class/corlib/System/Console.iOS.cs
mcs/class/corlib/System/ConsoleKeyInfo.cs
mcs/class/corlib/System/Convert.cs
mcs/class/corlib/System/Enum.cs
mcs/class/corlib/System/Guid.cs
mcs/class/corlib/System/IntPtr.cs
mcs/class/corlib/System/MonoCustomAttrs.cs
mcs/class/corlib/System/MonoType.cs
mcs/class/corlib/System/MulticastDelegate.cs
mcs/class/corlib/System/Random.cs
mcs/class/corlib/System/String.cs
mcs/class/corlib/System/TimeSpan.cs
mcs/class/corlib/System/Type.cs
mcs/class/corlib/System/Variant.cs
mcs/class/corlib/Test/System.Collections.Generic/ListTest.cs
mcs/class/corlib/Test/System.Collections/StructuralComparisonsTest.cs [new file with mode: 0644]
mcs/class/corlib/Test/System.Diagnostics/StackFrameTest.cs
mcs/class/corlib/Test/System.Globalization/CultureInfoTest.cs
mcs/class/corlib/Test/System.Globalization/RegionInfoTest.cs
mcs/class/corlib/Test/System.IO/DirectoryTest.cs
mcs/class/corlib/Test/System.IO/FileStreamTest.cs
mcs/class/corlib/Test/System.IO/StreamWriterTest.cs
mcs/class/corlib/Test/System.Reflection.Emit/AssemblyBuilderTest.cs
mcs/class/corlib/Test/System.Reflection.Emit/DynamicILInfoTest.cs
mcs/class/corlib/Test/System.Reflection/AssemblyNameTest.cs
mcs/class/corlib/Test/System.Reflection/BinderTests.cs
mcs/class/corlib/Test/System.Reflection/IntrospectionExtensionsTest.cs [new file with mode: 0644]
mcs/class/corlib/Test/System.Reflection/MethodInfoTest.cs
mcs/class/corlib/Test/System.Reflection/ParameterInfoTest.cs
mcs/class/corlib/Test/System.Reflection/PropertyInfoTest.cs
mcs/class/corlib/Test/System.Runtime.CompilerServices/TaskAwaiterTest.cs
mcs/class/corlib/Test/System.Runtime.CompilerServices/TaskAwaiterTest_T.cs
mcs/class/corlib/Test/System.Runtime.CompilerServices/YieldAwaitableTest.cs
mcs/class/corlib/Test/System.Security.Cryptography/RSACryptoServiceProviderTest.cs
mcs/class/corlib/Test/System.Text/UTF8EncodingTest.cs
mcs/class/corlib/Test/System.Threading.Tasks/TaskFactoryTest.cs
mcs/class/corlib/Test/System.Threading.Tasks/TaskTest.cs
mcs/class/corlib/Test/System.Threading/ThreadPoolTest.cs [new file with mode: 0644]
mcs/class/corlib/Test/System.Threading/ThreadTest.cs
mcs/class/corlib/Test/System.Threading/TimerTest.cs
mcs/class/corlib/Test/System/AggregateExceptionTests.cs
mcs/class/corlib/Test/System/AppDomainTest.cs
mcs/class/corlib/Test/System/ArrayTest.cs
mcs/class/corlib/Test/System/AttributeTest.cs
mcs/class/corlib/Test/System/ConsoleTest.cs
mcs/class/corlib/Test/System/DelegateTest.cs
mcs/class/corlib/Test/System/EnumTest.cs
mcs/class/corlib/Test/System/GuidTest.cs
mcs/class/corlib/Test/System/IntegerFormatterTest.cs
mcs/class/corlib/Test/System/MulticastDelegate.cs
mcs/class/corlib/Test/System/RandomTest.cs
mcs/class/corlib/Test/System/StringTest.cs
mcs/class/corlib/Test/System/TimeSpanTest.cs
mcs/class/corlib/Test/System/TimeZoneTest.cs
mcs/class/corlib/Test/System/TypeTest.cs
mcs/class/corlib/corlib-build.csproj
mcs/class/corlib/corlib-net_2_0.csproj
mcs/class/corlib/corlib-net_4_0.csproj
mcs/class/corlib/corlib-net_4_5.csproj
mcs/class/corlib/corlib-tests-net_2_0.csproj
mcs/class/corlib/corlib-tests-net_4_0.csproj
mcs/class/corlib/corlib-tests-net_4_5.csproj
mcs/class/corlib/corlib.dll.sources
mcs/class/corlib/corlib_test.dll.sources
mcs/class/corlib/mobile_static_corlib.dll.sources [new file with mode: 0644]
mcs/class/corlib/monotouch_corlib.dll.sources [new file with mode: 0644]
mcs/class/monodoc/Makefile
mcs/class/monodoc/Monodoc.Ecma/EcmaUrlTokenizer.cs
mcs/class/monodoc/Monodoc/RootTree.cs
mcs/class/monodoc/Monodoc/RootTree_Legacy.cs
mcs/class/monodoc/Monodoc/generators/html/Ecma2Html.cs
mcs/class/monodoc/Monodoc/providers/EcmaDoc.cs
mcs/class/monodoc/Monodoc/providers/ecma-provider.cs
mcs/class/monodoc/Resources/ecmaspec.css
mcs/class/monodoc/Resources/mdoc-sections-css.xsl
mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs [new file with mode: 0644]
mcs/class/monodoc/Test/Monodoc/HelpSourceTests.cs
mcs/class/monodoc/monodoc-net_4_0.csproj
mcs/class/monodoc/monodoc-net_4_5.csproj
mcs/class/monodoc/monodoc-tests-net_4_0.csproj
mcs/class/monodoc/monodoc-tests-net_4_5.csproj
mcs/class/monodoc/monodoc_test.dll.sources
mcs/class/project_template_android.txt
mcs/class/project_template_ios.txt
mcs/docs/compiler.txt
mcs/errors/CS0012-21-lib.il [new file with mode: 0644]
mcs/errors/Makefile
mcs/errors/cs0012-21.cs [new file with mode: 0644]
mcs/errors/cs0019-34.cs [deleted file]
mcs/errors/cs0019-51.cs [deleted file]
mcs/errors/cs0019-69.cs [new file with mode: 0644]
mcs/errors/cs0019-70.cs [new file with mode: 0644]
mcs/errors/cs0029-34.cs [new file with mode: 0644]
mcs/errors/cs0034-6.cs [new file with mode: 0644]
mcs/errors/cs0037-8.cs [deleted file]
mcs/errors/cs0075.cs
mcs/errors/cs0102-21.cs [new file with mode: 0644]
mcs/errors/cs0118-11.cs [changed mode: 0644->0755]
mcs/errors/cs0118-12.cs [deleted file]
mcs/errors/cs0119-2.cs [new file with mode: 0644]
mcs/errors/cs0119-8.cs [changed mode: 0755->0644]
mcs/errors/cs0120-19.cs [new file with mode: 0644]
mcs/errors/cs0150-2.cs [new file with mode: 0644]
mcs/errors/cs0161-4.cs [new file with mode: 0644]
mcs/errors/cs0162-18.cs [new file with mode: 0644]
mcs/errors/cs0162-19.cs [new file with mode: 0644]
mcs/errors/cs0165-21.cs [new file with mode: 0644]
mcs/errors/cs0177-13.cs [new file with mode: 0644]
mcs/errors/cs0193.cs
mcs/errors/cs0208-17.cs [new file with mode: 0644]
mcs/errors/cs0266-27.cs [new file with mode: 0644]
mcs/errors/cs0266-28.cs [new file with mode: 0644]
mcs/errors/cs0411-15.cs [deleted file]
mcs/errors/cs0411-7.cs [deleted file]
mcs/errors/cs0429-3.cs [new file with mode: 0644]
mcs/errors/cs0452-11.cs [new file with mode: 0644]
mcs/errors/cs0458-14.cs [new file with mode: 0644]
mcs/errors/cs0458-15.cs [new file with mode: 0644]
mcs/errors/cs0458-16.cs [new file with mode: 0644]
mcs/errors/cs0458-17.cs [new file with mode: 0644]
mcs/errors/cs0464-4.cs [new file with mode: 0644]
mcs/errors/cs0464.cs
mcs/errors/cs0472-4.cs
mcs/errors/cs0472-5.cs [new file with mode: 0644]
mcs/errors/cs0534-10.cs [new file with mode: 0644]
mcs/errors/cs0534-11.cs [new file with mode: 0644]
mcs/errors/cs0534-9.cs
mcs/errors/cs0540-3.cs [new file with mode: 0644]
mcs/errors/cs0576-3.cs [new file with mode: 0644]
mcs/errors/cs0647-15.cs
mcs/errors/cs0647-20.cs [new file with mode: 0644]
mcs/errors/cs0658-3.cs [new file with mode: 0644]
mcs/errors/cs0658-4.cs [new file with mode: 0644]
mcs/errors/cs0717-2.cs [new file with mode: 0644]
mcs/errors/cs1503-14.cs [new file with mode: 0644]
mcs/errors/cs1503-15.cs [new file with mode: 0644]
mcs/errors/cs1503-16.cs [new file with mode: 0644]
mcs/errors/cs1648-2.cs [new file with mode: 0644]
mcs/errors/cs1648-3.cs [new file with mode: 0644]
mcs/errors/cs1650-2.cs [new file with mode: 0644]
mcs/errors/cs1661-2.cs
mcs/errors/cs1661-3.cs [new file with mode: 0644]
mcs/errors/cs1678-2.cs [new file with mode: 0644]
mcs/errors/cs1678.cs
mcs/errors/cs1739-4.cs [new file with mode: 0644]
mcs/errors/cs1750-4.cs [new file with mode: 0644]
mcs/errors/known-issues-net_4_5
mcs/ilasm/parser/ILParser.jay
mcs/jay/jay.vcxproj
mcs/mcs/anonymous.cs
mcs/mcs/assembly.cs
mcs/mcs/assign.cs
mcs/mcs/async.cs
mcs/mcs/attribute.cs
mcs/mcs/cfold.cs
mcs/mcs/class.cs
mcs/mcs/codegen.cs
mcs/mcs/complete.cs
mcs/mcs/const.cs
mcs/mcs/constant.cs
mcs/mcs/context.cs
mcs/mcs/convert.cs
mcs/mcs/cs-parser.jay
mcs/mcs/cs-tokenizer.cs
mcs/mcs/decl.cs
mcs/mcs/delegate.cs
mcs/mcs/doc.cs
mcs/mcs/driver.cs
mcs/mcs/dynamic.cs
mcs/mcs/ecore.cs
mcs/mcs/enum.cs
mcs/mcs/eval.cs
mcs/mcs/expression.cs
mcs/mcs/field.cs
mcs/mcs/flowanalysis.cs
mcs/mcs/generic.cs
mcs/mcs/ikvm.cs
mcs/mcs/import.cs
mcs/mcs/lambda.cs
mcs/mcs/mcs-build.csproj
mcs/mcs/mcs-net_4_5.csproj
mcs/mcs/mcs.csproj
mcs/mcs/mcs.exe.sources
mcs/mcs/membercache.cs
mcs/mcs/method.cs
mcs/mcs/modifiers.cs
mcs/mcs/module.cs
mcs/mcs/namespace.cs
mcs/mcs/nullable.cs
mcs/mcs/parameter.cs
mcs/mcs/pending.cs
mcs/mcs/property.cs
mcs/mcs/report.cs
mcs/mcs/settings.cs
mcs/mcs/statement.cs
mcs/mcs/support.cs
mcs/mcs/typemanager.cs
mcs/mcs/typespec.cs
mcs/mcs/visit.cs
mcs/tests/dtest-001.cs
mcs/tests/dtest-error-02.cs
mcs/tests/gtest-217.cs [deleted file]
mcs/tests/gtest-274.cs
mcs/tests/gtest-381.cs [deleted file]
mcs/tests/gtest-540.cs
mcs/tests/gtest-544.cs
mcs/tests/gtest-545.cs
mcs/tests/gtest-579.cs
mcs/tests/gtest-584.cs [new file with mode: 0644]
mcs/tests/gtest-585.cs [new file with mode: 0644]
mcs/tests/gtest-586.cs [new file with mode: 0644]
mcs/tests/gtest-587.cs [new file with mode: 0644]
mcs/tests/gtest-588.cs [new file with mode: 0644]
mcs/tests/gtest-589.cs [new file with mode: 0644]
mcs/tests/gtest-590.cs [new file with mode: 0644]
mcs/tests/gtest-591-lib.cs [new file with mode: 0644]
mcs/tests/gtest-591.cs [new file with mode: 0644]
mcs/tests/gtest-592.cs [new file with mode: 0644]
mcs/tests/gtest-593.cs [new file with mode: 0644]
mcs/tests/gtest-594.cs [new file with mode: 0644]
mcs/tests/gtest-595.cs [new file with mode: 0644]
mcs/tests/gtest-596.cs [new file with mode: 0644]
mcs/tests/gtest-597.cs [new file with mode: 0644]
mcs/tests/gtest-598.cs [new file with mode: 0644]
mcs/tests/gtest-599.cs [new file with mode: 0644]
mcs/tests/gtest-autoproperty-08.cs [new file with mode: 0644]
mcs/tests/gtest-etree-01.cs
mcs/tests/gtest-etree-04.cs
mcs/tests/gtest-exmethod-47.cs [new file with mode: 0644]
mcs/tests/gtest-iter-29.cs [new file with mode: 0644]
mcs/tests/gtest-iter-30.cs [new file with mode: 0644]
mcs/tests/gtest-iter-31.cs [new file with mode: 0644]
mcs/tests/gtest-iter-32.cs [new file with mode: 0644]
mcs/tests/gtest-iter-33.cs [new file with mode: 0644]
mcs/tests/gtest-optional-28.cs [new file with mode: 0644]
mcs/tests/gtest-partial-07.cs [new file with mode: 0644]
mcs/tests/gtest-partial-08.cs [new file with mode: 0644]
mcs/tests/gtest-partial-09.cs [new file with mode: 0644]
mcs/tests/gtest-variance-11.cs
mcs/tests/test-181.cs
mcs/tests/test-285.cs
mcs/tests/test-504.cs
mcs/tests/test-591.cs
mcs/tests/test-868.cs [new file with mode: 0644]
mcs/tests/test-869.cs [new file with mode: 0644]
mcs/tests/test-870.cs [new file with mode: 0644]
mcs/tests/test-871.cs [new file with mode: 0644]
mcs/tests/test-873.cs [new file with mode: 0644]
mcs/tests/test-anon-124.cs
mcs/tests/test-anon-171.cs [new file with mode: 0644]
mcs/tests/test-anon-94.cs
mcs/tests/test-async-13.cs
mcs/tests/test-async-22.cs
mcs/tests/test-async-42.cs [new file with mode: 0644]
mcs/tests/test-async-47.cs [new file with mode: 0644]
mcs/tests/test-async-48.cs [new file with mode: 0644]
mcs/tests/test-async-49.cs [new file with mode: 0644]
mcs/tests/test-async-50.cs [new file with mode: 0644]
mcs/tests/test-async-51.cs [new file with mode: 0644]
mcs/tests/test-async-52.cs [new file with mode: 0644]
mcs/tests/test-async-53.cs [new file with mode: 0644]
mcs/tests/test-debug-10-ref.xml
mcs/tests/test-debug-11-ref.xml
mcs/tests/test-debug-14-ref.xml
mcs/tests/test-debug-15-ref.xml
mcs/tests/test-debug-16-ref.xml
mcs/tests/test-debug-17-ref.xml
mcs/tests/test-debug-18-ref.xml
mcs/tests/test-debug-19-ref.xml
mcs/tests/test-debug-21-ref.xml
mcs/tests/test-debug-22-ref.xml
mcs/tests/test-debug-23-ref.xml
mcs/tests/test-debug-24-ref.xml
mcs/tests/test-debug-27-ref.xml [new file with mode: 0644]
mcs/tests/test-debug-27.cs [new file with mode: 0644]
mcs/tests/test-debug-28-ref.xml [new file with mode: 0644]
mcs/tests/test-debug-28.cs [new file with mode: 0644]
mcs/tests/test-named-08.cs [new file with mode: 0644]
mcs/tests/test-partial-31.cs [new file with mode: 0644]
mcs/tests/test-partial-32.cs [new file with mode: 0644]
mcs/tests/test-xml-068-ref.xml [new file with mode: 0644]
mcs/tests/test-xml-068.cs [new file with mode: 0644]
mcs/tests/ver-il-net_4_5.xml
mcs/tools/cil-strip/Mono.Cecil.Cil/CodeReader.cs
mcs/tools/cil-strip/cil-strip.csproj [new file with mode: 0644]
mcs/tools/corcompare/corcompare.sln
mcs/tools/corcompare/mono-api-html/ApiDiff.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/AssemblyComparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/ClassComparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/Comparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/ConstructorComparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/EventComparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/FieldComparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/Helpers.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/InterfaceComparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/MemberComparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/MethodComparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/NamespaceComparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/PropertyComparer.cs [new file with mode: 0644]
mcs/tools/corcompare/mono-api-html/mono-api-html.csproj [new file with mode: 0644]
mcs/tools/corcompare/mono-api-info.csproj
mcs/tools/csharp/repl.cs
mcs/tools/ildasm/DataConverter.cs [deleted file]
mcs/tools/ildasm/Makefile [deleted file]
mcs/tools/ildasm/ildasm.cs [deleted file]
mcs/tools/ildasm/ildasm.exe.sources [deleted file]
mcs/tools/ildasm/tables.cs [deleted file]
mcs/tools/linker/Descriptors/mscorlib.xml
mcs/tools/linker/Mono.Linker.Steps/BlacklistStep.cs
mcs/tools/linker/Mono.Linker.Steps/MarkStep.cs
mcs/tools/linker/Mono.Linker.Steps/OutputStep.cs
mcs/tools/linker/Mono.Linker.Steps/SweepStep.cs
mcs/tools/linker/Mono.Linker/AssemblyAction.cs
mcs/tools/mdbrebase/mdbrebase.cs
mcs/tools/mdoc/Mono.Documentation/exceptions.cs
mcs/tools/mdoc/Mono.Documentation/monodocer.cs
mcs/tools/mdoc/Mono.Documentation/monodocs2slashdoc.cs
mcs/tools/mdoc/Mono.Documentation/webdoc.cs
mcs/tools/mdoc/Resources/defaulttemplate.xsl
mcs/tools/mdoc/Resources/monodoc-ecma.xsd
mcs/tools/mdoc/Test/DocTest-v1.cs
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest/DocAttribute.xml
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest/DocValueType.xml
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest/UseLists.xml
mcs/tools/mdoc/Test/en.expected.delete/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected.delete/System/Array.xml
mcs/tools/mdoc/Test/en.expected.delete/System/Environment.xml
mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Array.xml
mcs/tools/mdoc/Test/en.expected.importecmadoc/System/Environment.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocAttribute.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/DocValueType.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/UseLists.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Array.xml
mcs/tools/mdoc/Test/en.expected.importslashdoc/System/Environment.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocAttribute.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/DocValueType.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/UseLists.xml
mcs/tools/mdoc/Test/en.expected.since/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected.since/System/Array.xml
mcs/tools/mdoc/Test/en.expected.since/System/Environment.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest.Generic/GenericBase`1.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocAttribute.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest/DocValueType.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest/UseLists.xml
mcs/tools/mdoc/Test/en.expected/Mono.DocTest/Widget.xml
mcs/tools/mdoc/Test/en.expected/System/Array.xml
mcs/tools/mdoc/Test/en.expected/System/Environment.xml
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/Extensions.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/Func`2.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1+FooEventArgs.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection+Enumerator.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1+NestedCollection.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/GenericBase`1.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/IFoo`1.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`1+Helper`2.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`1.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest.Generic/MyList`2.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Color.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/D.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/DocAttribute.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/DocValueType.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/IProcess.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/UseLists.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+Del.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+Direction.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+IMenuItem.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+NestedClass+Double+Triple+Quadruple.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+NestedClass+Double+Triple.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+NestedClass+Double.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+NestedClass.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget+NestedClass`1.html
mcs/tools/mdoc/Test/html.expected/Mono.DocTest/Widget.html
mcs/tools/mdoc/Test/html.expected/NoNamespace.html
mcs/tools/mdoc/Test/html.expected/System/Action`1.html
mcs/tools/mdoc/Test/html.expected/System/Array.html
mcs/tools/mdoc/Test/html.expected/System/AsyncCallback.html
mcs/tools/mdoc/Test/html.expected/System/Environment+SpecialFolder.html
mcs/tools/mdoc/Test/html.expected/System/Environment.html
mcs/tools/mdoc/Test/msxdoc-expected.importslashdoc.xml
mcs/tools/mkbundle/Makefile
mcs/tools/mkbundle/mkbundle.cs [changed mode: 0644->0755]
mcs/tools/mkbundle/mkbundle.exe.sources
mcs/tools/mkbundle/template_z.c
mcs/tools/mono-service/mono-service.cs
mcs/tools/security/sn.cs
mcs/tools/tuner/Mono.Tuner/AdjustVisibility.cs
mcs/tools/tuner/Mono.Tuner/Dispatcher.cs
mcs/tools/tuner/Mono.Tuner/PreserveSoapHttpClients.cs
mcs/tools/xbuild/Makefile
mcs/tools/xbuild/xbuild/2.0/Microsoft.Common.targets
mcs/tools/xbuild/xbuild/3.5/Microsoft.Common.targets
mcs/tools/xbuild/xbuild/4.0/Microsoft.Common.targets
mcs/tools/xbuild/xbuild/4.0/Microsoft.Portable.CSharp.targets [new file with mode: 0644]
mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.targets [deleted file]
mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.tasks [deleted file]
mcs/tools/xbuild/xbuild/4.5/Microsoft.Portable.CSharp.targets [new file with mode: 0644]
mcs/tools/xbuild/xbuild/Microsoft.CSharp.targets
mcs/tools/xbuild/xbuild/Microsoft.Portable.CSharp.targets
mcs/tools/xbuild/xbuild_targets.make
mono-core.spec.in
mono/Makefile.am
mono/arch/arm/Makefile.am
mono/arch/arm/arm-codegen.h
mono/arch/arm/arm-fpa-codegen.h [deleted file]
mono/arch/arm/arm-vfp-codegen.h
mono/arch/arm/fpa_macros.th [deleted file]
mono/arch/arm/fpam_macros.th [deleted file]
mono/arch/arm/fpaops.sh [deleted file]
mono/cil/opcode.def
mono/dis/declsec.c [changed mode: 0644->0755]
mono/dis/dis-cil.c [changed mode: 0644->0755]
mono/dis/dump.c [changed mode: 0644->0755]
mono/dis/get.c [changed mode: 0644->0755]
mono/dis/main.c
mono/dis/util.c [changed mode: 0644->0755]
mono/dis/util.h [changed mode: 0644->0755]
mono/io-layer/error.c
mono/io-layer/handles-private.h
mono/io-layer/handles.c
mono/io-layer/io-layer.h [changed mode: 0644->0755]
mono/io-layer/macros.h
mono/io-layer/messages.c
mono/io-layer/processes.c
mono/io-layer/shared.c
mono/io-layer/sockets.c
mono/io-layer/wthreads.c
mono/metadata/Makefile.am.in
mono/metadata/appdomain.c
mono/metadata/appdomain.h
mono/metadata/assembly.c
mono/metadata/assembly.h
mono/metadata/boehm-gc.c
mono/metadata/cil-coff.h
mono/metadata/class-internals.h
mono/metadata/class.c
mono/metadata/class.h
mono/metadata/cominterop.c
mono/metadata/cominterop.h
mono/metadata/console-unix.c
mono/metadata/console-win32.c
mono/metadata/culture-info-tables.h
mono/metadata/debug-helpers.c
mono/metadata/debug-helpers.h
mono/metadata/debug-mono-symfile.c
mono/metadata/debug-mono-symfile.h
mono/metadata/decimal.c
mono/metadata/domain-internals.h
mono/metadata/domain.c
mono/metadata/environment.h
mono/metadata/exception.c
mono/metadata/exception.h
mono/metadata/file-io.c
mono/metadata/gc-internal.h
mono/metadata/gc.c
mono/metadata/icall-def.h
mono/metadata/icall.c
mono/metadata/image.c
mono/metadata/image.h
mono/metadata/loader.c
mono/metadata/loader.h
mono/metadata/locales.c
mono/metadata/lock-tracer.c
mono/metadata/marshal.c
mono/metadata/marshal.h
mono/metadata/mempool.h
mono/metadata/metadata-internals.h
mono/metadata/metadata-verify.c
mono/metadata/metadata.c
mono/metadata/metadata.h
mono/metadata/method-builder.c
mono/metadata/monitor.c
mono/metadata/monitor.h
mono/metadata/mono-config.c
mono/metadata/mono-config.h
mono/metadata/mono-cq.c
mono/metadata/mono-debug-debugger.h
mono/metadata/mono-debug.c
mono/metadata/mono-debug.h
mono/metadata/mono-endian.h
mono/metadata/mono-gc.h
mono/metadata/mono-hash.h
mono/metadata/mono-mlist.h
mono/metadata/nacl-stub.c
mono/metadata/null-gc.c
mono/metadata/object-internals.h
mono/metadata/object.c
mono/metadata/object.h
mono/metadata/opcodes.h
mono/metadata/process.c [changed mode: 0644->0755]
mono/metadata/profiler.h
mono/metadata/reflection.c
mono/metadata/reflection.h
mono/metadata/runtime.c
mono/metadata/runtime.h
mono/metadata/security-core-clr.h
mono/metadata/sgen-alloc.c
mono/metadata/sgen-archdep.h [changed mode: 0644->0755]
mono/metadata/sgen-bridge.c
mono/metadata/sgen-cardtable.c
mono/metadata/sgen-debug.c
mono/metadata/sgen-descriptor.h
mono/metadata/sgen-fin-weak-hash.c
mono/metadata/sgen-gc.c
mono/metadata/sgen-gc.h
mono/metadata/sgen-internal.c
mono/metadata/sgen-los.c
mono/metadata/sgen-marksweep.c [changed mode: 0644->0755]
mono/metadata/sgen-memory-governor.c
mono/metadata/sgen-nursery-allocator.c
mono/metadata/sgen-os-mach.c
mono/metadata/sgen-os-posix.c
mono/metadata/sgen-os-win32.c [changed mode: 0644->0755]
mono/metadata/sgen-protocol.c
mono/metadata/sgen-protocol.h
mono/metadata/sgen-stw.c [changed mode: 0644->0755]
mono/metadata/sgen-toggleref.c
mono/metadata/socket-io.c
mono/metadata/threadpool.c
mono/metadata/threadpool.h
mono/metadata/threads-types.h
mono/metadata/threads.c [changed mode: 0644->0755]
mono/metadata/threads.h
mono/metadata/tpool-epoll.c
mono/metadata/tpool-kqueue.c
mono/metadata/tpool-poll.c
mono/metadata/verify.c
mono/metadata/verify.h
mono/mini/.gitignore
mono/mini/Makefile.am.in [changed mode: 0644->0755]
mono/mini/abcremoval.c
mono/mini/alias-analysis.c [new file with mode: 0644]
mono/mini/aot-compiler.c [changed mode: 0644->0755]
mono/mini/aot-runtime.c
mono/mini/arrays.cs
mono/mini/basic-calls.cs
mono/mini/basic-float.cs
mono/mini/basic-long.cs
mono/mini/basic-math.cs
mono/mini/basic.cs
mono/mini/cpu-amd64.md
mono/mini/cpu-arm.md
mono/mini/cpu-mips.md
mono/mini/cpu-x86.md
mono/mini/debug-mini.c
mono/mini/debug-mini.h
mono/mini/debugger-agent.c [changed mode: 0644->0755]
mono/mini/declsec.c
mono/mini/decompose.c
mono/mini/driver.c
mono/mini/dwarfwriter.c
mono/mini/dwarfwriter.h
mono/mini/exceptions-amd64.c
mono/mini/exceptions-arm.c
mono/mini/exceptions-ia64.c
mono/mini/exceptions-mips.c
mono/mini/exceptions-ppc.c
mono/mini/exceptions-s390x.c
mono/mini/exceptions-x86.c
mono/mini/generics.cs
mono/mini/graph.c
mono/mini/gshared.cs
mono/mini/iltests.il.in
mono/mini/ir-emit.h
mono/mini/jit-icalls.c
mono/mini/jit-icalls.h
mono/mini/jit.h
mono/mini/liveness.c
mono/mini/main-sgen.c [new file with mode: 0644]
mono/mini/main.c [changed mode: 0644->0755]
mono/mini/method-to-ir.c
mono/mini/mini-amd64.c
mono/mini/mini-amd64.h
mono/mini/mini-arm.c
mono/mini/mini-arm.h
mono/mini/mini-codegen.c
mono/mini/mini-darwin.c
mono/mini/mini-exceptions.c
mono/mini/mini-gc.c [changed mode: 0644->0755]
mono/mini/mini-generic-sharing.c
mono/mini/mini-ia64.c
mono/mini/mini-llvm-cpp.cpp
mono/mini/mini-llvm.c
mono/mini/mini-llvm.h
mono/mini/mini-mips.c
mono/mini/mini-ops.h
mono/mini/mini-posix.c
mono/mini/mini-ppc.c
mono/mini/mini-ppc.h
mono/mini/mini-s390x.c
mono/mini/mini-s390x.h
mono/mini/mini-sparc.c
mono/mini/mini-trampolines.c
mono/mini/mini-windows.c
mono/mini/mini-x86.c [changed mode: 0644->0755]
mono/mini/mini-x86.h
mono/mini/mini.c
mono/mini/mini.h
mono/mini/objects.cs
mono/mini/optflags-def.h
mono/mini/patch-info.h
mono/mini/regalloc2.c
mono/mini/simd-intrinsics.c
mono/mini/ssa.c
mono/mini/ssapre.c
mono/mini/tasklets.c
mono/mini/trace.c
mono/mini/tramp-amd64.c
mono/mini/tramp-arm.c
mono/mini/tramp-mips.c
mono/mini/tramp-ppc.c
mono/mini/tramp-s390x.c
mono/mini/tramp-sparc.c
mono/mini/tramp-x86.c
mono/mini/xdebug.c
mono/profiler/proflog.c
mono/profiler/ptestrunner.pl
mono/profiler/test-busy.cs
mono/tests/.gitignore
mono/tests/Makefile.am
mono/tests/block_guard_restore_aligment_on_exit.cs [new file with mode: 0644]
mono/tests/bug-348522.2.cs [changed mode: 0644->0755]
mono/tests/bug-438454.cs [changed mode: 0644->0755]
mono/tests/debug-casts.cs [new file with mode: 0644]
mono/tests/finalizer-exception.cs
mono/tests/finalizer-wait.cs
mono/tests/finally_block_ending_in_dead_bb.cs [new file with mode: 0644]
mono/tests/gc-descriptors/Makefile.am [changed mode: 0644->0755]
mono/tests/libtest.c
mono/tests/load-exceptions.cs
mono/tests/load-missing.il
mono/tests/marshal.cs
mono/tests/marshal2.cs
mono/tests/pinvoke2.cs
mono/tests/pinvoke3.cs
mono/tests/runtime-invoke.cs
mono/tests/sgen-bridge-xref.cs [new file with mode: 0644]
mono/tests/sgen-descriptors.cs
mono/tests/sgen-domain-unload-2.cs [new file with mode: 0644]
mono/tests/sgen-new-threads-dont-join-stw.cs [new file with mode: 0644]
mono/tests/sgen-suspend.cs [new file with mode: 0644]
mono/tests/test-driver
mono/tests/thread_static_gc_layout.cs [new file with mode: 0644]
mono/tests/unload-appdomain-on-shutdown.cs [new file with mode: 0644]
mono/tests/verifier/invalid_bad_catch_clause_type.il [new file with mode: 0755]
mono/tests/verifier/unverifiable_merge_concrete_types_with_shared_iface.il [new file with mode: 0644]
mono/utils/Makefile.am
mono/utils/atomic.c [changed mode: 0644->0755]
mono/utils/atomic.h [changed mode: 0644->0755]
mono/utils/bsearch.c [new file with mode: 0644]
mono/utils/bsearch.h [new file with mode: 0644]
mono/utils/dlmalloc.c
mono/utils/dlmalloc.h
mono/utils/mach-support-amd64.c
mono/utils/mach-support-arm.c
mono/utils/mach-support-unknown.c
mono/utils/mach-support-x86.c
mono/utils/mach-support.h
mono/utils/mono-codeman.c
mono/utils/mono-codeman.h
mono/utils/mono-compiler.h
mono/utils/mono-context.h [changed mode: 0644->0755]
mono/utils/mono-counters.h
mono/utils/mono-digest.h
mono/utils/mono-dl-fallback.h
mono/utils/mono-embed.h
mono/utils/mono-error-internals.h
mono/utils/mono-error.c
mono/utils/mono-error.h
mono/utils/mono-hwcap-arm.c [new file with mode: 0644]
mono/utils/mono-hwcap-arm.h [new file with mode: 0644]
mono/utils/mono-hwcap-ia64.c [new file with mode: 0644]
mono/utils/mono-hwcap-ia64.h [new file with mode: 0644]
mono/utils/mono-hwcap-mips.c [new file with mode: 0644]
mono/utils/mono-hwcap-mips.h [new file with mode: 0644]
mono/utils/mono-hwcap-ppc.c [new file with mode: 0644]
mono/utils/mono-hwcap-ppc.h [new file with mode: 0644]
mono/utils/mono-hwcap-s390x.c [new file with mode: 0644]
mono/utils/mono-hwcap-s390x.h [new file with mode: 0644]
mono/utils/mono-hwcap-sparc.c [new file with mode: 0644]
mono/utils/mono-hwcap-sparc.h [new file with mode: 0644]
mono/utils/mono-hwcap-x86.c [new file with mode: 0644]
mono/utils/mono-hwcap-x86.h [new file with mode: 0644]
mono/utils/mono-hwcap.c [new file with mode: 0644]
mono/utils/mono-hwcap.h [new file with mode: 0644]
mono/utils/mono-logger.c
mono/utils/mono-logger.h
mono/utils/mono-math.h
mono/utils/mono-membar.h
mono/utils/mono-memory-model.h
mono/utils/mono-mmap.c
mono/utils/mono-mmap.h
mono/utils/mono-mutex.c
mono/utils/mono-networkinterfaces.c
mono/utils/mono-path.h
mono/utils/mono-poll.c
mono/utils/mono-poll.h
mono/utils/mono-proclib.c
mono/utils/mono-property-hash.h
mono/utils/mono-publib.h
mono/utils/mono-semaphore.c
mono/utils/mono-semaphore.h
mono/utils/mono-signal-handler.h [new file with mode: 0644]
mono/utils/mono-stack-unwinding.h
mono/utils/mono-threads-posix.c
mono/utils/mono-threads.c
mono/utils/mono-threads.h
mono/utils/mono-tls.c [new file with mode: 0644]
mono/utils/mono-tls.h
mono/utils/mono-uri.h
mono/utils/monobitset.c
mono/utils/monobitset.h
mono/utils/strenc.h
mono/utils/strtod.c
msvc/eglib.vcxproj
msvc/genmdesc.vcxproj
msvc/libgc.vcxproj
msvc/libmono.vcxproj
msvc/libmonoruntime.vcxproj
msvc/libmonoutils.vcxproj
msvc/libtest.vcxproj
msvc/mono.def
msvc/mono.vcxproj
msvc/monodiet.vcxproj
msvc/monodis.vcxproj
msvc/monograph.vcxproj
msvc/monoposixhelper.vcxproj
msvc/monosgen.def
msvc/pedump.vcxproj
msvc/profiler-codeanalyst.vcxproj
msvc/profiler-cov.vcxproj
msvc/profiler-logging.vcxproj
msvc/profiler-vtune.vcxproj
msvc/scripts/net_4_5.sln
msvc/scripts/order.xml
msvc/test-invoke.vcxproj
msvc/test-metadata.vcxproj
msvc/test_eglib.vcxproj
msvc/teste.vcxproj
msvc/win32.xml
runtime/Makefile.am
scripts/dmcs.in [changed mode: 0644->0755]
scripts/gmcs.in [changed mode: 0644->0755]
scripts/mono-test-install
support/Makefile.am
support/mac-reachability.c [deleted file]
support/map.h
support/minizip/.gitignore [new file with mode: 0644]
support/sys-mman.c
support/unistd.c
tools/locale-builder/Driver.cs
tools/sgen/sgen-grep-binprot.c
winconfig.h

index bce6a59c239936f3a08e5b804742f0a7dbbc78bd..c5dbc5d7ad8a117f0145cba3a405a2ebe4eca3b0 100644 (file)
@@ -55,7 +55,7 @@ _ReSharper*/
 ~$*
 
 # Autotools-generated files
-Makefile
+/Makefile
 Makefile.in
 aclocal.m4
 autom4te.cache
@@ -112,6 +112,7 @@ GTAGS
 # Mono-specific patterns
 ##############################################################################
 
+.dirstamp
 compile
 mono.h
 mono-*.tar.*
index 6a0fcdcb0ae8ad7dba3bbcf9e8a88c4c4c3c7f29..a4a959d1c48b94c3eaecdcb78bc8b6d937f7fdc6 100644 (file)
@@ -1,6 +1,5 @@
 ACLOCAL_AMFLAGS = -I m4
 
-MOONLIGHT_SUBDIRS = $(libgc_dir) eglib/src mono
 MONOTOUCH_SUBDIRS = $(libgc_dir) eglib/src mono
 
 if CROSS_COMPILING
@@ -12,16 +11,12 @@ else
 if ONLY_MONOTOUCH
 SUBDIRS = $(MONOTOUCH_SUBDIRS) runtime
 else
-if ONLY_MOONLIGHT
-SUBDIRS = $(MOONLIGHT_SUBDIRS) runtime
-else
 SUBDIRS = po $(libgc_dir) eglib mono $(ikvm_native_dir) support data runtime scripts man samples msvc $(docs_dir)
 # Keep in sync with SUBDIRS
 ## 'tools' is not normally built
 DIST_SUBDIRS = m4 po libgc eglib mono ikvm-native support data runtime scripts man samples tools msvc docs
 endif
 endif
-endif
 
 all: update_submodules
 
@@ -32,6 +27,7 @@ update_submodules:
 .PHONY: update_submodules
 
 EXTRA_DIST= \
+        README.md \
            LICENSE \
            autogen.sh \
            build-mingw32.sh \
@@ -92,31 +88,6 @@ mcs-do-compiler-tests:
 bootstrap-world: compiler-tests
        $(MAKE) install
 
-if MOONLIGHT
-moon-do-build: config.h
-       @list='$(MOONLIGHT_SUBDIRS)'; for subdir in $$list; do \
-         case "x$$subdir" in \
-               xmono ) target="moon-do-build";; \
-               * ) target="all";; \
-         esac; \
-         echo "Making $$target in $$subdir"; \
-         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
-        done;
-       (cd runtime && $(MAKE) $(AM_MAKEFLAGS) moon-do-build)
-
-moon-do-clean:
-       @list='$(MOONLIGHT_SUBDIRS)'; for subdir in $$list; do \
-         case "x$$subdir" in \
-               xmono ) target="moon-do-clean";; \
-               * ) target="clean";; \
-         esac; \
-         echo "Making $$target in $$subdir"; \
-         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
-        done;
-       (cd runtime && $(MAKE) $(AM_MAKEFLAGS) moon-do-clean)
-
-endif
-
 if INSTALL_MONOTOUCH
 monotouch-do-build: config.h
        @list='$(MONOTOUCH_SUBDIRS)'; for subdir in $$list; do \
@@ -185,3 +156,9 @@ package-inputs:
        done
        echo "</root>" >> msvc/scripts/order.xml
 
+# Update llvm version in configure.in to the output of $LLVM_DIR/bin/llvm-config --version
+update-llvm-version:
+       if test "x$$LLVM_DIR" = "x"; then echo "Set the make variable LLVM_DIR to the directory containing the LLVM installation."; exit 1; fi
+       REV=`$(LLVM_DIR)/bin/llvm-config --version` && sed -e "s,expected_llvm_version=.*,expected_llvm_version=\"$$REV\"," < configure.in > tmp && mv tmp configure.in && echo "Version set to $$REV."
+
+
diff --git a/README b/README
deleted file mode 100644 (file)
index 43efac4..0000000
--- a/README
+++ /dev/null
@@ -1,592 +0,0 @@
-This is Mono.
-
-       1. Installation
-       2. Using Mono
-       3. Directory Roadmap
-       4. git submodules maintenance
-
-1. Compilation and Installation
-===============================
-
-   a. Build Requirements
-   ---------------------
-
-       On Itanium, you must obtain libunwind:
-
-               http://www.hpl.hp.com/research/linux/libunwind/download.php4
-
-       On Solaris, make sure that you used GNU tar to unpack this package, as
-       Solaris tar will not unpack this correctly, and you will get strange errors.
-
-       On Solaris, make sure that you use the GNU toolchain to build the software.
-
-       Optional dependencies:
-
-               * libgdiplus
-
-                 If you want to get support for System.Drawing, you will need to get
-                 Libgdiplus.    This library in turn requires glib and pkg-config:
-
-                       * pkg-config
-
-                         Available from: http://www.freedesktop.org/Software/pkgconfig
-
-                       * glib 2.4
-
-                         Available from: http://www.gtk.org/
-
-               * libzlib
-
-                 This library and the development headers are required for compression
-                 file support in the 2.0 profile.
-
-    b. Building the Software
-    ------------------------
-       
-       If you obtained this package as an officially released tarball,
-       this is very simple, use configure and make:
-
-               ./configure --prefix=/usr/local
-               make
-               make install
-
-       Mono supports a JIT engine on x86, SPARC, SPARCv9, S/390,
-       S/390x, AMD64, ARM and PowerPC systems.   
-
-       If you obtained this as a snapshot, you will need an existing
-       Mono installation.  To upgrade your installation, unpack both
-       mono and mcs:
-
-               tar xzf mcs-XXXX.tar.gz
-               tar xzf mono-XXXX.tar.gz
-               mv mono-XXX mono
-               mv mcs-XXX mcs
-               cd mono
-               ./autogen.sh --prefix=/usr/local
-               make
-
-       The Mono build system is silent for most compilation commands.
-       To enable a more verbose compile (for example, to pinpoint
-       problems in your makefiles or your system) pass the V=1 flag to make, like this:
-
-                make V=1
-
-
-    c. Building the software from GIT
-    ---------------------------------
-
-       If you are building the software from GIT, make sure that you
-       have up-to-date mcs and mono sources:
-
-          If you are an anonymous user:
-               git clone git://github.com/mono/mono.git
-
-           If you are a Mono contributors with read/write privileges:
-               git clone git@github.com:mono/mono.git
-
-
-       Then, go into the mono directory, and configure:
-
-               cd mono
-               ./autogen.sh --prefix=/usr/local
-               make
-
-       For people with non-standard installations of the auto* utils and of
-       pkg-config (common on misconfigured OSX and windows boxes), you could get
-       an error like this:
-
-       ./configure: line 19176: syntax error near unexpected token `PKG_CHECK_MODULES(BASE_DEPENDENCIES,' ...
-
-       This means that you need to set the ACLOCAL_FLAGS environment var
-       when invoking autogen.sh, like this:
-
-               ACLOCAL_FLAGS="-I $acprefix/share/aclocal" ./autogen.sh --prefix=/usr/loca
-       
-       where $acprefix is the prefix where aclocal has been installed.
-
-       This will automatically go into the mcs/ tree and build the
-       binaries there.
-
-       This assumes that you have a working mono installation, and that
-       there's a C# compiler named 'mcs', and a corresponding IL
-       runtime called 'mono'.  You can use two make variables
-       EXTERNAL_MCS and EXTERNAL_RUNTIME to override these.  e.g., you
-       can say
-
-         make EXTERNAL_MCS=/foo/bar/mcs EXTERNAL_RUNTIME=/somewhere/else/mono
-       
-       If you don't have a working Mono installation
-       ---------------------------------------------
-
-       If you don't have a working Mono installation, an obvious choice
-       is to install the latest released packages of 'mono' for your
-       distribution and running autogen.sh; make; make install in the
-       mono module directory.
-
-       You can also try a slightly more risky approach: this may not work,
-       so start from the released tarball as detailed above.
-
-       This works by first getting the latest version of the 'monolite'
-       distribution, which contains just enough to run the 'mcs'
-       compiler.  You do this with:
-
-               # Run the following line after ./autogen.sh
-               make get-monolite-latest
-
-       This will download and automatically gunzip and untar the
-       tarball, and place the files appropriately so that you can then
-       just run:
-
-               make EXTERNAL_MCS=${PWD}/mcs/class/lib/monolite/gmcs.exe
-
-       And that will use the files downloaded by 'make get-monolite-latest.
-
-       Testing and Installation
-       ------------------------
-
-       You can run (part of) the mono and mcs testsuites with the command:
-
-               make check
-
-       All tests should pass.  
-
-       If you want more extensive tests, including those that test the
-       class libraries, you need to re-run 'configure' with the
-       '--enable-nunit-tests' flag, and try
-
-               make -k check
-
-       Expect to find a few testsuite failures.  As a sanity check, you
-       can compare the failures you got with
-
-               https://wrench.mono-project.com/Wrench/
-
-       You can now install mono with:
-
-               make install
-
-       You can verify your installation by using the mono-test-install
-       script, it can diagnose some common problems with Mono's install.
-
-       Failure to follow these steps may result in a broken installation. 
-
-    d. Configuration Options
-    ------------------------
-
-       The following are the configuration options that someone
-       building Mono might want to use:
-       
-       --with-sgen=yes,no
-
-               Generational GC support: Used to enable or disable the
-               compilation of a Mono runtime with the SGen garbage collector.
-
-               On platforms that support it, after building Mono, you
-               will have both a mono binary and a mono-sgen binary.
-               Mono uses Boehm, while mono-sgen uses the Simple
-               Generational GC.
-
-       --with-gc=[boehm, included, sgen, none]
-
-               Selects the default Boehm garbage collector engine to
-               use, the default is the "included" value.
-       
-               included: 
-                       This is the default value, and its
-                       the most feature complete, it will allow Mono
-                       to use typed allocations and support the
-                       debugger.
-
-                       It is essentially a slightly modified Boehm GC
-
-               boehm:
-                       This is used to use a system-install Boehm GC,
-                       it is useful to test new features available in
-                       Boehm GC, but we do not recommend that people
-                       use this, as it disables a few features.
-
-               none:
-                       Disables the inclusion of a garbage
-                       collector.  
-
-       --with-tls=__thread,pthread
-
-               Controls how Mono should access thread local storage,
-               pthread forces Mono to use the pthread APIs, while
-               __thread uses compiler-optimized access to it.
-
-               Although __thread is faster, it requires support from
-               the compiler, kernel and libc.   Old Linux systems do
-               not support with __thread.
-
-               This value is typically pre-configured and there is no
-               need to set it, unless you are trying to debug a
-               problem.
-
-       --with-sigaltstack=yes,no
-
-               Experimental: Use at your own risk, it is known to
-               cause problems with garbage collection and is hard to
-               reproduce those bugs.
-
-               This controls whether Mono will install a special
-               signal handler to handle stack overflows.   If set to
-               "yes", it will turn stack overflows into the
-               StackOverflowException.  Otherwise when a stack
-               overflow happens, your program will receive a
-               segmentation fault.
-
-               The configure script will try to detect if your
-               operating system supports this.   Some older Linux
-               systems do not support this feature, or you might want
-               to override the auto-detection.
-
-       --with-static_mono=yes,no
-
-               This controls whether `mono' should link against a
-               static library (libmono.a) or a shared library
-               (libmono.so). 
-
-               This defaults to yes, and will improve the performance
-               of the `mono' program. 
-
-               This only affects the `mono' binary, the shared
-               library libmono.so will always be produced for
-               developers that want to embed the runtime in their
-               application.
-
-       --with-xen-opt=yes,no
-
-               The default value for this is `yes', and it makes Mono
-               generate code which might be slightly slower on
-               average systems, but the resulting executable will run
-               faster under the Xen virtualization system.
-
-       --with-large-heap=yes,no
-
-               Enable support for GC heaps larger than 3GB.
-
-               This value is set to `no' by default.
-
-       --enable-small-config=yes,no
-
-               Enable some tweaks to reduce memory usage and disk footprint at
-               the expense of some capabilities. Typically this means that the
-               number of threads that can be created is limited (256), that the
-               maxmimum heap size is also reduced (256 MB) and other such limitations
-               that still make mono useful, but more suitable to embedded devices
-               (like mobile phones).
-
-               This value is set to `no' by default.
-
-       --with-ikvm-native=yes,no
-
-               Controls whether the IKVM JNI interface library is
-               built or not.  This is used if you are planning on
-               using the IKVM Java Virtual machine with Mono.
-
-               This defaults to `yes'.
-
-       --with-profile4=yes,no
-
-               Whether you want to build the 4.x profile libraries
-               and runtime.
-
-               It defaults to `yes'.
-
-       --with-moonlight=yes,no
-
-               Whether you want to generate the Silverlight/Moonlight
-               libraries and toolchain in addition to the default
-               (1.1 and 2.0 APIs).
-
-               This will produce the `smcs' compiler which will reference
-               the Silverlight modified assemblies (mscorlib.dll,
-               System.dll, System.Code.dll and System.Xml.Core.dll) and turn
-               on the LINQ extensions for the compiler.
-
-       --with-moon-gc=boehm,sgen
-
-               Select the GC to use for Moonlight.
-
-               boehm:
-                       Selects the Boehm Garbage Collector, with the same flags
-                       as the regular Mono build. This is the default.
-
-               sgen:
-                       Selects the new SGen Garbage Collector, which provides
-                       Generational GC support, using the same flags as the
-                       mono-sgen build.
-
-               This defaults to `boehm'.
-
-       --with-libgdiplus=installed,sibling,<path>
-
-               This is used to configure where should Mono look for
-               libgdiplus when running the System.Drawing tests.
-
-               It defaults to `installed', which means that the
-               library is available to Mono through the regular
-               system setup.
-
-               `sibling' can be used to specify that a libgdiplus
-               that resides as a sibling of this directory (mono)
-               should be used.
-
-               Or you can specify a path to a libgdiplus.
-
-       --disable-shared-memory 
-
-               Use this option to disable the use of shared memory in
-               Mono (this is equivalent to setting the MONO_DISABLE_SHM
-               environment variable, although this removes the feature
-               completely).
-
-               Disabling the shared memory support will disable certain
-               features like cross-process named mutexes.
-
-       --enable-minimal=LIST
-
-               Use this feature to specify optional runtime
-               components that you might not want to include.  This
-               is only useful for developers embedding Mono that
-               require a subset of Mono functionality.
-
-               The list is a comma-separated list of components that
-               should be removed, these are:
-
-               aot:
-                       Disables support for the Ahead of Time
-                       compilation.
-
-               attach:
-                       Support for the Mono.Management assembly and the
-                       VMAttach API (allowing code to be injected into
-                       a target VM)
-
-               com:
-                       Disables COM support.
-
-               debug:
-                       Drop debugging support.
-
-               decimal:
-                       Disables support for System.Decimal.
-
-               full_messages:
-                       By default Mono comes with a full table
-                       of messages for error codes.   This feature
-                       turns off uncommon error messages and reduces
-                       the runtime size.
-
-               generics:
-                       Generics support.  Disabling this will not
-                       allow Mono to run any 2.0 libraries or
-                       code that contains generics.
-
-               jit:
-                       Removes the JIT engine from the build, this reduces
-                       the executable size, and requires that all code
-                       executed by the virtual machine be compiled with
-                       Full AOT before execution.
-
-               large_code:
-                       Disables support for large assemblies.
-
-               logging:
-                       Disables support for debug logging.
-
-               pinvoke:
-                       Support for Platform Invocation services,
-                       disabling this will drop support for any
-                       libraries using DllImport.
-
-               portability:
-                       Removes support for MONO_IOMAP, the environment
-                       variables for simplifying porting applications that 
-                       are case-insensitive and that mix the Unix and Windows path separators.
-
-               profiler:
-                       Disables support for the default profiler.
-
-               reflection_emit:
-                       Drop System.Reflection.Emit support
-
-               reflection_emit_save:
-                       Drop support for saving dynamically created
-                       assemblies (AssemblyBuilderAccess.Save) in
-                       System.Reflection.Emit.
-
-               shadow_copy:
-                       Disables support for AppDomain's shadow copies
-                       (you can disable this if you do not plan on 
-                       using appdomains).
-
-               simd:
-                       Disables support for the Mono.SIMD intrinsics
-                       library.
-
-               ssa:
-                       Disables compilation for the SSA optimization
-                       framework, and the various SSA-based
-                       optimizations.
-
-       --enable-llvm
-       --enable-loadedllvm
-
-               This enables the use of LLVM as a code generation engine
-               for Mono.  The LLVM code generator and optimizer will be 
-               used instead of Mono's built-in code generator for both
-               Just in Time and Ahead of Time compilations.
-
-               See the http://www.mono-project.com/Mono_LLVM for the 
-               full details and up-to-date information on this feature.
-
-               You will need to have an LLVM built that Mono can link
-               against,
-
-               The --enable-loadedllvm variant will make the llvm backend
-               into a runtime-loadable module instead of linking it directly
-               into the main mono binary.
-
-       --enable-big-arrays
-
-               This enables the use arrays whose indexes are larger
-               than Int32.MaxValue.   
-
-               By default Mono has the same limitation as .NET on
-               Win32 and Win64 and limits array indexes to 32-bit
-               values (even on 64-bit systems).
-
-               In certain scenarios where large arrays are required,
-               you can pass this flag and Mono will be built to
-               support 64-bit arrays.
-
-               This is not the default as it breaks the C embedding
-               ABI that we have exposed through the Mono development
-               cycle.
-
-       --enable-parallel-mark
-
-               Use this option to enable the garbage collector to use
-               multiple CPUs to do its work.  This helps performance
-               on multi-CPU machines as the work is divided across CPUS.
-
-               This option is not currently the default as we have
-               not done much testing with Mono.
-
-       --enable-dtrace
-
-               On Solaris and MacOS X builds a version of the Mono
-               runtime that contains DTrace probes and can
-               participate in the system profiling using DTrace.
-
-
-       --disable-dev-random
-
-               Mono uses /dev/random to obtain good random data for
-               any source that requires random numbers.   If your
-               system does not support this, you might want to
-               disable it.
-
-               There are a number of runtime options to control this
-               also, see the man page.
-
-       --enable-nacl
-
-               This configures the Mono compiler to generate code
-               suitable to be used by Google's Native Client:
-
-                        http://code.google.com/p/nativeclient/
-
-               Currently this is used with Mono's AOT engine as
-               Native Client does not support JIT engines yet.
-
-2. Using Mono
-=============
-
-       Once you have installed the software, you can run a few programs:
-
-       * runtime engine
-
-               mono program.exe
-
-       * C# compiler
-
-               mcs program.cs
-
-       * CIL Disassembler
-
-               monodis program.exe
-
-       See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
-       for further details.
-
-3. Directory Roadmap
-====================
-
-       docs/
-               Technical documents about the Mono runtime.
-
-       data/
-               Configuration files installed as part of the Mono runtime.
-
-       mono/
-               The core of the Mono Runtime.
-
-               metadata/
-                       The object system and metadata reader.
-
-               mini/
-                       The Just in Time Compiler.
-
-               dis/
-                       CIL executable Disassembler
-
-               cli/
-                       Common code for the JIT and the interpreter.
-
-               io-layer/
-                       The I/O layer and system abstraction for 
-                       emulating the .NET IO model.
-
-               cil/
-                       Common Intermediate Representation, XML
-                       definition of the CIL bytecodes.
-
-               interp/
-                       Interpreter for CLI executables (obsolete).
-
-               arch/
-                       Architecture specific portions.
-
-       man/
-
-               Manual pages for the various Mono commands and programs.
-
-       samples/
-
-               Some simple sample programs on uses of the Mono
-               runtime as an embedded library.   
-
-       scripts/
-
-               Scripts used to invoke Mono and the corresponding program.
-
-       runtime/
-
-               A directory that contains the Makefiles that link the
-               mono/ and mcs/ build systems.
-
-       ../olive/
-
-               If the directory ../olive is present (as an
-               independent checkout) from the Mono module, that
-               directory is automatically configured to share the
-               same prefix than this module gets.
-
-
-4. Git submodules maintenance
-=============================
-
-Read documentation at http://mono-project.com/Git_Submodule_Maintenance
diff --git a/README.md b/README.md
new file mode 100644 (file)
index 0000000..b3b0eb7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,535 @@
+Mono is a software platform designed to allow developers to easily create cross platform applications.
+Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime.
+
+1. [Installation](#compilation-and-installation)
+2. [Using Mono](#using-mono)
+3. [Directory Roadmap](#directory-roadmap)
+4. [Git submodules maintenance](#git-submodules-maintenance)
+5. [Reporting bugs](#reporting-bugs)
+
+Compilation and Installation
+============================
+
+a. Build Requirements
+---------------------
+
+* On Itanium, you must obtain libunwind: http://www.hpl.hp.com/research/linux/libunwind/download.php4
+
+* On Solaris
+
+ 1. Make sure that you used GNU tar to unpack this package, as
+ Solaris tar will not unpack this correctly, and you will get strange errors.
+
+ 2. Make sure that you use the GNU toolchain to build the software.
+
+ 3. Optional dependencies
+
+  * libgdiplus - Required for System.Drawing. This library in turn requires glib and pkg-config
+
+  * pkg-config - Available at: http://www.freedesktop.org/Software/pkgconfig
+
+  * glib 2.4 - Available at: http://www.gtk.org/
+
+  * libzlib - This library and the development headers are required for compression
+file support in the 2.0 profile.
+
+b. Building the Software
+------------------------
+
+If you obtained this package as an officially released tarball,
+this is very simple, use configure and make:
+
+`./configure --prefix=/usr/local ; make ; make install`
+
+Mono supports a JIT engine on x86, SPARC, SPARCv9, S/390,
+S/390x, AMD64, ARM and PowerPC systems.   
+
+If you obtained this as a snapshot, you will need an existing
+Mono installation.  To upgrade your installation, unpack both
+mono and mcs:
+
+       tar xzf mcs-XXXX.tar.gz
+       tar xzf mono-XXXX.tar.gz
+       mv mono-XXX mono
+       mv mcs-XXX mcs
+       cd mono
+       ./autogen.sh --prefix=/usr/local
+       make
+
+The Mono build system is silent for most compilation commands.
+To enable a more verbose compile (for example, to pinpoint
+problems in your makefiles or your system) pass the V=1 flag to make, like this:
+
+` make V=1`
+
+
+c. Building the software from GIT
+---------------------------------
+
+If you are building the software from GIT, make sure that you
+have up-to-date mcs and mono sources:
+
+ * If you are an anonymous user: `git clone git://github.com/mono/mono.git`
+
+ * If you are a Mono contributor with read/write privileges: `git clone git@github.com:mono/mono.git`
+
+Then, go into the mono directory, and configure:
+
+       cd mono
+       ./autogen.sh --prefix=/usr/local
+       make
+
+For people with non-standard installations of the auto* utils and of
+pkg-config (common on misconfigured OSX and windows boxes), you could get
+an error like this:
+
+`./configure: line 19176: syntax error near unexpected token 'PKG_CHECK_MODULES(BASE_DEPENDENCIES,' ...`
+
+This means that you need to set the ACLOCAL_FLAGS environment variable
+when invoking autogen.sh, like this: `ACLOCAL_FLAGS="-I $acprefix/share/aclocal" ./autogen.sh --prefix=/usr/local`
+where $acprefix is the prefix where aclocal has been installed.
+This will automatically go into the mcs/ tree and build the
+binaries there.
+
+This assumes that you have a working mono installation, and that
+there's a C# compiler named 'mcs', and a corresponding IL
+runtime called 'mono'.  You can use two make variables
+EXTERNAL_MCS and EXTERNAL_RUNTIME to override these.  e.g., you
+can say:
+
+`make EXTERNAL_MCS=/foo/bar/mcs EXTERNAL_RUNTIME=/somewhere/else/mono`
+
+If you don't have a working Mono installation
+---------------------------------------------
+
+If you don't have a working Mono installation, an obvious choice
+is to install the latest released packages of 'mono' for your
+distribution and running `autogen.sh; make; make install` in the
+mono module directory.
+
+You can also try a slightly more risky approach: this may not work,
+so start from the released tarball as detailed above.
+
+This works by first getting the latest version of the 'monolite'
+distribution, which contains just enough to run the 'mcs'
+compiler. You do this with:
+
+       # Run the following line after ./autogen.sh
+       make get-monolite-latest
+
+This will download and automatically gunzip and untar the
+tarball, and place the files appropriately so that you can then
+just run: `make EXTERNAL_MCS=${PWD}/mcs/class/lib/monolite/gmcs.exe`
+
+That will use the files downloaded by 'make get-monolite-latest.
+
+Testing and Installation
+------------------------
+
+You can run *(part of)* the mono and mcs test suites with the command: `make check`.
+All tests should pass.  
+
+If you want more *extensive* tests, including those that test the
+class libraries, you need to re-run 'configure' with the
+'--enable-nunit-tests' flag, and try: `make -k check`
+
+Expect to find a few test suite failures. As a sanity check, you
+can compare the failures you got with
+
+`https://wrench.mono-project.com/Wrench/`
+
+You can now install mono with: `make install`
+
+You can verify your installation by using the mono-test-install
+script, it can diagnose some common problems with Mono's install.
+Failure to follow these steps may result in a broken installation. 
+
+d. Configuration Options
+------------------------
+
+The following are the configuration options that someone
+building Mono might want to use:
+
+* `--with-sgen=yes,no` - Generational GC support: Used to enable or disable the
+compilation of a Mono runtime with the SGen garbage collector.
+
+  * On platforms that support it, after building Mono, you
+will have both a mono binary and a mono-sgen binary.
+Mono uses Boehm, while mono-sgen uses the Simple
+Generational GC.
+
+* `--with-gc=[boehm, included, sgen, none]` - Selects the default Boehm garbage
+collector engine to use.
+
+  * *included*: (*slighty modified Boehm GC*)
+This is the default value, and its
+the most feature complete, it will allow Mono
+to use typed allocations and support the
+debugger.
+
+  * *boehm*:
+This is used to use a system-install Boehm GC,
+it is useful to test new features available in
+Boehm GC, but we do not recommend that people
+use this, as it disables a few features.
+
+  * *none*:
+Disables the inclusion of a garbage collector.
+
+  * This defaults to `included`.
+
+* `--with-tls=__thread,pthread`
+
+  * Controls how Mono should access thread local storage,
+pthread forces Mono to use the pthread APIs, while
+__thread uses compiler-optimized access to it.
+
+  * Although __thread is faster, it requires support from
+the compiler, kernel and libc. Old Linux systems do
+not support with __thread.
+
+  * This value is typically pre-configured and there is no
+need to set it, unless you are trying to debug a problem.
+
+* `--with-sigaltstack=yes,no`
+
+  * **Experimental**: Use at your own risk, it is known to
+cause problems with garbage collection and is hard to
+reproduce those bugs.
+
+  * This controls whether Mono will install a special
+signal handler to handle stack overflows. If set to
+`yes`, it will turn stack overflows into the
+StackOverflowException. Otherwise when a stack
+overflow happens, your program will receive a
+segmentation fault.
+
+  * The configure script will try to detect if your
+operating system supports this. Some older Linux
+systems do not support this feature, or you might want
+to override the auto-detection.
+
+* `--with-static_mono=yes,no`
+
+  * This controls whether `mono` should link against a
+static library (libmono.a) or a shared library
+(libmono.so). 
+
+  * This defaults to `yes`, and will improve the performance
+of the `mono` program. 
+
+  * This only affects the `mono' binary, the shared
+library libmono.so will always be produced for
+developers that want to embed the runtime in their
+application.
+
+* `--with-xen-opt=yes,no` - Optimize code for Xen virtualization.
+
+  * It makes Mono generate code which might be slightly
+slower on average systems, but the resulting executable will run
+faster under the Xen virtualization system.
+
+  * This defaults to `yes`.
+
+* `--with-large-heap=yes,no` - Enable support for GC heaps larger than 3GB.
+
+  * This defaults to `no`.
+
+* `--enable-small-config=yes,no` - Enable some tweaks to reduce memory usage
+and disk footprint at the expense of some capabilities.
+
+  * Typically this means that the number of threads that can be created
+is limited (256), that the maximum heap size is also reduced (256 MB)
+and other such limitations that still make mono useful, but more suitable
+to embedded devices (like mobile phones).
+
+  * This defaults to `no`.
+
+* `--with-ikvm-native=yes,no` - Controls whether the IKVM JNI interface library is
+built or not.
+
+  * This is used if you are planning on
+using the IKVM Java Virtual machine with Mono.
+
+  * This defaults to `yes`.
+
+* `--with-profile4=yes,no` - Whether you want to build the 4.x profile libraries
+and runtime.
+
+  * This defaults to `yes`.
+
+* `--with-moonlight=yes,no`
+
+  * Whether you want to generate the Silverlight/Moonlight
+libraries and toolchain in addition to the default
+(1.1 and 2.0 APIs).
+
+  * This will produce the `smcs` compiler which will reference
+the Silverlight modified assemblies (mscorlib.dll,
+System.dll, System.Code.dll and System.Xml.Core.dll) and turn
+on the LINQ extensions for the compiler.
+
+* `--with-moon-gc=boehm,sgen` - Select the GC to use for Moonlight.
+
+  * *boehm*:
+Selects the Boehm Garbage Collector, with the same flags
+as the regular Mono build. This is the default.
+
+  * *sgen*:
+Selects the new SGen Garbage Collector, which provides
+Generational GC support, using the same flags as the
+mono-sgen build.
+
+  * This defaults to `boehm`.
+
+* `--with-libgdiplus=installed,sibling,<path>` - Configure where Mono
+searches for libgdiplus when running System.Drawing tests.
+
+  * It defaults to `installed`, which means that the
+library is available to Mono through the regular
+system setup.
+
+  * `sibling' can be used to specify that a libgdiplus
+that resides as a sibling of this directory (mono)
+should be used.
+
+ * Or you can specify a path to a libgdiplus.
+
+* `--disable-shared-memory`
+
+  * Use this option to disable the use of shared memory in
+Mono (this is equivalent to setting the MONO_DISABLE_SHM
+environment variable, although this removes the feature
+completely).
+
+  * Disabling the shared memory support will disable certain
+features like cross-process named mutexes.
+
+* `--enable-minimal=LIST`
+
+  * Use this feature to specify optional runtime
+components that you might not want to include.  This
+is only useful for developers embedding Mono that
+require a subset of Mono functionality.
+  * The list is a comma-separated list of components that
+should be removed, these are:
+
+    * `aot`:
+Disables support for the Ahead of Time compilation.
+
+    * `attach`:
+Support for the Mono.Management assembly and the
+VMAttach API (allowing code to be injected into
+a target VM)
+
+    * `com`:
+Disables COM support.
+
+    * `debug`:
+Drop debugging support.
+
+    * `decimal`:
+Disables support for System.Decimal.
+
+    * `full_messages`:
+By default Mono comes with a full table
+of messages for error codes. This feature
+turns off uncommon error messages and reduces
+the runtime size.
+
+    * `generics`:
+Generics support.  Disabling this will not
+allow Mono to run any 2.0 libraries or
+code that contains generics.
+
+    * `jit`:
+Removes the JIT engine from the build, this reduces
+the executable size, and requires that all code
+executed by the virtual machine be compiled with
+Full AOT before execution.
+
+    * `large_code`:
+Disables support for large assemblies.
+
+    * `logging`:
+Disables support for debug logging.
+
+    * `pinvoke`:
+Support for Platform Invocation services,
+disabling this will drop support for any
+libraries using DllImport.
+
+    * `portability`:
+Removes support for MONO_IOMAP, the environment
+variables for simplifying porting applications that 
+are case-insensitive and that mix the Unix and Windows path separators.
+
+    * `profiler`:
+Disables support for the default profiler.
+
+    * `reflection_emit`:
+Drop System.Reflection.Emit support
+
+    * `reflection_emit_save`:
+Drop support for saving dynamically created
+assemblies (AssemblyBuilderAccess.Save) in
+System.Reflection.Emit.
+
+    * `shadow_copy`:
+Disables support for AppDomain's shadow copies
+(you can disable this if you do not plan on 
+using appdomains).
+
+    * `simd`:
+Disables support for the Mono.SIMD intrinsics
+library.
+
+    * `ssa`:
+Disables compilation for the SSA optimization
+framework, and the various SSA-based optimizations.
+
+* `--enable-llvm`
+* `--enable-loadedllvm`
+
+  * This enables the use of LLVM as a code generation engine
+for Mono.  The LLVM code generator and optimizer will be 
+used instead of Mono's built-in code generator for both
+Just in Time and Ahead of Time compilations.
+
+  * See the http://www.mono-project.com/Mono_LLVM for the 
+full details and up-to-date information on this feature.
+
+  * You will need to have an LLVM built that Mono can link
+against.
+
+  * The --enable-loadedllvm variant will make the LLVM backend
+into a runtime-loadable module instead of linking it directly
+into the main mono binary.
+
+* `--enable-big-arrays` - Enable use of arrays with indexes larger
+than Int32.MaxValue.
+
+  * By default Mono has the same limitation as .NET on
+Win32 and Win64 and limits array indexes to 32-bit
+values (even on 64-bit systems).
+
+  * In certain scenarios where large arrays are required,
+you can pass this flag and Mono will be built to
+support 64-bit arrays.
+
+  * This is not the default as it breaks the C embedding
+ABI that we have exposed through the Mono development
+cycle.
+
+* `--enable-parallel-mark`
+
+  * Use this option to enable the garbage collector to use
+multiple CPUs to do its work.  This helps performance
+on multi-CPU machines as the work is divided across CPUS.
+
+  * This option is not currently the default as we have
+not done much testing with Mono.
+
+* `--enable-dtrace`
+
+  * On Solaris and MacOS X builds a version of the Mono
+runtime that contains DTrace probes and can
+participate in the system profiling using DTrace.
+
+
+* `--disable-dev-random`
+
+  * Mono uses /dev/random to obtain good random data for
+any source that requires random numbers.   If your
+system does not support this, you might want to
+disable it.
+
+  * There are a number of runtime options to control this
+also, see the man page.
+
+* `--enable-nacl`
+
+  * This configures the Mono compiler to generate code
+suitable to be used by Google's Native Client:
+http://code.google.com/p/nativeclient/
+
+  * Currently this is used with Mono's AOT engine as
+Native Client does not support JIT engines yet.
+
+Using Mono
+==========
+
+Once you have installed the software, you can run a few programs:
+
+* `mono program.exe` runtime engine
+
+* `mcs program.cs` C# compiler 
+
+* `monodis program.exe` CIL Disassembler
+
+See the man pages for mono(1), mint(1), monodis(1) and mcs(2)
+for further details.
+
+Directory Roadmap
+=================
+
+* `docs/` - Technical documents about the Mono runtime.
+
+* `data/` - Configuration files installed as part of the Mono runtime.
+
+* `mono/` - The core of the Mono Runtime.
+
+  * `metadata/` - The object system and metadata reader.
+
+  * `mini/` - The Just in Time Compiler.
+
+  * `dis/` - CIL executable Disassembler
+
+  * `cli/` - Common code for the JIT and the interpreter.
+
+  * `io-layer/` - The I/O layer and system abstraction for 
+emulating the .NET IO model.
+
+  * `cil/` - Common Intermediate Representation, XML
+definition of the CIL bytecodes.
+
+ * `interp/` - Interpreter for CLI executables (obsolete).
+
+ * `arch/` - Architecture specific portions.
+
+* `man/` - Manual pages for the various Mono commands and programs.
+
+* `samples/` -Some simple sample programs on uses of the Mono
+runtime as an embedded library.   
+
+* `scripts/` - Scripts used to invoke Mono and the corresponding program.
+
+* `runtime/` - A directory that contains the Makefiles that link the
+mono/ and mcs/ build systems.
+
+* `../olive/`
+
+  * If the directory ../olive is present (as an
+independent checkout) from the Mono module, that
+directory is automatically configured to share the
+same prefix than this module gets.
+
+
+Git submodules maintenance
+==========================
+
+Read documentation at http://mono-project.com/Git_Submodule_Maintenance
+
+
+Reporting bugs
+==============
+
+To submit bug reports, please use Xamarin's Bugzilla:
+
+https://bugzilla.xamarin.com/
+
+Please use the search facility to ensure the same bug hasn't already
+been submitted and follow our guidelines on how to make a good bug
+report:
+
+http://mono-project.com/Bugs#How_to_make_a_good_bug_report
\ No newline at end of file
index 161bf7dccf74b51e076fb8227ff5ef84749e7a70..5b38b2fe3ef8108083daa3a4b959b5f5b795c029 100644 (file)
@@ -23,13 +23,13 @@ if test x$GCC != xyes; then
 fi
 case $host in
 i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
-|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*)
+|amd64-*-freebsd*|i?86-*-freebsd*|ia64-*-freebsd*|arm*-*-linux*|sparc*-*-linux*|mips*-*-linux*|x86_64-apple-darwin*)
     pic_options='-fPIC'
     ;;
 ?86-pc-cygwin*|i?86-pc-cygwin*)
     pic_options='-DDLL_EXPORT'
     ;;
-i?86-apple-darwin*)
+i?86-apple-darwin*|arm-apple-darwin*)
     pic_options='-fno-common'
     ;;
 *)
index 8fc51d24df070776c14a3ba73fd310cba639610a..a576ed6672afab5a9697e610ce8b6a9e0265b208 100755 (executable)
@@ -107,15 +107,19 @@ fi
 # Plug in the extension module
 #
 has_ext_mod=false
+ext_mod_args=''
 for PARAM; do
-    if test "$PARAM" = "--enable-extension-module" ; then
-               has_ext_mod=true
-       fi
+    if [[ $PARAM =~ "--enable-extension-module" ]] ; then
+        has_ext_mod=true
+        if [[ $PARAM =~ "=" ]] ; then
+            ext_mod_args=`echo $PARAM | cut -d= -f2`
+        fi
+    fi
 done
 
 if test x$has_ext_mod = xtrue; then
        pushd ../mono-extensions/scripts
-       sh ./prepare-repo.sh || exit 1
+       sh ./prepare-repo.sh $ext_mod_args || exit 1
        popd
 else
        cat mono/mini/Makefile.am.in > mono/mini/Makefile.am
index 5709ea5da491e85cff67920accee702d59f9a6b1..b6bd45267b3ced0246290c6023af21931e8ec90c 100644 (file)
@@ -1,10 +1,10 @@
 # Process this file with autoconf to produce a configure script.
 #AC_PREREQ([2.62])
 
-AC_INIT(mono, [3.0.11],
+AC_INIT(mono, [3.2.5],
         [http://bugzilla.xamarin.com/enter_bug.cgi?classification=Mono])
 
-AC_CONFIG_SRCDIR([README])
+AC_CONFIG_SRCDIR([README.md])
 AC_CONFIG_MACRO_DIR([m4])
 AC_CANONICAL_SYSTEM
 AC_CANONICAL_HOST
@@ -13,7 +13,7 @@ AC_CANONICAL_HOST
 # The extra brackets are to foil regex-based scans.
 m4_ifdef([_A][M_PROG_TAR],[_A][M_SET_OPTION([tar-ustar])])
 
-AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar no-dist-gzip foreign])
+AM_INIT_AUTOMAKE([1.9 dist-bzip2 tar-ustar no-dist-gzip foreign subdir-objects])
 AC_CONFIG_HEADERS([config.h])
 AM_MAINTAINER_MODE
 
@@ -24,6 +24,12 @@ AC_PROG_LN_S
 
 m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
 
+case $host_os in
+*cygwin* )
+                echo "Run configure using ./configure --host=i686-pc-mingw32"
+                exit 1
+esac
+
 # In case of cygwin, override LN_S, irrespective of what it determines.
 # The build uses cygwin, but the actual runtime doesn't.
 case $host_os in
@@ -72,6 +78,9 @@ no_version_script=no
 # Set to yes if Unix sockets cannot be created in an anonymous namespace
 need_link_unlink=no
 
+#Set to extra linker flags to be passed to the runtime binaries (mono /mono-sgen)
+extra_runtime_ldflags=""
+
 # Thread configuration inspired by sleepycat's db
 AC_MSG_CHECKING([host platform characteristics])
 libgc_threads=no
@@ -102,22 +111,6 @@ case "$host" in
                        if test "x$host" == "x$build" -a "x$host" == "x$target"; then
                                AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32])
                        fi
-                       #
-                       # gcc-3/g++-3 are from the gcc-core/gcc-g++ cygwin packages.
-                       # Other gcc packages will not work:
-                       # - the gcc-4 packages no longer support -mno-cygwin
-                       # - the mingw-gcc packages produce executables which depends on a libgcc<...>
-                       # dll, which means we would have to distribute that file too.
-                       #
-                       if test "x$CC" != "x"; then
-                               AC_ERROR(Don't set CC. mono can only be compiled with gcc-3 from the 'gcc-core' package)
-                       fi
-                       CC="gcc-3.exe -mno-cygwin -g"
-                       CXX="g++-3.exe -mno-cygwin -g"
-                       # So libgc configure gets -mno-cygwin
-                       export CC
-                       export CXX
-                       CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB -mno-cygwin"
                else
                        target_win32=yes
                        AC_DEFINE(TARGET_WIN32,1,[Target OS is Win32/MinGW])
@@ -127,8 +120,8 @@ case "$host" in
                # Windows 2000 is required that includes Internet Explorer 5.01
                CPPFLAGS="$CPPFLAGS -DWINVER=0x0500 -D_WIN32_WINNT=0x0500 -D_WIN32_IE=0x0501 -D_UNICODE -DUNICODE -DWIN32_THREADS -DFD_SETSIZE=1024"
                LDFLAGS="$LDFLAGS -lmswsock -lws2_32 -lole32 -loleaut32 -lpsapi -lversion -ladvapi32 -lwinmm -lkernel32"
-               libmono_cflags="-mno-cygwin -mms-bitfields -mwindows"
-               libmono_ldflags="-mno-cygwin -mms-bitfields -mwindows"
+               libmono_cflags="-mms-bitfields -mwindows"
+               libmono_ldflags="-mms-bitfields -mwindows"
                libdl=
                libgc_threads=win32
                gc_default=included
@@ -171,9 +164,8 @@ case "$host" in
                AC_DEFINE(PTHREAD_POINTER_ID, 1, [pthread is a pointer])
                libdl=
                libgc_threads=pthreads
-               # This doesn't seem to work as of 7.0 on amd64
-               with_sigaltstack=no
                use_sigposix=yes
+               has_dtrace=yes
                ;;
        *-*-*openbsd*)
                host_win32=no
@@ -314,15 +306,18 @@ case "$host" in
                        dnl Snow Leopard and newer config.guess reports as this
                        i*86-*-darwin*)
                                BROKEN_DARWIN_FLAGS="-arch i386 -D_XOPEN_SOURCE"
-                               CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_FLAGS"
+                               BROKEN_DARWIN_CPPFLAGS="-D_XOPEN_SOURCE"
+                               CPPFLAGS="$CPPFLAGS $BROKEN_DARWIN_CPPFLAGS"
                                CFLAGS="$CFLAGS $BROKEN_DARWIN_FLAGS"
                                CXXFLAGS="$CXXFLAGS $BROKEN_DARWIN_FLAGS"
                                CCASFLAGS="$CCASFLAGS $BROKEN_DARWIN_FLAGS"
-                               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS"
+                               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC $BROKEN_DARWIN_CPPFLAGS"
                                CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC $BROKEN_DARWIN_FLAGS"
-                               CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS"
+                               CPPFLAGS_FOR_EGLIB="$CPPFLAGS_FOR_EGLIB $BROKEN_DARWIN_CPPFLAGS"
                                CFLAGS_FOR_EGLIB="$CFLAGS_FOR_EGLIB $BROKEN_DARWIN_FLAGS"
                                ;;
+                       x*64-*-darwin*)
+                               ;;
                        arm*-darwin*)
                                has_dtrace=no
                                ;;                      
@@ -351,6 +346,7 @@ if test x$need_link_unlink = xyes; then
    AC_DEFINE(NEED_LINK_UNLINK, 1, [Define if Unix sockets cannot be created in an anonymous namespace])
 fi
 
+AC_SUBST(extra_runtime_ldflags)
 AM_CONDITIONAL(HOST_WIN32, test x$host_win32 = xyes)
 AM_CONDITIONAL(TARGET_WIN32, test x$target_win32 = xyes)
 AM_CONDITIONAL(PLATFORM_LINUX, echo x$target_os | grep -q linux)
@@ -365,6 +361,7 @@ AC_PROG_CXX
 AM_PROG_AS
 AC_PROG_INSTALL
 AC_PROG_AWK
+AM_PROG_CC_C_O
 dnl We should use AM_PROG_AS, but it's not available on automake/aclocal 1.4
 : ${CCAS='$(CC)'}
 # Set ASFLAGS if not already set.
@@ -483,6 +480,12 @@ AC_TRY_LINK([#include <math.h>], [
        # We'll have to use signals
        AC_MSG_RESULT(no)
 ])
+# mingw
+AC_CHECK_FUNCS(_finite, , AC_MSG_CHECKING(for _finite in math.h)
+       AC_TRY_LINK([#include <math.h>], 
+       [ _finite(0.0); ], 
+       AC_DEFINE(HAVE__FINITE, 1, [Have _finite in -lm]) AC_MSG_RESULT(yes),
+       AC_MSG_RESULT(no)))
 
 # for Linux statfs support
 AC_CHECK_HEADERS(linux/magic.h)
@@ -490,6 +493,20 @@ AC_CHECK_HEADERS(linux/magic.h)
 # not 64 bit clean in cross-compile
 AC_CHECK_SIZEOF(void *, 4)
 
+AC_CACHE_CHECK([for clang],
+       mono_cv_clang,[
+       AC_TRY_COMPILE([], [
+               #ifdef __clang__
+               #else
+               #error "FAILED"
+               #endif
+               return 0;
+       ],
+       [mono_cv_clang=yes],
+       [mono_cv_clang=no],
+       [])
+])
+
 WARN=''
 if test x"$GCC" = xyes; then
         WARN='-Wall -Wunused -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes  -Wmissing-prototypes -Wnested-externs -Wpointer-arith -Wno-cast-qual -Wwrite-strings -Wno-switch -Wno-switch-enum -Wno-unused-value'
@@ -510,7 +527,7 @@ if test x"$GCC" = xyes; then
 
                ORIG_CFLAGS=$CFLAGS
                # Check for the normal version, since gcc ignores unknown -Wno options
-               CFLAGS="$CFLAGS -Wunused-but-set-variable"
+               CFLAGS="$CFLAGS -Wunused-but-set-variable -Werror"
                AC_MSG_CHECKING(for -Wno-unused-but-set-variable option to gcc)
                AC_TRY_COMPILE([],[
                                return 0;
@@ -521,6 +538,12 @@ if test x"$GCC" = xyes; then
                   AC_MSG_RESULT(no)
                   CFLAGS=$ORIG_CFLAGS
                ])
+
+               if test "x$mono_cv_clang" = "xyes"; then
+                  # https://bugzilla.samba.org/show_bug.cgi?id=8118
+                  WARN="$WARN -Qunused-arguments"
+                  WARN="$WARN -Wno-unused-function -Wno-tautological-compare"
+               fi
 else
        # The Sun Forte compiler complains about inline functions that access static variables
        # so disable all inlining.
@@ -533,20 +556,6 @@ fi
 CFLAGS="$CFLAGS -g $WARN"
 CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -g"
 
-AC_CACHE_CHECK([for clang],
-       mono_cv_clang,[
-       AC_TRY_COMPILE([], [
-               #ifdef __clang__
-               #else
-               #error "FAILED"
-               #endif
-               return 0;
-       ],
-       [mono_cv_clang=yes],
-       [mono_cv_clang=no],
-       [])
-])
-
 # Where's the 'mcs' source tree?
 if test -d $srcdir/mcs; then
   mcsdir=mcs
@@ -920,7 +929,19 @@ fi
 AC_ARG_ENABLE(executables, [  --disable-executables disable the build of the runtime executables], enable_executables=$enableval, enable_executables=yes)
 AM_CONDITIONAL(DISABLE_EXECUTABLES, test x$enable_executables = xno)
 
-AC_ARG_ENABLE(extension-module, [  --enable-extension-module enables usage of the extension module], has_extension_module=$enableval, has_extension_module=no)
+has_extension_module=no
+AC_ARG_ENABLE(extension-module, [  --enable-extension-module=LIST enable the core-extensions from LIST],
+[
+       for extension in `echo "$enable_extension_module" | sed -e "s/,/ /g"`; do
+               if test x$extension = xdefault ; then
+                       has_extension_module=yes;
+               fi
+       done
+       if test x$enable_extension_module = xyes; then
+               has_extension_module=yes;
+       fi
+], [])
+
 AM_CONDITIONAL([HAS_EXTENSION_MODULE], [test x$has_extension_module != xno])
 
 if test x$has_extension_module != xno ; then
@@ -1023,6 +1044,11 @@ case "x$gc" in
 
                BOEHM_DEFINES="-DHAVE_BOEHM_GC -DHAVE_GC_H -DUSE_INCLUDED_LIBGC -DHAVE_GC_GCJ_MALLOC -DHAVE_GC_ENABLE"
 
+               if test x$target_win32 = xyes; then
+                       BOEHM_DEFINES="$BOEHM_DEFINES -DGC_NOT_DLL"
+                       CFLAGS_FOR_LIBGC="$CFLAGS_FOR_LIBGC -DGC_BUILD -DGC_NOT_DLL"
+               fi
+
                gc_msg="bundled Boehm GC with typed GC"
                if test x$enable_parallel_mark = xyes; then
                        AC_DEFINE_UNQUOTED(DEFAULT_GC_NAME, "Included Boehm (with typed GC and Parallel Mark)", [GC description])
@@ -1136,6 +1162,8 @@ if test x$target_win32 = xno; then
 
        AC_CHECK_HEADERS(execinfo.h)
 
+       AC_CHECK_HEADERS(sys/auxv.h)
+
        AC_CHECK_FUNCS(getgrgid_r)
        AC_CHECK_FUNCS(getgrnam_r)
        AC_CHECK_FUNCS(getpwnam_r)
@@ -1567,8 +1595,14 @@ if test x$target_win32 = xno; then
        AC_MSG_CHECKING(for working __thread)
        if test "x$with_tls" != "x__thread"; then
                AC_MSG_RESULT(disabled)
+       elif test "x$cross_compiling" = "xyes"; then
+               AC_MSG_RESULT(cross compiling, assuming yes)
        else
                AC_TRY_RUN([
+                       #if defined(__APPLE__) && defined(__clang__)
+                       #error "__thread does not currently work with clang on Mac OS X"
+                       #endif
+                       
                        #include <pthread.h>
                        __thread int i;
                        static int res1, res2;
@@ -1610,6 +1644,8 @@ if test x$target_win32 = xno; then
        AC_MSG_CHECKING(for working sigaltstack)
        if test "x$with_sigaltstack" != "xyes"; then
                AC_MSG_RESULT(disabled)
+       elif test "x$cross_compiling" = "xyes"; then
+               AC_MSG_RESULT(cross compiling, assuming yes)
        else
                AC_TRY_RUN([
                        #include <stdio.h>
@@ -2105,6 +2141,11 @@ else
                ])
        ])
        AC_CHECK_FUNCS(GetProcessId)
+       AC_CHECK_DECLS(InterlockedExchange64, [], [], [[#include <windows.h>]])
+       AC_CHECK_DECLS(InterlockedCompareExchange64, [], [], [[#include <windows.h>]])
+       AC_CHECK_DECLS(InterlockedIncrement64, [], [], [[#include <windows.h>]])
+       AC_CHECK_DECLS(InterlockedAdd, [], [], [[#include <windows.h>]])
+       AC_CHECK_DECLS(InterlockedAdd64, [], [], [[#include <windows.h>]])
 fi
 
 dnl socklen_t check
@@ -2324,14 +2365,20 @@ AC_SUBST(nacl_self_host)
 
 if test "x$enable_nacl_codegen" = "xyes"; then
    MONO_NACL_ALIGN_MASK_OFF=1
-   CPPFLAGS="$CPPFLAGS -D__native_client_codegen__"
    AC_DEFINE(TARGET_NACL, 1, [...])
+   AC_DEFINE(__native_client_codegen__, 1, [...])
 else
    MONO_NACL_ALIGN_MASK_OFF=0
-   CPPFLAGS="$CPPFLAGS -D__default_codegen__"
+   AC_DEFINE(__default_codegen__, 1, [...])
 fi
 if test "x$enable_nacl_gc" = "xyes"; then
-   CPPFLAGS="$CPPFLAGS -finstrument-for-thread-suspension -D__native_client_gc__"
+   if test "x$TARGET" = "xAMD64" -o "x$TARGET" = "xX86"; then
+      INSTRUMENT_CFLAG="-finstrument-for-thread-suspension"
+   else
+      # Not yet implemented
+      INSTRUMENT_CFLAG=""
+   fi
+   CPPFLAGS="$CPPFLAGS $INSTRUMENT_CFLAG -D__native_client_gc__"
 fi
 AC_SUBST(MONO_NACL_ALIGN_MASK_OFF)
 
@@ -2341,11 +2388,21 @@ dnl **************
 
 AC_ARG_ENABLE(llvm,[  --enable-llvm    Enable the LLVM back-end], enable_llvm=$enableval, enable_llvm=no)
 AC_ARG_ENABLE(loadedllvm,[  --enable-loadedllvm        Load the LLVM back-end dynamically], enable_llvm=$enableval && enable_loadedllvm=$enableval, enable_loadedllvm=no)
+AC_ARG_ENABLE(llvm-version-check,[  --enable-llvm-version-check Check that the LLVM matches the version expected by mono], enable_llvm_version_check=$enableval, enable_llvm_version_check=no)
+
+AC_ARG_WITH(llvm, [  --with-llvm=<llvm prefix>    Enable the LLVM back-end], enable_llvm=yes,)
 
 if test "x$enable_llvm" = "xyes"; then
-   AC_PATH_PROG(LLVM_CONFIG, llvm-config, no)
-   if test "x$LLVM_CONFIG" = "xno"; then
-         AC_MSG_ERROR([llvm-config not found.])
+   if test "x$with_llvm" != "x"; then
+         LLVM_CONFIG=$with_llvm/bin/llvm-config
+         if test ! -x $LLVM_CONFIG; then
+                AC_MSG_ERROR([LLVM executable $LLVM_CONFIG not found.])
+      fi
+   else
+      AC_PATH_PROG(LLVM_CONFIG, llvm-config, no)
+      if test "x$LLVM_CONFIG" = "xno"; then
+            AC_MSG_ERROR([llvm-config not found.])
+      fi
    fi
 
    llvm_codegen="x86codegen"
@@ -2355,16 +2412,22 @@ if test "x$enable_llvm" = "xyes"; then
                ;;
    esac
 
-
    # The output of --cflags seems to include optimizations flags too
    LLVM_CFLAGS=`$LLVM_CONFIG --cflags | sed -e 's/-O2//g' | sed -e 's/-O0//g' | sed -e 's/-fomit-frame-pointer//g' | sed -e 's/-fPIC//g'`
    # LLVM is compiled with -fno-rtti, so we need this too, since our classes inherit
    # from LLVM classes.
    LLVM_CXXFLAGS="`$LLVM_CONFIG --cxxflags` -fno-rtti"
    LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
-   LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen`
+   if test "x$host" != "x$target"; then
+      # No need for jit libs
+      LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter`
+   else
+      LLVM_LIBS=`$LLVM_CONFIG --libs core bitwriter jit mcjit $llvm_codegen`
+   fi
    LLVM_LIBS="$LLVM_LDFLAGS $LLVM_LIBS -lstdc++"
 
+   expected_llvm_version="3.3svn-mono/2c9642d"
+
    # Should be something like '2.6' or '2.7svn'
    llvm_version=`$LLVM_CONFIG --version`
    major_version=`echo $llvm_version | cut -c 1`
@@ -2374,6 +2437,11 @@ if test "x$enable_llvm" = "xyes"; then
    if echo $llvm_version | grep -q 'mono'; then
          AC_DEFINE(LLVM_MONO_BRANCH, 1, [Whenever we are using the mono branch of LLVM])
          LLVM_CXXFLAGS="$LLVM_CXXFLAGS -DLLVM_MONO_BRANCH"       
+         if test "x$enable_llvm_version_check" == "xyes"; then
+                if test "$llvm_version" != "$expected_llvm_version"; then
+                       AC_MSG_ERROR([Expected llvm version $expected_llvm_version, but llvm-config --version returned $llvm_version"])
+                fi
+         fi
    else
          AC_MSG_ERROR([Compiling with stock LLVM is not supported, please use the Mono LLVM repo at https://github.com/mono/llvm, with the GIT branch which matches this version of mono, i.e. 'mono-2-10' for Mono 2.10.])
    fi
@@ -2416,10 +2484,6 @@ jit_wanted=true
 interp_wanted=false
 sgen_supported=false
 case "$host" in
-#      mips-sgi-irix5.* | mips-sgi-irix6.*)
-#              TARGET=MIPS;
-#              ACCESS_UNALIGNED="no"
-#              ;;
        mips*)
                TARGET=MIPS;
                arch_target=mips;
@@ -2466,7 +2530,7 @@ case "$host" in
                        have_visibility_hidden=no
                        sgen_supported=true
                        ;;
-                 cygwin*)
+                 mingw*|cygwin*)
                        sgen_supported=true
                        have_visibility_hidden=no                 
                        ;;
@@ -2572,9 +2636,9 @@ case "$host" in
                arch_target=arm;
                ACCESS_UNALIGNED="no"
                JIT_SUPPORTED=yes
-               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__ -DHAVE_ARMV6=1"
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
                # libgc's gc_locks.h depends on this
-           NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
+           CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC"
                sgen_supported=true
                ;;
        arm*-linux*)
@@ -2584,11 +2648,7 @@ case "$host" in
                JIT_SUPPORTED=yes
                sgen_supported=true
                AOT_SUPPORTED="yes"
-               if test "x$cross_compiling" != "xno"; then
-                  # Provide sane defaults when cross-compiling
-                  CPPFLAGS="$CPPFLAGS -D__ARM_EABI__ -DHAVE_ARMV6=1"
-                  NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
-               fi
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
                ;;
 # TODO: make proper support for NaCl host.
 #        arm*-*nacl)
@@ -2600,7 +2660,7 @@ case "$host" in
 #              AOT_SUPPORTED="no"
 #              ;;
        s390x-*-linux*)
-               TARGET=S390x;
+               TARGET=S390X;
                arch_target=s390x;
                ACCESS_UNALIGNED="yes"
                JIT_SUPPORTED=yes
@@ -2620,7 +2680,7 @@ if test "x$host" != "x$target"; then
                arch_target=arm;
                ACCESS_UNALIGNED="no"
                JIT_SUPPORTED=yes
-               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__ -DHAVE_ARMV6=1"
+               CPPFLAGS="$CPPFLAGS -D__ARM_EABI__"
                jit_wanted=true
                # Can't use tls, since it depends on the runtime detection of tls offsets
                # in mono-compiler.h
@@ -2681,7 +2741,7 @@ if test "x$host" != "x$target"; then
                AC_DEFINE(TARGET_X86, 1, [...])
                sizeof_register=4
                ;;
-   arm*-unknown-linux-*)
+   arm*-linux-*)
                TARGET=ARM;
                arch_target=arm;
                AC_DEFINE(TARGET_ARM, 1, [...])
@@ -2709,7 +2769,6 @@ if test "x$host" != "x$target"; then
        esac
 fi
 
-# FIXME: Define the others as well
 case "$TARGET" in
 X86)
        AC_DEFINE(TARGET_X86, 1, [...])
@@ -2727,14 +2786,32 @@ POWERPC64)
        AC_DEFINE(TARGET_POWERPC, 1, [...])
        AC_DEFINE(TARGET_POWERPC64, 1, [...])
        ;;
-S390x)
+S390X)
        AC_DEFINE(TARGET_S390X, 1, [...])
        ;;
 MIPS)
        AC_DEFINE(TARGET_MIPS, 1, [...])
        ;;
+IA64)
+       AC_DEFINE(TARGET_IA64, 1, [...])
+       ;;
+SPARC)
+       AC_DEFINE(TARGET_SPARC, 1, [...])
+       ;;
+SPARC64)
+       AC_DEFINE(TARGET_SPARC64, 1, [...])
+       ;;
 esac
 
+dnl Use GCC atomic ops if they work on the target.
+if test x$GCC = "xyes"; then
+       case $TARGET in
+       X86 | AMD64 | ARM | POWERPC | POWERPC64 | MIPS | S390X | SPARC | SPARC64)
+               AC_DEFINE(USE_GCC_ATOMIC_OPS, 1, [...])
+               ;;
+       esac
+fi
+
 if test "x$target_mach" = "xyes"; then
    if test "x$TARGET" = "xARM"; then
          AC_DEFINE(TARGET_IOS,1,[The JIT/AOT targets iOS])
@@ -2923,7 +3000,7 @@ mono_debugger_supported=no
 AC_MSG_CHECKING(if the Mono Debugger is supported on this platform)
 if test "x$mono_debugger_supported" = "xyes"; then
        BOEHM_DEFINES="$BOEHM_DEFINES -DMONO_DEBUGGER_SUPPORTED"
-       NESTED_LIBGC_FLAGS="-DMONO_DEBUGGER_SUPPORTED"
+       CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DMONO_DEBUGGER_SUPPORTED"
 fi
 AM_CONDITIONAL(MONO_DEBUGGER_SUPPORTED, test x$mono_debugger_supported = xyes)
 AC_MSG_RESULT($mono_debugger_supported)
@@ -2943,11 +3020,6 @@ if test "x$icall_tables" = "xno"; then
    AC_DEFINE(DISABLE_ICALL_TABLES, 1, [Icall tables disabled])
 fi
 
-if test "x$mono_cv_clang" = "xyes"; then
-   # FIXME: This causes many compilation errors
-   with_tls=pthread
-fi
-
 if test "x$with_tls" = "x__thread"; then
        AC_DEFINE(HAVE_KW_THREAD, 1, [Have __thread keyword])
        # Pass the information to libgc
@@ -2956,10 +3028,7 @@ if test "x$with_tls" = "x__thread"; then
        AC_TRY_COMPILE([static __thread int foo __attribute__((tls_model("initial-exec")));], [
                ], [
                        AC_MSG_RESULT(yes)
-                       # CLANG doesn't support this yet, and it prints warnings about it
-                       if test "x$mono_cv_clang" = "xno"; then
-                               AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tld_model available])
-                       fi
+                       AC_DEFINE(HAVE_TLS_MODEL_ATTR, 1, [tls_model available])
                ], [
                        AC_MSG_RESULT(no)
        ])
@@ -3027,18 +3096,54 @@ if test ${TARGET} = ARM; then
        CPPFLAGS="$CPPFLAGS -DARM_FPU_$fpu=1"
        unset fpu
 
-       if test x$cross_compiling = xno; then
-               AC_MSG_CHECKING(for ARMV6)
-               AC_TRY_RUN([
-                       int main () { __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0) : "memory"); return 0; }
-                               ], armv6=yes, armv6=no)
-
-               AC_MSG_RESULT($armv6)
-               if test ${armv6} = yes; then
-                  AC_DEFINE(HAVE_ARMV6, 1, "Host supports ARMV6 instructions")
-                  # libgc's gc_locks.h depends on this
-                  NESTED_LIBGC_FLAGS="$NESTED_LIBGC_FLAGS -DHAVE_ARMV6"
-               fi
+       dnl *********************************************
+       dnl *** Check which ARM version(s) we can use ***
+       dnl *********************************************
+       AC_MSG_CHECKING(which ARM version to use)
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_5T__) && !defined(__ARM_ARCH_5TE__) && !defined(__ARM_ARCH_5TEJ__)
+               #error Not on ARM v5.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+       ], [])
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_6J__) && !defined(__ARM_ARCH_6ZK__) && !defined(__ARM_ARCH_6K__) && !defined(__ARM_ARCH_6T2__) && !defined(__ARM_ARCH_6M__)
+               #error Not on ARM v6.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+               arm_v6=yes
+       ], [])
+
+       AC_TRY_COMPILE([], [
+               #if !defined(__ARM_ARCH_7A__) && !defined(__ARM_ARCH_7R__) && !defined(__ARM_ARCH_7EM__) && !defined(__ARM_ARCH_7M__) && !defined(__ARM_ARCH_7S__)
+               #error Not on ARM v7.
+               #endif
+               return 0;
+       ], [
+               arm_v5=yes
+               arm_v6=yes
+               arm_v7=yes
+       ], [])
+
+       if test x$arm_v5 = xyes; then
+               AC_DEFINE(HAVE_ARMV5, 1, [ARM v5])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV5=1"
+       fi
+
+       if test x$arm_v6 = xyes; then
+               AC_DEFINE(HAVE_ARMV6, 1, [ARM v6])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV6=1"
+       fi
+
+       if test x$arm_v7 = xyes; then
+               AC_DEFINE(HAVE_ARMV7, 1, [ARM v7])
+               CPPFLAGS_FOR_LIBGC="$CPPFLAGS_FOR_LIBGC -DHAVE_ARMV7=1"
        fi
 fi
 
@@ -3066,7 +3171,7 @@ case "x$gc" in
                # The problem with this approach, is that during a reconfigure, the main
                # configure scripts gets invoked with these arguments, so we use separate
                # variables understood by libgc's configure to pass CPPFLAGS and CFLAGS.
-               TMP_CPPFLAGS="$CPPFLAGS $NESTED_LIBGC_FLAGS"
+               TMP_CPPFLAGS="$CPPFLAGS $CPPFLAGS_FOR_LIBGC"
                if test x$TARGET = xSPARC -o x$TARGET = xSPARC64; then
                        TMP_CPPFLAGS=`echo $TMP_CPPFLAGS | sed -e 's/-D_FILE_OFFSET_BITS=64//g'`
                fi
@@ -3119,20 +3224,6 @@ if test x$with_profile4 != xyes; then
        DISABLE_MCS_DOCS=yes
 fi
 
-MOONLIGHT_DEFINES=
-AC_ARG_WITH(moonlight, [  --with-moonlight=yes|no|only         If you want to build Mono for Moonlight (defaults to no)],[
-       if test x$with_moonlight != xno; then
-        MOONLIGHT_DEFINES="-DMOONLIGHT -DDISABLE_ASSEMBLY_REMAPPING "
-       fi
-], [with_moonlight=no])
-AC_SUBST(MOONLIGHT_DEFINES)
-
-AC_ARG_WITH(moon_gc, [  --with-moon-gc=boehm,sgen              Select the gc to use with Moonlight (defaults to boehm)],[
-       if test "x$with_moon_gc" != "xsgen"; then
-               with_moon_gc=boehm
-       fi
-], [with_moon_gc=boehm])
-
 AC_ARG_WITH(lazy_gc_thread_creation, [  --with-lazy-gc-thread-creation=yes|no      Enable lazy runtime thread creation, embedding host must do it explicitly (defaults to no)],[
        if test x$with_lazy_gc_thread_creation != xno ; then
                AC_DEFINE(LAZY_GC_THREAD_CREATION,1,[Enable lazy gc thread creation by the embedding host.])
@@ -3156,7 +3247,11 @@ fi
 if test "x$enable_shared" = "xno" -a "x$enable_executables" = "xyes"; then
    LIBMONO_LA=libmini-static.la
 else
-   LIBMONO_LA=libmono-$API_VER.la
+   if test x$buildsgen = xyes; then
+      LIBMONO_LA=libmonosgen-$API_VER.la
+   else
+      LIBMONO_LA=libmonoboehm-$API_VER.la
+   fi
 fi
 AC_SUBST(LIBMONO_LA)
 
@@ -3188,12 +3283,6 @@ AC_SUBST(OPROFILE_LIBS)
 
 libmono_ldflags="$libmono_ldflags $LIBS"
 
-AM_CONDITIONAL(MOONLIGHT, [test "x$with_moonlight" != "xno"])
-
-AM_CONDITIONAL(ONLY_MOONLIGHT, [test "x$with_moonlight" = "xonly"])
-AM_CONDITIONAL(MOONLIGHT_BOEHM, [test "x$with_moon_gc" = "xboehm"])
-AM_CONDITIONAL(MOONLIGHT_SGEN, [test "x$with_moon_gc" = "xsgen"])
-
 AM_CONDITIONAL(INSTALL_2_0, [test "x$with_profile2" = xyes])
 AM_CONDITIONAL(INSTALL_4_0, [test "x$with_profile4" = xyes])
 AM_CONDITIONAL(INSTALL_4_5, [test "x$with_profile4_5" = xyes])
@@ -3209,12 +3298,11 @@ AM_CONDITIONAL(SPARC64, test x$TARGET = xSPARC64)
 AM_CONDITIONAL(X86, test x$TARGET = xX86)
 AM_CONDITIONAL(AMD64, test x$TARGET = xAMD64)
 AM_CONDITIONAL(IA64, test x$TARGET = xIA64)
-AM_CONDITIONAL(M68K, test x$TARGET = xM68K)
 AM_CONDITIONAL(MIPS, test x$TARGET = xMIPS)
 AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
 AM_CONDITIONAL(POWERPC64, test x$TARGET = xPOWERPC64)
 AM_CONDITIONAL(ARM, test x$TARGET = xARM)
-AM_CONDITIONAL(S390x, test x$TARGET = xS390x)
+AM_CONDITIONAL(S390X, test x$TARGET = xS390X)
 AM_CONDITIONAL(HOST_X86, test x$HOST = xX86)
 AM_CONDITIONAL(HOST_AMD64, test x$HOST = xAMD64)
 AM_CONDITIONAL(HOST_ARM, test x$HOST = xARM)
@@ -3328,7 +3416,35 @@ AC_CONFIG_COMMANDS([runtime/etc/mono/2.0/Browsers/Compat.browser],
     $ac_aux_dir/install-sh -d runtime/etc/mono/2.0/Browsers/
     cd runtime/etc/mono/2.0/Browsers
     rm -f Compat.browser
-    $LN_S $reldir/data/net_2_0/Browsers/Compat.browser Compat.browser
+    $LN_S $reldir/data/Browsers/Compat.browser Compat.browser
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.0/Browsers/Compat.browser],
+[   depth=../../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/4.0/Browsers/
+    cd runtime/etc/mono/4.0/Browsers
+    rm -f Compat.browser
+    $LN_S $reldir/data/Browsers/Compat.browser Compat.browser
+    cd $depth
+],[LN_S='$LN_S'])
+
+AC_CONFIG_COMMANDS([runtime/etc/mono/4.5/Browsers/Compat.browser],
+[   depth=../../../../..
+    case $srcdir in
+    [[\\/$]]* | ?:[[\\/]]* ) reldir=$srcdir ;;
+    .) reldir=$depth ;;
+    *) reldir=$depth/$srcdir ;;
+    esac
+    $ac_aux_dir/install-sh -d runtime/etc/mono/4.5/Browsers/
+    cd runtime/etc/mono/4.5/Browsers
+    rm -f Compat.browser
+    $LN_S $reldir/data/Browsers/Compat.browser Compat.browser
     cd $depth
 ],[LN_S='$LN_S'])
 
@@ -3436,6 +3552,8 @@ data/net_2_0/Makefile
 data/net_4_0/Makefile
 data/net_4_5/Makefile
 data/net_2_0/Browsers/Makefile
+data/net_4_0/Browsers/Makefile
+data/net_4_5/Browsers/Makefile
 data/mint.pc
 data/mono-2.pc
 data/monosgen-2.pc
@@ -3480,6 +3598,11 @@ if test x$host_win32 = xyes; then
    sed -e "s,-mno-cygwin,,g" libtool > libtool.new; mv libtool.new libtool; chmod 755 libtool
 fi
 
+if test x$platform_darwin = xyes; then
+   # This doesn't seem to be required and it slows down parallel builds
+   sed -e 's,lock_old_archive_extraction=yes,lock_old_archive_extraction=no,g' < libtool > libtool.new && mv libtool.new libtool && chmod +x libtool
+fi
+
 (
   case $prefix in
   NONE) prefix=$ac_default_prefix ;;
@@ -3545,10 +3668,6 @@ fi
       echo "DISABLE_MCS_DOCS = yes" >> $mcs_topdir/build/config.make
     fi
 
-    if test x$with_moonlight != xno; then
-      echo "MOONLIGHT = 1" >> $srcdir/$mcsdir/build/config.make
-    fi
-
     if test x$has_extension_module != xno; then
         echo "EXTENSION_MODULE = 1" >> $srcdir/$mcsdir/build/config.make
     fi
diff --git a/data/Browsers/.gitattributes b/data/Browsers/.gitattributes
new file mode 100644 (file)
index 0000000..6b8861b
--- /dev/null
@@ -0,0 +1 @@
+/Compat.browser -crlf
diff --git a/data/Browsers/ChangeLog b/data/Browsers/ChangeLog
new file mode 100644 (file)
index 0000000..26785e3
--- /dev/null
@@ -0,0 +1,6 @@
+2008-03-23  Dean Brettle  <dean@brettle.com>
+
+       * Compat.browser: added.  Provides browser definitions with
+       compatible IDs.
+
+
diff --git a/data/Browsers/Compat.browser b/data/Browsers/Compat.browser
new file mode 100644 (file)
index 0000000..9950c71
--- /dev/null
@@ -0,0 +1,42 @@
+<!--\r
+    This file defines some of the browsers that Microsoft's implementation provides in\r
+    <windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers\*.browser
+       
+       It is not derived from any file distributed with Microsoft's implementation.  Since
+       we can't distribute MS's browser files, we use browscap.ini to determine 
+       browser capabilities.  Then, if and only if the application contains App_Browser/*.browser
+       files and we are using .NET 2.0 or higher, we supplement the capabilities with the 
+       information in those files and the files in this directory.  The primary goal of this file
+       is provide browser definitions that might be referenced in App_Browser/*.browser files.\r
+-->\r
+<browsers>\r
+  <defaultBrowser id="Default">\r
+  </defaultBrowser>
+  <browser id="Default">
+    <identification>
+       <userAgent match="." />
+    </identification>\r
+  </browser>\r
+  <browser id="IE6to9" parentID="Default">
+    <identification>
+      <capability name="majorver" match="^[6-9]" />
+      <capability name="browser" match="^(IE|AOL)$" />
+    </identification>\r
+  </browser>\r
+  <browser id="Opera8to9" parentID="Default">\r
+    <identification>
+      <capability name="majorver" match="^[8-9]" />
+      <capability name="browser" match="^Opera$" />
+    </identification>\r
+  </browser>\r
+  <browser id="Safari" parentID="Default">\r
+    <identification>
+      <capability name="browser" match="^Safari$" />
+    </identification>\r
+  </browser>\r
+  <browser id="Mozilla" parentID="Default">\r
+    <identification>
+      <capability name="browser" match="^Mozilla" />
+    </identification>\r
+  </browser>\r
+</browsers>
\ No newline at end of file
index 1faae012ef2be58c6435da97f162047d2a081ae3..32e075a3856e6aee10ab22d48ccba0ca89b7e918 100644 (file)
@@ -26,6 +26,6 @@
                <dllentry dll="__Internal" name="MoveMemory" target="mono_win32_compat_MoveMemory"/>
                <dllentry dll="__Internal" name="ZeroMemory" target="mono_win32_compat_ZeroMemory"/>
        </dllmap>
-       <dllmap dll="gdiplus" target="@prefix@/lib/libgdiplus@libsuffix@" />
-       <dllmap dll="gdiplus.dll" target="@prefix@/lib/libgdiplus@libsuffix@" />
+       <dllmap dll="gdiplus" target="@prefix@/lib/libgdiplus@libsuffix@" os="!windows"/>
+       <dllmap dll="gdiplus.dll" target="@prefix@/lib/libgdiplus@libsuffix@"  os="!windows"/>
 </configuration>
diff --git a/data/net_2_0/Browsers/.gitattributes b/data/net_2_0/Browsers/.gitattributes
deleted file mode 100644 (file)
index 6b8861b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/Compat.browser -crlf
diff --git a/data/net_2_0/Browsers/ChangeLog b/data/net_2_0/Browsers/ChangeLog
deleted file mode 100644 (file)
index 26785e3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-2008-03-23  Dean Brettle  <dean@brettle.com>
-
-       * Compat.browser: added.  Provides browser definitions with
-       compatible IDs.
-
-
diff --git a/data/net_2_0/Browsers/Compat.browser b/data/net_2_0/Browsers/Compat.browser
deleted file mode 100644 (file)
index 9950c71..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<!--\r
-    This file defines some of the browsers that Microsoft's implementation provides in\r
-    <windir>\Microsoft.NET\Framework\<ver>\CONFIG\Browsers\*.browser
-       
-       It is not derived from any file distributed with Microsoft's implementation.  Since
-       we can't distribute MS's browser files, we use browscap.ini to determine 
-       browser capabilities.  Then, if and only if the application contains App_Browser/*.browser
-       files and we are using .NET 2.0 or higher, we supplement the capabilities with the 
-       information in those files and the files in this directory.  The primary goal of this file
-       is provide browser definitions that might be referenced in App_Browser/*.browser files.\r
--->\r
-<browsers>\r
-  <defaultBrowser id="Default">\r
-  </defaultBrowser>
-  <browser id="Default">
-    <identification>
-       <userAgent match="." />
-    </identification>\r
-  </browser>\r
-  <browser id="IE6to9" parentID="Default">
-    <identification>
-      <capability name="majorver" match="^[6-9]" />
-      <capability name="browser" match="^(IE|AOL)$" />
-    </identification>\r
-  </browser>\r
-  <browser id="Opera8to9" parentID="Default">\r
-    <identification>
-      <capability name="majorver" match="^[8-9]" />
-      <capability name="browser" match="^Opera$" />
-    </identification>\r
-  </browser>\r
-  <browser id="Safari" parentID="Default">\r
-    <identification>
-      <capability name="browser" match="^Safari$" />
-    </identification>\r
-  </browser>\r
-  <browser id="Mozilla" parentID="Default">\r
-    <identification>
-      <capability name="browser" match="^Mozilla" />
-    </identification>\r
-  </browser>\r
-</browsers>
\ No newline at end of file
index 4d5b8c9c56b8dae4c45b2664c2284d5ebf8cce97..ed00678b16499fadcde2f93ae11c0f23c91abd6d 100644 (file)
@@ -1,6 +1,6 @@
 monodir = $(sysconfdir)/mono/2.0/Browsers
 
-EXTRA_DIST =  Compat.browser
+EXTRA_DIST =  ../../Browsers/Compat.browser
 
-mono_DATA =  Compat.browser
+mono_DATA =  ../../Browsers/Compat.browser
 
diff --git a/data/net_4_0/Browsers/.gitignore b/data/net_4_0/Browsers/.gitignore
new file mode 100644 (file)
index 0000000..b336cc7
--- /dev/null
@@ -0,0 +1,2 @@
+/Makefile
+/Makefile.in
diff --git a/data/net_4_0/Browsers/Makefile.am b/data/net_4_0/Browsers/Makefile.am
new file mode 100644 (file)
index 0000000..0940002
--- /dev/null
@@ -0,0 +1,6 @@
+monodir = $(sysconfdir)/mono/4.0/Browsers
+
+EXTRA_DIST =  ../../Browsers/Compat.browser
+
+mono_DATA =  ../../Browsers/Compat.browser
+
index 9ca4996f8b26f0efa1599e21ace935949fd11939..31727c5910b0ff8cfabc91d4542852f89f57cebe 100644 (file)
@@ -1,4 +1,4 @@
-SUBDIRS =
+SUBDIRS = Browsers
 
 monodir = $(sysconfdir)/mono/4.0
 
diff --git a/data/net_4_5/Browsers/.gitignore b/data/net_4_5/Browsers/.gitignore
new file mode 100644 (file)
index 0000000..b336cc7
--- /dev/null
@@ -0,0 +1,2 @@
+/Makefile
+/Makefile.in
diff --git a/data/net_4_5/Browsers/Makefile.am b/data/net_4_5/Browsers/Makefile.am
new file mode 100644 (file)
index 0000000..a234829
--- /dev/null
@@ -0,0 +1,6 @@
+monodir = $(sysconfdir)/mono/4.5/Browsers
+
+EXTRA_DIST =  ../../Browsers/Compat.browser
+
+mono_DATA =  ../../Browsers/Compat.browser
+
index c45989c15e0a3190769852227c215c2f33cb1d1b..bfe4ac6a7b48609b17e50b448898b8be1e6da02a 100644 (file)
@@ -1,4 +1,4 @@
-SUBDIRS =
+SUBDIRS = Browsers
 
 monodir = $(sysconfdir)/mono/4.5
 
index d0efffcaba0b76d760a543e303f2ef6f94d5200d..1bbddca612314f610d3ad92de92757182d325d9f 100644 (file)
@@ -307,6 +307,7 @@ mono_gc_out_of_memory
 mono_gc_wbarrier_arrayref_copy
 mono_gc_wbarrier_generic_nostore
 mono_gc_wbarrier_generic_store
+mono_gc_wbarrier_generic_store_atomic
 mono_gc_wbarrier_object_copy
 mono_gc_wbarrier_set_arrayref
 mono_gc_wbarrier_set_field
index 082bfd9fdd13a7ba75f056ffd3cfc0b86936f180..231ecf171a990dddb49057c375be48cb19ecc7bc 100644 (file)
@@ -307,6 +307,7 @@ mono_gc_out_of_memory
 mono_gc_wbarrier_arrayref_copy
 mono_gc_wbarrier_generic_nostore
 mono_gc_wbarrier_generic_store
+mono_gc_wbarrier_generic_store_atomic
 mono_gc_wbarrier_object_copy
 mono_gc_wbarrier_set_arrayref
 mono_gc_wbarrier_set_field
index e32d464dbbe4fccda68a0a0e08b515bbe8f18769..526d00c1be7822b1cfa9de6a821dd5c7ed0795e8 100644 (file)
@@ -29,7 +29,7 @@ i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
 ?86-pc-cygwin*|i?86-pc-cygwin*)
     pic_options='-DDLL_EXPORT'
     ;;
-i?86-apple-darwin*)
+i?86-apple-darwin*|arm-apple-darwin*)
     pic_options='-fno-common'
     ;;
 *)
index dfe9ec4856d4aa02c27427fdbf8ac130f67ad7ab..fdbce134b9767857b4641d0991cf384fc9911696 100644 (file)
@@ -136,10 +136,16 @@ AC_CHECK_SIZEOF(long)
 AC_CHECK_SIZEOF(long long)
 AC_CHECK_FUNCS(strlcpy stpcpy strtok_r rewinddir vasprintf)
 
+#
+# Mono currently supports 10.6, but strndup is not available prior to 10.7; avoiding
+# the detection of strndup on OS X so Mono built on 10.7+ still runs on 10.6. This can be
+# removed once support for 10.6 is dropped.
 #
 # iOS detection of strndup and getpwuid_r is faulty for some reason so let's simply avoid it
 #
-if test x$target_ios = xno; then
+if test x$target_osx = xyes; then
+AC_CHECK_FUNCS(getpwuid_r)
+elif test x$target_ios = xno; then
 AC_CHECK_FUNCS(strndup getpwuid_r)
 fi
 
index d52ad9488029ce44211dca08a75c78bd0d857d23..49ee58a142fdee1c3e723bcac104c9a8174e4450 100644 (file)
@@ -156,7 +156,7 @@ g_get_current_dir (void)
 {
 #ifdef __native_client__
        char *buffer;
-       if ((buffer = getenv("NACL_PWD"))) {
+       if ((buffer = g_getenv("NACL_PWD"))) {
                buffer = g_strdup(buffer);
        } else {
                buffer = g_strdup(".");
index 6a4bbefb1d3f679095067029a0eca2ab8cfa2709..a2e41ea9f6899db0036c8730f7258c85cacc262b 100644 (file)
@@ -61,6 +61,7 @@ int mkstemp (char *tmp_template)
                fd = _wopen( utf16_template, _O_BINARY | _O_CREAT /*| _O_TEMPORARY*/ | _O_EXCL, _S_IREAD | _S_IWRITE);
        }
 
+       /* FIXME: this will crash if utf16_template == NULL */
        sprintf (tmp_template + strlen (tmp_template) - 6, "%S", utf16_template + wcslen (utf16_template) - 6);
 
        g_free (utf16_template);
index 9fe0edd3324fc1857cde28612bcc90b01aec8bfa..61db988909bdcb399dabe675754e09113eecc5ef 100644 (file)
@@ -174,14 +174,34 @@ gsize
 g_iconv (GIConv cd, gchar **inbytes, gsize *inbytesleft,
         gchar **outbytes, gsize *outbytesleft)
 {
-       size_t inleft, outleft;
+       gsize inleft, outleft;
        char *inptr, *outptr;
        gunichar c;
        int rc = 0;
        
 #ifdef HAVE_ICONV
-       if (cd->cd != (iconv_t) -1)
-               return iconv (cd->cd, inbytes, inbytesleft, outbytes, outbytesleft);
+       if (cd->cd != (iconv_t) -1) {
+               /* Note: gsize may have a different size than size_t, so we need to
+                  remap inbytesleft and outbytesleft to size_t's. */
+               size_t *outleftptr, *inleftptr;
+               size_t n_outleft, n_inleft;
+               
+               if (inbytesleft) {
+                       n_inleft = *inbytesleft;
+                       inleftptr = &n_inleft;
+               } else {
+                       inleftptr = NULL;
+               }
+               
+               if (outbytesleft) {
+                       n_outleft = *outbytesleft;
+                       outleftptr = &n_outleft;
+               } else {
+                       outleftptr = NULL;
+               }
+               
+               return iconv (cd->cd, inbytes, inleftptr, outbytes, outleftptr);
+       }
 #endif
        
        if (outbytes == NULL || outbytesleft == NULL) {
@@ -640,7 +660,7 @@ gchar *
 g_convert (const gchar *str, gssize len, const gchar *to_charset, const gchar *from_charset,
           gsize *bytes_read, gsize *bytes_written, GError **err)
 {
-       size_t outsize, outused, outleft, inleft, grow, rc;
+       gsize outsize, outused, outleft, inleft, grow, rc;
        char *result, *outbuf, *inbuf;
        gboolean flush = FALSE;
        gboolean done = FALSE;
@@ -676,7 +696,7 @@ g_convert (const gchar *str, gssize len, const gchar *to_charset, const gchar *f
                else
                        rc = g_iconv (cd, NULL, NULL, &outbuf, &outleft);
                
-               if (rc == (size_t) -1) {
+               if (rc == (gsize) -1) {
                        switch (errno) {
                        case E2BIG:
                                /* grow our result buffer */
@@ -901,7 +921,7 @@ eg_utf8_to_utf16_general (const gchar *str, glong len, glong *items_read, glong
        size_t inleft;
        char *inptr;
        gunichar c;
-       int n;
+       int u, n;
        
        g_return_val_if_fail (str != NULL, NULL);
        
@@ -910,6 +930,7 @@ eg_utf8_to_utf16_general (const gchar *str, glong len, glong *items_read, glong
                        g_set_error (err, G_CONVERT_ERROR, G_CONVERT_ERROR_FAILED, "Conversions with embedded nulls must pass the string length");
                        return NULL;
                }
+               
                len = strlen (str);
        }
        
@@ -917,29 +938,18 @@ eg_utf8_to_utf16_general (const gchar *str, glong len, glong *items_read, glong
        inleft = len;
        
        while (inleft > 0) {
-               if ((n = decode_utf8 (inptr, inleft, &c)) < 0) {
-                       if (errno == EILSEQ) {
-                               g_set_error (err, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
-                                            "Illegal byte sequence encounted in the input.");
-                       } else if (items_read) {
-                               /* partial input is ok if we can let our caller know... */
-                               break;
-                       } else {
-                               g_set_error (err, G_CONVERT_ERROR, G_CONVERT_ERROR_PARTIAL_INPUT,
-                                            "Partial byte sequence encountered in the input.");
-                       }
-                       
-                       if (items_read)
-                               *items_read = inptr - str;
-                       
-                       if (items_written)
-                               *items_written = 0;
-                       
-                       return NULL;
-               } else if (c == 0 && !include_nuls)
+               if ((n = decode_utf8 (inptr, inleft, &c)) < 0)
+                       goto error;
+               
+               if (c == 0 && !include_nuls)
                        break;
                
-               outlen += g_unichar_to_utf16 (c, NULL);
+               if ((u = g_unichar_to_utf16 (c, NULL)) < 0) {
+                       errno = EILSEQ;
+                       goto error;
+               }
+               
+               outlen += u;
                inleft -= n;
                inptr += n;
        }
@@ -957,7 +967,8 @@ eg_utf8_to_utf16_general (const gchar *str, glong len, glong *items_read, glong
        while (inleft > 0) {
                if ((n = decode_utf8 (inptr, inleft, &c)) < 0)
                        break;
-               else if (c == 0 && !include_nuls)
+               
+               if (c == 0 && !include_nuls)
                        break;
                
                outptr += g_unichar_to_utf16 (c, outptr);
@@ -968,6 +979,25 @@ eg_utf8_to_utf16_general (const gchar *str, glong len, glong *items_read, glong
        *outptr = '\0';
        
        return outbuf;
+       
+ error:
+       if (errno == EILSEQ) {
+               g_set_error (err, G_CONVERT_ERROR, G_CONVERT_ERROR_ILLEGAL_SEQUENCE,
+                            "Illegal byte sequence encounted in the input.");
+       } else if (items_read) {
+               /* partial input is ok if we can let our caller know... */
+       } else {
+               g_set_error (err, G_CONVERT_ERROR, G_CONVERT_ERROR_PARTIAL_INPUT,
+                            "Partial byte sequence encountered in the input.");
+       }
+       
+       if (items_read)
+               *items_read = inptr - str;
+       
+       if (items_written)
+               *items_written = 0;
+       
+       return NULL;
 }
 
 gunichar2 *
index 68d1619825c3fc1e0159272f3733aa414114d717..24010b58915e367699e1581e9431eeefbfff310c 100644 (file)
@@ -141,6 +141,7 @@ g_module_error (void)
        TCHAR* buf = NULL;
        DWORD code = GetLastError ();
 
+       /* FIXME: buf must not be NULL! */
        FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL, 
                code, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), buf, 0, NULL);
 
index 9df5d73c28ef89a6bb83a7976cf88c1d97cfadf4..ba75789bc80788719d2e9ffaf972e835a88f6887 100644 (file)
@@ -235,9 +235,8 @@ g_string_truncate (GString *string, gsize len)
        g_return_val_if_fail (string != NULL, string);
 
        /* Silent return */
-       if (len < 0 || len >= string->len) {
+       if (len >= string->len)
                return string;
-       }
        
        string->len = len;
        string->str[len] = 0;
index fc76b93e3e0064b2d751796878f9cbe88df1d5f4..89cfb1d4079002394010fd351628ad057c94422f 160000 (submodule)
@@ -1 +1 @@
-Subproject commit fc76b93e3e0064b2d751796878f9cbe88df1d5f4
+Subproject commit 89cfb1d4079002394010fd351628ad057c94422f
index 822de0117a079369b9404429662e120bd24245d4..c02349ea22f33a8658170b89796bd70ba81563b2 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 822de0117a079369b9404429662e120bd24245d4
+Subproject commit c02349ea22f33a8658170b89796bd70ba81563b2
index e32d464dbbe4fccda68a0a0e08b515bbe8f18769..526d00c1be7822b1cfa9de6a821dd5c7ed0795e8 100644 (file)
@@ -29,7 +29,7 @@ i?86-*-linux*|x86_64-*-linux*|powerpc-*-linux*|powerpc64-*-linux* \
 ?86-pc-cygwin*|i?86-pc-cygwin*)
     pic_options='-DDLL_EXPORT'
     ;;
-i?86-apple-darwin*)
+i?86-apple-darwin*|arm-apple-darwin*)
     pic_options='-fno-common'
     ;;
 *)
index 9ec6992352ad893b381dff712b37791359a183e8..b6bc1832c994da99c04ecbaa475200159c9103f4 100644 (file)
@@ -969,7 +969,7 @@ word n;
       }
 #   endif
     expansion_slop = WORDS_TO_BYTES(min_words_allocd()) + 4*MAXHINCR*HBLKSIZE;
-    if (GC_last_heap_addr == 0 && !((word)space & SIGNB)
+    if ((GC_last_heap_addr == 0 && !((word)space & SIGNB))
         || (GC_last_heap_addr != 0 && GC_last_heap_addr < (ptr_t)space)) {
         /* Assume the heap is growing up */
         GC_greatest_plausible_heap_addr =
index 80712fcdf3f597637aed10d181d2642af72c8917..ba4fd185b9b743770a49c102a69748908bf97470 100644 (file)
 #       define GC_CLEAR_DEFINED
 #    endif /* ALPHA */
 #    ifdef ARM32
-#ifdef __native_client__
-#define NACL_ALIGN() ".align 4\n"
-#define MASK_REGISTER(reg) "bic " reg ", " reg ", #0xc0000000\n"
-#else
-#define NACL_ALIGN()
-#define MASK_REGISTER(reg)
-#endif
+#       ifdef __native_client__
+#          define MASK_REGISTER(reg, cond) "bic" cond " " reg ", " reg ", #0xc0000000\n"
+#          define NACL_ALIGN() ".align 4\n"
+#       else
+#          define MASK_REGISTER(reg, cond)
+#          define NACL_ALIGN()
+#       endif
         inline static int GC_test_and_set(volatile unsigned int *addr) {
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__)
-          int ret, tmp;
-          __asm__ __volatile__ (
-                                 "1:\n"
-                                 NACL_ALIGN()
-                                 MASK_REGISTER("%3")
-                                 "ldrex %0, [%3]\n"
-                                 MASK_REGISTER("%3")
-                                 "strex %1, %2, [%3]\n" 
-                                 "teq %1, #0\n"
-                                 "bne 1b\n"
-                                 : "=&r" (ret), "=&r" (tmp)
-                                 : "r" (1), "r" (addr)
-                                 : "memory", "cc");
-          return ret;
-#else
-          int oldval;
-          /* SWP on ARM is very similar to XCHG on x86.  Doesn't lock the
-           * bus because there are no SMP ARM machines.  If/when there are,
-           * this code will likely need to be updated. */
-          /* See linuxthreads/sysdeps/arm/pt-machine.h in glibc-2.1 */
-          __asm__ __volatile__(MASK_REGISTER("%2")
-                               "swp %0, %1, [%2]"
-                            : "=&r"(oldval)
-                            : "r"(1), "r"(addr)
-                            : "memory");
-          return oldval;
-#endif
+                 return (int) __sync_lock_test_and_set (addr, 1);
         }
 #       define GC_TEST_AND_SET_DEFINED
       inline static void GC_clear(volatile unsigned int *addr) {
-#ifdef HAVE_ARMV6
-                 /* Memory barrier */
-                 __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0) : "memory");
-#endif
+                 __sync_synchronize ();
+
                  *(addr) = 0;
       }
 #     define GC_CLEAR_DEFINED
+#     undef NACL_ALIGN
+#     undef MASK_REGISTER
 #    endif /* ARM32 */
 #    ifdef CRIS
         inline static int GC_test_and_set(volatile unsigned int *addr) {
index 88e783800de9faf427837c7bd93a1b3bd15f99cd..418e046ae1267715dd3022625f839cf81d302dd8 100644 (file)
@@ -67,7 +67,7 @@
 /* Determine the machine type: */
 # if defined(__native_client__)
 #    define NACL
-#    if !defined(__portable_native_client__)
+#    if !defined(__portable_native_client__) && !defined(__arm__)
 #        define I386
 #        define mach_type_known
 #    else
 #       define OS_TYPE "LINUX"
 #       define LINUX_STACKBOTTOM
 #       define DYNAMIC_LOADING
-       extern int __data_start[];
+       extern int __data_start[] __attribute__((weak));
 #       define DATASTART ((ptr_t)(__data_start))
-    extern int _end[];
-#   define DATAEND (_end)
-#   define CACHE_LINE_SIZE 256
-#   define GETPAGESIZE() 4096
+        extern int _end[] __attribute__((weak));
+#       define DATAEND (_end)
+#       define CACHE_LINE_SIZE 256
+#       define GETPAGESIZE() 4096
 #   endif
 # endif
 
index bd72739f580bb71c87c71ab39671a8f5ee6a01c2..e285a9a24ba3e4ca794e0abbcdcdccc2f2034fb2 100644 (file)
@@ -13,7 +13,12 @@ struct thread_stop_info {
 /* the instrumented function uses any callee saved registers, they may  */
 /* be pushed to the stack much earlier.  Also, on amd64 'push' puts 8   */
 /* bytes on the stack even though our pointers are 4 bytes.             */
+#ifdef __arm__
+/* For ARM we save r4-r8, r10-r12, r14 */
+#define NACL_GC_REG_STORAGE_SIZE 9
+#else
 #define NACL_GC_REG_STORAGE_SIZE 20
+#endif
     ptr_t reg_storage[NACL_GC_REG_STORAGE_SIZE];
 #endif
 };
index 39993451cc7107651810adccfa5f73747edab341..49f6add1553dcf2ea94d829a3b54a6498202783f 100644 (file)
@@ -22,7 +22,7 @@
 # include "private/gc_priv.h"
 
 map_entry_type * GC_invalid_map = 0;
-static max_valid_offset = 0;
+static word max_valid_offset = 0;
 
 /* Invalidate the object map associated with a block.  Free blocks     */
 /* are identified by invalid maps.                                     */
index fe2ba1a381025cf22af5cf92b04d45bf44600ad9..334ff1de219a3dc0c9af66d4271706fd52f806fd 100644 (file)
@@ -540,14 +540,17 @@ static void pthread_stop_world()
 #elif __arm__
 
 #define NACL_STORE_REGS()  \
-    do {                  \
-       __asm__ __volatile__ ("push {r4-r12,lr}");\
-       __asm__ __volatile__ ("mov r0, %0" : : "r" (&nacl_gc_thread_self->stop_info.stack_ptr)); \
-       __asm__ __volatile__ ("bic r0, r0, #0xc0000000");\
-       __asm__ __volatile__ ("str sp, [r0]");\
-       memcpy(nacl_gc_thread_self->stop_info.reg_storage, nacl_gc_thread_self->stop_info.stack_ptr, NACL_GC_REG_STORAGE_SIZE * sizeof(ptr_t));\
-       __asm__ __volatile__ ("add sp, sp, #40");\
-       __asm__ __volatile__ ("bic sp, sp, #0xc0000000");\
+    do {                   \
+       __asm__ __volatile__ (                      \
+               ".align 4\n\t"                      \
+               "bic %0, %0, #0xc0000000\n\t"       \
+               "str sp, [%0]\n\t"                  \
+               "bic %1, %1, #0xc0000000\n\t"       \
+               "stm %1, {r4-r8,r10-r12,lr}\n\t"    \
+                       :                                               \
+                       : "r" (&nacl_gc_thread_self->stop_info.stack_ptr), \
+                        "r"(nacl_gc_thread_self->stop_info.reg_storage) \
+                       : "memory");                 \
     } while (0)
 #else
 
index d83d730d3433f5f29b2da36e1c97013869b92394..621a45f0346fead0739260b7866053d199ef76ff 100644 (file)
@@ -165,7 +165,7 @@ void (*GC_is_valid_displacement_print_proc) GC_PROTO((GC_PTR)) =
     pdispl = HBLKDISPL(p);
     map_entry = MAP_ENTRY((hhdr -> hb_map), pdispl);
     if (map_entry == OBJ_INVALID
-       || sz > MAXOBJBYTES && (ptr_t)p >= (ptr_t)h + sz) {
+       || (sz > MAXOBJBYTES && (ptr_t)p >= (ptr_t)h + sz)) {
        goto fail;
     }
     return(p);
index 47f36a41a07323392df3f8ab862e27d98facfd76..2c9532f09509687fd5c05ca65986e09fc8162729 100644 (file)
--- a/m4/po.m4
+++ b/m4/po.m4
@@ -24,7 +24,7 @@ AC_DEFUN([AM_PO_SUBDIRS],
 [
   AC_REQUIRE([AC_PROG_MAKE_SET])dnl
   AC_REQUIRE([AC_PROG_INSTALL])dnl
-  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+  AC_REQUIRE([AC_PROG_MKDIR_P])dnl
   AC_REQUIRE([AM_NLS])dnl
 
   dnl Release version of the gettext macros. This is used to ensure that
index 82bfe1326290d136dd77b2fa6910b9d7f93bfdfa..ed704b89d6aea515bdfa80ec664c4709a2b2e705 100644 (file)
@@ -124,7 +124,7 @@ gcc-mingw and as packages.
 Assembler command. The default is "as".
 .TP
 .I "CC"
-C compiler command. The default is "cc" under Linux and "gcc -mno-cygwin"
+C compiler command. The default is "cc" under Linux and "gcc"
 under Windows.
 .TP
 .I "MONO_BUNDLED_OPTIONS"
index 318c0586d0fe9d191e229d31ac4aedb30824bfcb..dc1f2ceb2acb8e750e2da65b749070d9580df079 100644 (file)
@@ -3,10 +3,11 @@
 .\" Copyright 2003 Ximian, Inc. 
 .\" Copyright 2004-2011 Novell, Inc. 
 .\" Copyright 2011-2012 Xamarin Inc
+.\" Copyright 2013 7digital Media Ltd.
 .\" Author:
 .\"   Miguel de Icaza (miguel@gnu.org)
 .\"
-.TH Mono "Mono 2.11"
+.TH Mono "Mono 3.0"
 .SH NAME
 mono \- Mono's ECMA-CLI native code generator (Just-in-Time and Ahead-of-Time)
 .SH SYNOPSIS
@@ -417,7 +418,7 @@ the global assembly cache is always trusted.
 .TP
 \fB--server\fR
 Configures the virtual machine to be better suited for server
-operations (currently, a no-op).
+operations (currently, allows a heavier threadpool initialization).
 .TP
 \fB--verify-all\fR 
 Verifies mscorlib and assemblies in the global
@@ -570,7 +571,8 @@ itself, and not typically of interest to runtime users or developers.
 \fB--break method\fR
 Inserts a breakpoint before the method whose name is `method'
 (namespace.class:methodname).  Use `Main' as method name to insert a
-breakpoint on the application's main method.
+breakpoint on the application's main method.  You can use it also with
+generics, for example "System.Collections.Generic.Queue`1:Peek"
 .TP
 \fB--breakonex\fR
 Inserts a breakpoint on exceptions.  This allows you to debug your
@@ -897,6 +899,18 @@ above locations. If you don't want the mapping to be performed you can set this
 variable in your environment before starting the application and no action will
 be taken.
 .TP
+\fBMONO_ASPNET_WEBCONFIG_CACHESIZE\fR
+Mono has a cache of ConfigSection objects for speeding up WebConfigurationManager
+queries. Its default size is 100 items, and when more items are needed, cache
+evictions start happening. If evictions are too frequent this could impose
+unnecessary overhead, which could be avoided by using this environment variable
+to set up a higher cache size (or to lower memory requirements by decreasing it).
+.TP
+\fBMONO_CAIRO_DEBUG_DISPOSE\fR
+If set, causes Mono.Cairo to collect stack traces when objects are allocated,
+so that the finalization/Dispose warnings include information about the
+instance's origin.
+.TP
 \fBMONO_CFG_DIR\fR
 If set, this variable overrides the default system configuration directory
 ($PREFIX/etc). It's used to locate machine.config file.
@@ -1614,6 +1628,10 @@ for example, to see managed frame names on gdb backtraces.
 Enables the maximum JIT verbosity for the specified method. This is
 very helpfull to diagnose a miscompilation problems of a specific
 method.
+.TP
+\fBMONO_VERBOSE_HWCAP\fR
+If set, makes the JIT output information about detected CPU features
+(such as SSE, CMOV, FCMOV, etc) to stdout.
 .SH VALGRIND
 If you want to use Valgrind, you will find the file `mono.supp'
 useful, it contains the suppressions for the GC which trigger
index 0728b03dd20451f2416a3aae706818e9d4e0f682..8fd804808591d5966520bf3c6cb4f769d58107e4 100644 (file)
@@ -120,6 +120,7 @@ static class Consts
        public const string AssemblyWindowsBase = "WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35";
        public const string AssemblyPresentationCore_3_5 = "PresentationCore, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35";
        public const string AssemblyPresentationFramework_3_5 = "PresentationFramework, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35";
+       public const string AssemblySystemServiceModel_3_0 = "System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089";
 #elif NET_2_1
        public const string AssemblySystem_Core = "System.Core, Version=" + FxVersion + ", Culture=neutral, PublicKeyToken=b77a5c561934e089";
 #elif NET_2_0
index 153cba9f89214d0c4f10f88440cc337491d1488c..bc76b711d39879770af0f547f8186669c295c245 100644 (file)
@@ -4,6 +4,7 @@ outfile=$1
 incfile=$2
 excfile=$3
 extfile=$4
+extexcfile=$5
 
 process_includes_1() {
     sed -e '/^[ \t]*$/d' -e '/^[ \t]*#/d' $1 > $2
@@ -39,16 +40,24 @@ fi
 sort -u $outfile.inc > $outfile.inc_s
 rm -f $outfile.inc
 
-if test -z "$excfile"; then
-    mv $outfile.inc_s $outfile
-else
+
+if test -n "$excfile"; then
     process_includes $excfile $outfile.exc
+fi
 
-    sort -u $outfile.exc > $outfile.exc_s
-    rm -f $outfile.exc
+if test -n "$extexcfile"; then
+    process_includes $extexcfile $outfile.ext_exc
+       cat $outfile.ext_exc >> $outfile.exc
+       rm -f $outfile.ext_exc
+fi
 
+if test -f $outfile.exc; then
+       sort -u $outfile.exc > $outfile.exc_s
+       rm -f $outfile.exc
     sort -m $outfile.inc_s $outfile.exc_s | uniq -u > $outfile
     rm -f $outfile.inc_s $outfile.exc_s
+else
+       mv $outfile.inc_s $outfile
 fi
 
 
index bfec495336f213c2cde7696e263022b8d279c5a9..fdd94d023f316a4b56d93dc229d2641a7e75a2cd 100644 (file)
@@ -23,11 +23,18 @@ else
 EXTENSION_include = $(wildcard $(PROFILE)_opt_$(LIBRARY).sources)
 endif
 
+
+ifdef EXTENSION_MODULE
+EXTENSION_exclude = $(wildcard $(topdir)/../../mono-extensions/mcs/$(thisdir)/$(PROFILE)_$(LIBRARY).exclude.sources)
+else
+EXTENSION_exclude = $(wildcard $(PROFILE)_opt_$(LIBRARY).exclude.sources)
+endif
+
 # Note, gensources.sh can create a $(sourcefile).makefrag if it sees any '#include's
 # We don't include it in the dependencies since it isn't always created
 $(sourcefile): $(PROFILE_sources) $(PROFILE_excludes) $(topdir)/build/gensources.sh $(EXTENSION_include)
        @echo Creating the per profile list $@ ...
-       $(SHELL) $(topdir)/build/gensources.sh $@ '$(PROFILE_sources)' '$(PROFILE_excludes)' '$(EXTENSION_include)'
+       $(SHELL) $(topdir)/build/gensources.sh $@ '$(PROFILE_sources)' '$(PROFILE_excludes)' '$(EXTENSION_include)' '$(EXTENSION_exclude)'
 endif
 
 PLATFORM_excludes := $(wildcard $(LIBRARY).$(PLATFORM)-excludes)
@@ -53,7 +60,11 @@ else
 lib_dir = lib
 endif
 
+ifdef LIBRARY_SUBDIR
+the_libdir = $(topdir)/class/$(lib_dir)/$(PROFILE)/$(LIBRARY_SUBDIR)/
+else
 the_libdir = $(topdir)/class/$(lib_dir)/$(PROFILE)/
+endif
 ifdef LIBRARY_NEEDS_POSTPROCESSING
 build_libdir = fixup/$(PROFILE)/
 else
index 853d88fc363778820d5b6a6b5be1718c7690f00c..c270cc81ccf0f562604f81c10869e5364d426577 100644 (file)
@@ -66,7 +66,7 @@ do-profile-check: $(depsdir)/.stamp
            else \
                echo "*** The compiler '$(BOOTSTRAP_MCS)' doesn't appear to be usable." 1>&2; \
                 echo "*** You need Mono version 2.4 or better installed to build MCS" 1>&2 ; \
-                echo "*** Read INSTALL.txt for information on how to bootstrap a Mono installation." 1>&2 ; \
+                echo "*** Check mono README for information on how to bootstrap a Mono installation." 1>&2 ; \
                exit 1; fi; fi
 
 
diff --git a/mcs/build/profiles/mobile_static.make b/mcs/build/profiles/mobile_static.make
new file mode 100644 (file)
index 0000000..5950566
--- /dev/null
@@ -0,0 +1,20 @@
+#! -*- makefile -*-
+
+BOOTSTRAP_PROFILE = build
+
+BOOTSTRAP_MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
+MCS = MONO_PATH="$(topdir)/class/lib/$(BOOTSTRAP_PROFILE)$(PLATFORM_PATH_SEPARATOR)$$MONO_PATH" $(INTERNAL_GMCS)
+
+# Use system resgen as we don't want local System.Windows.Forms dependency
+RESGEN = resgen2
+
+profile-check:
+       @:
+
+DEFAULT_REFERENCES = -r:mscorlib.dll
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -d:MOBILE -d:FULL_AOT_RUNTIME -d:DISABLE_REMOTING -d:DISABLE_COM -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES) $(PLATFORM_DEBUG_FLAGS)
+FRAMEWORK_VERSION = 2.1
+NO_TEST = yes
+
+# the tuner takes care of the install
+NO_INSTALL = yes
index d49b255f8615f327f087a096cbf3d2ad3f9b5281..b841a1027ae77586dd2bc67ee774493311eba346 100644 (file)
@@ -12,9 +12,9 @@ profile-check:
        @:
 
 DEFAULT_REFERENCES = -r:mscorlib.dll
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -d:MOBILE -d:MONOTOUCH -d:DISABLE_REMOTING -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES) $(PLATFORM_DEBUG_FLAGS)
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -d:MOBILE -d:MONOTOUCH -d:DISABLE_REMOTING -d:DISABLE_COM -d:FULL_AOT_RUNTIME -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES) $(PLATFORM_DEBUG_FLAGS)
 FRAMEWORK_VERSION = 2.1
 NO_TEST = yes
 
 # the tuner takes care of the install
-NO_INSTALL = yes
+NO_INSTALL = yes
\ No newline at end of file
index 0cdda1928475ce2c0b2ea18e6fbfbfd04294a5e5..9f82811018f495c016c9ee62ab9e73a00dc38648 100644 (file)
@@ -14,9 +14,9 @@ profile-check:
        @:
 
 DEFAULT_REFERENCES = -r:mscorlib.dll
-PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES) $(PLATFORM_DEBUG_FLAGS)
+PROFILE_MCS_FLAGS = -d:NET_1_1 -d:NET_2_0 -d:NET_2_1 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -d:MOBILE -d:MONOTOUCH -nowarn:1699 -nostdlib -lib:$(topdir)/class/lib/$(PROFILE) $(DEFAULT_REFERENCES) $(PLATFORM_DEBUG_FLAGS)
 
-FRAMEWORK_VERSION = 4.5
+FRAMEWORK_VERSION = 2.1
 
 # This is utility build only
 NO_INSTALL = yes
index d1d2832be4df8cb35e793f000d2bfc86761bbdf1..5ba208fb9f4b35103b64085152c071e9a621fa5c 100644 (file)
@@ -81,8 +81,14 @@ include $(topdir)/build/config-default.make
 
 ifndef PLATFORM
 ifeq ($(OS),Windows_NT)
+ifneq ($(V),)
+$(info *** Assuming PLATFORM is 'win32'.)
+endif
 PLATFORM = win32
 else
+ifneq ($(V),)
+$(info *** Assuming PLATFORM is 'linux'.)
+endif
 PLATFORM = linux
 endif
 endif
index ced64e7a9c83d0e8471fa0d1e118c6b5c29972b2..1ea648c900b56c821fbfb206b4a294a9571bf9d5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BA19643F-7F03-4902-9BB6-E94F4467F56A}</ProjectGuid>\r
+    <ProjectGuid>{6088F0A1-9658-4B71-86DB-8685B9279154}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Accessibility-net_2_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3099fa21d5ac788bb891f069eacc80b244b5b41f..224ce9a3c5e6f80c16c48d898ab5d9aa6fc4748e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}</ProjectGuid>\r
+    <ProjectGuid>{3C0E9135-1458-47F6-9076-17FFB1E3E32F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Accessibility-net_4_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6303537d9c9ddb8b9951b3d3c5b0c8dc2dfda479..34dba8ba83f8bd1a2ea6c7f80f4f2a00d39bf2c6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}</ProjectGuid>\r
+    <ProjectGuid>{121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Accessibility-net_4_5</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 04cf7f28e291eba7fb70de460a78d51417267972..8312c6a4cd37e6331ac51bd3b40f9671d08d9180 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7F3ADC13-F208-4BA1-A5A8-90B2DD086A60}</ProjectGuid>\r
+    <ProjectGuid>{543FE97D-6C85-42C7-9C19-A4106C878F73}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a6435e6c7ebbe0f43f247c6010367d31c1a77eca..8c44c79bd82f77da608178ca47d304b16623437f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1EEAA095-97DA-4B89-AF86-75420EA398DA}</ProjectGuid>\r
+    <ProjectGuid>{2F70B549-EA84-4C1D-93C0-05CEA551DDFF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3f3ec76e4785d0db62fbe388cde57820b05333a1..978d6e3fa3dcd90d60e5346244f4d38a309838b6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}</ProjectGuid>\r
+    <ProjectGuid>{0C6297C3-66BE-4FD1-B9B0-057950B32E94}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 06fd2a6914c5730242b2760c815333a8cfcd792a..47087046305dc7deb4e7bd0df2a92ec488d8795d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2D856822-75AF-4D0C-A6CD-72FE9713AA75}</ProjectGuid>\r
+    <ProjectGuid>{09A994B6-D73D-4BB1-B0EE-3AB1DFFF2DA1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_2_0.csproj">\r
-      <Project>{7F3ADC13-F208-4BA1-A5A8-90B2DD086A60}</Project>\r
+      <Project>{543FE97D-6C85-42C7-9C19-A4106C878F73}</Project>\r
       <Name>Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2e25f6f1041fc02627e435a1fc24ee6c6c388add..70bcf17b23a7f381cd1e7a362612a3fbf46dfd29 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0AA64685-B2E8-4DAC-B440-E48167BCCA00}</ProjectGuid>\r
+    <ProjectGuid>{07D36D76-142D-4C8D-80CD-CA073A31E1DE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_0.csproj">\r
-      <Project>{1EEAA095-97DA-4B89-AF86-75420EA398DA}</Project>\r
+      <Project>{2F70B549-EA84-4C1D-93C0-05CEA551DDFF}</Project>\r
       <Name>Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a40dea6e8ab10ca219a5491497473ec53769ad0c..f9317c6d73cf59ee91558f3c1f1f793bd9f1ef98 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}</ProjectGuid>\r
+    <ProjectGuid>{7694FE57-6BB7-478E-BB4E-C5187167804F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Commons.Xml.Relaxng-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_5.csproj">\r
-      <Project>{4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}</Project>\r
+      <Project>{0C6297C3-66BE-4FD1-B9B0-057950B32E94}</Project>\r
       <Name>Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2dda204c1cb190fdaa744f24734998bde305c037..230d9117dc81ab1a0bd3274fbc82132f17bbde8a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1F0602E2-AFBD-4229-A647-2E9D8EDB3C81}</ProjectGuid>\r
+    <ProjectGuid>{A98EAB08-7C3E-40CE-898E-3DF9A0939DB5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Compat.ICSharpCode.SharpZipLib-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0543daf00cf65f70ccd14f35bfba5334c3486995..0b5bf7def1c2c4839ab9de5ab9d546a26b67c19d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50F09AFF-918B-442C-8380-A2398448E2DF}</ProjectGuid>\r
+    <ProjectGuid>{9E7D403F-232E-4126-ADF8-0897129C037F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4f6a7e8f607cbe50c06c80b873c2d095ff51dc2d..2b9fcf7b07125fde68133eee8fe3915f94522991 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D5048C45-AD07-4E36-92FB-128208775B14}</ProjectGuid>\r
+    <ProjectGuid>{DCF7BFCB-23B0-41F0-94A3-0AEFA87EC799}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 30b7abbfb7ac17d8eaddad1275e0e09773148bc1..be96a790732221bf1fa8664d3663b55c486ce826 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD666708-4CC0-4822-B670-26D59A2D32AF}</ProjectGuid>\r
+    <ProjectGuid>{C67F17EE-7E1C-4B87-B58B-11458749DD70}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4d8ef5ed0e3b72bcae80c0ef3772f608ea76e0e6..47d588418df3a0094c03966db39c7be839ccb8ab 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3B0B4F90-D5C5-4A93-9642-CF9D871D03AC}</ProjectGuid>\r
+    <ProjectGuid>{09C1F680-F5E0-421A-9040-D98664AF9895}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Cscompmgd\Cscompmgd-net_2_0.csproj">\r
-      <Project>{50F09AFF-918B-442C-8380-A2398448E2DF}</Project>\r
+      <Project>{9E7D403F-232E-4126-ADF8-0897129C037F}</Project>\r
       <Name>Cscompmgd\Cscompmgd-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4df613ea77c808b8834608779bac41f1f8e004b9..56eeaaa49d333322ec3061448e6363208ba5f5db 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FD37F2F7-E709-4D8D-BDD1-CF48E25B3447}</ProjectGuid>\r
+    <ProjectGuid>{7E92EB42-C1FD-4AE4-AE19-FA7F534FFCA1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Cscompmgd\Cscompmgd-net_4_0.csproj">\r
-      <Project>{D5048C45-AD07-4E36-92FB-128208775B14}</Project>\r
+      <Project>{DCF7BFCB-23B0-41F0-94A3-0AEFA87EC799}</Project>\r
       <Name>Cscompmgd\Cscompmgd-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 12a886770fa39024a93fea0666cefc53e3bfea1c..84d30761ef6b90b7cc9b4c9d2f6c37a908f27661 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}</ProjectGuid>\r
+    <ProjectGuid>{C7D8B744-96E6-42A0-82C0-C191C686D485}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Cscompmgd-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Cscompmgd\Cscompmgd-net_4_5.csproj">\r
-      <Project>{AD666708-4CC0-4822-B670-26D59A2D32AF}</Project>\r
+      <Project>{C67F17EE-7E1C-4B87-B58B-11458749DD70}</Project>\r
       <Name>Cscompmgd\Cscompmgd-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5ca9640b515be30ed2e1363ffa83f8772426a21f..877f2fef582637b86f4e9ff68e8a34d9fc1ae05e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F2034C25-2454-42D9-8C41-0A16FA51B707}</ProjectGuid>\r
+    <ProjectGuid>{E580684B-ECFC-41D9-9AC7-FDDD0FDBD399}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\CustomMarshalers-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3176e459a822111f49c7df2de0c893d0dab6d544..e6e7f52da71a268d99501725a02cec074af01781 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FE886389-19C6-4F73-BE30-E6124F28FD57}</ProjectGuid>\r
+    <ProjectGuid>{974FC570-0B07-4912-A06A-99DF7B82DCF7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\CustomMarshalers-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 213ef0fd13953493c4c5dd83c4bf246434bb0860..3d5bc18396fcf10b129536d8e8a8eab1f1209965 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{69C23F98-A766-46FB-B83F-2F22BFC3E897}</ProjectGuid>\r
+    <ProjectGuid>{417E7FEB-E054-44F0-81FF-A896F4018DC7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\CustomMarshalers-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f3cfd1b0c612b58118b7786506d67715668c20c0..2c2ff46b9cdfc0e9961f18c4fb4b9eae818b9295 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0CEF008D-47D4-49DC-9B67-C1CC73F40D77}</ProjectGuid>\r
+    <ProjectGuid>{2D2DDD2D-5AE7-458B-B626-4475D671A7F9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\EntityFramework.SqlServer-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\EntityFramework\EntityFramework-net_4_5.csproj">\r
-      <Project>{AABFEC11-0171-447F-9093-6E118257D22C}</Project>\r
+      <Project>{7AC4183B-FA37-45D9-9069-47336EB37D0A}</Project>\r
       <Name>EntityFramework\EntityFramework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6b368623313640b3e72e0458862794c3ef313a0c..cb8829641fa3b2922aee39d3e142600e6cf6be69 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AABFEC11-0171-447F-9093-6E118257D22C}</ProjectGuid>\r
+    <ProjectGuid>{7AC4183B-FA37-45D9-9069-47336EB37D0A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\EntityFramework-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{94E8FEFF-9695-4F77-A8AB-85370336FE0D}</Project>\r
+      <Project>{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d63f224a4232c25132a077d10c9a9764bcb6b807..3543382f6f066cc4c216035ce2a49c1bda855c61 100644 (file)
@@ -1,23 +1,19 @@
+MCS_BUILD_DIR = ../../build
+
 thisdir = class/Facades
 
-net_4_5_SUBDIRS = System.Runtime System.Linq System.Xml.Serialization System.Xml.XmlSerializer \
-       System.ServiceModel.Primitives System.Xml.ReaderWriter System.Diagnostics.Debug \
-       System.Runtime.Extensions System.Diagnostics.Tools System.Collections \
-       System.ComponentModel.EventBasedAsync System.ComponentModel System.ObjectModel \
-       System.Text.RegularExpressions System.Threading System.Runtime.InteropServices \
-       System.Reflection System.Globalization System.IO System.Reflection.Primitives \
-       System.Resources.ResourceManager System.Security.Principal System.Text.Encoding \
-       System.Text.Encoding.Extensions System.Linq.Queryable System.Linq.Expressions \
-       System.Net.Primitives System.Net.Requests System.Net.NetworkInformation \
-       System.Runtime.Serialization.Primitives System.Runtime.Serialization.Xml \
-       System.Runtime.Serialization.Json System.ServiceModel.Http System.Windows \
-       System.Xml.XDocument System.Threading.Tasks System.Diagnostics.Contracts \
-       System.Dynamic.Runtime System.ComponentModel.Annotations System.Runtime.Numerics \
-       System.Linq.Parallel System.Collections.Concurrent System.Threading.Tasks.Parallel \
-       System.Reflection.Extensions
+monotouch_SUBDIRS = System.Collections.Concurrent System.Collections System.ComponentModel.Annotations System.ComponentModel.EventBasedAsync System.ComponentModel System.Diagnostics.Contracts System.Diagnostics.Debug System.Diagnostics.Tools System.Globalization System.IO System.Linq.Expressions System.Linq.Parallel System.Linq.Queryable System.Linq System.Net.NetworkInformation System.Net.Primitives System.Net.Requests System.ObjectModel System.Reflection.Extensions System.Reflection.Primitives System.Reflection System.Resources.ResourceManager System.Runtime.Extensions System.Runtime.InteropServices System.Runtime.Numerics System.Runtime.Serialization.Json System.Runtime.Serialization.Primitives System.Runtime.Serialization.Xml System.Runtime System.Security.Principal System.ServiceModel.Http System.ServiceModel.Primitives System.Text.Encoding.Extensions System.Text.Encoding System.Text.RegularExpressions System.Threading.Tasks.Parallel System.Threading.Tasks System.Threading System.Xml.ReaderWriter System.Xml.XDocument System.Xml.XmlSerializer
+
+mobile_static_SUBDIRS = $(monotouch_SUBDIRS)
+
+net_4_5_SUBDIRS = $(monotouch_SUBDIRS) System.Dynamic.Runtime System.Reflection.Emit.ILGeneration System.Reflection.Emit.Lightweight System.Reflection.Emit
+
+monodroid_SUBDIRS = $(net_4_5_SUBDIRS)
 
 SUBDIRS = $(net_4_5_SUBDIRS)
 
-include ../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
 dist-local: dist-default
+
+
index 1330eebfe653b644b7fcb166c0c360f2854e424a..b14058779a3979974b495d28df8da421532a644e 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Collections.Concurrent.dll")]
 [assembly: AssemblyDescription ("System.Collections.Concurrent.dll")]
 [assembly: AssemblyDefaultAlias ("System.Collections.Concurrent.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 5cdf14d4f2d59d5843de35d72443095c2d700c5a..d0e3fdf6086d18e28024f7e9cb378817a1829753 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Collections.Concurrent
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Collections.Concurrent.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 4103861ffa5ec43928d794d8ddbfa54d727dbc8c..662e4042950b98d6e46f85ebbca2b885517f81b8 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.BlockingCollection<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentBag<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentDictionary<,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.IProducerConsumerCollection<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentQueue<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.ConcurrentStack<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.Partitioner<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.EnumerablePartitionerOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.IProducerConsumerCollection<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.OrderablePartitioner<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.Partitioner))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.EnumerablePartitionerOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Concurrent.Partitioner<>))]
 
index eac2a8546d9792ad5edd27a8fa42a73c6171f5c7..e3f037ff8e8a96531cf2924b4351e213ea6af872 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Collections.dll")]
 [assembly: AssemblyDescription ("System.Collections.dll")]
 [assembly: AssemblyDefaultAlias ("System.Collections.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index c45f6ae22fe83f4f0eecbc7e7ce76435c30b4572..7169319ecf780a798155d88dc287ff3cd5bc884f 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Collections
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Collections.dll
-LIB_MCS_FLAGS = /r:System /r:System.Core
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System /r:System.Core
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 716fe5c71dc5d579d8c8ba57af2f5434749c31ea..9a2b8f18f67a6000f6da3f19910b131c32e7c63c 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.LinkedList<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.LinkedListNode<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Queue<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Stack<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.BitArray))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Comparer<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Dictionary<,>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.EqualityComparer<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.List<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.HashSet<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.LinkedList<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.LinkedListNode<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.List<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Queue<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.SortedDictionary<,>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.SortedSet<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.Stack<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.StructuralComparisons))]
 
index 45560dc0a8ffd7a54eb89df777c68bedde67bcb5..3ea660a30b05e23a78602e51ad45d6602851e6d4 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.ComponentModel.Annotations.dll")]
 [assembly: AssemblyDescription ("System.ComponentModel.Annotations.dll")]
 [assembly: AssemblyDefaultAlias ("System.ComponentModel.Annotations.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 9407bf9274f59c9d78a11d7b37602c3c6b454b3f..c3bc1f9dc53763320e10b3dd41688d3316dc5097 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.ComponentModel.Annotations
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.ComponentModel.Annotations.dll
-LIB_MCS_FLAGS = /r:System.ComponentModel.DataAnnotations
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.ComponentModel.DataAnnotations
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 0bc80b3456a2f385f4821d2b68b6a546ab8a738c..e7c1feff498541e03e31e38bfd783d2000018e0d 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.AssociationAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ConcurrencyCheckAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.CustomValidationAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DataType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.DataTypeAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.RangeAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.RegularExpressionAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.RequiredAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.StringLengthAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.TimestampAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.UIHintAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationContext))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.ValidationResult))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Validator))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption))]
 
index 1888558b3d95b5bc3bf8cdac0d4466067255162f..02d9d9307f400b9ad46f90956ece6e2788bb9363 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.ComponentModel.EventBasedAsync.dll")]
 [assembly: AssemblyDescription ("System.ComponentModel.EventBasedAsync.dll")]
 [assembly: AssemblyDefaultAlias ("System.ComponentModel.EventBasedAsync.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 5818f02688e78203069422d4bd35ac6b888b4edf..acd577cbc3bbe03739dafa61e5d47b0797967bef 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.ComponentModel.EventBasedAsync
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.ComponentModel.EventBasedAsync.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index df5c85a6daca823368e5fef3e778f17655fcda3f..eeef8ec2c5def0d0beb792ab480ffa1998ccd9d2 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.AsyncCompletedEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.AsyncCompletedEventHandler))]
index 8fced632ad6fc92377b92b0c185ac960bb194f8f..944626f1d5dde8dce0039db6a9244b52de1bc19d 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.ComponentModel.dll")]
 [assembly: AssemblyDescription ("System.ComponentModel.dll")]
 [assembly: AssemblyDefaultAlias ("System.ComponentModel.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 05023f1e4819a9775b014be9e15a0ebd2bcb0ecf..715e92db80736163df12db8a3e7ded8d5e7178fc 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.ComponentModel
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.ComponentModel.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 238ceac40d9f029bef1f421f909e34f8adb1d362..24e97c6fe76cd73ef040ce018af3d0e65c27e980 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.CancelEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.IChangeTracking))]
index a510e67e13ecda5c83994959334b7cc7336e8319..55e9ec069d3c3825cc8012beb4b89c5308a7efb0 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Diagnostics.Contracts.dll")]
 [assembly: AssemblyDescription ("System.Diagnostics.Contracts.dll")]
 [assembly: AssemblyDefaultAlias ("System.Diagnostics.Contracts.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 9dadb5610d9ae27c718fce27ec581d2caabe0509..24336c082b12e9fff7a68fbf570da0fa7b353600 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Diagnostics.Contracts
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Diagnostics.Contracts.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index ac2cc3dc37569b7e9656e93f1f62633efe6214ff..961cfe8bfe668f0ca600d7e4d392862929920e32 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.Contract))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractAbbreviatorAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractArgumentValidatorAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractClassAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractClassForAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractFailedEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractFailureKind))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractInvariantMethodAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractOptionAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractPublicPropertyNameAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractReferenceAssemblyAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractRuntimeIgnoredAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractVerificationAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.PureAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractFailedEventArgs))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractAbbreviatorAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractArgumentValidatorAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Contracts.ContractOptionAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ContractHelper))]
 
index 7741b20379c6d7f5da4ce98f2155798b0922ae10..a7cbf21727b35a7c92446a5489227658fa9efb56 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Diagnostics.Debug.dll")]
 [assembly: AssemblyDescription ("System.Diagnostics.Debug.dll")]
 [assembly: AssemblyDefaultAlias ("System.Diagnostics.Debug.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index fd591aaff4a8e29685b5f40d0485754b8e6098aa..024f0d65572742ff14cb36fdb1d116a1efa3f8fa 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Diagnostics.Debug
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Diagnostics.Debug.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index e829ac7eeb0d54dbef614a853ad9e57f21db757c..e9604390dfaa712c7851e31779ac5d0d293351f2 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Debug))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Debugger))]
index 982113d36c425fc85e9c47fb4d2fcb26b530828f..62b783c9378e2b772fd091693a279b9c564af830 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Diagnostics.Tools.dll")]
 [assembly: AssemblyDescription ("System.Diagnostics.Tools.dll")]
 [assembly: AssemblyDefaultAlias ("System.Diagnostics.Tools.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 2e94b2bb8601cdaa4bb4720b1848c42f31513d5f..2a448a771196be27a513fe353780ad24076dfaee 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Diagnostics.Tools
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Diagnostics.Tools.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index a07fed0c3f5cb420a226cc9b6e5f2333d3676916..56ebfd6570a0347b0af3204d39c848d0250f3c9d 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.CodeDom.Compiler.GeneratedCodeAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.CodeAnalysis.SuppressMessageAttribute))]
index 159b949840e26e55770cf991c4ec46a6ae221cef..e64d545b785de25a5dd5f6e51a6f8330ca598c64 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Dynamic.Runtime.dll")]
 [assembly: AssemblyDescription ("System.Dynamic.Runtime.dll")]
 [assembly: AssemblyDefaultAlias ("System.Dynamic.Runtime.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 22064c460e502abf38e3f26c4703c1439dc24270..393bc9dcd507f7d5e9e329097ad0fd8188f7a10a 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Dynamic.Runtime
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Dynamic.Runtime.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Core /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 2a7a27c41b1a503175cd94303be7f292735f6198..b579d020c120a10cf55dc528c6bf55b36784a914 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConditionalWeakTable<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.BinaryOperationBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.BindingRestrictions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.CallInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.ConvertBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.CreateInstanceBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.DeleteIndexBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.DeleteMemberBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.DynamicMetaObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.DynamicMetaObjectBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.DynamicObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.ExpandoObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.GetIndexBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.GetMemberBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.IDynamicMetaObjectProvider))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.IInvokeOnGetBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.InvokeBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.InvokeMemberBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.SetIndexBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.SetMemberBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Dynamic.UnaryOperationBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.DynamicExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallSite))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallSite<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallSiteBinder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallSiteHelpers))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.DynamicAttribute))]
 
index efc686c7071962485e2c2dd116151ab5fd45b8a0..9db0473f4f1813015c3f189715ea46d4615e1f61 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Globalization.dll")]
 [assembly: AssemblyDescription ("System.Globalization.dll")]
 [assembly: AssemblyDefaultAlias ("System.Globalization.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 1c204eea305b76ebfed9b4855c1e5f58513d0572..bb46d247e3697cc46b18520fc7afb4ffe2936b1d 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Globalization
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Globalization.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 9f279911f9483220248748dee2bcc957f37f9bf4..fd2bc99d8c1f582c1b2140c1d7fa50b87cd08b3f 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.Calendar))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CalendarWeekRule))]
@@ -30,6 +26,7 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CompareInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CompareOptions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CultureInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CultureNotFoundException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.DateTimeFormatInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.NumberFormatInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.RegionInfo))]
@@ -37,5 +34,4 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.TextElementEnumerator))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.TextInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.UnicodeCategory))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.CultureNotFoundException))]
 
index 9f74d5de53132e19080c678be3ab13bc504189c2..6b5b23d878ff19152ba757102d47b57b63764863 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.IO.dll")]
 [assembly: AssemblyDescription ("System.IO.dll")]
 [assembly: AssemblyDefaultAlias ("System.IO.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 02106f233de73b577d9aefd9d04653618e4d41cd..221291d4c52ea097031dd5ccb80e93c4fb0f44f2 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.IO
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.IO.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 1a3d86656f599143bcffe4210ac74cae11fa8490..ea526e77de476e7db02c11eedf2a25c82cc9d0fe 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.BinaryReader))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.BinaryWriter))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.IOException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.EndOfStreamException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.FileNotFoundException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Stream))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.InvalidDataException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.IOException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.MemoryStream))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.SeekOrigin))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.TextReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Stream))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StreamReader))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.TextWriter))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StreamWriter))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StringReader))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.StringWriter))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.InvalidDataException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.TextReader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.TextWriter))]
 
index dba6a9e28ba880238061101f3258898454d2b5f0..de01cb447b621dc50a27d4785d15327ca771679a 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Linq.Expressions.dll")]
 [assembly: AssemblyDescription ("System.Linq.Expressions.dll")]
 [assembly: AssemblyDefaultAlias ("System.Linq.Expressions.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index ec69d8edffe5ca4bde13280291f7e07708ac932f..60b5140e37bd2c03fd37656f441665a5e9bbb6ee 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Linq.Expressions
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Linq.Expressions.dll
-LIB_MCS_FLAGS = /r:System.Core /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Core
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 2be7a106adb4f0e2af8bc4043ce037229d10bb26..438486c963fdfdb43c72f7357417367fe1824328 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryable))]
+#if !FULL_AOT_RUNTIME
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.BlockExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.CatchBlock))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.DebugInfoExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.DefaultExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.GotoExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.GotoExpressionKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.IndexExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.LabelExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.LabelTarget))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.LoopExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.RuntimeVariablesExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.SwitchCase))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.SwitchExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.SymbolDocumentInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.TryExpression))]
+#endif
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.BinaryExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ConditionalExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ConstantExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ElementInit))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.Expression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.Expression<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ExpressionType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ExpressionVisitor))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.InvocationExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.LambdaExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ListInitExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberAssignment))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberBindingType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberInitExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberListBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MemberMemberBinding))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.MethodCallExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.NewArrayExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.NewExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.ParameterExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.TypeBinaryExpression))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Expressions.UnaryExpression))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IOrderedQueryable))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryable<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IOrderedQueryable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryable<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IQueryProvider))]
 
index 8840c78423bc4a4c84770c927993dd148fa28087..b3d86f59f9d5a86c64264cb6b50df0bb5c0727df 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Linq.Parallel.dll")]
 [assembly: AssemblyDescription ("System.Linq.Parallel.dll")]
 [assembly: AssemblyDefaultAlias ("System.Linq.Parallel.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index f84885074f75ef66f70020c38388a1a129f5d1c3..54a937f7ed1b4abe540baa502b9fbcacd2b4d1ea 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Linq.Parallel
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Linq.Parallel.dll
-LIB_MCS_FLAGS = /r:System.Core /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Core
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 8fab8b6f07fb625f3d44a8a40befd1277b7f945c..00445f24a38dce3bebb1345304d3d73e54b1e910 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelQuery))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelQuery<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.OrderedParallelQuery<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelEnumerable))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelExecutionMode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelMergeOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelQuery))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.ParallelQuery<>))]
 
index 0a75081f520cd1f957c5009cf6a7ad720f6aa1ad..ec77afbfebb44594f48e273119e4561e3e8c6084 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Linq.Queryable.dll")]
 [assembly: AssemblyDescription ("System.Linq.Queryable.dll")]
 [assembly: AssemblyDefaultAlias ("System.Linq.Queryable.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index d302b9e6b804fe7988e4024105e4e57cc507aae0..270601149d50b57e126b1fe1bf7e02c532b8c5a3 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Linq.Queryable
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Linq.Queryable.dll
-LIB_MCS_FLAGS = /r:System.Core /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Core
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 0d20080e20b49803d47845e99f1a4a89a6cc5859..a8f9ee444ee02307aaaf9487c39cb5a0c155e85d 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.EnumerableExecutor))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.EnumerableExecutor<>))]
index b5c77778007146a6122fb239fd4c7a227f1a7fcf..e654d85a44b9de331356f73a62c1ddcfdaac9a02 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Linq.dll")]
 [assembly: AssemblyDescription ("System.Linq.dll")]
 [assembly: AssemblyDefaultAlias ("System.Linq.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index a4afb6226b23a9a960277f68069b0df9e285e206..b08a8a3798c28458495ed3b7962c9f6d5673c275 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Linq
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Linq.dll
-LIB_MCS_FLAGS = /r:System.Core /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Core
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index b5cd612a2b426903dd07383332927e2768b579e0..5ae7fa03f46c5aff7e3609cf76ea0ed55147e3e0 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.Enumerable))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Linq.IGrouping<,>))]
index c0ccc60eb33cd2aaebf826068572d6704f50220a..4f5c9c1b6d021ee98a69a781a30ac1957dbf6ab3 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Net.NetworkInformation.dll")]
 [assembly: AssemblyDescription ("System.Net.NetworkInformation.dll")]
 [assembly: AssemblyDefaultAlias ("System.Net.NetworkInformation.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index e1665e218c1eac743cdfa3ff0b02bfd6b81a9c18..2168babf3905d842a6d1f35479821cd666527c1b 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Net.NetworkInformation
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Net.NetworkInformation.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 0cb15ff155de057b68ac38728ee67f27dddeb0fd..c16fa7fdaa4e632c971ede89d33d93e7d50828e0 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkInformation.NetworkAddressChangedEventHandler))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkInformation.NetworkChange))]
index 1c4535b8b569bd3651b239011153d4f8a300fa23..43418d0fb7860847b3860039d439d2a511671530 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Net.Primitives.dll")]
 [assembly: AssemblyDescription ("System.Net.Primitives.dll")]
 [assembly: AssemblyDefaultAlias ("System.Net.Primitives.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 1e191d342862a2589182fc7816a2cf4f865010c9..db960f49310d8d4db1f64ba1ef3db833a6156d79 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Net.Primitives
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Net.Primitives.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 9227c4614f4feb71469982d0429452efc1b46d9b..1d78a8dbaa5fada2690a08bbd1550bafc1ab84dd 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.AuthenticationSchemes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.Cookie))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieContainer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CredentialCache))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.DecompressionMethods))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpStatusCode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.ICredentials))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkCredential))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.AuthenticationSchemes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.ICredentialsByHost))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CredentialCache))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.DecompressionMethods))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.IWebProxy))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkCredential))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.TransportContext))]
 
index 35cb91108acc84285481e56a648ca5c602546bf6..771473695cc1ef24e3d80ff717dad09594ed89bd 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Net.Requests.dll")]
 [assembly: AssemblyDescription ("System.Net.Requests.dll")]
 [assembly: AssemblyDefaultAlias ("System.Net.Requests.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 25a83162a964032e41f42ee935ab6a05bf186b65..35d7d842f60f3fa13e9530c51a953a3dbdb69355 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Net.Requests
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Net.Requests.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 9730eaec3d45fc5241b4f17746f3acc7ac1d9f60..2d4e79f6f080afec570f23461b76f41b5cf72db8 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpRequestHeader))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebRequest))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpWebRequest))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebResponse))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.HttpWebResponse))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.IWebRequestCreate))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.ProtocolViolationException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebExceptionStatus))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebHeaderCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebRequest))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebResponse))]
 
index f60df39635e36a1e9ab6c5d33445ffe53944642e..1eac48ac27c9c0a54e35467927ac40d58ad4a110 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.ObjectModel.dll")]
 [assembly: AssemblyDescription ("System.ObjectModel.dll")]
 [assembly: AssemblyDefaultAlias ("System.ObjectModel.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 2201b5f2d2df334d17b844da97ccd74d863a6ed5..6f9294289b05e7b15b955d64413116c8f5773446 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.ObjectModel
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.ObjectModel.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 8737de0adc5f36a3c02e15a0f058ddb31d236ca8..2679bd038c5f09abde767c1171ff232b7e23e487 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyPropertyChanged))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.PropertyChangedEventArgs))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.PropertyChangedEventHandler))]
+#if !MONOTOUCH
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyDictionary<,>))]
+#endif
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.KeyedCollection<,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.INotifyCollectionChanged))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ObservableCollection<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.INotifyCollectionChanged))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedAction))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventHandler))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Windows.Input.ICommand))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyDataErrorInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataErrorsChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyDataErrorInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyPropertyChanged))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.PropertyChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.PropertyChangedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Windows.Input.ICommand))]
 
diff --git a/mcs/class/Facades/System.Reflection.Emit.ILGeneration/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection.Emit.ILGeneration/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..43035ee
--- /dev/null
@@ -0,0 +1,41 @@
+// 
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Reflection.Emit.ILGeneration.dll")]
+[assembly: AssemblyDescription ("System.Reflection.Emit.ILGeneration.dll")]
+[assembly: AssemblyDefaultAlias ("System.Reflection.Emit.ILGeneration.dll")]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
+
+
diff --git a/mcs/class/Facades/System.Reflection.Emit.ILGeneration/Makefile b/mcs/class/Facades/System.Reflection.Emit.ILGeneration/Makefile
new file mode 100644 (file)
index 0000000..d1c857b
--- /dev/null
@@ -0,0 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
+thisdir = class/Facades/System.Reflection.Emit.ILGeneration
+SUBDIRS = 
+include $(MCS_BUILD_DIR)/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Reflection.Emit.ILGeneration.dll
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include $(MCS_BUILD_DIR)/library.make
+
+
diff --git a/mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration.dll.sources b/mcs/class/Facades/System.Reflection.Emit.ILGeneration/System.Reflection.Emit.ILGeneration.dll.sources
new file mode 100644 (file)
index 0000000..8e33d4d
--- /dev/null
@@ -0,0 +1,3 @@
+TypeForwarders.cs
+AssemblyInfo.cs
+
diff --git a/mcs/class/Facades/System.Reflection.Emit.ILGeneration/TypeForwarders.cs b/mcs/class/Facades/System.Reflection.Emit.ILGeneration/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..3547d6d
--- /dev/null
@@ -0,0 +1,29 @@
+// 
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.CustomAttributeBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.ILGenerator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.Label))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.LocalBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.ParameterBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.SignatureHelper))]
+
diff --git a/mcs/class/Facades/System.Reflection.Emit.Lightweight/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection.Emit.Lightweight/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..521dee7
--- /dev/null
@@ -0,0 +1,41 @@
+// 
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Reflection.Emit.Lightweight.dll")]
+[assembly: AssemblyDescription ("System.Reflection.Emit.Lightweight.dll")]
+[assembly: AssemblyDefaultAlias ("System.Reflection.Emit.Lightweight.dll")]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
+
+
diff --git a/mcs/class/Facades/System.Reflection.Emit.Lightweight/Makefile b/mcs/class/Facades/System.Reflection.Emit.Lightweight/Makefile
new file mode 100644 (file)
index 0000000..751a8ec
--- /dev/null
@@ -0,0 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
+thisdir = class/Facades/System.Reflection.Emit.Lightweight
+SUBDIRS = 
+include $(MCS_BUILD_DIR)/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Reflection.Emit.Lightweight.dll
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include $(MCS_BUILD_DIR)/library.make
+
+
diff --git a/mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight.dll.sources b/mcs/class/Facades/System.Reflection.Emit.Lightweight/System.Reflection.Emit.Lightweight.dll.sources
new file mode 100644 (file)
index 0000000..8e33d4d
--- /dev/null
@@ -0,0 +1,3 @@
+TypeForwarders.cs
+AssemblyInfo.cs
+
diff --git a/mcs/class/Facades/System.Reflection.Emit.Lightweight/TypeForwarders.cs b/mcs/class/Facades/System.Reflection.Emit.Lightweight/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..7cd359e
--- /dev/null
@@ -0,0 +1,24 @@
+// 
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.DynamicMethod))]
+
diff --git a/mcs/class/Facades/System.Reflection.Emit/AssemblyInfo.cs b/mcs/class/Facades/System.Reflection.Emit/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..656df0b
--- /dev/null
@@ -0,0 +1,41 @@
+// 
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Reflection.Emit.dll")]
+[assembly: AssemblyDescription ("System.Reflection.Emit.dll")]
+[assembly: AssemblyDefaultAlias ("System.Reflection.Emit.dll")]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
+
+
diff --git a/mcs/class/Facades/System.Reflection.Emit/Makefile b/mcs/class/Facades/System.Reflection.Emit/Makefile
new file mode 100644 (file)
index 0000000..43659a9
--- /dev/null
@@ -0,0 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
+thisdir = class/Facades/System.Reflection.Emit
+SUBDIRS = 
+include $(MCS_BUILD_DIR)/rules.make
+
+LIBRARY_SUBDIR = Facades
+LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
+
+LIBRARY = System.Reflection.Emit.dll
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include $(MCS_BUILD_DIR)/library.make
+
+
diff --git a/mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit.dll.sources b/mcs/class/Facades/System.Reflection.Emit/System.Reflection.Emit.dll.sources
new file mode 100644 (file)
index 0000000..8e33d4d
--- /dev/null
@@ -0,0 +1,3 @@
+TypeForwarders.cs
+AssemblyInfo.cs
+
diff --git a/mcs/class/Facades/System.Reflection.Emit/TypeForwarders.cs b/mcs/class/Facades/System.Reflection.Emit/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..c00424d
--- /dev/null
@@ -0,0 +1,34 @@
+// 
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+// 
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+// 
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+// 
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.AssemblyBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.AssemblyBuilderAccess))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.ConstructorBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.EnumBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.EventBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.FieldBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.GenericTypeParameterBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.MethodBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.ModuleBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.PropertyBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.TypeBuilder))]
+
index 55a23109b6ba507cb5e844f9d5a33f412497b511..7b9237816ec909a737368aa2c5c8033c9e1e0bcf 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Reflection.Extensions.dll")]
 [assembly: AssemblyDescription ("System.Reflection.Extensions.dll")]
 [assembly: AssemblyDefaultAlias ("System.Reflection.Extensions.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 3902a7155c3d460cb4b536d0f4a7b90f7feeaaa5..ff09a4df7512110aa1dfd08c12ee2efd472c70d5 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Reflection.Extensions
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Reflection.Extensions.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 3ed6cd94c08745916b45812e225f10c670bcab77..0bb74c4e2cdf0fb8967b703b2a5ddbc6806701ba 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeExtensions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.InterfaceMapping))]
index 4bdc891d2132b9b43c24290646e514548e3e4534..260b4584c69bd991a449844adebc823dc9208791 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Reflection.Primitives.dll")]
 [assembly: AssemblyDescription ("System.Reflection.Primitives.dll")]
 [assembly: AssemblyDefaultAlias ("System.Reflection.Primitives.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index f5b676bfcba157c36a7eb0d2ad0077122f3b3049..6d1d422f0fa56c363c2a35e5b837172746bada31 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Reflection.Primitives
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Reflection.Primitives.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 8dfe9b4b95061ac9077fb2f874b201948f4a465d..cfa70ce24a5c460f9ae8f1c8efef1cff5afe3b63 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
+#if !FULL_AOT_RUNTIME
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.FlowControl))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.OpCode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.OpCodes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.OpCodeType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.OperandType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.PackingSize))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Emit.StackBehaviour))]
+#endif
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CallingConventions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.EventAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.FieldAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.GenericParameterAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodImplAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ParameterAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.PropertyAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TypeAttributes))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodImplAttributes))]
 
index a2abbc8199c774c2853426197cbf81f187a9d83d..36520e0b758e7a229c37649a4aa0311d33565154 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Reflection.dll")]
 [assembly: AssemblyDescription ("System.Reflection.dll")]
 [assembly: AssemblyDefaultAlias ("System.Reflection.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 24ac66ed6ac182be7063836910c0258c132e4c27..12e2a5f649ef3620014991794aa4fc218d62f355 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Reflection
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Reflection.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 5e5d09de03ed92a4765f22493ba54ef087691948..511c1fe2ed3af0233af458fa162b98c6263d916d 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MemberInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AmbiguousMatchException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Assembly))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyContentType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyName))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodBase))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ConstructorInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeData))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeNamedArgument))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeTypedArgument))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.EventInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.FieldInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.IntrospectionExtensions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.IReflectableType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.LocalVariableInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ManifestResourceInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MemberInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodBase))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.MethodInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Module))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ParameterInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.PropertyInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ReflectionContext))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ReflectionTypeLoadException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ResourceLocation))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TargetInvocationException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TargetParameterCountException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ManifestResourceInfo))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ResourceLocation))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyContentType))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeData))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeNamedArgument))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.CustomAttributeTypedArgument))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.IntrospectionExtensions))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.IReflectableType))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.LocalVariableInfo))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.ReflectionContext))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.TypeInfo))]
 
index b952ba45d26750da5818e49245dd11bfb05092eb..067874f4f03e3d9872033ab694e71f4614f10780 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Resources.ResourceManager.dll")]
 [assembly: AssemblyDescription ("System.Resources.ResourceManager.dll")]
 [assembly: AssemblyDefaultAlias ("System.Resources.ResourceManager.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 8aa325e192b71fc58b4771ee48abb2897202eca0..018d07790580c150ad0e71a517a53f57fb6b9d2d 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Resources.ResourceManager
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Resources.ResourceManager.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 349023f6cc6dfdd6aa33612fea4eb68b9a814995..bea32f418ed2635d49141b252dc89e761432f44b 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Resources.MissingManifestResourceException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Resources.NeutralResourcesLanguageAttribute))]
index e03289db95bfebf00e30e575f33a3137886e22bd..f3163e0d806175083fe3688a7546ff2b61997081 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Runtime.Extensions.dll")]
 [assembly: AssemblyDescription ("System.Runtime.Extensions.dll")]
 [assembly: AssemblyDefaultAlias ("System.Runtime.Extensions.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index cf6c1f7dfb579a70cdd8c262e7d45033c0410d99..489c457dc9c1a5eb68220fa7a56c045e4f06ce43 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Runtime.Extensions
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Runtime.Extensions.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index d0c05ecc0471762d03fa8fcbd93b397c1f41091c..a12987dbdc9a3f4f5499be921bce29b62c9eb4eb 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriBuilder))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.BitConverter))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Convert))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Stopwatch))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Environment))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Path))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Math))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Random))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringComparer))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.Stopwatch))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MidpointRounding))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Progress<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IO.Path))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.WebUtility))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Progress<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Random))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriBuilder))]
 
index 4c9a3888f75a9084b3d374d4d5d7f49be272a069..25b7d0a0538d62eca48b3064cc3caea26cd0f499 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Runtime.InteropServices.dll")]
 [assembly: AssemblyDescription ("System.Runtime.InteropServices.dll")]
 [assembly: AssemblyDefaultAlias ("System.Runtime.InteropServices.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index ebbddfe09858aa12a2809b4329d772a0e18fff8a..b3e4a41c80e9b3a025101a221ec17b7d35a856b7 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Runtime.InteropServices
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Runtime.InteropServices.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System /r:System.Core
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 29d69ea40a18400da0485695519f10c5bb02e725..599fff8e80a945bd9daac95d9375d7d9eef23a7b 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
+#if !FULL_AOT_RUNTIME
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComImportAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DispatchWrapper))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ErrorWrapper))]
+#endif
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DataMisalignedException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Missing))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DllNotFoundException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.Missing))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ArrayWithOffset))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.BestFitMappingAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.BStrWrapper))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComDefaultInterfaceAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComEventInterfaceAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.COMException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComInterfaceType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComMemberType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComSourceInterfacesAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CriticalHandle))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CurrencyWrapper))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultCharSetAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DispIdAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.GuidAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ICustomAdapter))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InterfaceTypeAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InvalidComObjectException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.InvalidOleVariantTypeException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.MarshalAsAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.MarshalDirectiveException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.OptionalAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.PreserveSigAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeArrayRankMismatchException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeArrayTypeMismatchException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeHandle))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SafeBuffer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.SEHException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.TypeIdentifierAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnknownWrapper))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnmanagedFunctionPointerAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.UnmanagedType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VarEnum))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.VariantWrapper))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.DefaultParameterValueAttribute))]
 
index 53f8a09700e484e3131edec6fee981d10d751f2f..00b01219c870dc95ab0ecd64cac85c045816cffb 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Runtime.Numerics.dll")]
 [assembly: AssemblyDescription ("System.Runtime.Numerics.dll")]
 [assembly: AssemblyDefaultAlias ("System.Runtime.Numerics.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 78f8d756285d052108652cce7f90238b5111571e..b21abddbabe6970d1841b16dee3c0947d02cbb0c 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Runtime.Numerics
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Runtime.Numerics.dll
-LIB_MCS_FLAGS = /r:System.Numerics
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Numerics
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index e937f327cdc828dad832fa166c33df425b122ebb..ac647df3d151841a3f39f5f8754767eff76215f6 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Numerics.BigInteger))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Numerics.Complex))]
index f98255f9e871af7ab4e31b0442a6d6c0f57c87ad..6710dca152ae0b2b8bcc78348a8ebd40a3b0b19a 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Runtime.Serialization.Json.dll")]
 [assembly: AssemblyDescription ("System.Runtime.Serialization.Json.dll")]
 [assembly: AssemblyDefaultAlias ("System.Runtime.Serialization.Json.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 2308d00d4f4567b68abf0e651413018cc083821f..30bc06f1d1910a14d403d8b101b97379864b9716 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Runtime.Serialization.Json
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Runtime.Serialization.Json.dll
-LIB_MCS_FLAGS = /r:System.Runtime.Serialization /r:System.Xml
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Runtime.Serialization
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 9ccfd6eba2a4bfa1961edb5c794f7c38a01e5428..57aeedd78ae00f106939c33d539deaf065989481 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.Json.DataContractJsonSerializer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DateTimeFormat))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.EmitTypeInformation))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.Json.DataContractJsonSerializer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.Json.DataContractJsonSerializerSettings))]
 
index 2edd785433a2e74a9efe238b421c90ba315ed7a8..c76790eaf0e9241aa9c8f2499cc217e12248b63e 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Runtime.Serialization.Primitives.dll")]
 [assembly: AssemblyDescription ("System.Runtime.Serialization.Primitives.dll")]
 [assembly: AssemblyDefaultAlias ("System.Runtime.Serialization.Primitives.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 8732ab52fb89243e9a5a432ef2887d97bd462f28..403f973fba7b9967d39b0f4aa213104c9f5fdd1e 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Runtime.Serialization.Primitives
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Runtime.Serialization.Primitives.dll
-LIB_MCS_FLAGS = /r:System.Runtime.Serialization /r:System.Xml
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Runtime.Serialization
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 10faec2b27d7e5e395b97e98d570771e2de7a2ba..ce3180fe1f18b8bbb783db9d3df0d08ed6686efb 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.CollectionDataContractAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.ContractNamespaceAttribute))]
index 4401504d6f061b2c99308325012e63a6c3d1cfa8..f88da3f3a599ab895c956793ad2adc2146a012ca 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Runtime.Serialization.Xml.dll")]
 [assembly: AssemblyDescription ("System.Runtime.Serialization.Xml.dll")]
 [assembly: AssemblyDefaultAlias ("System.Runtime.Serialization.Xml.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index fb6b6907f9c0ee9e044e090bcddc42e809462184..cf4c9ab90eb8bd2217ab819591d49fc11a2769c9 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Runtime.Serialization.Xml
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Runtime.Serialization.Xml.dll
-LIB_MCS_FLAGS = /r:System.Runtime.Serialization /r:System.Xml
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Runtime.Serialization /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index ffedd4dbbfc0b268b277dd017d616ed091ffbf44..34638aee54c488e026ce8aecd7c65a64a7eaa1a6 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.XmlObjectSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractResolver))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractSerializerSettings))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.InvalidDataContractException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.XmlObjectSerializer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.IXmlDictionary))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.UniqueId))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlBinaryReaderSession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlBinaryWriterSession))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionary))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryReader))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryReaderQuotas))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryString))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlDictionaryWriter))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractResolver))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Serialization.DataContractSerializerSettings))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlBinaryReaderSession))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlBinaryWriterSession))]
 
index 8a4977b101aa5dcd780ccfcd008a203750cad5a7..359e2334b7eae03452305e087669750f691224ae 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Runtime.dll")]
 [assembly: AssemblyDescription ("System.Runtime.dll")]
 [assembly: AssemblyDefaultAlias ("System.Runtime.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 95d269716b90f0b161a1d96eef504e7409eaa4c3..72ada093b090ce1aa74999a6e916efbbffc3f29f 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Runtime
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Runtime.dll
-LIB_MCS_FLAGS = /r:System /r:System.Core /r:System.ComponentModel.Composition
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System /r:System.ComponentModel.Composition /r:System.Core
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index ced92a1a5996c4eb28e2f328aef6b3be83fe51b4..4a6a0166b3085022f2dd2f261ea080dc9e23f19e 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ExtensionAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Uri))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriComponents))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriFormat))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriKind))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DefaultValueAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.EditorBrowsableAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.EditorBrowsableState))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(object))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ValueType))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IComparable))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IComparable<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IEquatable<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IFormattable))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(decimal))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Delegate))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MulticastDelegate))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Activator))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Exception))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArgumentException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArgumentNullException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArgumentOutOfRangeException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArithmeticException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEnumerable))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ICollection))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IList))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Array))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArraySegment<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ArrayTypeMismatchException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AsyncCallback))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Attribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Enum))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AttributeTargets))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AttributeUsageAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.BadImageFormatException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(bool))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Boolean))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Buffer))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(byte))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(char))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Byte))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Char))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.CLSCompliantAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.DictionaryEntry))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.ICollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IComparer<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IDictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEnumerable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEnumerator<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEqualityComparer<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IList<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyDictionary<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyList<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.ISet<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.KeyNotFoundException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.KeyValuePair<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ICollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IDictionary))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IDictionaryEnumerator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEnumerable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEnumerator))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEqualityComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IList))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IStructuralComparable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IStructuralEquatable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.Collection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyCollection<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Comparison<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DefaultValueAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.EditorBrowsableAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.EditorBrowsableState))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DateTime))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DateTimeKind))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DateTimeOffset))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DayOfWeek))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Decimal))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Delegate))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.ConditionalAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggableAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.DivideByZeroException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(double))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Double))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Enum))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.EventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.EventHandler))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.EventHandler<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Exception))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.FlagsAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.FormatException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.GC))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.GCCollectionMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.DateTimeStyles))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.NumberStyles))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.TimeSpanStyles))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Guid))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IAsyncResult))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IComparable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IComparable<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ICustomFormatter))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IDisposable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IEquatable<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IFormatProvider))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IFormattable))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IndexOutOfRangeException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(short))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(int))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(long))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Int16))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Int32))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Int64))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IntPtr))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.InvalidCastException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.InvalidOperationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.InvalidTimeZoneException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IObservable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IObserver<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IProgress<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Lazy<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Lazy<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MemberAccessException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MissingMemberException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MTAThreadAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MulticastDelegate))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.NotImplementedException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.NotSupportedException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Nullable))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Nullable<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.NullReferenceException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Object))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ObjectDisposedException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ObsoleteAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.OutOfMemoryException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.PlatformNotSupportedException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Predicate<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RankException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeFieldHandle))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeMethodHandle))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeTypeHandle))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(sbyte))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(float))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IComparer<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEqualityComparer<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IComparer))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEqualityComparer))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringComparison))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringSplitOptions))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeoutException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeSpan))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Type))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeInitializationException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeLoadException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(ushort))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(uint))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(ulong))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UIntPtr))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UnauthorizedAccessException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Version))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(void))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.WeakReference))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.DictionaryEntry))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IDictionary))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IEnumerator))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IDictionaryEnumerator))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEnumerable<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.ICollection<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IDictionary<,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IEnumerator<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IList<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.KeyNotFoundException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.KeyValuePair<,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.Collection<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyCollection<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.ConditionalAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Diagnostics.DebuggableAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.DateTimeStyles))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.NumberStyles))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyCompanyAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyConfigurationAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyCopyrightAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyInformationalVersionAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyKeyFileAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyKeyNameAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyMetadataAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyNameFlags))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyProductAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblySignatureKeyAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyTitleAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyTrademarkAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyVersionAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.DefaultMemberAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AccessedThroughPropertyAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncStateMachineAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerFilePathAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerLineNumberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerMemberNameAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CompilationRelaxationsAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CompilerGeneratedAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CustomConstantAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.DateTimeConstantAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.DecimalConstantAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ExtensionAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.FixedBufferAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IndexerNameAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.InternalsVisibleToAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IStrongBox))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IsVolatile))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IteratorStateMachineAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.MethodImplAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.MethodImplOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ReferenceAssemblyAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.RuntimeCompatibilityAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.RuntimeHelpers))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.StateMachineAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.StrongBox<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TypeForwardedFromAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TypeForwardedToAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.UnsafeValueTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.ExceptionServices.ExceptionDispatchInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.GCLatencyMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.GCSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CharSet))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComVisibleAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.FieldOffsetAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.LayoutKind))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.OutAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.StructLayoutAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.Versioning.TargetFrameworkAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeFieldHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeMethodHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.RuntimeTypeHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.SByte))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.AllowPartiallyTrustedCallersAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecurityCriticalAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecurityException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecuritySafeCriticalAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.SecurityTransparentAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.VerificationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Single))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.STAThreadAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.String))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringComparison))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.StringSplitOptions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.StringBuilder))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.WaitHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LazyThreadSafetyMode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Timeout))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.InvalidTimeZoneException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeZoneInfo))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IStrongBox))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.StrongBox<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Globalization.TimeSpanStyles))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Lazy<,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.ISet<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Action<,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IStructuralComparable))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.IStructuralEquatable))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Func<,,,,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Lazy<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.WaitHandle))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ThreadStaticAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeoutException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeSpan))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TimeZoneInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,,>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<,>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Tuple<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Type))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeAccessException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TypeForwardedFromAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TypeForwardedToAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.AllowPartiallyTrustedCallersAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LazyThreadSafetyMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeInitializationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.TypeLoadException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UInt16))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UInt32))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UInt64))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UIntPtr))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UnauthorizedAccessException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Uri))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriComponents))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriFormat))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriHostNameType))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.GCCollectionMode))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IObservable<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IObserver<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.GCLatencyMode))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.GCSettings))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.FixedBufferAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.UnsafeValueTypeAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.CharSet))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.InteropServices.ComVisibleAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyCollection<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyList<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.IProgress<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.MTAThreadAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.STAThreadAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.UriKind))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ValueType))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Version))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.WeakReference))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.WeakReference<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Generic.IReadOnlyDictionary<,>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblyMetadataAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Reflection.AssemblySignatureKeyAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.StateMachineAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncStateMachineAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerFilePathAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerLineNumberAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.CallerMemberNameAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IteratorStateMachineAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ReferenceAssemblyAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.ExceptionServices.ExceptionDispatchInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(void))]
 
index 0759205af52c13bb0117cb8eda54b7e9c9a3b34e..9d0d014384ad3f9400285f51ede2eafac2cbdf7d 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Security.Principal.dll")]
 [assembly: AssemblyDescription ("System.Security.Principal.dll")]
 [assembly: AssemblyDefaultAlias ("System.Security.Principal.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 4a25e35180125b8ef4117d837f260495cc84e429..738880ff009cb5092e0d7d6e2f0abf53e08a2b3f 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Security.Principal
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Security.Principal.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 85a934368b6cd0c898779c5d6243cc83e1d08721..a6682541e65f983252b9470bc511ff4ffb15fcce 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Principal.IIdentity))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Security.Principal.IPrincipal))]
index ee9bc611bbdaa50eb2da74486d90e8427a7b8cae..2dc616e75c1f72b42c09c98c24ade79e84f721d3 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.ServiceModel.Http.dll")]
 [assembly: AssemblyDescription ("System.ServiceModel.Http.dll")]
 [assembly: AssemblyDefaultAlias ("System.ServiceModel.Http.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index e14c91bdc7fb99e92892d0f2ea9eff138e1779f4..b709ac623e38480f232fdc92244a6fad43fbe7d2 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.ServiceModel.Http
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.ServiceModel.Http.dll
-LIB_MCS_FLAGS = /r:System.ServiceModel
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.ServiceModel
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 79b95a02032c00fc1143535662464b4783bebbc6..57276e7078c989085ee8c8c27997dd707d8a0cdd 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpBinding))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpMessageCredentialType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.BasicHttpSecurityMode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpRequestMessageProperty))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpResponseMessageProperty))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpTransportBindingElement))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpsTransportBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.HttpTransportBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IHttpCookieContainerManager))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.WebSocketTransportSettings))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.WebSocketTransportUsage))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.HttpBindingBase))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.HttpClientCredentialType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.HttpTransportSecurity))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.NetHttpBinding))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.NetHttpMessageEncoding))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.WebSocketTransportSettings))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.WebSocketTransportUsage))]
 
index a4655ebde71c45878cdfa9abf07b44b74e59f92a..02bec1d5c48637196cd805d898f582fead3b6dc8 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.ServiceModel.Primitives.dll")]
 [assembly: AssemblyDescription ("System.ServiceModel.Primitives.dll")]
 [assembly: AssemblyDefaultAlias ("System.ServiceModel.Primitives.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 55f722c61bdc899d99c72de440e9511f5d545b0f..5391e8cdef3f0c5248adcfc1ccbfd071c0de6753 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.ServiceModel.Primitives
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.ServiceModel.Primitives.dll
-LIB_MCS_FLAGS = /r:System.ServiceModel /r:System.Xml
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.ServiceModel /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 9cb71623204487f6c3e8d2d426250dd35042de59..37b5c7d91571bc2ccd818634b78feb6e00792bb3 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.XmlSerializerFormatAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationException))]
+#if !MONOTOUCH
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.CompressionFormat))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.ClientOperation))]
+#endif
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ActionNotSupportedException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IDefaultCommunicationTimeouts))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.Binding))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ICommunicationObject))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.CommunicationObject))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannelFactory))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ChannelFactory))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ClientBase<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannel))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputChannel))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IRequestChannel))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtensibleObject<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IContextChannel))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IClientChannel))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationObjectAbortedException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationObjectFaultedException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationState))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.DataContractFormatAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointAddress))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointAddressBuilder))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointNotFoundException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EnvelopeVersion))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ExceptionDetail))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultCode))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultContractAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultException<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultReason))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultReasonText))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtension<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtensionCollection<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.InvalidMessageContractException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageContractMemberAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageBodyMemberAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageContractAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ProtocolException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageHeaderException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageParameterAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContext))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContextScope))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContractAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationFormatStyle))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.QuotaExceededException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServerTooBusyException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceActivationException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceContractAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceKnownTypeAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.UnknownMessageReceivedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ChannelFactory<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.AddressHeader))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.AddressHeaderCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.AddressingVersion))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingElement))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageEncodingBindingElement))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BinaryMessageEncodingBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.Binding))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingElement))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingElementCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BindingParameterCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BodyWriter))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.BufferManager))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelBase))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelManagerBase))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelFactoryBase))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannelFactory<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelFactoryBase<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelManagerBase))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ChannelParameterCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.CommunicationObject))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.CustomBinding))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.FaultConverter))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TransportBindingElement))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannelFactory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IChannelFactory<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IDuplexChannel))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ISession))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputSession))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputSession))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IDuplexSession))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ISessionChannel<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IDuplexSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputSession))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IInputSessionChannel))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IMessageProperty))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputSession))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IOutputSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IRequestChannel))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.IRequestSessionChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ISession))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.ISessionChannel<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.Message))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageBuffer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageEncoder))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageEncoderFactory))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageEncodingBindingElement))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageFault))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageHeaderInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageHeader))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageHeaderInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageHeaders))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageProperties))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageState))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.MessageVersion))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.RequestContext))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TextMessageEncodingBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Channels.TransportBindingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ClientBase<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationObjectAbortedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationObjectFaultedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.CommunicationState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.DataContractFormatAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.ClientCredentials))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.ContractDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.DataContractSerializerOperationBehavior))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.FaultDescription))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.FaultDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IContractBehavior))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IEndpointBehavior))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IOperationBehavior))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageBodyDescription))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageDescription))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageDescriptionCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageDirection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageHeaderDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageHeaderDescriptionCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePartDescription))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePartDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePropertyDescription))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePropertyDescriptionCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.OperationDescription))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.OperationDescriptionCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.ServiceEndpoint))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.MessageSecurityException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityAccessDeniedException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.UserNamePasswordClientCredential))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ChannelFactory<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.ClientRuntime))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.DispatchOperation))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.DispatchRuntime))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.EndpointDispatcher))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.IClientMessageFormatter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.IClientMessageInspector))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.IClientOperationSelector))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Dispatcher.IParameterInspector))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointAddress))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointAddressBuilder))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointIdentity))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EndpointNotFoundException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.EnvelopeVersion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ExceptionDetail))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultCode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultException<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultReason))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.FaultReasonText))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IClientChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ICommunicationObject))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IContextChannel))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IDefaultCommunicationTimeouts))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtensibleObject<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtension<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.IExtensionCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.InvalidMessageContractException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageBodyMemberAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageContractMemberAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageCredentialType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageHeader<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.SecurityMode))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.TransferMode))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IEndpointBehavior))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IOperationBehavior))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.DataContractSerializerOperationBehavior))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.IContractBehavior))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageHeaderDescription))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessageHeaderDescriptionCollection))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePropertyDescription))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Description.MessagePropertyDescriptionCollection))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageHeaderException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.MessageParameterAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContextScope))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.OperationFormatStyle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ProtocolException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.QuotaExceededException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.HttpDigestClientCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.MessageSecurityException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.SecurityAccessDeniedException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.UserNamePasswordClientCredential))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.Security.WindowsClientCredential))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.SecurityMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServerTooBusyException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceActivationException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceContractAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.ServiceKnownTypeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.TransferMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.UnknownMessageReceivedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.XmlSerializerFormatAttribute))]
 
index f8664e47c10d5a50fb1ae458b1f0cc2d0f5ef3b1..33c51e01878ff1e4ee677e3924ffbd7ae724d27b 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Text.Encoding.Extensions.dll")]
 [assembly: AssemblyDescription ("System.Text.Encoding.Extensions.dll")]
 [assembly: AssemblyDefaultAlias ("System.Text.Encoding.Extensions.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index a326602c0cb33298198fe65375e53b0b8f47f3a3..b8cbfb22831eb2f5a95333d41897509db70cd9f3 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Text.Encoding.Extensions
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Text.Encoding.Extensions.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 8b7affa11a1f45027a8dd6b08a5c62ec410fcd47..fe366378eb9196b0ae978f103983015125e3df74 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.UnicodeEncoding))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.UTF8Encoding))]
index b8a22c9a25d011ddc233e983aad2894796f7f016..ff006b094f959d4f4ce97e4db8ce5f4e549c5e2d 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Text.Encoding.dll")]
 [assembly: AssemblyDescription ("System.Text.Encoding.dll")]
 [assembly: AssemblyDefaultAlias ("System.Text.Encoding.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index b107b77341795b8a151aaea1d14a97c460b00a6a..bf200cf7c5f8b8cc235ef5f995d51881c35e8662 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Text.Encoding
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Text.Encoding.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index d15e31434608494f7b606eacb877ef8006508e84..8c132eccc56829334c59a1a791a779b3bf161814 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.Decoder))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.DecoderFallbackException))]
index e84c896453982a7f0a43230d14fcd224d667b17b..41f882f463e9d07feb2a500b4ea17b8db72ce102 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Text.RegularExpressions.dll")]
 [assembly: AssemblyDescription ("System.Text.RegularExpressions.dll")]
 [assembly: AssemblyDefaultAlias ("System.Text.RegularExpressions.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 7e0871974ecda8aec114b9ba8d988af732abc791..24cd5d7fce2879863780353f1b03af067755d4f4 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Text.RegularExpressions
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Text.RegularExpressions.dll
-LIB_MCS_FLAGS = /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 62e0e5c58b632035ff74910dec58037851bc2869..be4c7cc58bcba3d1a50e548ba714a4e61834e821 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Capture))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.CaptureCollection))]
@@ -32,6 +28,6 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.MatchCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.MatchEvaluator))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.Regex))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexOptions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexMatchTimeoutException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Text.RegularExpressions.RegexOptions))]
 
index bae148007649c32ec134e919b4bf81e005d69a80..25719f70bf7f718fd598e46edf095fb6ba4957f2 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Threading.Tasks.Parallel.dll")]
 [assembly: AssemblyDescription ("System.Threading.Tasks.Parallel.dll")]
 [assembly: AssemblyDefaultAlias ("System.Threading.Tasks.Parallel.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 3e886fb0db6e1f208f020547efccf29469fb4f67..37059d95bfc7bfcec0284f644eb445023a8fb3a9 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Threading.Tasks.Parallel
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Threading.Tasks.Parallel.dll
-LIB_MCS_FLAGS =
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 16a8a39a14c3424fdd9a7ee3633d1cccc4ec85ee..bdf9140205c6f61431c7a3f6ac92b147a61b9707 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.Parallel))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ParallelLoopResult))]
index 02954b61fd21a8d75c377010c33b10fa5260130f..b4b38c47067de161789da0bfd5d62113831b3e84 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Threading.Tasks.dll")]
 [assembly: AssemblyDescription ("System.Threading.Tasks.dll")]
 [assembly: AssemblyDefaultAlias ("System.Threading.Tasks.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 03107f2b50680f9d63e2b0a2e229c8f744fe7c4a..2358e77f0ff728f0c2700c9e65a14f03ba71a89d 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Threading.Tasks
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Threading.Tasks.dll
-LIB_MCS_FLAGS = /r:System.Core /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Core
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 9d1d9bd176031956e8176d79f44fe1d63e4a31fd..bebef9da525fa80113a5ac598ecc2a7635c7f28e 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskExtensions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.AggregateException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.OperationCanceledException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncTaskMethodBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncTaskMethodBuilder<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncVoidMethodBuilder))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConfiguredTaskAwaitable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IAsyncStateMachine))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ICriticalNotifyCompletion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.INotifyCompletion))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TaskAwaiter))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TaskAwaiter<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.YieldAwaitable))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CancellationToken))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CancellationTokenRegistration))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CancellationTokenSource))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ConcurrentExclusiveSchedulerPair))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.Task))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.Task<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskCanceledException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskCompletionSource<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskContinuationOptions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskCreationOptions))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskExtensions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskFactory))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskFactory<>))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskScheduler))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskSchedulerException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.TaskStatus))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.UnobservedTaskExceptionEventArgs))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncTaskMethodBuilder))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncTaskMethodBuilder<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.AsyncVoidMethodBuilder))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConfiguredTaskAwaitable))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.INotifyCompletion))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ICriticalNotifyCompletion))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.ConfiguredTaskAwaitable<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.IAsyncStateMachine))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TaskAwaiter))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.TaskAwaiter<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Runtime.CompilerServices.YieldAwaitable))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Tasks.ConcurrentExclusiveSchedulerPair))]
 
index 947257e059f042c537e3cfde6e24d3212ee3b922..c68b68a0939e75137a99a268e6d944d2e3ca93a8 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Threading.dll")]
 [assembly: AssemblyDescription ("System.Threading.dll")]
 [assembly: AssemblyDefaultAlias ("System.Threading.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 19dd6e0d7264ce98a0dd156e4383aa8908fe7b9c..62788e4c86fbb61d56d5f75bc29001d88d31a922 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Threading
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Threading.dll
-LIB_MCS_FLAGS = /r:System.Core /r:System
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System /r:System.Core
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 605b66f26b5a250b1956419b9114af45ebb073e3..7d6affcb01138c96e98fce13e4a50015ba448cc8 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SynchronizationContext))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.EventWaitHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.AbandonedMutexException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.AutoResetEvent))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Interlocked))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ManualResetEvent))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Monitor))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SendOrPostCallback))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SynchronizationLockException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LockRecursionPolicy))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ReaderWriterLockSlim))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Barrier))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.BarrierPostPhaseException))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Semaphore))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.AbandonedMutexException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.CountdownEvent))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.EventResetMode))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.EventWaitHandle))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Interlocked))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LazyInitializer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LockRecursionException))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.LockRecursionPolicy))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ManualResetEvent))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ManualResetEventSlim))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Monitor))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Mutex))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ReaderWriterLockSlim))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Semaphore))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SemaphoreFullException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SemaphoreSlim))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SendOrPostCallback))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SpinLock))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SpinWait))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SynchronizationContext))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.SynchronizationLockException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.ThreadLocal<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.WaitHandleCannotBeOpenedException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.Volatile))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Threading.WaitHandleCannotBeOpenedException))]
 
diff --git a/mcs/class/Facades/System.Windows/AssemblyInfo.cs b/mcs/class/Facades/System.Windows/AssemblyInfo.cs
deleted file mode 100644 (file)
index 347b850..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
-// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-[assembly: AssemblyTitle ("System.Windows.dll")]
-[assembly: AssemblyDescription ("System.Windows.dll")]
-[assembly: AssemblyDefaultAlias ("System.Windows.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
-[assembly: AssemblyDelaySign (true)]
-[assembly: AssemblyKeyFile ("../../msfinal.pub")]
-
-[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Windows/Makefile b/mcs/class/Facades/System.Windows/Makefile
deleted file mode 100644 (file)
index d84fc71..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-thisdir = class/Facades/System.Windows
-SUBDIRS = 
-include ../../../build/rules.make
-
-LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
-
-LIBRARY = System.Windows.dll
-LIB_MCS_FLAGS = /r:System
-
-NO_TEST = yes
-
-include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Windows/System.Windows.dll.sources b/mcs/class/Facades/System.Windows/System.Windows.dll.sources
deleted file mode 100644 (file)
index 74532ef..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-AssemblyInfo.cs
-TypeForwarders.cs
-../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Windows/TypeForwarders.cs b/mcs/class/Facades/System.Windows/TypeForwarders.cs
deleted file mode 100644 (file)
index 18ab654..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
-// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.INotifyCollectionChanged))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ObservableCollection<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyObservableCollection<>))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedAction))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventArgs))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventHandler))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Windows.Input.ICommand))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyDataErrorInfo))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataErrorsChangedEventArgs))]
-
index c29da29f54370256ef874dfe2dae4a5217e761bc..d05105115559fa4e61d3ed60b41438ef3e8a9ef5 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Xml.ReaderWriter.dll")]
 [assembly: AssemblyDescription ("System.Xml.ReaderWriter.dll")]
 [assembly: AssemblyDefaultAlias ("System.Xml.ReaderWriter.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 8285d920f8d8491a36810bb01d19aab463f41088..57feb51f2aa05a594c9608caa3eb425137dcf1a6 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Xml.ReaderWriter
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Xml.ReaderWriter.dll
-LIB_MCS_FLAGS = /r:System.Xml
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 0d3ab53df0d43ea334d0e7370fc910918823801e..f3ee0d8101f703cd01414eb590d22a7cb7f09531 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.ConformanceLevel))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.DtdProcessing))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.IXmlLineInfo))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.IXmlNamespaceResolver))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.NamespaceHandling))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNameTable))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.NameTable))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.NewLineHandling))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.ReadState))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Schema.XmlSchema))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Schema.XmlSchemaForm))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.WriteState))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlConvert))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlException))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNamespaceManager))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNamespaceScope))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNameTable))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlNodeType))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlParserContext))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlQualifiedName))]
@@ -46,6 +44,4 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlSpace))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlWriter))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.XmlWriterSettings))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Schema.XmlSchema))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Schema.XmlSchemaForm))]
 
diff --git a/mcs/class/Facades/System.Xml.Serialization/AssemblyInfo.cs b/mcs/class/Facades/System.Xml.Serialization/AssemblyInfo.cs
deleted file mode 100644 (file)
index 60ad513..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
-// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-using System;
-using System.Reflection;
-using System.Runtime.CompilerServices;
-
-[assembly: AssemblyTitle ("System.Xml.Serialization.dll")]
-[assembly: AssemblyDescription ("System.Xml.Serialization.dll")]
-[assembly: AssemblyDefaultAlias ("System.Xml.Serialization.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
-[assembly: AssemblyDelaySign (true)]
-[assembly: AssemblyKeyFile ("../../msfinal.pub")]
-
-[assembly: ReferenceAssembly]
diff --git a/mcs/class/Facades/System.Xml.Serialization/Makefile b/mcs/class/Facades/System.Xml.Serialization/Makefile
deleted file mode 100644 (file)
index 56fb6ac..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-thisdir = class/Facades/System.Xml.Serialization
-SUBDIRS = 
-include ../../../build/rules.make
-
-LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
-
-LIBRARY = System.Xml.Serialization.dll
-LIB_MCS_FLAGS = /r:System.Xml /r:System.ServiceModel
-
-NO_TEST = yes
-
-include ../../../build/library.make
diff --git a/mcs/class/Facades/System.Xml.Serialization/System.Xml.Serialization.dll.sources b/mcs/class/Facades/System.Xml.Serialization/System.Xml.Serialization.dll.sources
deleted file mode 100644 (file)
index 74532ef..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-AssemblyInfo.cs
-TypeForwarders.cs
-../../../build/common/Consts.cs
diff --git a/mcs/class/Facades/System.Xml.Serialization/TypeForwarders.cs b/mcs/class/Facades/System.Xml.Serialization/TypeForwarders.cs
deleted file mode 100644 (file)
index 376e38d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
-// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining a copy
-// of this software and associated documentation files (the "Software"), to deal
-// in the Software without restriction, including without limitation the rights
-// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-// copies of the Software, and to permit persons to whom the Software is
-// furnished to do so, subject to the following conditions:
-//
-// The above copyright notice and this permission notice shall be included in
-// all copies or substantial portions of the Software.
-//
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-// THE SOFTWARE.
-
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlMapping))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlTypeMapping))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlMappingAccess))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializer))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.XmlSerializerFormatAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttributes))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeOverrides))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributes))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttributes))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttributes))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializerNamespaces))]
-
index 9ff132b549a0fb17c755b9110c77535cf64366ba..bd6476be5237c6c54e0fbf8747837f1f2b6da629 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Xml.XDocument.dll")]
 [assembly: AssemblyDescription ("System.Xml.XDocument.dll")]
 [assembly: AssemblyDefaultAlias ("System.Xml.XDocument.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 4aacaf643aebebd7030253ba9f6cd331c6ff204d..2f2aa6fabdd5c9623f833eb9bb001ea2ab76a5b5 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Xml.XDocument
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Xml.XDocument.dll
-LIB_MCS_FLAGS = /r:System.Xml.Linq /r:System.Xml
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Xml.Linq /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index 4a74cd240e93fc95ab6b9bb12acb7892d6be2a88..4bedfba794f58ed7f415f5ff5eb9ad19ebe3a5dc 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.Extensions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.LoadOptions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.ReaderOptions))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.SaveOptions))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XObject))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNode))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XText))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XCData))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XComment))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XContainer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XElement))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XName))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNamespace))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNode))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNodeDocumentOrderComparer))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XNodeEqualityComparer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XObject))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XObjectChange))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XObjectChangeEventArgs))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XProcessingInstruction))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XStreamingElement))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Linq.XText))]
 
index 85504315b3c6c16bd0aec42c02b0757ff270c0d5..71235d79b0ba499725ab4648edc4cfacffde4b21 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
@@ -23,6 +18,7 @@
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
 using System;
 using System.Reflection;
@@ -31,14 +27,15 @@ using System.Runtime.CompilerServices;
 [assembly: AssemblyTitle ("System.Xml.XmlSerializer.dll")]
 [assembly: AssemblyDescription ("System.Xml.XmlSerializer.dll")]
 [assembly: AssemblyDefaultAlias ("System.Xml.XmlSerializer.dll")]
-
-[assembly: AssemblyCompany (Consts.MonoCompany)]
-[assembly: AssemblyProduct (Consts.MonoProduct)]
-[assembly: AssemblyCopyright (Consts.MonoCopyright)]
-[assembly: AssemblyVersion (Consts.FxVersion)]
-[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
-[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyCompany ("Xamarin, Inc.")]
+[assembly: AssemblyProduct ("Mono Common Language Infrastructure")]
+[assembly: AssemblyCopyright ("Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)")]
+[assembly: AssemblyVersion ("4.0.0.0")]
+[assembly: AssemblyInformationalVersion ("4.0.0.0")]
+[assembly: AssemblyFileVersion ("4.0.0.0")]
 [assembly: AssemblyDelaySign (true)]
 [assembly: AssemblyKeyFile ("../../msfinal.pub")]
 
 [assembly: ReferenceAssembly]
+
+
index 859ad075624bc0e606d395ff1a26b6a1e6692852..c627fca3050b0628b1ec8c7dfd3e3d9102f6dc54 100644 (file)
@@ -1,12 +1,22 @@
+MCS_BUILD_DIR = ../../../build
+
 thisdir = class/Facades/System.Xml.XmlSerializer
 SUBDIRS = 
-include ../../../build/rules.make
+include $(MCS_BUILD_DIR)/rules.make
 
+LIBRARY_SUBDIR = Facades
 LIBRARY_INSTALL_DIR = $(mono_libdir)/mono/$(FRAMEWORK_VERSION)/Facades
 
 LIBRARY = System.Xml.XmlSerializer.dll
-LIB_MCS_FLAGS = /r:System.Xml
+
+KEY_FILE = ../../msfinal.pub
+SIGN_FLAGS = /delaysign /keyfile:$(KEY_FILE) /nowarn:1616,1699
+LIB_MCS_FLAGS = $(SIGN_FLAGS) /r:mscorlib /r:System.Xml
+
+PLATFORM_DEBUG_FLAGS =
 
 NO_TEST = yes
 
-include ../../../build/library.make
+include $(MCS_BUILD_DIR)/library.make
+
+
index 74532efb2ea75c271c00a4aeafcc07fa77ce69de..8e33d4ddeae92bde7aa8afd994db5d90d6af18d9 100644 (file)
@@ -1,3 +1,3 @@
-AssemblyInfo.cs
 TypeForwarders.cs
-../../../build/common/Consts.cs
+AssemblyInfo.cs
+
index bda6911b92ae3ca54c2e31a0948d7679f87f6421..df2b775f4ec03b42c7a91b38e772bdf3880c9710 100644 (file)
@@ -1,21 +1,16 @@
-//
-// TypeForwarders.cs
-//
-// Author:
-//       Martin Baulig <martin.baulig@xamarin.com>
-//
+// 
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
-//
+// 
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
 // in the Software without restriction, including without limitation the rights
 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 // copies of the Software, and to permit persons to whom the Software is
 // furnished to do so, subject to the following conditions:
-//
+// 
 // The above copyright notice and this permission notice shall be included in
 // all copies or substantial portions of the Software.
-//
+// 
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+// 
 
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializer))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttributes))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeOverrides))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributes))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.IXmlSerializable))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyAttributeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeOverrides))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlChoiceIdentifierAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttributes))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlEnumAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlIgnoreAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlIncludeAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlNamespaceDeclarationsAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlRootAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSchemaProviderAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializerNamespaces))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlTextAttribute))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlTypeAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttributes))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializerNamespaces))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlNamespaceDeclarationsAttribute))]
-[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyAttributeAttribute))]
 
index c8c3cfc4c68646bcb4ada33966fc826b538b9bea..9b2cb96e7f6081342d78dbd2544e28aa0b78a8a1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E7899531-46E6-4B4A-8709-E7B099CD40C0}</ProjectGuid>\r
+    <ProjectGuid>{4E0A4799-A3C5-4E57-8713-FDD18BC6A51F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6b79ce4fdc40f6c87a6a4c79193b48ebeace656c..cdcdb66c2d094697d3d30efb697f16619001e01a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{87ED1DAB-BC3F-455F-96A3-2044E4977877}</ProjectGuid>\r
+    <ProjectGuid>{5F618D73-E784-4300-984B-CED9D2F19601}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4f3de174f77425029ef96f2d2907c0b893437716..59fe7757da669ff775ef470721cd125131d67b82 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}</ProjectGuid>\r
+    <ProjectGuid>{0CE11B15-9B31-4AD1-857C-55B69C027130}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a4674de3434001c6dfe80fd8be7cccb722f690d1..a144d286fc54d74adc981ae5a247aa4ed3cf5f64 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E59B1BBE-C3A6-4BF5-A493-C4266D09919A}</ProjectGuid>\r
+    <ProjectGuid>{6CFB5489-DE34-4BCF-85FB-62CD355C4FEB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\CJK\I18N.CJK-net_2_0.csproj">\r
-      <Project>{E7899531-46E6-4B4A-8709-E7B099CD40C0}</Project>\r
+      <Project>{4E0A4799-A3C5-4E57-8713-FDD18BC6A51F}</Project>\r
       <Name>CJK\I18N.CJK-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 12da114671bf5029aabe1a71937b1a82a0b4eb50..03496d09a3cd88b0a4518f7888ac5257a4d3b691 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70C4A9AE-2402-4F8F-9428-1964D1D2B6D4}</ProjectGuid>\r
+    <ProjectGuid>{93025FE7-27CC-48C8-A66A-797AEBB105AF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\CJK\I18N.CJK-net_4_0.csproj">\r
-      <Project>{87ED1DAB-BC3F-455F-96A3-2044E4977877}</Project>\r
+      <Project>{5F618D73-E784-4300-984B-CED9D2F19601}</Project>\r
       <Name>CJK\I18N.CJK-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0371f1ada3b9baa161a585cfbe291e1dda75423c..323a583735e01e1c0542963341193bd2aef456b6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D70CC755-05BF-4148-8A19-3F28EA6CA21D}</ProjectGuid>\r
+    <ProjectGuid>{9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.CJK-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\CJK\I18N.CJK-net_4_5.csproj">\r
-      <Project>{EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}</Project>\r
+      <Project>{0CE11B15-9B31-4AD1-857C-55B69C027130}</Project>\r
       <Name>CJK\I18N.CJK-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 675cd2a333fd3a3782c429145b71b743030a9977..cd79fad402bbfeb7969023b5e1c9e8ea808cddda 100644 (file)
@@ -642,7 +642,7 @@ namespace I18N.CJK
                                                continue;
                                        }
                                        i++;
-                                       if (bytes [i] == 0x42)
+                                       if (bytes [i] == 0x42 || bytes [i] == 0x40)
                                                m = wide ? ISO2022JPMode.JISX0208 : ISO2022JPMode.ASCII;
                                        else if (bytes [i] == 0x4A) // obsoleted
                                                m = ISO2022JPMode.ASCII;
@@ -730,7 +730,7 @@ namespace I18N.CJK
                                                continue;
                                        }
                                        i++;
-                                       if (bytes [i] == 0x42)
+                                       if (bytes [i] == 0x42 || bytes [i] == 0x40)
                                                m = wide ? ISO2022JPMode.JISX0208 : ISO2022JPMode.ASCII;
                                        else if (bytes [i] == 0x4A) // obsoleted
                                                m = ISO2022JPMode.ASCII;
index ddc58c7fd15c38b39b70fcd4ca60c7d4e3e68e67..274ee160adce41fa717982471115c11fa317b5c3 100644 (file)
@@ -575,6 +575,14 @@ namespace MonoTests.I18N.CJK
                        Assert.AreEqual ("don\u2019t", s);
 
                }
+               
+               [Test]
+               public void Bug14591 ()
+               {
+                       var expected = "\u4f50\u85e4\u8c4a";
+                       var text = Encoding.GetEncoding ("iso-2022-jp").GetString (Convert.FromBase64String ("GyRAOjRGI0stGyhK"));
+                       Assert.AreEqual (expected, text, "#1");
+               }
                #endregion
 
                #region Korean
index 42c5aff4ed55f4bfb7174b7d06f34b60bfad17a4..5e3465a5e90e1c768ed8d1ce73d6d883fcbfb5b4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</ProjectGuid>\r
+    <ProjectGuid>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N-net_2_0</OutputPath>\r
@@ -70,7 +70,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4e7477dc7852080fb5aea1a529f61ec6c9f4fe7e..ec863e388d8c4d91569a41f9b5447646fb5c50fd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{748C52F1-090B-42F0-BB42-37BE181E4545}</ProjectGuid>\r
+    <ProjectGuid>{AD318520-607B-4D7A-ABE4-AC064BF21343}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N-net_4_0</OutputPath>\r
@@ -70,7 +70,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e2657586c150779789889e22fd41cd4f9535d24..eabc4e2bda25d788fbb72f8fedd4e53a8fb74275 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</ProjectGuid>\r
+    <ProjectGuid>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N-net_4_5</OutputPath>\r
@@ -70,7 +70,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0eb3fd0899d99361d2b9b96354c2b92f4241d340..adaf6ff84f89ddeebde04888fd6f80d46bdae90f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{59555D48-1FCB-4AFC-859B-577F5E9D809B}</ProjectGuid>\r
+    <ProjectGuid>{40C8B8E9-74A6-430C-B036-A09A06F795B4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 81ab294f83ccd3ab1cabe259e81249c4b6d90ed1..b8d69817eb702f52681612d773bfe4492f40fcde 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B1FE8BCF-C511-4452-A745-8E58030008F5}</ProjectGuid>\r
+    <ProjectGuid>{27BAE37E-41FE-4E31-8A83-F23847E19C86}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5d03ac0778908bc0c2a6ec3bf6172a95fa2fed55..86f033b3f0fe8d454ef9a810d69d04af59d73d7a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}</ProjectGuid>\r
+    <ProjectGuid>{475537C3-F2C7-42FD-8AF9-871BC6266BAA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2b6c8c1eeb996b9ccfcc48a0b2a9e617c14dee1d..f17eb96a6453d3af74a1f4d2401ace28eb14fcf9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{63DD7A88-5DF4-4FEB-BFF0-B8D191C34ECA}</ProjectGuid>\r
+    <ProjectGuid>{48C24919-3B2A-43E5-8DF2-A4A55258BA7E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\MidEast\I18N.MidEast-net_2_0.csproj">\r
-      <Project>{59555D48-1FCB-4AFC-859B-577F5E9D809B}</Project>\r
+      <Project>{40C8B8E9-74A6-430C-B036-A09A06F795B4}</Project>\r
       <Name>MidEast\I18N.MidEast-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4ec7b8f97cdbdff4f735d7b9b1df5654d15b583c..d96fc91e29c47577ec878260e292adcb0c60d97e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6DF1B8DB-E22C-4B94-882C-306E5674BCAE}</ProjectGuid>\r
+    <ProjectGuid>{F0C37D52-B70E-4A1D-BF13-6E1DBF338F26}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\MidEast\I18N.MidEast-net_4_0.csproj">\r
-      <Project>{B1FE8BCF-C511-4452-A745-8E58030008F5}</Project>\r
+      <Project>{27BAE37E-41FE-4E31-8A83-F23847E19C86}</Project>\r
       <Name>MidEast\I18N.MidEast-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d70c6c899748d45c39851a9b4aaa5fe292b13ffe..bf7f4b379b645dcc6ef4057b53a32def9a48dd0b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ECF02624-8EE8-4466-8925-3EE595034B4D}</ProjectGuid>\r
+    <ProjectGuid>{CF521447-730D-46F7-911F-0A1CFFB9B5CB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.MidEast-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\MidEast\I18N.MidEast-net_4_5.csproj">\r
-      <Project>{2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}</Project>\r
+      <Project>{475537C3-F2C7-42FD-8AF9-871BC6266BAA}</Project>\r
       <Name>MidEast\I18N.MidEast-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e5adf700f0da8f00a91262cc8116c0fe32330309..38d2a41012ad6ab8a4c0bf6ad9baf865cc825da8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{18E38008-05ED-4B0B-B635-E8B9E2A3E7EB}</ProjectGuid>\r
+    <ProjectGuid>{627EA5D6-BB52-4FB3-8938-2C0B4227F58E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Other-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 83cb0061a4b7ed6a4bd5cf844947ae43bf287693..17a20935dce33f2de4d7bd5ee3dc5cb2381c8877 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C9B07BE0-C8A3-40DD-A1A9-13FC5C316347}</ProjectGuid>\r
+    <ProjectGuid>{7189AB61-44EF-4C90-8F8E-620A0637998B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Other-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3c91f09aaed0ebd51fe8a39cf8ec0503440529a7..089a4667893678a08391ebf9e97d4086b7de8df5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9BBEC512-8833-4124-B826-777E45579059}</ProjectGuid>\r
+    <ProjectGuid>{7C1E1624-DAC7-4819-880B-852644622BF2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Other-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 56467b0c5eb027e4742297e4a6e7f4d00883b23b..1b03a7f0dba1922f4fd0d281e6cf2b508a97b5bf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9DE49C27-A51B-4511-97F6-5A76FD79450C}</ProjectGuid>\r
+    <ProjectGuid>{6B85E9FF-0DEC-4DBA-9388-560B95A7EC2A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Rare-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d6736b7afd862a34ebe1aed03bba87d16593912e..7cd576125a95cbe120358d0a8304d9b54f880dc0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8C98193F-281B-45FB-B24F-4A603AE929AA}</ProjectGuid>\r
+    <ProjectGuid>{5B7392AE-6A49-4DF8-8F5A-A0A5D1E0CCFC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Rare-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3edaec4b6441a1ab7c89dd9a9c9c483dbd78b514..4f3ba655c473718053bdfa12d51e56e09c5179cd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3C6256A3-3B1F-4CF8-9D91-016C855930DC}</ProjectGuid>\r
+    <ProjectGuid>{84879866-2AFD-4318-8C53-8951471B7369}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.Rare-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c9669e0de991bd27725e04b997f69cdbdc5c7546..730d84b703a30e88e44e4b11924f627c60b9f0d7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{19433D5C-4634-4AD2-BB3D-61198846EF97}</ProjectGuid>\r
+    <ProjectGuid>{D68F3BF0-6569-406D-A528-10FCFC094855}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dcc56674576e4a90d7cd1252f292abbcaec73570..43db323ca339454bbef2685cfc8d496357d14a03 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{074EB0E2-A311-48D3-B9F9-2A5AC82E4C5F}</ProjectGuid>\r
+    <ProjectGuid>{5FB39954-2084-4C31-868D-5EB834D9E885}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7eadd46607b668554e3c8d500cc04aabce9a9eb4..a24d4b4f719e740048da9b4924210f63218c08e6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{03E8A999-E329-44BB-8ED7-D60412068646}</ProjectGuid>\r
+    <ProjectGuid>{5532F6F2-B136-4D85-9500-5D1C9E1D9335}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index db08d7c68c109df14664c96a243e9a8aebb371ec..54eddff8d9336029df70d1c30268a625ab4aa0eb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{37CCD833-7D70-48D0-A76B-B769FF4796DB}</ProjectGuid>\r
+    <ProjectGuid>{F58F484F-830D-4337-B6F9-9FC11C933E32}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_2_0.csproj">\r
-      <Project>{6932625D-F574-4E6A-B4E1-AF4CFD2AB290}</Project>\r
+      <Project>{B4A11584-7362-47A0-9E27-0E4DE9539D77}</Project>\r
       <Name>Common\I18N-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\West\I18N.West-net_2_0.csproj">\r
-      <Project>{19433D5C-4634-4AD2-BB3D-61198846EF97}</Project>\r
+      <Project>{D68F3BF0-6569-406D-A528-10FCFC094855}</Project>\r
       <Name>West\I18N.West-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 79c539051c2fcc35fe7a54cfe944ccb094d66176..f9e8e7a90ece26163eef4828429175d7b2385569 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{00AA5570-986C-40EF-BC18-D3484BC12192}</ProjectGuid>\r
+    <ProjectGuid>{85C6F03E-7170-4DC3-B69D-D3E3134F27C9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_0.csproj">\r
-      <Project>{748C52F1-090B-42F0-BB42-37BE181E4545}</Project>\r
+      <Project>{AD318520-607B-4D7A-ABE4-AC064BF21343}</Project>\r
       <Name>Common\I18N-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\West\I18N.West-net_4_0.csproj">\r
-      <Project>{074EB0E2-A311-48D3-B9F9-2A5AC82E4C5F}</Project>\r
+      <Project>{5FB39954-2084-4C31-868D-5EB834D9E885}</Project>\r
       <Name>West\I18N.West-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d31d2840fea38b67ff2411e6f46c959725cbd239..b4a5f4e410e074aeab0bc3d2519499dc7a59e0f5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}</ProjectGuid>\r
+    <ProjectGuid>{6977FA25-AB73-4DE7-B535-19C04DB9C29A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\I18N.West-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\Common\I18N-net_4_5.csproj">\r
-      <Project>{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}</Project>\r
+      <Project>{8A8D5677-ACBD-40B4-916D-B9B5451F713D}</Project>\r
       <Name>Common\I18N-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\I18N\West\I18N.West-net_4_5.csproj">\r
-      <Project>{03E8A999-E329-44BB-8ED7-D60412068646}</Project>\r
+      <Project>{5532F6F2-B136-4D85-9500-5D1C9E1D9335}</Project>\r
       <Name>West\I18N.West-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e92d04d4d4f15b182496a3a633eae9ec2ea3a723..2817bdf65ed92c5ec1c9aa21ba9c78f30f421109 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{22512ABD-FFDB-4D40-9CDD-88AFB06B8EB3}</ProjectGuid>\r
+    <ProjectGuid>{49FA9E88-6A33-49C3-8F9F-FB2D59F28C7B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\IBM.Data.DB2-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a13ef398f96f3681830fda671597e9161ce93bac..0507c30866256a2491b7396d96e75431042c70f8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{74D13330-A363-4226-851D-AFE1851F4BF1}</ProjectGuid>\r
+    <ProjectGuid>{B2F159BD-EC27-408E-A92E-348814C8CC51}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\IBM.Data.DB2-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b0e87af62050c750044eb8a6d70af7202b87be64..9fd47dd67c288e19cca9f951eb55f2a2ecbd1b70 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0A4E586A-047A-4C04-9821-265465A334F8}</ProjectGuid>\r
+    <ProjectGuid>{61C7FBD9-B531-4292-8456-AAA6F9E650C4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\IBM.Data.DB2-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3591dee62bd52475dcba4b324df20a0e778c5a7e..fb0d11390d98e2d2ba2132882d6f65f6869509e9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A1B1ACC9-95F7-4752-A2A6-CF0214F886BB}</ProjectGuid>\r
+    <ProjectGuid>{065A843F-C16B-4F2E-9560-69440147EDB2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\ICSharpCode.SharpZipLib-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a6f232eb1a178b1fbc1b2f656955f7b02749ff8a..0088a4c6bccd578825269f94dc6775feb634ec7a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D769AAF9-10ED-4C32-8D87-8D0648E2D001}</ProjectGuid>\r
+    <ProjectGuid>{2DE2CFB0-3166-41D9-B0B5-EFBE309DD7B7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\ICSharpCode.SharpZipLib-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9cde505ead135c9280a7053cf855cae8fff68a81..ca869c5cf442719018ca106ff9a73faf8429977c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C41C7048-6B86-43DB-9F5E-BED7A92CD56E}</ProjectGuid>\r
+    <ProjectGuid>{039AD56A-E91B-4803-8328-287F70B61D14}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\ICSharpCode.SharpZipLib-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 45f99f40ab1ce73841b1abd9c5ea36ffc0e43512..db444031339d1f89907d9ace83a5f1b52cc9156e 100644 (file)
@@ -68,6 +68,7 @@ common_dirs := \
        Novell.Directory.Ldap           \
        Mono.Security.Win32             \
        System.DirectoryServices        \
+       System.DirectoryServices.Protocols      \
        RabbitMQ.Client                 \
        Mono.Messaging                  \
        System.Messaging                \
@@ -105,7 +106,6 @@ net_2_0_dirs := \
        System.Web.Extensions.Design    \
        System.ComponentModel.DataAnnotations   \
        System.Web.DynamicData          \
-       System.ServiceModel.Web         \
        System.Web.Mvc2                 \
        Mono.C5                         \
        Mono.Management                 \
@@ -123,9 +123,12 @@ net_2_0_only_dirs := \
        System.Web.Extensions.Design_1.0        \
        Compat.ICSharpCode.SharpZipLib  \
        WindowsBase                     \
+       System.ServiceModel.Web \
        System.Data.Services.Client     \
        System.Data.Services            \
-       System.Web.Mvc                  
+       System.Web.Mvc \
+
+pcl_facade_dirs := Facades
 
 mobile_dirs := \
        corlib  \
@@ -152,7 +155,10 @@ mobile_dirs := \
        System.IO.Compression.FileSystem \
        System.ComponentModel.DataAnnotations \
        System.ComponentModel.Composition.4.5 \
-       Facades
+       System.Net \
+       System.Windows \
+       System.Xml.Serialization \
+       $(pcl_facade_dirs)
 
 monodroid_dirs := \
        Mono.CompilerServices.SymbolWriter      \
@@ -161,33 +167,7 @@ monodroid_dirs := \
        System.Net.Http
 
 monotouch_runtime_dirs := \
-       corlib \
-       System \
-       System.XML      \
-       Mono.Posix \
-       System.Core \
-       Mono.Security                   \
-       System \
-       System.Security                 \
-       System.Configuration            \
-       System                          \
-       System.XML                      \
-       $(resgen_dir)                   \
-       System.Drawing                  \
-       System.Transactions             \
-       System.EnterpriseServices       \
-       Mono.Data.Tds                   \
-       System.Data                     \
-       Accessibility                   \
-       Mono.WebBrowser                 \
-       System.Runtime.Serialization.Formatters.Soap \
-       Managed.Windows.Forms           \
-       Mono.Data.Sqlite                \
-       System.Web.ApplicationServices  \
-       System.Web \
-       Mono.Web \
-       System.Web.Services \
-       System.Web
+       corlib
 
 net_3_5_only_dirs := \
        Microsoft.Build.Framework       \
@@ -202,6 +182,8 @@ net_4_0_dirs := \
        System.Windows.Forms.DataVisualization  \
        System.Xaml \
        WindowsBase \
+       System.ServiceModel.Activation \
+       System.ServiceModel \
        System.ServiceModel.Routing \
        System.ServiceModel.Discovery \
        System.Runtime.Caching \
@@ -219,6 +201,7 @@ net_4_0_dirs := \
        System.Reactive.Debugger \
        Microsoft.Web.Infrastructure \
        WebMatrix.Data \
+       System.ServiceModel.Web \
        System.Data.Services.Client     \
        System.Data.Services \
        System.Json.Microsoft \
@@ -231,6 +214,7 @@ net_4_5_dirs := \
        System.Threading.Tasks.Dataflow \
        System.ComponentModel.Composition.4.5 \
        System.Net.Http \
+       System.Net.Http.WebRequest \
        System.Web.Razor \
        System.Web.WebPages.Deployment \
        System.Web.WebPages \
@@ -245,12 +229,15 @@ net_4_5_dirs := \
        Mono.CodeContracts \
        System.IO.Compression \
        System.IO.Compression.FileSystem \
-       Facades
+       System.Windows \
+       System.Xml.Serialization \
+       $(pcl_facade_dirs)
        
 net_2_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_2_0_only_dirs) aot-compiler
 monodroid_SUBDIRS := $(mobile_dirs) $(monodroid_dirs)
 monotouch_SUBDIRS := $(mobile_dirs)
 monotouch_runtime_SUBDIRS := $(monotouch_runtime_dirs)
+mobile_static_SUBDIRS := $(mobile_dirs)
 mobile_SUBDIRS := $(mobile_dirs)
 net_3_5_SUBDIRS := $(net_3_5_only_dirs)
 net_4_0_SUBDIRS := $(common_dirs) $(net_2_0_dirs) $(net_4_0_dirs) $(net_4_0_only_dirs)
index 2777108e1de697fb18ed96d55976737191307ee8..838b62c4bbbbe25489ea6fed040209cad22e5dd8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</ProjectGuid>\r
+    <ProjectGuid>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,809</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_2_0.csproj">\r
-      <Project>{BA19643F-7F03-4902-9BB6-E94F4467F56A}</Project>\r
+      <Project>{6088F0A1-9658-4B71-86DB-8685B9279154}</Project>\r
       <Name>Accessibility\Accessibility-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.WebBrowser\Mono.WebBrowser-net_2_0.csproj">\r
-      <Project>{B65F061B-3980-40B9-B832-4D220388B453}</Project>\r
+      <Project>{9ABD3BD7-C90F-4137-BC85-A3EEE10473BA}</Project>\r
       <Name>Mono.WebBrowser\Mono.WebBrowser-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 70ba9ccf239e6bf33a8a7d9209e58d67ff0ad5af..3948ebece354ad2bc2414cb9f54bb99af6cc6999 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</ProjectGuid>\r
+    <ProjectGuid>{41B3B369-328C-45B8-9F14-224641427A35}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,809</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_0.csproj">\r
-      <Project>{B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}</Project>\r
+      <Project>{3C0E9135-1458-47F6-9076-17FFB1E3E32F}</Project>\r
       <Name>Accessibility\Accessibility-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.WebBrowser\Mono.WebBrowser-net_4_0.csproj">\r
-      <Project>{48C35A26-B26A-4084-9A9A-7729D345B3B5}</Project>\r
+      <Project>{A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}</Project>\r
       <Name>Mono.WebBrowser\Mono.WebBrowser-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 842402318c826a5f6531e67b157193c74c7d3d59..74a5f573d1b59a133df67a1acf0ea83e98857ecb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</ProjectGuid>\r
+    <ProjectGuid>{409FF748-B765-4AB3-BCB1-72199B9E341C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,809</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_5.csproj">\r
-      <Project>{7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}</Project>\r
+      <Project>{121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}</Project>\r
       <Name>Accessibility\Accessibility-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.WebBrowser\Mono.WebBrowser-net_4_5.csproj">\r
-      <Project>{4F8F4004-E655-463C-8A0F-4F7C99AB85B5}</Project>\r
+      <Project>{7D94F9AC-9F7A-4639-9E89-85083D77101D}</Project>\r
       <Name>Mono.WebBrowser\Mono.WebBrowser-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 18bb89359135b212d8a65bb9374433efafb5f13e..09df063f9dd1e9d8f4b1af9ceedc740cec6372a8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{548C82DC-9E7B-4016-8BD9-EB4A23C57127}</ProjectGuid>\r
+    <ProjectGuid>{ACB51CEF-A814-4043-BF38-5C5532CC6837}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_2_0.csproj">\r
-      <Project>{BA19643F-7F03-4902-9BB6-E94F4467F56A}</Project>\r
+      <Project>{6088F0A1-9658-4B71-86DB-8685B9279154}</Project>\r
       <Name>Accessibility\Accessibility-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cb986caaddd2c1fcc72cdb04de227060e0e94c21..9b0813f27470f546c706d47190c7bdd5d796a629 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9F6AFAA0-9E92-408D-802B-5AF4DF0AA6ED}</ProjectGuid>\r
+    <ProjectGuid>{3B395E30-C62C-4CE2-B9DA-EF9A20F328F0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_0.csproj">\r
-      <Project>{B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}</Project>\r
+      <Project>{3C0E9135-1458-47F6-9076-17FFB1E3E32F}</Project>\r
       <Name>Accessibility\Accessibility-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2ff48cfbe5dfe40d287c82a03b78bcf614573396..20c8f10743cd58f63d2fe4bdde693db14520b944 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FCA901B7-B01E-4578-8C93-9BACB907AD22}</ProjectGuid>\r
+    <ProjectGuid>{16740D76-23DD-4BEC-87C6-948A8D766030}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_5.csproj">\r
-      <Project>{7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}</Project>\r
+      <Project>{121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}</Project>\r
       <Name>Accessibility\Accessibility-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 404c0e2156acc2973ecf4870ba1961338b2a47de..505a41a0449b6d1c23dabd6e790f4add37288d88 100644 (file)
@@ -76,6 +76,7 @@ namespace System.Windows.Forms {
                internal bool           whacky_wm;
                internal bool           fixed_size;
                internal bool           zombie; /* X11 only flag.  true if the X windows have been destroyed but we haven't been Disposed */
+               internal bool           topmost; /* X11 only. */
                internal Region         user_clip;
                internal XEventQueue    queue;
                internal WindowExStyles initial_ex_style;
@@ -122,6 +123,7 @@ namespace System.Windows.Forms {
                        children = new ArrayList ();
                        resizing_or_moving = false;
                        whacky_wm = false;
+                       topmost = false;
                }
 
                public void Dispose() {
index 8cad840c4eef4f16614d9aad46d2f59a2cf8512d..8470f2987b7dca8bf4c2793954444eb12f69eeed 100644 (file)
@@ -173,6 +173,8 @@ namespace System.Windows.Forms
                        this.MenuDroppedDown = false;
                        
                        base.Dismiss (reason);
+
+                       this.FireMenuDeactivate ();
                }
                
                internal void FireMenuActivate ()
index 45f3ff801f15b4ca883f8ecda72e2c961100258f..30c0d89f5fb40633ee7a05e3dc555e6408b74e67 100644 (file)
@@ -894,7 +894,7 @@ namespace System.Windows.Forms
                                if (this is MenuStrip && mouse_currently_over is ToolStripMenuItem && !(mouse_currently_over as ToolStripMenuItem).HasDropDownItems)
                                        return;
                        } else {
-                               this.HideMenus (true, ToolStripDropDownCloseReason.AppClicked);
+                               this.Dismiss (ToolStripDropDownCloseReason.AppClicked);
                        }
                        
                        if (this is MenuStrip)
@@ -1503,17 +1503,6 @@ namespace System.Windows.Forms
                        this.GetTopLevelToolStrip ().Dismiss (ToolStripDropDownCloseReason.ItemClicked);
                }
                
-               internal void HideMenus (bool release, ToolStripDropDownCloseReason reason)
-               {
-                       if (this is MenuStrip && release && menu_selected)
-                               (this as MenuStrip).FireMenuDeactivate ();
-                               
-                       if (release)
-                               menu_selected = false;
-                               
-                       NotifySelectedChanged (null);
-               }
-
                internal void NotifySelectedChanged (ToolStripItem tsi)
                {
                        foreach (ToolStripItem tsi2 in this.DisplayedItems)
index da16b149adca32f86790894574a3db73ba4d3548..4df33979088fc1fc0fcd884ff0a01ec3403f49a5 100644 (file)
@@ -315,12 +315,9 @@ namespace System.Windows.Forms
                protected override void OnMouseUp (MouseEventArgs e)
                {
                        if (this.close_on_mouse_release) {
-                               this.DropDown.Dismiss (ToolStripDropDownCloseReason.ItemClicked);
+                               this.Parent.Dismiss (ToolStripDropDownCloseReason.ItemClicked);
                                this.Invalidate ();
                                this.close_on_mouse_release = false;
-                               
-                               if (!this.IsOnDropDown && this.Parent is MenuStrip)
-                                       (this.Parent as MenuStrip).MenuDroppedDown = false;
                        }
                                
                        if (!this.HasDropDownItems && Enabled)
index 9b6c13014ae6d2159435b29307feacd854fc902c..be2966157251a3edacf74110190c667537623fb2 100644 (file)
@@ -1619,11 +1619,23 @@ namespace System.Windows.Forms {
                                if (hwnd.zombie)
                                        return;
 
-                               if ((windows & WindowType.Whole) != 0) {
-                                       XMapWindow(DisplayHandle, hwnd.whole_window);
-                               }
-                               if ((windows & WindowType.Client) != 0) {
-                                       XMapWindow(DisplayHandle, hwnd.client_window);
+                               if (hwnd.topmost) {
+                                       // Most window managers will respect the _NET_WM_STATE property.
+                                       // If not, use XMapRaised to map the window at the top level as
+                                       // a last ditch effort.
+                                       if ((windows & WindowType.Whole) != 0) {
+                                               XMapRaised(DisplayHandle, hwnd.whole_window);
+                                       }
+                                       if ((windows & WindowType.Client) != 0) {
+                                               XMapRaised(DisplayHandle, hwnd.client_window);
+                                       }
+                               } else {
+                                       if ((windows & WindowType.Whole) != 0) {
+                                               XMapWindow(DisplayHandle, hwnd.whole_window);
+                                       }
+                                       if ((windows & WindowType.Client) != 0) {
+                                               XMapWindow(DisplayHandle, hwnd.client_window);
+                                       }
                                }
 
                                hwnd.mapped = true;
@@ -2972,13 +2984,8 @@ namespace System.Windows.Forms {
                                        XSelectInput(DisplayHandle, hwnd.client_window, new IntPtr ((int)(SelectInputMask | EventMask.StructureNotifyMask | Keyboard.KeyEventMask)));
                        }
 
-                       if (ExStyleSet (cp.ExStyle, WindowExStyles.WS_EX_TOPMOST)) {
-                               atoms = new int[2];
-                               atoms[0] = _NET_WM_WINDOW_TYPE_NORMAL.ToInt32();
-                               XChangeProperty(DisplayHandle, hwnd.whole_window, _NET_WM_WINDOW_TYPE, (IntPtr)Atom.XA_ATOM, 32, PropertyMode.Replace, atoms, 1);
-
-                               XSetTransientForHint (DisplayHandle, hwnd.whole_window, RootWindow);
-                       }
+                       if (ExStyleSet (cp.ExStyle, WindowExStyles.WS_EX_TOPMOST))
+                               SetTopmost(hwnd.whole_window, true);
 
                        SetWMStyles(hwnd, cp);
                        
@@ -5787,6 +5794,7 @@ namespace System.Windows.Forms {
                {
 
                        Hwnd hwnd = Hwnd.ObjectFromHandle(handle);
+                       hwnd.topmost = enabled;
 
                        if (enabled) {
                                lock (XlibLock) {
@@ -6405,6 +6413,13 @@ namespace System.Windows.Forms {
                        DebugHelper.TraceWriteLine ("XMapWindow");
                        return _XMapWindow(display, window);
                }
+               [DllImport ("libX11", EntryPoint="XMapRaised")]
+               internal extern static int _XMapRaised(IntPtr display, IntPtr window);
+               internal static int XMapRaised(IntPtr display, IntPtr window)
+               {
+                       DebugHelper.TraceWriteLine ("XMapRaised");
+                       return _XMapRaised(display, window);
+               }
                [DllImport ("libX11", EntryPoint="XUnmapWindow")]
                internal extern static int _XUnmapWindow(IntPtr display, IntPtr window);
                internal static int XUnmapWindow(IntPtr display, IntPtr window)
@@ -7255,6 +7270,9 @@ namespace System.Windows.Forms {
                [DllImport ("libX11", EntryPoint="XMapWindow")]
                internal extern static int XMapWindow(IntPtr display, IntPtr window);
                
+               [DllImport ("libX11", EntryPoint="XMapRaised")]
+               internal extern static int XMapRaised(IntPtr display, IntPtr window);
+               
                [DllImport ("libX11", EntryPoint="XUnmapWindow")]
                internal extern static int XUnmapWindow(IntPtr display, IntPtr window);
                
index abfee61e41859dd36716d41e1ecfca9d441540dd..8479a337f0b0a8b9ee7d225ebf1b8c5c213c7f4e 100755 (executable)
@@ -177,7 +177,7 @@ SWFresourcelist()
 {
 cat $Resource | while read SRC; do
 SRC=`echo $SRC | $tr '/' '\\\\'`
-SRC=`echo $SRC | sed 's/-resource://' | gawk -F , '{print "                    RelPath = \"" $1 "\"\n                    CustomToolNameSpace = \"" $2 "\""}' | fgrep -v \"\"`
+SRC=`echo $SRC | sed 's/-resource://' | awk -F , '{print "                    RelPath = \"" $1 "\"\n                    CustomToolNameSpace = \"" $2 "\""}' | fgrep -v \"\"`
 
 cat << EOT
                 <File
index 034ead032b841e68c1191c27504d61bfe3a51fd4..25f2cb0d49cc40ee37752cdb331847c0c96e7d56 100644 (file)
@@ -78,7 +78,7 @@ namespace Microsoft.Build.BuildEngine {
                                        continue;
                                        
                                XmlElement xe = (XmlElement) xn;
-                               BuildItem bi = new BuildItem (xe, this);
+                               BuildItem bi = CreateItem (project, xe);
                                buildItems.Add (bi);
                                project.LastItemGroupContaining [bi.Name] = this;
                        }
@@ -87,6 +87,11 @@ namespace Microsoft.Build.BuildEngine {
                                                project != null ? project.FullFileName : null;
                }
 
+               internal virtual BuildItem CreateItem (Project project, XmlElement xe)
+               {
+                       return new BuildItem (xe, this);
+               }
+
                public BuildItem AddNewItem (string itemName,
                                             string itemInclude)
                {
diff --git a/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskItem.cs b/mcs/class/Microsoft.Build.Engine/Microsoft.Build.BuildEngine/BuildTaskItem.cs
new file mode 100644 (file)
index 0000000..3fc4f14
--- /dev/null
@@ -0,0 +1,78 @@
+//
+// BuildTaskItem.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Collections.Generic;
+using System.Xml;
+
+namespace Microsoft.Build.BuildEngine
+{
+       internal class BuildTaskItem : BuildItem, IBuildTask
+       {
+               BuildTaskItemGroup parent;
+               Project project;
+
+               public bool ContinueOnError {
+                       get; set;
+               }
+               
+               internal BuildTaskItem (Project project, XmlElement itemElement, BuildTaskItemGroup parentItemGroup)
+                       : base (itemElement, parentItemGroup)
+               {
+                       this.parent = parentItemGroup;
+                       this.project = project;
+               }
+
+               bool CheckCondition (string condition)
+               {
+                       if (string.IsNullOrEmpty (condition))
+                               return true;
+                       var ce = ConditionParser.ParseCondition (condition);
+                       return ce.BoolEvaluate (project);
+               }
+
+               bool CheckCondition ()
+               {
+                       return CheckCondition (parent.Condition) && CheckCondition (Condition);
+               }
+
+               public bool Execute ()
+               {
+                       var condition = CheckCondition ();
+                       Evaluate (project, condition);
+                       return true;
+               }
+               
+               public IEnumerable<string> GetAttributes ()
+               {
+                       foreach (XmlAttribute attrib in parent.XmlElement.Attributes)
+                               yield return attrib.Value;
+
+                       foreach (XmlAttribute attrib in XmlElement.Attributes)
+                               yield return attrib.Value;
+               }
+       }
+}
+
index 9449cd8a35a2ffe3531d234e95d7e4a97186b153..2dff3e6b398304919c787246c60f787a8448eb5b 100644 (file)
@@ -30,34 +30,25 @@ using System.Xml;
 
 namespace Microsoft.Build.BuildEngine {
 
-       internal class BuildTaskItemGroup : BuildItemGroup, IBuildTask {
+       internal class BuildTaskItemGroup : BuildItemGroup {
 
-               public bool ContinueOnError {
-                       get; set;
-               }
+               List<IBuildTask> items = new List<IBuildTask> ();
 
                internal BuildTaskItemGroup (XmlElement element, Target target)
                        : base (element, target.Project, null, false, true)
                {
                }
-               
-               public bool Execute ()
-               {
-                       Evaluate ();
-                       return true;
-               }
 
-               public IEnumerable<string> GetAttributes ()
+               internal override BuildItem CreateItem (Project project, XmlElement xe)
                {
-                       foreach (XmlAttribute attrib in XmlElement.Attributes)
-                               yield return attrib.Value;
-
-                       foreach (BuildItem item in this) {
-                               foreach (XmlAttribute attrib in item.XmlElement.Attributes)
-                                       yield return attrib.Value;
-                       }
+                       var item = new BuildTaskItem (project, xe, this);
+                       items.Add (item);
+                       return item;
                }
 
+               public List<IBuildTask> Items {
+                       get { return items; }
+               }
        }
 }
 
index 709fedf1ce88f40e5419b637ed4a48a64a5458eb..bf61921902522faf4b7aae6967afc66429ab6c45 100644 (file)
@@ -109,6 +109,11 @@ namespace Microsoft.Build.BuildEngine {
                {
                        if (token.Type == TokenType.Number)
                                return true;
+                       else if (token.Type == TokenType.String) {
+                               var text = StringEvaluate (context);
+                               Single number;
+                               return Single.TryParse (text, out number);
+                       }
                        else
                                return false;
                }
index 624bd71ac7f8dcd0dc5b2fc0eccb030d4b540c35..4636d27250bc0a3af4b424480f6a70fde89266d3 100644 (file)
@@ -96,14 +96,17 @@ namespace Microsoft.Build.BuildEngine {
                                        return;
 
                                int offset = 0;
+                               string full_path;
                                if (Path.IsPathRooted (name)) {
+                                       full_path = name;
                                        baseDirectory = new DirectoryInfo (Path.GetPathRoot (name));
                                        if (IsRunningOnWindows)
                                                // skip the "drive:"
                                                offset = 1;
+                               } else {
+                                       full_path = Path.GetFullPath (Path.Combine (Environment.CurrentDirectory, name));
                                }
 
-                               string full_path = Path.GetFullPath (Path.Combine (Environment.CurrentDirectory, include_item.ItemSpec));
                                fileInfo = ParseIncludeExclude (separatedPath, offset, baseDirectory);
 
                                int wildcard_offset = full_path.IndexOf ("**");
index 51b9f4588a79c7344fe8200cb72f893339633c5f..577a4379d291aeb102a47e97ecb2d288150222a4 100644 (file)
@@ -117,6 +117,11 @@ namespace Microsoft.Build.BuildEngine {
 #if NET_4_0
                        Toolsets.Add (new Toolset ("4.0",
                                                ToolLocationHelper.GetPathToDotNetFramework (TargetDotNetFrameworkVersion.Version40)));
+#endif
+#if NET_4_5
+                       Toolsets.Add (new Toolset("12.0",
+                                               ToolLocationHelper.GetMSBuildInstallPath ("12.0"),
+                                               ToolLocationHelper.GetPathToDotNetFramework (TargetDotNetFrameworkVersion.Version40)));
 #endif
                }
                
index 653f4a80b23e381acfad58937d915a7a88a3e352..351aea020876c31014f2c0b4e9845c8270f66100 100644 (file)
@@ -159,12 +159,23 @@ namespace Microsoft.Build.BuildEngine {
                        else
                                base_dir_info = new DirectoryInfo (Directory.GetCurrentDirectory ());
 
-                       IEnumerable<string> extn_paths = has_extn_ref ? GetExtensionPaths (project) : new string [] {null};
+                       var importPaths = GetImportPathsFromString (project_attribute, project, base_dir_info);
+                       var extensionPaths = GetExtensionPaths (project);
+
+                       if (!has_extn_ref) {
+                               foreach (var importPath in importPaths) {
+                                       foreach (var extensionPath in extensionPaths) {
+                                               has_extn_ref = has_extn_ref || importPath.IndexOf (extensionPath) >= 0;
+                                       }
+                               }
+                       }
+
+                       IEnumerable<string> extn_paths = has_extn_ref ? extensionPaths : new string [] { null };
                        bool import_needed = false;
                        var currentLoadSettings = project.ProjectLoadSettings;
-                       
+
                        try {
-                               foreach (var settings in new ProjectLoadSettings [] { ProjectLoadSettings.None, currentLoadSettings}) {
+                               foreach (var settings in new ProjectLoadSettings [] { ProjectLoadSettings.None, currentLoadSettings }) {
                                        foreach (string path in extn_paths) {
                                                string extn_msg = null;
                                                if (has_extn_ref) {
@@ -183,7 +194,7 @@ namespace Microsoft.Build.BuildEngine {
                                                // We stop if atleast one file got imported.
                                                // Remaining extension paths are *not* tried
                                                bool atleast_one = false;
-                                               foreach (string importPath in GetImportPathsFromString (project_attribute, project, base_dir_info)) {
+                                               foreach (string importPath in importPaths) {
                                                        try {
                                                                if (func (importPath, extn_msg))
                                                                        atleast_one = true;
index 5c66cf723089374fc1e859b53e6bc6a444b075d4..d7edd5f29614b7c9ed6bde12149c1d7300d677a1 100644 (file)
@@ -555,7 +555,8 @@ namespace Microsoft.Build.BuildEngine {
                public void Load (TextReader textReader, ProjectLoadSettings projectLoadSettings)
                {
                        project_load_settings = projectLoadSettings;
-                       fullFileName = String.Empty;
+                       if (!string.IsNullOrEmpty (fullFileName))
+                               PushThisFileProperty (fullFileName);
                        DoLoad (textReader);
                }
 
@@ -567,7 +568,8 @@ namespace Microsoft.Build.BuildEngine {
                public void LoadXml (string projectXml, ProjectLoadSettings projectLoadSettings)
                {
                        project_load_settings = projectLoadSettings;
-                       fullFileName = String.Empty;
+                       if (!string.IsNullOrEmpty (fullFileName))
+                               PushThisFileProperty (fullFileName);
                        DoLoad (new StringReader (projectXml));
                        MarkProjectAsDirty ();
                }
@@ -935,6 +937,9 @@ namespace Microsoft.Build.BuildEngine {
                                        case "Import":
                                                AddImport (xe, ip, true);
                                                break;
+                                       case "ImportGroup":
+                                               AddImportGroup (xe, ip, true);
+                                               break;
                                        case "ItemGroup":
                                                AddItemGroup (xe, ip);
                                                break;
@@ -945,7 +950,7 @@ namespace Microsoft.Build.BuildEngine {
                                                AddChoose (xe, ip);
                                                break;
                                        default:
-                                               throw new InvalidProjectFileException (String.Format ("Invalid element '{0}' in project file.", xe.Name));
+                                               throw new InvalidProjectFileException (String.Format ("Invalid element '{0}' in project file '{1}'.", xe.Name, ip.FullFileName));
                                        }
                                }
                        }
@@ -1027,7 +1032,17 @@ namespace Microsoft.Build.BuildEngine {
                        SetExtensionsPathProperties (DefaultExtensionsPath);
                        evaluatedProperties.AddProperty (new BuildProperty ("MSBuildProjectDefaultTargets", DefaultTargets, PropertyType.Reserved));
                        evaluatedProperties.AddProperty (new BuildProperty ("OS", OS, PropertyType.Environment));
-
+#if NET_4_5
+                       // see http://msdn.microsoft.com/en-us/library/vstudio/hh162058(v=vs.120).aspx
+                       if (effective_tools_version == "12.0") {
+                               evaluatedProperties.AddProperty (new BuildProperty ("MSBuildToolsPath32", toolsPath, PropertyType.Reserved));
+                               string frameworkToolsPath = parentEngine.Toolsets [effective_tools_version].FrameworkToolsPath;
+                               if (frameworkToolsPath == null)
+                                       throw new Exception (String.Format ("Invalid tools version '{0}', no framework tools path set for this.", effective_tools_version));                            
+                               evaluatedProperties.AddProperty (new BuildProperty ("MSBuildFrameworkToolsPath", frameworkToolsPath, PropertyType.Reserved));
+                               evaluatedProperties.AddProperty (new BuildProperty ("MSBuildFrameworkToolsPath32", frameworkToolsPath, PropertyType.Reserved));
+                       }
+#endif
                        // FIXME: make some internal method that will work like GetDirectoryName but output String.Empty on null/String.Empty
                        string projectDir;
                        if (FullFileName == String.Empty)
@@ -1102,9 +1117,10 @@ namespace Microsoft.Build.BuildEngine {
                void AddImport (XmlElement xmlElement, ImportedProject importingProject, bool evaluate_properties)
                {
                        // eval all the properties etc till the import
-                       if (evaluate_properties)
+                       if (evaluate_properties) {
                                groupingCollection.Evaluate (EvaluationType.Property);
-
+                               groupingCollection.Evaluate (EvaluationType.Choose);
+                       }
                        try {
                                PushThisFileProperty (importingProject != null ? importingProject.FullFileName : FullFileName);
 
@@ -1119,6 +1135,30 @@ namespace Microsoft.Build.BuildEngine {
                        }
                }
 
+               void AddImportGroup (XmlElement xmlElement, ImportedProject importedProject, bool evaluate_properties)
+               {
+                       // eval all the properties etc till the import group
+                       if (evaluate_properties) {
+                               groupingCollection.Evaluate (EvaluationType.Property);
+                               groupingCollection.Evaluate (EvaluationType.Choose);
+                       }
+                       string condition_attribute = xmlElement.GetAttribute ("Condition");
+                       if (!ConditionParser.ParseAndEvaluate (condition_attribute, this))
+                               return;
+                       foreach (XmlNode xn in xmlElement.ChildNodes) {
+                               if (xn is XmlElement) {
+                                       XmlElement xe = (XmlElement) xn;
+                                       switch (xe.Name) {
+                                       case "Import":
+                                               AddImport (xe, importedProject, evaluate_properties);
+                                               break;
+                                       default:
+                                               throw new InvalidProjectFileException(String.Format("Invalid element '{0}' inside ImportGroup in project file '{1}'.", xe.Name, importedProject.FullFileName));
+                                       }
+                               }
+                       }
+               }
+
                bool AddSingleImport (XmlElement xmlElement, string projectPath, ImportedProject importingProject, string from_source_msg)
                {
                        Import import = new Import (xmlElement, projectPath, this, importingProject);
index 430ea1daf73cf5b5b6c86a51dca8c9e1d07a03c0..250c7942bd1abfc0d448cfca22495f57c8815092 100644 (file)
@@ -79,7 +79,8 @@ namespace Microsoft.Build.BuildEngine {
                                                        "The element <OnError> must be last under element <Target>. Found element <Error> instead.");
 #if NET_3_5
                                        else if (xe.Name == "ItemGroup") {
-                                               buildTasks.Add (new BuildTaskItemGroup (xe, this));
+                                               var group = new BuildTaskItemGroup (xe, this);
+                                               buildTasks.AddRange (group.Items);
                                                continue;
                                        } else if (xe.Name == "PropertyGroup") {
                                                buildTasks.Add (new BuildTaskPropertyGroup (xe, this));
index 5db46fcbfbd5fa6b2c02dc966ca9775f1925198f..0957f298c500fe263bdcda07fa25cbc0e5d32bd9 100644 (file)
@@ -31,15 +31,21 @@ namespace Microsoft.Build.BuildEngine
 {
        public class Toolset
        {
-               public Toolset (string toolsVersion, string toolsPath, BuildPropertyGroup buildProperties)
+               public Toolset (string toolsVersion, string toolsPath, string toolsFrameworkPath, BuildPropertyGroup buildProperties)
                {
                        ToolsVersion = toolsVersion;
                        ToolsPath = toolsPath;
+                       FrameworkToolsPath = toolsFrameworkPath;
                        BuildProperties = buildProperties;
                }
-               
-               public Toolset (string toolsVersion, string toolsPath)
-                       : this (toolsVersion, toolsPath, null)
+
+               public Toolset (string toolsVersion, string toolsPath, string toolsFrameworkPath)
+                       : this (toolsVersion, toolsPath, toolsFrameworkPath, null)
+               {
+               }
+
+               public Toolset(string toolsVersion, string toolsPath)
+                       : this (toolsVersion, toolsPath, toolsPath)
                {
                }
 
@@ -47,5 +53,6 @@ namespace Microsoft.Build.BuildEngine
 
                public string ToolsVersion { get; private set; }
                public string ToolsPath { get; private set; }
+               public string FrameworkToolsPath { get; private set; }          
        }
 }
index 2943542b618db64f470c7ee3fa8c8dba63174109..ccc118475437136a5908dbdab25afb949307377a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{13F89BAD-94E5-46B5-B8E1-0F1EDB272352}</ProjectGuid>\r
+    <ProjectGuid>{E8E948B8-6DCF-48F2-A6BC-04309AED8740}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-net_2_0</OutputPath>\r
@@ -62,6 +62,9 @@
     <Compile Include="Microsoft.Build.BuildEngine\BuildPropertyGroupCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildSettings.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildTask.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItem.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItemGroup.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskPropertyGroup.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildWhen.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ChangeType.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ColorResetter.cs" />\r
@@ -85,6 +88,7 @@
     <Compile Include="Microsoft.Build.BuildEngine\ExpressionParseException.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\FileLogger.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\GroupingCollection.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\Import.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportedProject.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4770b2796eceffecea238d0febebbcd4cdc0cecc..40650c44566880e284a87acbcafca72ce9611a14 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6F2D39F3-AA37-4E4C-B43B-A8456E6A3805}</ProjectGuid>\r
+    <ProjectGuid>{874516A3-F5F6-4EAB-B005-4D1A567C5E4D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-net_3_5</OutputPath>\r
@@ -62,6 +62,9 @@
     <Compile Include="Microsoft.Build.BuildEngine\BuildPropertyGroupCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildSettings.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildTask.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItem.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItemGroup.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskPropertyGroup.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildWhen.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ChangeType.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ColorResetter.cs" />\r
@@ -85,6 +88,7 @@
     <Compile Include="Microsoft.Build.BuildEngine\ExpressionParseException.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\FileLogger.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\GroupingCollection.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\Import.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportedProject.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5.csproj">\r
-      <Project>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</Project>\r
+      <Project>{5EA25213-0854-4620-A67B-67E9BC6D213E}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e251ccc7c13e112ba48efe02abf9fec269a2d75..f28d7c4d070a38dd268d29dfea430a6ebec11abc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</ProjectGuid>\r
+    <ProjectGuid>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-net_4_0</OutputPath>\r
@@ -62,6 +62,9 @@
     <Compile Include="Microsoft.Build.BuildEngine\BuildPropertyGroupCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildSettings.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildTask.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItem.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItemGroup.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskPropertyGroup.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildWhen.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ChangeType.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ColorResetter.cs" />\r
@@ -85,6 +88,7 @@
     <Compile Include="Microsoft.Build.BuildEngine\ExpressionParseException.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\FileLogger.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\GroupingCollection.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\Import.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportedProject.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ff74aae0e2ef3abbf208bff5b8d47703628b87c7..723918f95929f44705942b89a97e56ca9f725ce5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</ProjectGuid>\r
+    <ProjectGuid>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-net_4_5</OutputPath>\r
@@ -62,6 +62,9 @@
     <Compile Include="Microsoft.Build.BuildEngine\BuildPropertyGroupCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildSettings.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildTask.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItem.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskItemGroup.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\BuildTaskPropertyGroup.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\BuildWhen.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ChangeType.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ColorResetter.cs" />\r
@@ -85,6 +88,7 @@
     <Compile Include="Microsoft.Build.BuildEngine\ExpressionParseException.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\FileLogger.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\GroupingCollection.cs" />\r
+    <Compile Include="Microsoft.Build.BuildEngine\IBuildTask.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\Import.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportCollection.cs" />\r
     <Compile Include="Microsoft.Build.BuildEngine\ImportedProject.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 21e420925e3306b95383390853a34d8981d95ec2..5bd5b735a981faf538093d4f9dac7183c5c58f70 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1096B643-5EBD-4864-A21A-263502B65D26}</ProjectGuid>\r
+    <ProjectGuid>{3C5E119F-3B25-4F81-816E-196A3C7FFB88}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0.csproj">\r
-      <Project>{13F89BAD-94E5-46B5-B8E1-0F1EDB272352}</Project>\r
+      <Project>{E8E948B8-6DCF-48F2-A6BC-04309AED8740}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f8ccd0b90fe1cdbbc8238aa67d6d2091446facdf..7607ff801b006ea18a5e06c5217d6df931dc1bf2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{16BAE398-3812-4104-A55E-368A697404BB}</ProjectGuid>\r
+    <ProjectGuid>{D39C03FC-1A5C-4915-A044-F68A8D29D6BA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-tests-net_3_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_3_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5.csproj">\r
-      <Project>{6F2D39F3-AA37-4E4C-B43B-A8456E6A3805}</Project>\r
+      <Project>{874516A3-F5F6-4EAB-B005-4D1A567C5E4D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5.csproj">\r
-      <Project>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</Project>\r
+      <Project>{5EA25213-0854-4620-A67B-67E9BC6D213E}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 507d52a55b6dee697bf2f0f25cb97d28b92d804b..dec70cc068943a1b86785fe92a8a4162e640108b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6D3AA408-D93B-47B3-8A07-4F775E4430E6}</ProjectGuid>\r
+    <ProjectGuid>{610DE398-8F0E-4857-A600-17773B98E457}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</Project>\r
+      <Project>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e7739dddb359df50665047df3ce10ba1762942d6..6e28e88f5606d3d384e975341e687cab4425beb8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{53D1041C-C85A-4DD3-9C65-6DC879737A0F}</ProjectGuid>\r
+    <ProjectGuid>{AE80331E-4C95-4F65-BE43-0C3011661AE1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Engine-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</Project>\r
+      <Project>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fa51fafd89f245d24a4b15fce24a2e21fd759cdb..9081b936b5da8b302def303583eaa962a4658bd4 100644 (file)
@@ -18,6 +18,7 @@ Microsoft.Build.BuildEngine/BuildPropertyGroupCollection.cs
 Microsoft.Build.BuildEngine/BuildPropertyGroup.cs
 Microsoft.Build.BuildEngine/BuildSettings.cs
 Microsoft.Build.BuildEngine/BuildTask.cs
+Microsoft.Build.BuildEngine/BuildTaskItem.cs
 Microsoft.Build.BuildEngine/BuildTaskItemGroup.cs
 Microsoft.Build.BuildEngine/BuildTaskPropertyGroup.cs
 Microsoft.Build.BuildEngine/BuildWhen.cs
index 8a78fad3c8e95cf32e2c44321cf773d0396bcaa1..48aba112fb9912a680cd586375c3d53ed7d0aa2d 100644 (file)
@@ -2231,6 +2231,17 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                        }
                }
 
+               [Test]
+               public void FileNameNotResetOnLoad ()
+               {
+                       // Test for bug #14295
+                       Project p = new Project ();
+                       p.FullFileName = "foo";
+                       p.LoadXml ("<Project xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"/>");
+                       Assert.AreEqual ("foo", p.FullFileName);
+                       Assert.AreEqual ("foo", p.EvaluatedProperties ["MSBuildThisFile"].Value);
+               }
+
                void DeleteAllInDir (string path)
                {
                        if (!Directory.Exists (path))
index 03edf3db2b09f01b3164203c8a92626c59c7e731..2cced758f0500df01a85ad1a717b5bb81b709a68 100644 (file)
@@ -366,7 +366,7 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                        var type = Type.GetType ("Microsoft.Build.Evaluation.ProjectCollection, Microsoft.Build, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
 
                        var prop = type.GetProperty ("GlobalProjectCollection");
-                       var coll = prop.GetValue (null);
+                       var coll = prop.GetValue (null, null);
                                
                        var loadProject = coll.GetType ().GetMethod (
                                        "LoadProject", new Type[] { typeof (XmlReader), typeof (string) });
@@ -692,7 +692,42 @@ namespace MonoTests.Microsoft.Build.BuildEngine {
                                </Project>", "D");
                }
 
-#endif
+               [Test]
+               public void ItemGroupInsideTarget_Batching ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project ToolsVersion=""4.0"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"">
+                                       <Target Name='Main'>
+                                               <ItemGroup>
+                                                       <Foo Include='A;B' />
+                                                       <All Include='%(Foo.Identity)' />
+                                               </ItemGroup>
+                                               <Message Text='%(All.Identity)' />
+                                       </Target>
+                               </Project>", "A", "B");
+               }
+
+               [Test]
+               public void ItemGroupInsideTarget_Condition ()
+               {
+                       ItemGroupInsideTarget (
+                               @"<Project xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"" ToolsVersion=""4.0"">
+                                       <PropertyGroup>
+                                               <Summer>true</Summer>
+                                       </PropertyGroup>
+                                       <ItemGroup>
+                                               <Weather Include='Sun;Rain' />
+                                       </ItemGroup>
+                               
+                                       <Target Name='Main'>
+                                               <ItemGroup Condition=""'$(Summer)' != 'true'"">
+                                                       <Weather Include='Snow' />
+                                               </ItemGroup>
+                                               <Message Text='%(Weather.Identity)' />
+                                       </Target>
+                               </Project>", "Sun", "Rain");
+               }
+               #endif
 
                [Test]
                public void TestTargetOutputsIncludingMetadata ()
index 38ce341106d32ae9aaa99d8b8117f83cc8d90c5f..0a6526f4a1752abe6ba520800d434c58976078ed 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</ProjectGuid>\r
+    <ProjectGuid>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-net_2_0</OutputPath>\r
@@ -67,6 +67,7 @@
     <Compile Include="Microsoft.Build.Framework\ExternalProjectStartedEventArgs.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine2.cs" />\r
+    <Compile Include="Microsoft.Build.Framework\ICancelableTask.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IEventSource.cs" />\r
     <Compile Include="Microsoft.Build.Framework\ILogger.cs" />\r
     <Compile Include="Microsoft.Build.Framework\INodeLogger.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c861928a7850f5086f4b28583990fa8cec70c83f..474ad1734138dde102236e6733a7809b955c5bee 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E861AE49-8E73-4B00-883A-7517D1C530FE}</ProjectGuid>\r
+    <ProjectGuid>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-net_3_5</OutputPath>\r
@@ -67,6 +67,7 @@
     <Compile Include="Microsoft.Build.Framework\ExternalProjectStartedEventArgs.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine2.cs" />\r
+    <Compile Include="Microsoft.Build.Framework\ICancelableTask.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IEventSource.cs" />\r
     <Compile Include="Microsoft.Build.Framework\ILogger.cs" />\r
     <Compile Include="Microsoft.Build.Framework\INodeLogger.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 71295dbc2d92593cdad1ed748f3652f8e1beac8b..7e08bbe2a534db00b080c27396c3904b59dacf4e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</ProjectGuid>\r
+    <ProjectGuid>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-net_4_0</OutputPath>\r
@@ -67,6 +67,7 @@
     <Compile Include="Microsoft.Build.Framework\ExternalProjectStartedEventArgs.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine2.cs" />\r
+    <Compile Include="Microsoft.Build.Framework\ICancelableTask.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IEventSource.cs" />\r
     <Compile Include="Microsoft.Build.Framework\ILogger.cs" />\r
     <Compile Include="Microsoft.Build.Framework\INodeLogger.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1c987516ca82e5cc83352c643c6c28d87ab7fc02..f266918ab6dd2858aff275e107b1311c15a49ce8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{58CD6625-5643-4A3F-84E6-5568E8573A49}</ProjectGuid>\r
+    <ProjectGuid>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-net_4_5</OutputPath>\r
@@ -67,6 +67,7 @@
     <Compile Include="Microsoft.Build.Framework\ExternalProjectStartedEventArgs.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IBuildEngine2.cs" />\r
+    <Compile Include="Microsoft.Build.Framework\ICancelableTask.cs" />\r
     <Compile Include="Microsoft.Build.Framework\IEventSource.cs" />\r
     <Compile Include="Microsoft.Build.Framework\ILogger.cs" />\r
     <Compile Include="Microsoft.Build.Framework\INodeLogger.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 559360d1bc2067aa505a5ae3d85888e466605595..0ff64a365978956d4ecfe4d06e92bf019975a4fe 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{143DF436-A543-4F5A-A16C-F5F82B3BF844}</ProjectGuid>\r
+    <ProjectGuid>{5258A6DA-27E5-41A1-B3DC-D1F42F7DE022}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 48adeada6f8ad1417ec6fcb01728bc955e54405f..74ccf29c2290c9b193638e700727219344c3d4c7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A134D71E-4CD7-4FE4-B460-5B396A68FA4B}</ProjectGuid>\r
+    <ProjectGuid>{27F613C6-D90A-466D-A4D9-7D5BCA91AE06}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-tests-net_3_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_3_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ef6df144f0584f61a2f66a3a196eb9b120a2a3ef..998cf67ea0f739bac628f0c1b4ed27203e1a394c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{20F029ED-B7A1-4085-B32A-B13D5639ACE0}</ProjectGuid>\r
+    <ProjectGuid>{520B9924-B4B3-407F-974A-9C10F8C5B4AA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c31d6c1819bd7a10b77468b36a5d5faccdf58848..85983dec4750725b854dc2d1aedda89cc4cdd107 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D35940CE-3A36-4AE4-850F-C022247AE9F2}</ProjectGuid>\r
+    <ProjectGuid>{DB6937A9-D27A-42AB-A044-1DB4B1F97414}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Framework-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f9071bcf3bb04efc72e8d453f7779a26277f9b74..255a6855403b77f4c94844f0b41bde24ea9826f7 100644 (file)
@@ -21,6 +21,7 @@ Microsoft.Build.Framework/ExternalProjectFinishedEventArgs.cs
 Microsoft.Build.Framework/ExternalProjectStartedEventArgs.cs
 Microsoft.Build.Framework/IBuildEngine.cs
 Microsoft.Build.Framework/IBuildEngine2.cs
+Microsoft.Build.Framework/ICancelableTask.cs
 Microsoft.Build.Framework/IEventSource.cs
 Microsoft.Build.Framework/ILogger.cs
 Microsoft.Build.Framework/INodeLogger.cs
@@ -28,6 +29,7 @@ Microsoft.Build.Framework/ITask.cs
 Microsoft.Build.Framework/ITaskHost.cs
 Microsoft.Build.Framework/ITaskItem.cs
 Microsoft.Build.Framework/ITaskItem2.cs
+Microsoft.Build.Framework/LazyFormattedBuildEventArgs.cs
 Microsoft.Build.Framework/LoadInSeparateAppDomainAttribute.cs
 Microsoft.Build.Framework/LoggerException.cs
 Microsoft.Build.Framework/LoggerVerbosity.cs
index 60be917bf464db00a50598171c1dce8ef7ad370f..f94f11c265a1b8b5ae660b5b245112f647ee762b 100644 (file)
@@ -49,12 +49,18 @@ namespace Microsoft.Build.Framework
 
                protected BuildEventArgs (string message, string helpKeyword,
                                          string senderName)
+                       : this (message, helpKeyword, senderName, DateTime.Now)
+               {
+               }
+
+               protected BuildEventArgs (string message, string helpKeyword,
+                                         string senderName, DateTime eventTimestamp)
                {
                        this.message = message;
                        this.helpKeyword = helpKeyword;
                        this.senderName = senderName;
                        this.threadId = Thread.CurrentThread.GetHashCode ();
-                       this.timestamp = DateTime.Now;
+                       this.timestamp = eventTimestamp;
                }
 
                public string HelpKeyword {
@@ -90,4 +96,4 @@ namespace Microsoft.Build.Framework
        }
 }
 
-#endif
\ No newline at end of file
+#endif
index 6397a9e0d1d2a749c896c9bbd5d00cef3752d2fc..6595f05f0d9d3ca19bdc6d1504105010c0af40b6 100644 (file)
@@ -43,7 +43,25 @@ namespace Microsoft.Build.Framework {
                public BuildFinishedEventArgs (string message,
                                                  string helpKeyword,
                                                  bool succeeded)
-                       : base (message, helpKeyword, null)
+                       : this (message, helpKeyword, succeeded, DateTime.Now)
+               {
+               }
+
+               public BuildFinishedEventArgs (string message,
+                                                 string helpKeyword,
+                                                 bool succeeded,
+                                                 DateTime eventTimestamp)
+                       : base (message, helpKeyword, null, eventTimestamp)
+               {
+                       this.succeeded = succeeded;
+               }
+
+               public BuildFinishedEventArgs (string message,
+                                                 string helpKeyword,
+                                                 bool succeeded,
+                                                 DateTime eventTimestamp,
+                                                 params object [] messageArgs)
+                       : base (message, helpKeyword, null, eventTimestamp, messageArgs)
                {
                        this.succeeded = succeeded;
                }
@@ -56,4 +74,4 @@ namespace Microsoft.Build.Framework {
        }
 }
 
-#endif
\ No newline at end of file
+#endif
index 8a48d844cc86406c0fe16a948d5e9fc30ac9b038..54b0303b301a1a320f8965e99e1670d34a056776 100644 (file)
@@ -29,6 +29,7 @@
 #if NET_2_0
 
 using System;
+using System.Collections.Generic;
 
 namespace Microsoft.Build.Framework {
        [Serializable]
@@ -40,10 +41,34 @@ namespace Microsoft.Build.Framework {
 
                public BuildStartedEventArgs (string message,
                                              string helpKeyword)
+                       : this (message, helpKeyword, DateTime.Now)
+               {
+               }
+
+               public BuildStartedEventArgs (string message,
+                                             string helpKeyword,
+                                             IDictionary<string, string> environmentOfBuild)
                        : base (message, helpKeyword, null)
+               {
+                       // deal with environmentOfBuild
+                       throw new NotImplementedException ();
+               }
+
+               public BuildStartedEventArgs (string message,
+                                             string helpKeyword,
+                                             DateTime eventTimestamp)
+                       : base (message, helpKeyword, null, eventTimestamp)
+               {
+               }
+
+               public BuildStartedEventArgs (string message,
+                                             string helpKeyword,
+                                             DateTime eventTimestamp,
+                                             params object [] messageArgs)
+                       : base (message, helpKeyword, null, eventTimestamp, messageArgs)
                {
                }
        }
 }
 
-#endif
\ No newline at end of file
+#endif
index e3bf6c235d37f40a980c21408a01426ce24fa2f6..cad96026ff1fbad67efe841655e623a2b288d531 100644 (file)
@@ -33,7 +33,7 @@ using System;
 namespace Microsoft.Build.Framework
 {
        [Serializable]
-       public abstract class BuildStatusEventArgs : BuildEventArgs {
+       public abstract class BuildStatusEventArgs : LazyFormattedBuildEventArgs {
        
                protected BuildStatusEventArgs ()
                {
@@ -45,7 +45,24 @@ namespace Microsoft.Build.Framework
                        : base (message, helpKeyword, senderName)
                {
                }
+
+               protected BuildStatusEventArgs (string message,
+                                               string helpKeyword,
+                                               string senderName,
+                                               DateTime eventTimestamp)
+                       : base (message, helpKeyword, senderName, eventTimestamp)
+               {
+               }
+
+               protected BuildStatusEventArgs (string message,
+                                               string helpKeyword,
+                                               string senderName,
+                                               DateTime eventTimestamp,
+                                               params object [] messageArgs)
+                       : base (message, helpKeyword, senderName, eventTimestamp, messageArgs)
+               {
+               }
        }
 }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/ICancelableTask.cs b/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/ICancelableTask.cs
new file mode 100644 (file)
index 0000000..1092377
--- /dev/null
@@ -0,0 +1,13 @@
+#if NET_4_0
+using System;
+
+namespace Microsoft.Build.Framework
+{
+       [MonoTODO ("This needs to be taken into consideration in the build engine")]
+       public interface ICancelableTask : ITask
+       {
+               void Cancel ();
+       }
+}
+
+#endif
diff --git a/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/LazyFormattedBuildEventArgs.cs b/mcs/class/Microsoft.Build.Framework/Microsoft.Build.Framework/LazyFormattedBuildEventArgs.cs
new file mode 100644 (file)
index 0000000..3985784
--- /dev/null
@@ -0,0 +1,55 @@
+//
+// LazyFormattedBuildEventArgs.cs
+//
+// Author:
+//   Atsushi Enomoto <atsushi@xamarin.com>
+// 
+// (C) 2013 Xamarin Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.Threading;
+
+namespace Microsoft.Build.Framework
+{
+       [Serializable]          
+       public abstract class LazyFormattedBuildEventArgs : BuildEventArgs
+       {
+               
+               protected LazyFormattedBuildEventArgs ()
+                       : this (null, null, null)
+               {
+               }
+
+               protected LazyFormattedBuildEventArgs (string message, string helpKeyword,
+                                         string senderName)
+                       : this (message, helpKeyword, senderName, DateTime.Now)
+               {
+               }
+
+               protected LazyFormattedBuildEventArgs (string message, string helpKeyword,
+                                         string senderName, DateTime eventTimestamp,
+                                         params object [] messageArgs)
+                       : base (string.Format (message, messageArgs), helpKeyword, senderName, eventTimestamp)
+               {
+               }
+       }
+}
index c668fa4f1ef5c769a972953c1d161b253d2e0d1b..6d196e931da88ceb9913181ff9ed13321cf1cc4a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CF0D30D5-B824-4D4E-B1B2-173524B53942}</ProjectGuid>\r
+    <ProjectGuid>{3DD52713-DB38-4D0D-8692-650B8821B047}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0.csproj">\r
-      <Project>{13F89BAD-94E5-46B5-B8E1-0F1EDB272352}</Project>\r
+      <Project>{E8E948B8-6DCF-48F2-A6BC-04309AED8740}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ae1fd6c54de5f43821845cbd4e79a41f7d96d27e..014cf446e0446a6135d1431d7e59eb07140f9ca2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2A41CE90-16E6-46FD-94D3-FF944A9EB0BF}</ProjectGuid>\r
+    <ProjectGuid>{B71721D7-C95E-41D5-82A6-67DDD79C9477}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-net_3_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5.csproj">\r
-      <Project>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</Project>\r
+      <Project>{5EA25213-0854-4620-A67B-67E9BC6D213E}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5.csproj">\r
-      <Project>{6F2D39F3-AA37-4E4C-B43B-A8456E6A3805}</Project>\r
+      <Project>{874516A3-F5F6-4EAB-B005-4D1A567C5E4D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dd42043f140f5faa37005319ef2c49ef429d747d..b52f6278696e80854bf61bbe12ab5c503c973d1a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4E865E96-F3C9-4218-8FE7-AC0F9D1E7453}</ProjectGuid>\r
+    <ProjectGuid>{0F2C25D7-DF2E-4F4B-85D8-7EFC4DCD3B0C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</Project>\r
+      <Project>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a2bc575164adba747096da9f8470921f106d8b63..657ee6fc25111e8556221d54f3fc488832749005 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{09B16AF2-4480-4F66-995B-6FEFD9C67546}</ProjectGuid>\r
+    <ProjectGuid>{B0995E00-BF37-4B8A-8229-285C060E5957}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</Project>\r
+      <Project>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b0d6a2556fc3a4be033d85a57ce832e81d4c7d1e..c57ee651f21d63d89ecc1cac3b78c97278822952 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8213E693-D672-48AB-9348-9DB1D6AC902F}</ProjectGuid>\r
+    <ProjectGuid>{7B10DE59-3656-4F8F-A1C6-A090220D7BAF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_2_0.csproj">\r
-      <Project>{CF0D30D5-B824-4D4E-B1B2-173524B53942}</Project>\r
+      <Project>{3DD52713-DB38-4D0D-8692-650B8821B047}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0.csproj">\r
-      <Project>{13F89BAD-94E5-46B5-B8E1-0F1EDB272352}</Project>\r
+      <Project>{E8E948B8-6DCF-48F2-A6BC-04309AED8740}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cfb1658211a0ed634fce05450e32318e5fd0b9be..005821df1c0bcbe1bf6ea6e519a38a45f9566093 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4C53D20E-EAA0-4014-800A-0C2999AB2F8D}</ProjectGuid>\r
+    <ProjectGuid>{9B12933E-EAF8-4271-9C54-CFC4657AD5FB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-tests-net_3_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_3_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_3_5.csproj">\r
-      <Project>{2A41CE90-16E6-46FD-94D3-FF944A9EB0BF}</Project>\r
+      <Project>{B71721D7-C95E-41D5-82A6-67DDD79C9477}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5.csproj">\r
-      <Project>{6F2D39F3-AA37-4E4C-B43B-A8456E6A3805}</Project>\r
+      <Project>{874516A3-F5F6-4EAB-B005-4D1A567C5E4D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5.csproj">\r
-      <Project>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</Project>\r
+      <Project>{5EA25213-0854-4620-A67B-67E9BC6D213E}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7434b0850628b6152b07293a77dbed43ba1b7c23..f843f417aa51d145ba4924bc6378cc39fdb55dbb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0ED5D56D-6900-4C79-A4E1-4C030432E7E7}</ProjectGuid>\r
+    <ProjectGuid>{E3E93786-14F7-41DE-AFBB-20912C970ED8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_0.csproj">\r
-      <Project>{4E865E96-F3C9-4218-8FE7-AC0F9D1E7453}</Project>\r
+      <Project>{0F2C25D7-DF2E-4F4B-85D8-7EFC4DCD3B0C}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</Project>\r
+      <Project>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1443e35dd9d259687d953b0f16200d34a54a2e51..5c09f4b7fbe5b3ea545d6d3839545dd141b79f3d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}</ProjectGuid>\r
+    <ProjectGuid>{E572DA55-C0E6-42BA-9BCF-05B2C777D15B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Tasks-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5.csproj">\r
-      <Project>{09B16AF2-4480-4F66-995B-6FEFD9C67546}</Project>\r
+      <Project>{B0995E00-BF37-4B8A-8229-285C060E5957}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</Project>\r
+      <Project>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 98f614613c2f001734a5ff9c2d1a50c4c1e3b91f..60dd7a68c4b8a83e0954d93d797ee53ffedb4947 100644 (file)
@@ -82,7 +82,7 @@ namespace Microsoft.Build.Tasks {
                                                result &= CompileResourceFile (sourceFile, outputFile);
 
                                        ITaskItem newItem = new TaskItem (source);
-                                       source.ItemSpec = outputFile;
+                                       newItem.ItemSpec = outputFile;
 
                                        temporaryFilesWritten.Add (newItem);
                                }
index 138594a60dec13c7fbb3db3fa6be7d89a51aa3f2..e78b92dc8fc71eca8c96569864682b6ba2c997da 100644 (file)
@@ -60,6 +60,8 @@ namespace Microsoft.Build.Tasks
                                Log.LogWarning ("Unable to find framework corresponding to the target framework moniker '{0}'. " +
                                                "Framework assembly references will be resolved from the GAC, which might not be " +
                                                "the intended behavior.", TargetFrameworkMoniker);
+                               if (moniker.Identifier.Equals (".NETPortable"))
+                                       return CheckPclReferenceAssemblies (moniker);
                                return true;
                        }
 
@@ -69,6 +71,17 @@ namespace Microsoft.Build.Tasks
                        return true;
                }
 
+               bool CheckPclReferenceAssemblies (FrameworkMoniker moniker)
+               {
+                       // Check for a supported profile
+                       var check = new FrameworkMoniker (".NETPortable", "v4.0", "Profile24");
+                       if (GetFrameworkDirectoriesForMoniker (check) != null)
+                               Log.LogError ("Unsupported PCL Profile '{0}'.", moniker);
+                       else
+                               Log.LogError ("PCL Reference Assemblies not installed.");
+                       return false;
+               }
+
                Framework GetFrameworkDirectoriesForMoniker (FrameworkMoniker moniker)
                {
                        string dirs = String.Join (PathSeparatorAsString, new string [] {
@@ -99,7 +112,7 @@ namespace Microsoft.Build.Tasks
                                        moniker, base_path);
                        string framework_path = Path.Combine (base_path, Path.Combine (moniker.Identifier, moniker.Version));
                        if (!String.IsNullOrEmpty (moniker.Profile))
-                               framework_path = Path.Combine (framework_path, moniker.Profile);
+                               framework_path = Path.Combine (framework_path, "Profile", moniker.Profile);
 
                        string redistlist_dir = Path.Combine (framework_path, "RedistList");
                        string framework_list = Path.Combine (redistlist_dir, "FrameworkList.xml");
index e9a26a444eb3d8951d944d8213c99a244ff4f8e5..7b386c2eddd9297f897d5bf79a426e0754ba2920 100644 (file)
@@ -334,10 +334,9 @@ namespace Microsoft.Build.Tasks {
                                                continue;
 
                                        ResolvedReference resolved_ref = ResolveDependencyByAssemblyName (
-                                                       aname, asm.FullName, parent_copy_local);
+                                               aname, asm.FullName, parent_copy_local);
 
-                                       if (resolved_ref != null && !IsFromGacOrTargetFramework (resolved_ref)
-                                                       && resolved_ref.FoundInSearchPath != SearchPath.PkgConfig) {
+                                       if (IncludeDependencies (resolved_ref, aname.FullName)) {
                                                tempResolvedDepFiles[resolved_ref.AssemblyName.FullName] = resolved_ref.TaskItem;
                                                dependencies.Enqueue (resolved_ref.TaskItem.ItemSpec);
                                        }
@@ -409,7 +408,7 @@ namespace Microsoft.Build.Tasks {
                                return;
 
                        foreach (string ext in allowedRelatedFileExtensions) {
-                               string rfile = filename + ext;
+                               string rfile = Path.ChangeExtension (filename, ext);
                                if (File.Exists (rfile)) {
                                        ITaskItem item = new TaskItem (rfile);
                                        SetCopyLocal (item, parent_copy_local);
@@ -529,6 +528,15 @@ namespace Microsoft.Build.Tasks {
                                rr.FoundInSearchPath == SearchPath.TargetFrameworkDirectory;
                }
 
+               bool IncludeDependencies (ResolvedReference rr, string aname)
+               {
+                       if (rr == null)
+                               return false;
+                       if (aname.Equals ("System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"))
+                               return true;
+                       return !IsFromGacOrTargetFramework (rr) && rr.FoundInSearchPath != SearchPath.PkgConfig;
+               }
+
                void LogTaskParameters ()
                {
                        Log.LogMessage (MessageImportance.Low, "TargetFrameworkDirectories:");
index 32f34e3f401d90b638cb82e3ee384890da74329f..585e5bb0a4f3e0eff7b65d00b3d29fdfec61a96c 100644 (file)
@@ -19,7 +19,7 @@ LIB_MCS_FLAGS = \
        /r:System.dll                           \
        /r:$(BUILD_FRAMEWORK)
 
-TEST_MCS_FLAGS = /r:$(BUILD_FRAMEWORK) -r:System.dll
+TEST_MCS_FLAGS = /r:$(BUILD_FRAMEWORK) -r:System.dll -r:System.Core.dll
 
 export TESTING_MONO=a
 XBUILD_DIR=../../tools/xbuild
index 68bcffe3897873ab57eb048e93969f2f8c673172..85b7a24293b7d64a5fc658e933f02431266ca9fa 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</ProjectGuid>\r
+    <ProjectGuid>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fb4200a6ef38983fb4a1d4ef2cb0f28128c0431b..3cfeeeff7e0701a49855823e755646406fd25a98 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</ProjectGuid>\r
+    <ProjectGuid>{5EA25213-0854-4620-A67B-67E9BC6D213E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-net_3_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a8fbbf139141a8faf6d94219c5b8273d78281109..0f34216ce62477227b1ff4969efbd5ed96061aa4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{38B0128C-C232-4274-BDD0-F90ED189A80F}</ProjectGuid>\r
+    <ProjectGuid>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7320f8ff00a522f5d18ded1ff5c4ed13e54e18d1..bcb00b82a07462842b4ab80dc079305f35491d5b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</ProjectGuid>\r
+    <ProjectGuid>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d43650b33331c8f4c711a821580582fb3a13b536..d5e0bfe3f2b403578c0ba1bf769f32bc968700c4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{46D3F9E1-9D39-427E-9E71-B83FDE0E1C0D}</ProjectGuid>\r
+    <ProjectGuid>{806705FD-72F7-4CAA-A460-8D21ECCA94DB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 92ef119f148eed2078d02b5d490dd6930a07a04b..d7de179c80288d5fff18b0f59f099e0f6b81a875 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BC4C1A1E-07FD-4B52-ADF5-69085132A404}</ProjectGuid>\r
+    <ProjectGuid>{B72B3F43-E296-4738-B9C2-6FB27B0FB7BD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-tests-net_3_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_3_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5.csproj">\r
-      <Project>{81767FAD-2EEC-42CE-A053-45FFDEC0D67D}</Project>\r
+      <Project>{5EA25213-0854-4620-A67B-67E9BC6D213E}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5.csproj">\r
-      <Project>{E861AE49-8E73-4B00-883A-7517D1C530FE}</Project>\r
+      <Project>{50A41B06-27A6-4003-BA97-763C6CA4D51B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_3_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5b00bf7d61c51da470e2bf880fc6ec480da88b58..75bb369e7edb9b5a1550794c773e0d80b72fb7cd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E1503E6B-4A56-4B2F-80AB-A57178923D4A}</ProjectGuid>\r
+    <ProjectGuid>{52AF96F7-968E-4D90-AD5F-A5F2B7E187AE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c26b0079c718c8d53f2a34d376d5099cd4a47b76..bb8e77ea1f393b72d7bdd77b4090041dcf8bce07 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{766E5895-AE1B-44F9-928C-34FAEE15CA64}</ProjectGuid>\r
+    <ProjectGuid>{7E7B683B-FA73-492D-A59B-E13AF28F8B21}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build.Utilities-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e8eeb392c04a7e2d7b20e6b3553ec90ea2692739..718e3c2e01f8feba2f1824fdee277fb81408c5db 100644 (file)
@@ -51,5 +51,6 @@
     <Compile Include="Test\Microsoft.Build.Utilities\LoggerTest.cs" />
     <Compile Include="Test\Microsoft.Build.Utilities\TaskItemTest.cs" />
     <Compile Include="Test\Microsoft.Build.Utilities\TaskLoggingHelperTest.cs" />
+    <Compile Include="Test\Microsoft.Build.Utilities\ToolTaskTest.cs" />
   </ItemGroup>
-</Project>
\ No newline at end of file
+</Project>
index cc5b84cb90436a63821c0342add8b9ba3bc8a8ea..f16603fcfd0dc4d70f1bdf507feb4f40f636fe56 100644 (file)
@@ -48,6 +48,9 @@ namespace Microsoft.Build.Utilities
                        t2 = t1.Parent;
 
                        lib_mono_dir = t2.FullName;
+#if NET_4_0
+                       var windowsPath = Environment.GetFolderPath (Environment.SpecialFolder.Windows);
+#endif
                        if (Environment.GetEnvironmentVariable ("TESTING_MONO") != null) {
                                mono_dir = new string [] {
                                        Path.Combine (lib_mono_dir, "net_1_0"),
@@ -57,6 +60,18 @@ namespace Microsoft.Build.Utilities
                                        Path.Combine (lib_mono_dir, "net_4_0"),
                                        Path.Combine (lib_mono_dir, "net_4_5")
                                };      
+#if NET_4_0
+                       } else if (!string.IsNullOrEmpty (windowsPath) && lib_mono_dir.StartsWith (windowsPath)) {
+                               //running in .NET, not Mono
+                               mono_dir = new string [] {
+                                       Path.Combine (lib_mono_dir, "v1.0.3705"),
+                                       Path.Combine (lib_mono_dir, "v2.0.50727"),
+                                       Path.Combine (lib_mono_dir, "v2.0.50727"),
+                                       Path.Combine (lib_mono_dir, "v3.5"),
+                                       Path.Combine (lib_mono_dir, "v4.0.30319"),
+                                       Path.Combine (lib_mono_dir, "v4.0.30319")
+                               };
+#endif
                        } else {
                                mono_dir = new string [] {
                                        Path.Combine (lib_mono_dir, "1.0"),
@@ -93,6 +108,15 @@ namespace Microsoft.Build.Utilities
                        return mono_dir [(int)version];
                }
 
+#if NET_4_0
+               public static string GetMSBuildInstallPath (string version)
+               {
+                       //see http://msdn.microsoft.com/en-us/library/vstudio/bb397428(v=vs.120).aspx
+                       var programFiles = Environment.GetFolderPath (Environment.SpecialFolder.ProgramFilesX86);
+                       return Path.Combine (programFiles, "MSBuild", version, "bin");
+               }
+#endif
+
                [MonoTODO]
                public static string GetPathToDotNetFrameworkFile (string fileName,
                                                                  TargetDotNetFrameworkVersion version)
index 4094c122e3b9e9afc86574ece4e1ea98afbd9cb9..77814aab8621b327e16c0e952105454ac32dd66b 100644 (file)
@@ -464,13 +464,25 @@ namespace Microsoft.Build.Utilities
                        }
                }
 
-               // Snatched from our codedom code, with some changes to make it compatible with csc
-               // (the line+column group is optional is csc)
+               // Keep in sync with mcs/class/System/Microsoft.CSharp/CSharpCodeCompiler.cs
+               const string ErrorRegexPattern = @"
+                       ^
+                       (\s*(?<file>[^\(]+)                         # filename (optional)
+                        (\((?<line>\d*)(,(?<column>\d*[\+]*))?\))? # line+column (optional)
+                        :\s+)?
+                       (?<level>\w+)                               # error|warning
+                       \s+
+                       (?<number>[^:]*\d)                          # CS1234
+                       :
+                       \s*
+                       (?<message>.*)$";
+
                static Regex errorRegex;
                static Regex CscErrorRegex {
                        get {
                                if (errorRegex == null)
-                                       errorRegex = new Regex (@"^(\s*(?<file>[^\(]+)(\((?<line>\d*)(,(?<column>\d*[\+]*))?\))?:\s+)*(?<level>\w+)\s+(?<number>.*\d):\s*(?<message>.*)", RegexOptions.Compiled | RegexOptions.ExplicitCapture);
+                                       errorRegex = new Regex (ErrorRegexPattern,
+                                                       RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnorePatternWhitespace);
                                return errorRegex;
                        }
                }
index 8f797a06ec86c881980f33b19b2629628d48ba7f..b1a3758e98012e9862b68bcf0d790ab2040661d5 100644 (file)
@@ -2,3 +2,4 @@ Microsoft.Build.Utilities/CommandLineBuilderTest.cs
 Microsoft.Build.Utilities/LoggerTest.cs
 Microsoft.Build.Utilities/TaskItemTest.cs
 Microsoft.Build.Utilities/TaskLoggingHelperTest.cs
+Microsoft.Build.Utilities/ToolTaskTest.cs
diff --git a/mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolTaskTest.cs b/mcs/class/Microsoft.Build.Utilities/Test/Microsoft.Build.Utilities/ToolTaskTest.cs
new file mode 100644 (file)
index 0000000..8b3ae6e
--- /dev/null
@@ -0,0 +1,141 @@
+//
+// ToolTaskTest.cs:
+//
+// Author:
+//   Jonathan Pryor (jonp@xamarin.com)
+//
+// (C) 2013 Xamarin Inc.
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+
+using Microsoft.Build.Framework;
+using Microsoft.Build.Utilities;
+
+using NUnit.Framework;
+
+namespace MonoTests.Microsoft.Build.Utilities {
+
+       [TestFixture]
+       public class ToolTaskTest {
+
+               [Test]
+               public void LogEventsFromTextOutput ()
+               {
+                       var messages = new[] {
+                               new {Code = "CS0152", Line = "class1.cs(16,4): error CS0152: The label `case 1:' already occurs in this switch statement" },
+                       };
+
+                       var task = new LogEventsFromTextOutputToolTask ();
+                       foreach (var m in messages) {
+                               task.LogEventsFromTextOutput (m.Line);
+                               Assert.IsTrue (task.Codes.Count > 0, "No error logged for line: {0}", m.Line);
+                               Assert.AreEqual (m.Code, task.Codes [0]);
+                               task.Codes.Clear ();
+                       }
+               }
+       }
+
+       class LogEventsFromTextOutputToolTask : ToolTask {
+
+               public List<string> Codes {
+                       get {return engine.Codes;}
+               }
+
+               CodeLoggingBuildEngine engine = new CodeLoggingBuildEngine ();
+
+               public LogEventsFromTextOutputToolTask ()
+               {
+                       BuildEngine = engine;
+               }
+
+               protected override string GenerateFullPathToTool ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override string ToolName {
+                       get {throw new NotImplementedException ();}
+               }
+
+               public void LogEventsFromTextOutput (string line)
+               {
+                       base.LogEventsFromTextOutput (line, MessageImportance.Normal);
+               }
+       }
+
+       class CodeLoggingBuildEngine : IBuildEngine {
+
+               public List<string> Codes = new List<string> ();
+
+               public int ColumnNumberOfTaskNode {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool ContinueOnError {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int LineNumberOfTaskNode {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string ProjectFileOfTaskNode {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool BuildProjectFile (string projectFileName, string[] targetNames, System.Collections.IDictionary globalProperties, System.Collections.IDictionary targetOutputs)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void LogCustomEvent (CustomBuildEventArgs e)
+               {
+               }
+
+               public void LogErrorEvent (BuildErrorEventArgs e)
+               {
+                       Codes.Add (e.Code);
+               }
+
+               public void LogMessageEvent (BuildMessageEventArgs e)
+               {
+               }
+
+               public void LogWarningEvent (BuildWarningEventArgs e)
+               {
+                       Codes.Add (e.Code);
+               }
+       }
+}
+
index 173638c9831d345bb3b5c0faa7b528e6eb287295..339dd9094efad8897e0fb38bb435ac4272dc3eab 100644 (file)
@@ -19,7 +19,9 @@ LIB_MCS_FLAGS = \
        /r:Microsoft.Build.Engine.dll           \
        /r:Microsoft.Build.Framework.dll
        
-TEST_MCS_FLAGS = /r:System.Core.dll
+TEST_MCS_FLAGS = /r:System.Core.dll            \
+       /r:Microsoft.Build.Engine.dll           \
+       /r:Microsoft.Build.Framework.dll
 
 EXTRA_DISTFILES = \
        Test/FunctionalTestReferenceProject.csproj      \
index e0f22a5c275af80e0a8b4b25ffeb7e2dd19deff5..9ec3622be2dc15d661f4df6dfd0b906e67e00432 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B4798B4A-9260-4548-B590-B8D7F7605FDB}</ProjectGuid>\r
+    <ProjectGuid>{DD9D36CA-9F39-4EBA-AF7F-779333880CF3}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</Project>\r
+      <Project>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ed8a430df52e38be6cc0e1ccad584012bbb2a8dc..4354ebfde05ece83e6b9dd411a16f9d696df9518 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}</ProjectGuid>\r
+    <ProjectGuid>{D8A2B8F2-F52B-44D5-A868-C344682749E2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</Project>\r
+      <Project>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index beb655171389c63a4b7e629cf7852a426a7d7495..eb8a71d72736afa24b973c591797310d200537db 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3198A8E8-0D99-4E7F-BD89-DBF39E4D0084}</ProjectGuid>\r
+    <ProjectGuid>{3B5EF283-78B7-4B88-AE67-721D02B304D6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build\Microsoft.Build-net_4_0.csproj">\r
-      <Project>{B4798B4A-9260-4548-B590-B8D7F7605FDB}</Project>\r
+      <Project>{DD9D36CA-9F39-4EBA-AF7F-779333880CF3}</Project>\r
       <Name>Microsoft.Build\Microsoft.Build-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 35514a645c17f1ab874439fbc73b680db7176f5e..9406a631cf5241b921ebbb838570e232ed9809ff 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9DDFB8FD-C017-44D3-82D4-129AF99D667D}</ProjectGuid>\r
+    <ProjectGuid>{E34212A3-F152-4A6F-88F7-7A4D0324D11C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Build-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build\Microsoft.Build-net_4_5.csproj">\r
-      <Project>{47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}</Project>\r
+      <Project>{D8A2B8F2-F52B-44D5-A868-C344682749E2}</Project>\r
       <Name>Microsoft.Build\Microsoft.Build-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3ad3c3328526ed2b303bb4e035a44cf1edb21168..c87ae5c3dff13ade321ae07526016c4a29a9c324 100644 (file)
@@ -34,6 +34,7 @@ using System.Diagnostics;
 using System.IO;
 using System.Linq;
 using System.Text;
+using System.Xml;
 using Microsoft.Build.Construction;
 using Microsoft.Build.Internal;
 using Microsoft.Build.Execution;
@@ -48,6 +49,27 @@ namespace Microsoft.Build.Evaluation
                          +"{data.Items.Count} #Targets={data.Targets.Count}")]
         public class Project
         {
+               public Project (XmlReader xml)
+                       : this (ProjectRootElement.Create (xml))
+               {
+               }
+                public Project (XmlReader xml, IDictionary<string, string> globalProperties,
+                                string toolsVersion)
+                       : this (ProjectRootElement.Create (xml), globalProperties, toolsVersion)
+               {
+               }
+                public Project (XmlReader xml, IDictionary<string, string> globalProperties,
+                                string toolsVersion, ProjectCollection projectCollection)
+                       : this (ProjectRootElement.Create (xml), globalProperties, toolsVersion, projectCollection)
+               {
+               }
+                public Project (XmlReader xml, IDictionary<string, string> globalProperties,
+                                string toolsVersion, ProjectCollection projectCollection,
+                                ProjectLoadSettings loadSettings)
+                       : this (ProjectRootElement.Create (xml), globalProperties, toolsVersion, projectCollection, loadSettings)
+               {
+               }
+
                 public Project (ProjectRootElement xml) : this(xml, null, null)
                 {
                 }
index 17c6d82a1c1fab470093e074d1f68046fd3b74ec..f5b2826961a54de0abf8fc86aacf8b6c7aa46907 100644 (file)
@@ -28,6 +28,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using Microsoft.Build.Construction;
 using Microsoft.Build.Framework;
 using Microsoft.Build.Logging;
 
@@ -97,5 +98,28 @@ namespace Microsoft.Build.Evaluation
                 public ToolsetDefinitionLocations ToolsetLocations {
                         get { throw new NotImplementedException (); }
                 }
+
+               public ICollection<Toolset> Toolsets {
+                        get { throw new NotImplementedException (); }
+                }
+
+               public void UnloadAllProjects ()
+               {
+                        throw new NotImplementedException ();
+               }
+
+               public void UnloadProject (Project project)
+               {
+                        throw new NotImplementedException ();
+               }
+
+               public void UnloadProject (ProjectRootElement projectRootElement)
+               {
+                        throw new NotImplementedException ();
+               }
+
+               public static Version Version {
+                        get { throw new NotImplementedException (); }
+                }
         }
 }
index 77953199f793e72fa519ab7a33fc4b6eb4aacac5..393995e80cdc94c43a921170d7e6acc562a25bc4 100644 (file)
@@ -92,6 +92,7 @@ namespace Microsoft.Build.Evaluation
 
                 public string ItemType {
                         get { throw new NotImplementedException (); }
+                        set { throw new NotImplementedException (); }
                 }
 
                 public ICollection<ProjectMetadata> Metadata {
@@ -108,6 +109,7 @@ namespace Microsoft.Build.Evaluation
 
                 public string UnevaluatedInclude {
                         get { throw new NotImplementedException (); }
+                        set { throw new NotImplementedException (); }
                 }
 
                 public ProjectItemElement Xml { get; private set; }
index dfcd02a5f6b5961ee74428d76d86a114e2e83866..e9d557f3e0fa3acdddbe518f7ab4fbe0b6e3dcbe 100644 (file)
 //
 
 using System;
+using Microsoft.Build.Construction;
 
 namespace Microsoft.Build.Evaluation
 {
-        public class ProjectProperty
+       // In .NET 4.0 MSDN says it is non-abstract, but some of those
+       // members are abstract and had been there since 4.0.
+       // I take this as doc bug, as non-abstract to abstract is a
+       // breaking change and I'd rather believe API designer's sanity.
+        public abstract class ProjectProperty
         {
+               internal ProjectProperty () // hide default ctor
+               {
+               }
+
                 public string EvaluatedValue {
                         get {
                                 throw new NotImplementedException ();
                         }
                 }
+
+               public abstract bool IsEnvironmentProperty { get; }
+               public abstract bool IsGlobalProperty { get; }
+               public abstract bool IsImported { get; }
+               public abstract bool IsReservedProperty { get; }
+
+               public string Name {
+                       get {
+                                throw new NotImplementedException ();
+                       }
+               }
+
+               public abstract ProjectProperty Predecessor { get; }
+
+               public Project Project {
+                       get {
+                                throw new NotImplementedException ();
+                       }
+               }
+
+               public abstract string UnevaluatedValue { get; set; }
+               public abstract ProjectPropertyElement Xml { get; }
         }
 }
 
index 161476c2c0b57d0e734a88e8650639cc77a37dd6..476d4d0a5be286f9e54850a592ad5b793a6980d3 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using Microsoft.Build.Framework;
-
 using System;
+using System.Globalization;
+using Microsoft.Build.Framework;
 
 namespace Microsoft.Build.Logging
 {
-        public class ConsoleLogger : INodeLogger
-        {
-                public ConsoleLogger ()
-                        : this (LoggerVerbosity.Normal)
-                {
-                }
-
-                public ConsoleLogger (LoggerVerbosity verbosity)
-                {
-                        throw new NotImplementedException ();
-                }
-
-                public ConsoleLogger (LoggerVerbosity verbosity, WriteHandler write, ColorSetter colorSet, ColorResetter colorReset)
-                {
-                        throw new NotImplementedException ();
-                }
-
-                #region INodeLogger implementation
-                public void Initialize (IEventSource eventSource, int nodeCount)
-                {
-                        throw new NotImplementedException ();
-                }
-                #endregion
-
-                #region ILogger implementation
-                public void Initialize (IEventSource eventSource)
-                {
-                        throw new NotImplementedException ();
-                }
-
-                public void Shutdown ()
-                {
-                        throw new NotImplementedException ();
-                }
-
-                public string Parameters {
-                        get {
-                                throw new NotImplementedException ();
-                        }
-                        set {
-                                throw new NotImplementedException ();
-                        }
-                }
-
-                public LoggerVerbosity Verbosity {
-                        get {
-                                throw new NotImplementedException ();
-                        }
-                        set {
-                                throw new NotImplementedException ();
-                        }
-                }
-                #endregion
-        }
+       public class ConsoleLogger : INodeLogger
+       {
+               public ConsoleLogger ()
+                       : this (LoggerVerbosity.Normal)
+               {
+               }
+
+               public ConsoleLogger (LoggerVerbosity verbosity)
+                       : this (verbosity, message => Console.WriteLine (message), color => Console.ForegroundColor = color, Console.ResetColor)
+               {
+               }
+
+               public ConsoleLogger (LoggerVerbosity verbosity, WriteHandler write, ColorSetter colorSet, ColorResetter colorReset)
+               {
+                       if (write == null)
+                               throw new ArgumentNullException ("write");
+                       if (colorSet == null)
+                               throw new ArgumentNullException ("colorSet");
+                       if (colorReset == null)
+                               throw new ArgumentNullException ("colorReset");
+                       Verbosity = verbosity;
+                       this.write = write;
+                       set_color = colorSet;
+                       reset_color = colorReset;
+               }
+
+               WriteHandler write;
+               ColorSetter set_color;
+               ColorResetter reset_color;
+
+               #region INodeLogger implementation
+
+               public virtual void Initialize (IEventSource eventSource, int nodeCount)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               #endregion
+
+               #region ILogger implementation
+
+               public virtual void Initialize (IEventSource eventSource)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public virtual void Shutdown ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public string Parameters { get; set; }
+
+               public LoggerVerbosity Verbosity { get; set; }
+
+               public bool ShowSummary { get; set; }
+
+               public bool SkipProjectStartedText { get; set; }
+               
+               public WriteHandler WriteHandler {
+                       get { return write; }
+                       set {
+                               if (value == null)
+                                       throw new ArgumentNullException ("value");
+                               write = value;
+                       }
+               }
+
+               #endregion
+
+               public void ApplyParameter (string parameterName, string parameterValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               DateTime build_started;
+
+               public void BuildFinishedHandler (object sender, BuildFinishedEventArgs e)
+               {
+                       if (Verbosity == LoggerVerbosity.Quiet || Verbosity == LoggerVerbosity.Minimal)
+                               return;
+
+                       set_color (ConsoleColor.White);
+                       write (e.Message);
+                       write ("");
+                       write ("");
+                       write ("");
+                       // .NET doesn't care if BuildStarted is actually invoked.
+                       write (string.Format ("Time Elapsed {0}", (e.Timestamp - build_started).ToString ("hh\\:mm\\:ss\\.ff")));
+                       write ("");
+                       reset_color ();
+               }
+
+               public void BuildStartedHandler (object sender, BuildStartedEventArgs e)
+               {
+                       if (Verbosity == LoggerVerbosity.Quiet || Verbosity == LoggerVerbosity.Minimal)
+                               return;
+
+                       build_started = e.Timestamp;
+                       set_color (ConsoleColor.White);
+                       write (string.Format ("Build started {0}.", e.Timestamp.ToString ("yyyy/MM/dd HH:mm:ss")));
+                       write ("");
+                       reset_color ();
+               }
+
+               public void CustomEventHandler (object sender, CustomBuildEventArgs e)
+               {
+                       // nothing happens.
+               }
+
+               string GetLocation (int lineNumber, int columnNumber, int endLineNumber, int endColumnNumber)
+               {
+                       string line = null, col = null;
+                       if (lineNumber > 0) {
+                               if (endLineNumber > 0)
+                                       line = string.Format ("{0}-{1}", lineNumber, endLineNumber);
+                               else
+                                       line = lineNumber.ToString ();
+                       }
+                       if (columnNumber > 0) {
+                               if (endColumnNumber > 0)
+                                       col = string.Format ("{0}-{1}", columnNumber, endColumnNumber);
+                               else
+                                       col = columnNumber.ToString ();
+                       }
+                       string loc = line != null ? line + (col != null ? "," + col : null) : null;
+                       return string.IsNullOrEmpty (loc) ? string.Empty : '(' + loc + ')';
+               }
+               
+               public void ErrorHandler (object sender, BuildErrorEventArgs e)
+               {
+                       if (Verbosity == LoggerVerbosity.Quiet)
+                               return;
+
+                       set_color (ConsoleColor.Red);
+                       string loc = GetLocation (e.LineNumber, e.ColumnNumber, e.EndLineNumber, e.EndColumnNumber);
+                       write (string.Format ("{0}{1} : {2} error {3}: {4}", e.File, loc, e.Subcategory, e.Code, e.Message));
+                       write ("");
+                       reset_color ();
+               }
+               
+               public void MessageHandler (object sender, BuildMessageEventArgs e)
+               {
+                       switch (e.Importance) {
+                       case MessageImportance.High:
+                               set_color (ConsoleColor.White);
+                               break;
+                       case MessageImportance.Low:
+                       case MessageImportance.Normal:
+                               set_color (ConsoleColor.Gray);
+                               break;
+                       }
+                       write (e.Message);
+                       reset_color ();
+               }
+
+               public void ProjectFinishedHandler (object sender, ProjectFinishedEventArgs e)
+               {
+                       if (Verbosity == LoggerVerbosity.Quiet || Verbosity == LoggerVerbosity.Minimal)
+                               return;
+
+                       set_color (ConsoleColor.Cyan);
+                       write (e.Message);
+                       write ("");
+                       write ("");
+                       write ("");
+                       reset_color ();
+               }
+               
+               public void ProjectStartedHandler (object sender, ProjectStartedEventArgs e)
+               {
+                       if (Verbosity == LoggerVerbosity.Quiet || Verbosity == LoggerVerbosity.Minimal)
+                               return;
+
+                       set_color (ConsoleColor.Cyan);
+                       write ("__________________________________________________");
+                       write ("");
+                       write (string.Format ("Project \"{0}\" ({1} target(s)):", e.ProjectFile, e.TargetNames));
+                       write ("");
+                       write ("");
+                       write ("");
+                       reset_color ();
+               }
+               
+               public void TargetFinishedHandler (object sender, TargetFinishedEventArgs e)
+               {
+                       if (Verbosity != LoggerVerbosity.Detailed && Verbosity != LoggerVerbosity.Diagnostic)
+                               return;
+
+                       set_color (ConsoleColor.Cyan);
+                       write (e.Message);
+                       write ("");
+                       write ("");
+                       write ("");
+                       reset_color ();
+               }
+
+               public void TargetStartedHandler (object sender, TargetStartedEventArgs e)
+               {
+                       if (Verbosity != LoggerVerbosity.Detailed && Verbosity != LoggerVerbosity.Diagnostic)
+                               return;
+
+                       string message = Verbosity == LoggerVerbosity.Detailed ?
+                               string.Format ("Target \"{0}\":", e.TargetName) :
+                               string.Format ("Target \"{0}\" in file \"{1}\":", e.TargetName, e.TargetFile);
+
+                       set_color (ConsoleColor.Cyan);
+                       write (message);
+                       write ("");
+                       reset_color ();
+               }
+               
+               public void TaskFinishedHandler (object sender, TaskFinishedEventArgs e)
+               {
+                       if (Verbosity != LoggerVerbosity.Detailed && Verbosity != LoggerVerbosity.Diagnostic)
+                               return;
+
+                       set_color (ConsoleColor.Cyan);
+                       write ("  " + e.Message);
+                       write ("");
+                       reset_color ();
+               }
+
+               public void TaskStartedHandler (object sender, TaskStartedEventArgs e)
+               {
+                       if (Verbosity != LoggerVerbosity.Detailed && Verbosity != LoggerVerbosity.Diagnostic)
+                               return;
+
+                       set_color (ConsoleColor.Cyan);
+                       write ("  " + e.Message);
+                       write ("");
+                       reset_color ();
+               }
+               
+               public void WarningHandler (object sender, BuildWarningEventArgs e)
+               {
+                       if (Verbosity == LoggerVerbosity.Quiet)
+                               return;
+
+                       set_color (ConsoleColor.Yellow);
+                       string loc = GetLocation (e.LineNumber, e.ColumnNumber, e.EndLineNumber, e.EndColumnNumber);
+                       write (string.Format ("{0}{1} : {2} warning {3}: {4}", e.File, loc, e.Subcategory, e.Code, e.Message));
+                       write ("");
+                       reset_color ();
+               }
+       }
 }
 
index 331d29ab9b268324d5eb2890ec5e40dc5f8afc87..be9d2f0869d4502baa1550db92996541958386de 100644 (file)
 //
 
 using System;
+using Microsoft.Build.Framework;
 
 namespace Microsoft.Build.Logging
 {
-        public class FileLogger
-        {
-        }
+       public class FileLogger : ConsoleLogger
+       {
+               public override void Initialize (IEventSource eventSource)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override void Initialize (IEventSource eventSource, int nodeCount)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override void Shutdown ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
 }
 
index 0258038dccf7feb6250e0e620a6c9104d6477b9f..0c25ab811243d908f8eec34d32a72954a3537889 100644 (file)
@@ -1,2 +1,3 @@
 FunctionalTest.cs
 Microsoft.Build.Internal/CollectionFromEnumerableTest.cs
+Microsoft.Build.Logging/ConsoleLoggerTest.cs
diff --git a/mcs/class/Microsoft.Build/Test/Microsoft.Build.Logging/ConsoleLoggerTest.cs b/mcs/class/Microsoft.Build/Test/Microsoft.Build.Logging/ConsoleLoggerTest.cs
new file mode 100644 (file)
index 0000000..8dd705f
--- /dev/null
@@ -0,0 +1,72 @@
+
+using System;
+using System.IO;
+using Microsoft.Build.Framework;
+using Microsoft.Build.Logging;
+using NUnit.Framework;
+
+namespace MonoTests.Microsoft.Build.Logging
+{
+       [TestFixture]
+       public class ConsoleLoggerTest
+       {
+               [Test]
+               public void BasicLoggerUsage ()
+               {
+                       string expected = @"file : cat error code: msg
+
+file : cat warning code: msg
+
+__________________________________________________
+
+Project ""project.txt"" (target target(s)):
+
+
+
+Build started 2013/01/01 00:00:00.
+
+Target ""target"" in file ""target.txt"":
+
+  start task
+
+  finished task
+
+finished target
+
+
+
+finished project
+
+
+
+finished build
+
+
+
+Time Elapsed 00:00:00.01
+
+".Replace ("\r\n", "\n");
+                       var sw = new StringWriter();
+                       var e = new ConsoleLogger(LoggerVerbosity.Diagnostic, msg => sw.WriteLine(msg), c => {}, () => {});
+                       e.Verbosity = LoggerVerbosity.Diagnostic;
+                       e.ErrorHandler (null, new BuildErrorEventArgs ("cat", "code", "file", 0, 0, 0, 0, "msg", "help", "sender"));
+                       e.WarningHandler (null, new BuildWarningEventArgs ("cat", "code", "file", 0, 0, 0, 0, "msg", "help", "sender"));
+                       e.ProjectStartedHandler (null, new ProjectStartedEventArgs ("start project", "HELPME", "project.txt", "target", null, null));
+                       e.BuildStartedHandler (null, new BuildStartedEventArgs ("start build", "HELPME", new DateTime (2013, 1, 1)));
+                       e.TargetStartedHandler (null, new TargetStartedEventArgs ("start target", "HELPME", "target", "project.txt", "target.txt"/*, "parent"*/));
+                       e.TaskStartedHandler (null, new TaskStartedEventArgs ("start task", "HELPME", "project.txt", "task.txt", "task"));
+                       e.TaskFinishedHandler (null, new TaskFinishedEventArgs ("finished task", "HELPME", "project.txt", "task.txt", "task", false));
+                       e.TargetFinishedHandler (null, new TargetFinishedEventArgs ("finished target", "HELPME", "target", "project.txt", "target.txt", false));
+                       e.ProjectFinishedHandler (null, new ProjectFinishedEventArgs ("finished project", "HELPME", "project.txt", false));
+                       e.BuildFinishedHandler (null, new BuildFinishedEventArgs ("finished build", "HELPME", false, new DateTime (2013, 1, 1).AddMilliseconds (1)));
+
+                       e.CustomEventHandler(null, new MyCustomBuildEventArgs ());
+                       Assert.AreEqual (expected, sw.ToString ().Replace ("\r\n", "\n"), "#1");
+               }
+       }
+       
+       class MyCustomBuildEventArgs : CustomBuildEventArgs
+       {
+       }
+}
+
index 24ef1a6b6ef15258d681795016f16ef554e7dd90..4e7cbe61009a756da4167c285f0cfe63a8ceff3d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{56A7FA9E-7F2B-4BCB-8523-FD4EEE876BE0}</ProjectGuid>\r
+    <ProjectGuid>{342E1BD0-A935-4D49-B71E-ECDF0B42F90F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.CSharp-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_4_0.csproj">\r
-      <Project>{4FADEA1C-3DCC-4658-A411-EDEF0CF30884}</Project>\r
+      <Project>{F1E6D92C-D29F-47B0-876F-8C3C06584ABE}</Project>\r
       <Name>Mono.CSharp\Mono.CSharp-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ebb2726d274744f5fbe7e900ef02f8bce5f38b0c..b6dd26015d08781d97d852828f9ea2f3e715c358 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{94E8FEFF-9695-4F77-A8AB-85370336FE0D}</ProjectGuid>\r
+    <ProjectGuid>{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.CSharp-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_4_5.csproj">\r
-      <Project>{2D329C5C-24DA-4D80-B594-C996334758B6}</Project>\r
+      <Project>{D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}</Project>\r
       <Name>Mono.CSharp\Mono.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 760ae95e559ecb8cc9b60f2cd1dc3d9b673571d9..9afa20cd027043c945e4733f0b6a13977be7e0e8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B7E400C6-6EC0-450E-93B0-9DC703F00F58}</ProjectGuid>\r
+    <ProjectGuid>{AD0F3CEA-F068-423F-B910-65878912A1D7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.VisualC-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf41b4fa5e664dcc4a89765d4dce1bfded8529b9..95b79e1d8496608fac887ab1bff442f033c529e2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D842E04A-0E6C-4CDA-AF89-48F04951E2A4}</ProjectGuid>\r
+    <ProjectGuid>{A4F14C1A-9939-42A1-A903-B8795D9740FC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.VisualC-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a55079e647a2a3453f043944e7fb329668a05020..4272dced37081c2bdec6e429160b0d38461de5c8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ED516751-8649-48D5-B1F3-2C450B2E45D1}</ProjectGuid>\r
+    <ProjectGuid>{923568BE-5A8D-44A1-AA33-348679E6AAD7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.VisualC-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a4a69af6cf7a30bc03dadd2356d9ff5f1c7a7ba0..113bf85acfe2894c31b90309dc6d55e008a1404d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D512EBCC-A890-4E5F-BCD0-E45974159249}</ProjectGuid>\r
+    <ProjectGuid>{50FA72EE-33E9-4412-B196-AC98D058CEED}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Web.Infrastructure-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cb0397cdf72c02edf93ecc6b8cc580adf278d281..30012abc31ff0ead349e209c6087852488167f62 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ADFD4824-AEDB-445C-9B52-D0E0A9318B87}</ProjectGuid>\r
+    <ProjectGuid>{4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Microsoft.Web.Infrastructure-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4bbcb1c86d5dd46522d5dd095534653fac798fb4..52a9ddcf18b6e29cb92700158526effccfde6341 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{59B4B82A-3EBA-4BFB-991B-4A0171AFDCCE}</ProjectGuid>\r
+    <ProjectGuid>{DF667FE8-014C-45ED-8C22-0313404100AC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 290dcbd81afee5e0369d2c210534c2f76ef2c569..efd7d04b5a3eef309d5bc1703da004375fbc9a6a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1C7A171F-47F1-4B90-AA4D-F7E1901FBF67}</ProjectGuid>\r
+    <ProjectGuid>{1A42D692-D4F1-43D1-AA6C-FE67B44876E8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c1cca139f64fd5ede9ac98b96050fb01295f247d..1e925f77736a86fb40ebb8bf514504e227b0427d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{557C0FF1-A6FA-4B27-92A2-98A59CD740E1}</ProjectGuid>\r
+    <ProjectGuid>{E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5fd477f69e73f64517e0682731dfb4d720bff4c4..fe381f5d78abd1700c7cf8e574fe6949c3642e29 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3015919D-CD33-42C7-9AD1-142294CE3D21}</ProjectGuid>\r
+    <ProjectGuid>{4700FD69-E289-4D6D-9138-39853F3B216A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.C5\Mono.C5-net_2_0.csproj">\r
-      <Project>{59B4B82A-3EBA-4BFB-991B-4A0171AFDCCE}</Project>\r
+      <Project>{DF667FE8-014C-45ED-8C22-0313404100AC}</Project>\r
       <Name>Mono.C5\Mono.C5-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b2ed334eb752c5baac47c8a356bb771f3b27f69a..b5f428914155f26821fb87f70b7585ec34a2ed39 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{16CE88BE-E290-4DA8-8145-7FB72B1ED5FD}</ProjectGuid>\r
+    <ProjectGuid>{4C1A33B0-27C6-4149-99AB-152ED2F86C5C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.C5\Mono.C5-net_4_0.csproj">\r
-      <Project>{1C7A171F-47F1-4B90-AA4D-F7E1901FBF67}</Project>\r
+      <Project>{1A42D692-D4F1-43D1-AA6C-FE67B44876E8}</Project>\r
       <Name>Mono.C5\Mono.C5-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3332fb3618283bc9ddbf35cb45b68d28dfee6346..d448c18d64da70d0cded748e37cf740935fb5bb4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EF1AE0BA-B984-4149-8968-0337A4D9BDA4}</ProjectGuid>\r
+    <ProjectGuid>{9A686629-45E0-431D-975C-BEDF137D75F1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,169,219,414,1030,3001,3005,3006,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.C5-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.C5\Mono.C5-net_4_5.csproj">\r
-      <Project>{557C0FF1-A6FA-4B27-92A2-98A59CD740E1}</Project>\r
+      <Project>{E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}</Project>\r
       <Name>Mono.C5\Mono.C5-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b4d06a44f2464f6215c7f36e9a3d4dcd6f2f5482..14f903581a647b5baaa14ca9508c688cc2124aec 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5072B1FD-517D-43F5-AF79-7786ECBFE7F6}</ProjectGuid>\r
+    <ProjectGuid>{D5277143-9057-4917-BF87-3174B879574B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-net_2_0</OutputPath>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
+    <Compile Include="..\..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\mcs\anonymous.cs" />\r
     <Compile Include="..\..\mcs\argument.cs" />\r
     <Compile Include="..\..\mcs\assembly.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 19edab33f379d3c551edabaa0c60bf9de924f125..fd19e7cd557cbfe77a8ef1342b47c452a7a36513 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4FADEA1C-3DCC-4658-A411-EDEF0CF30884}</ProjectGuid>\r
+    <ProjectGuid>{F1E6D92C-D29F-47B0-876F-8C3C06584ABE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-net_4_0</OutputPath>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
+    <Compile Include="..\..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\mcs\anonymous.cs" />\r
     <Compile Include="..\..\mcs\argument.cs" />\r
     <Compile Include="..\..\mcs\assembly.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 93f197cb2d8ef90eb298671615e768e1291a7565..9152d75111c82bc63c81ba4ac9d2677bb2c606b6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2D329C5C-24DA-4D80-B594-C996334758B6}</ProjectGuid>\r
+    <ProjectGuid>{D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-net_4_5</OutputPath>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
     <Compile Include="..\..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
+    <Compile Include="..\..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\..\mcs\anonymous.cs" />\r
     <Compile Include="..\..\mcs\argument.cs" />\r
     <Compile Include="..\..\mcs\assembly.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 975d57ca707004e9332fd2258fce0d2846feda35..8dc278629b892a515e58c96ba054ce3107fe5788 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{535AF10C-9FC7-4480-974E-E456F2698FC0}</ProjectGuid>\r
+    <ProjectGuid>{DCF82205-34B5-4635-B991-BC555B364A63}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_2_0.csproj">\r
-      <Project>{5072B1FD-517D-43F5-AF79-7786ECBFE7F6}</Project>\r
+      <Project>{D5277143-9057-4917-BF87-3174B879574B}</Project>\r
       <Name>Mono.CSharp\Mono.CSharp-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 53488784b0dcb052247846a8d2a25422a496c508..0a4dafb36b75063021fdbfbf247a792ebd6f416f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{51A51F78-F87A-46A8-936A-A5C560EEA70A}</ProjectGuid>\r
+    <ProjectGuid>{FE92F3AB-4757-4FA7-8893-F01BAF6DBACE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_4_0.csproj">\r
-      <Project>{4FADEA1C-3DCC-4658-A411-EDEF0CF30884}</Project>\r
+      <Project>{F1E6D92C-D29F-47B0-876F-8C3C06584ABE}</Project>\r
       <Name>Mono.CSharp\Mono.CSharp-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8547b511c51ab3d33e2dc68549f7d2985abc3e2f..48f8a0ba25898f928ad17d8f544dd2b72aadf54b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{364E6D64-019A-40A1-90A2-BBFD6EF542C5}</ProjectGuid>\r
+    <ProjectGuid>{A05D5D7B-744A-4E62-9B38-4B5149AA955A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CSharp-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CSharp\Mono.CSharp-net_4_5.csproj">\r
-      <Project>{2D329C5C-24DA-4D80-B594-C996334758B6}</Project>\r
+      <Project>{D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}</Project>\r
       <Name>Mono.CSharp\Mono.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cd3c71ec615c18a96d699a008350c63daa199dc6..0bbd93782bad9ef8544de3ababc6b5860cc69dcb 100644 (file)
@@ -51,7 +51,7 @@
 ../../class/Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
 ../../class/Mono.CompilerServices.SymbolWriter/MonoSymbolTable.cs
 ../../class/Mono.CompilerServices.SymbolWriter/SourceMethodBuilder.cs
-../../class/corlib/Mono.Security.Cryptography/CryptoConvert.cs
+../../class/Mono.Security/Mono.Security.Cryptography/CryptoConvert.cs
 ../../build/common/Consts.cs
 ../../tools/monop/outline.cs
 ../../mcs/cs-parser.cs
index 977e9a5aa4ef059ecb4924eb89911be0bc6ae21d..9732b655d2031f5b893cdcb96da04b6cce4b85b4 100644 (file)
@@ -139,5 +139,16 @@ namespace MonoTests.EvaluatorTest
                        Evaluator.Run ("d.GetType ();");
                }
 #endif
+
+#if NET_4_5
+               [Test]
+               public void AwaitExpression ()
+               {
+                       Evaluator.WaitOnTask = true;
+                       var res = Evaluator.Evaluate("var res = await System.Threading.Tasks.Task.FromResult (1) + await System.Threading.Tasks.Task.FromResult (2);");
+                       res = Evaluator.Evaluate ("res;");
+                       Assert.AreEqual (3, res, "#1");
+               }
+#endif
        }
 }
\ No newline at end of file
index deb42002d028b8df434aeba34113c17f30e5fd02..7d5f9dfb9b05b5fff3d4f709cbb69e2ccd0bb432 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1F86EC48-A47E-4334-A761-93C0FADABD52}</ProjectGuid>\r
+    <ProjectGuid>{964A007A-4614-4FD0-A8AF-82E40B0ABCC7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cairo-net_2_0</OutputPath>\r
     <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
     <Compile Include=".\Mono.Cairo\Antialias.cs" />\r
     <Compile Include=".\Mono.Cairo\Cairo.cs" />\r
+    <Compile Include=".\Mono.Cairo\CairoDebug.cs" />\r
+    <Compile Include=".\Mono.Cairo\Color.cs" />\r
     <Compile Include=".\Mono.Cairo\Content.cs" />\r
     <Compile Include=".\Mono.Cairo\Context.cs" />\r
     <Compile Include=".\Mono.Cairo\DirectFBSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Distance.cs" />\r
     <Compile Include=".\Mono.Cairo\Extend.cs" />\r
     <Compile Include=".\Mono.Cairo\FillRule.cs" />\r
     <Compile Include=".\Mono.Cairo\Filter.cs" />\r
     <Compile Include=".\Mono.Cairo\Pattern.cs" />\r
     <Compile Include=".\Mono.Cairo\PatternType.cs" />\r
     <Compile Include=".\Mono.Cairo\PdfSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Point.cs" />\r
+    <Compile Include=".\Mono.Cairo\PointD.cs" />\r
     <Compile Include=".\Mono.Cairo\PSSurface.cs" />\r
     <Compile Include=".\Mono.Cairo\RadialGradient.cs" />\r
     <Compile Include=".\Mono.Cairo\Rectangle.cs" />\r
+    <Compile Include=".\Mono.Cairo\Region.cs" />\r
     <Compile Include=".\Mono.Cairo\ScaledFont.cs" />\r
     <Compile Include=".\Mono.Cairo\SolidPattern.cs" />\r
     <Compile Include=".\Mono.Cairo\Status.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 036a4c193572051534249d81be53feabca791869..bb93862b8827fc86311993ac881eeeecc2b06758 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{19CEEDCD-E943-4B82-90C6-AB9FD0BE91A1}</ProjectGuid>\r
+    <ProjectGuid>{A3449E31-54BC-4B39-BB00-3A85B2CBD1DC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cairo-net_4_0</OutputPath>\r
     <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
     <Compile Include=".\Mono.Cairo\Antialias.cs" />\r
     <Compile Include=".\Mono.Cairo\Cairo.cs" />\r
+    <Compile Include=".\Mono.Cairo\CairoDebug.cs" />\r
+    <Compile Include=".\Mono.Cairo\Color.cs" />\r
     <Compile Include=".\Mono.Cairo\Content.cs" />\r
     <Compile Include=".\Mono.Cairo\Context.cs" />\r
     <Compile Include=".\Mono.Cairo\DirectFBSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Distance.cs" />\r
     <Compile Include=".\Mono.Cairo\Extend.cs" />\r
     <Compile Include=".\Mono.Cairo\FillRule.cs" />\r
     <Compile Include=".\Mono.Cairo\Filter.cs" />\r
     <Compile Include=".\Mono.Cairo\Pattern.cs" />\r
     <Compile Include=".\Mono.Cairo\PatternType.cs" />\r
     <Compile Include=".\Mono.Cairo\PdfSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Point.cs" />\r
+    <Compile Include=".\Mono.Cairo\PointD.cs" />\r
     <Compile Include=".\Mono.Cairo\PSSurface.cs" />\r
     <Compile Include=".\Mono.Cairo\RadialGradient.cs" />\r
     <Compile Include=".\Mono.Cairo\Rectangle.cs" />\r
+    <Compile Include=".\Mono.Cairo\Region.cs" />\r
     <Compile Include=".\Mono.Cairo\ScaledFont.cs" />\r
     <Compile Include=".\Mono.Cairo\SolidPattern.cs" />\r
     <Compile Include=".\Mono.Cairo\Status.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5d201b0c82816d709de86c1a9d5c2f15b0092898..6e172471f4cab41262a71f60005ad00dc84222c8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}</ProjectGuid>\r
+    <ProjectGuid>{75114723-49E9-4351-A4FD-36DB9BC044E6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cairo-net_4_5</OutputPath>\r
     <Compile Include=".\Assembly\AssemblyInfo.cs" />\r
     <Compile Include=".\Mono.Cairo\Antialias.cs" />\r
     <Compile Include=".\Mono.Cairo\Cairo.cs" />\r
+    <Compile Include=".\Mono.Cairo\CairoDebug.cs" />\r
+    <Compile Include=".\Mono.Cairo\Color.cs" />\r
     <Compile Include=".\Mono.Cairo\Content.cs" />\r
     <Compile Include=".\Mono.Cairo\Context.cs" />\r
     <Compile Include=".\Mono.Cairo\DirectFBSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Distance.cs" />\r
     <Compile Include=".\Mono.Cairo\Extend.cs" />\r
     <Compile Include=".\Mono.Cairo\FillRule.cs" />\r
     <Compile Include=".\Mono.Cairo\Filter.cs" />\r
     <Compile Include=".\Mono.Cairo\Pattern.cs" />\r
     <Compile Include=".\Mono.Cairo\PatternType.cs" />\r
     <Compile Include=".\Mono.Cairo\PdfSurface.cs" />\r
+    <Compile Include=".\Mono.Cairo\Point.cs" />\r
+    <Compile Include=".\Mono.Cairo\PointD.cs" />\r
     <Compile Include=".\Mono.Cairo\PSSurface.cs" />\r
     <Compile Include=".\Mono.Cairo\RadialGradient.cs" />\r
     <Compile Include=".\Mono.Cairo\Rectangle.cs" />\r
+    <Compile Include=".\Mono.Cairo\Region.cs" />\r
     <Compile Include=".\Mono.Cairo\ScaledFont.cs" />\r
     <Compile Include=".\Mono.Cairo\SolidPattern.cs" />\r
     <Compile Include=".\Mono.Cairo\Status.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e95096f73f1a92c2a9e246f97ae3b6d5e49efe95..880cdf2adc32643ba361369c3aff048dc57a4591 100644 (file)
@@ -3,9 +3,12 @@
 ../../build/common/Locale.cs
 ./Mono.Cairo/Antialias.cs
 ./Mono.Cairo/Cairo.cs
+./Mono.Cairo/CairoDebug.cs
+./Mono.Cairo/Color.cs
 ./Mono.Cairo/Content.cs
 ./Mono.Cairo/Context.cs
 ./Mono.Cairo/DirectFBSurface.cs
+./Mono.Cairo/Distance.cs
 ./Mono.Cairo/Extend.cs
 ./Mono.Cairo/FillRule.cs
 ./Mono.Cairo/Filter.cs
 ./Mono.Cairo/Pattern.cs
 ./Mono.Cairo/PatternType.cs
 ./Mono.Cairo/PdfSurface.cs
+./Mono.Cairo/Point.cs
+./Mono.Cairo/PointD.cs
 ./Mono.Cairo/PSSurface.cs
 ./Mono.Cairo/RadialGradient.cs
 ./Mono.Cairo/Rectangle.cs
+./Mono.Cairo/Region.cs
 ./Mono.Cairo/ScaledFont.cs
 ./Mono.Cairo/SolidPattern.cs
 ./Mono.Cairo/Status.cs
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/CairoDebug.cs b/mcs/class/Mono.Cairo/Mono.Cairo/CairoDebug.cs
new file mode 100644 (file)
index 0000000..d694bbb
--- /dev/null
@@ -0,0 +1,82 @@
+//
+// CairoDebug.cs
+//
+// Author:
+//   Michael Hutchinson (mhutch@xamarin.com)
+//
+// Copyright (C) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+
+namespace Cairo {
+
+       static class CairoDebug
+       {
+               static System.Collections.Generic.Dictionary<IntPtr,string> traces;
+
+               public static readonly bool Enabled;
+
+               static CairoDebug ()
+               {
+                       var dbg = Environment.GetEnvironmentVariable ("MONO_CAIRO_DEBUG_DISPOSE");
+                       if (dbg == null)
+                               return;
+                       Enabled = true;
+                       traces = new System.Collections.Generic.Dictionary<IntPtr,string> ();
+               }
+
+               public static void OnAllocated (IntPtr obj)
+               {
+                       if (!Enabled)
+                               throw new InvalidOperationException ();
+
+                       traces[obj] = Environment.StackTrace;
+               }
+
+               public static void OnDisposed<T> (IntPtr obj, bool disposing)
+               {
+                       if (disposing && !Enabled)
+                               throw new InvalidOperationException ();
+
+                       if (Environment.HasShutdownStarted)
+                               return;
+
+                       if (!disposing) {
+                               Console.Error.WriteLine ("{0} is leaking, programmer is missing a call to Dispose", typeof(T).FullName);
+                               if (Enabled) {
+                                       string val;
+                                       if (traces.TryGetValue (obj, out val)) {
+                                               Console.Error.WriteLine ("Allocated from:");
+                                               Console.Error.WriteLine (val);
+                                       }
+                               } else {
+                                       Console.Error.WriteLine ("Set MONO_CAIRO_DEBUG_DISPOSE to track allocation traces");
+                               }
+                       }
+
+                       if (Enabled)
+                               traces.Remove (obj);
+               }
+       }
+
+}
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/Color.cs b/mcs/class/Mono.Cairo/Mono.Cairo/Color.cs
new file mode 100644 (file)
index 0000000..030089e
--- /dev/null
@@ -0,0 +1,75 @@
+//
+// Mono.Cairo.Context.cs
+//
+// Author:
+//   Duncan Mak (duncan@ximian.com)
+//   Miguel de Icaza (miguel@novell.com)
+//   Hisham Mardam Bey (hisham.mardambey@gmail.com)
+//   Alp Toker (alp@atoker.com)
+//
+// (C) Ximian Inc, 2003.
+// (C) Novell Inc, 2003.
+//
+// This is an OO wrapper API for the Cairo API.
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Cairo {
+
+       public struct Color
+       {
+               public Color(double r, double g, double b) : this (r, g, b, 1.0)
+               {
+               }
+
+               public Color(double r, double g, double b, double a)
+               {
+                       this.r = r;
+                       this.g = g;
+                       this.b = b;
+                       this.a = a;
+               }
+
+               double r, g, b, a;
+
+               public double R {
+                       get { return r; }
+                       set { r = value; }
+               }
+
+               public double G {
+                       get { return g; }
+                       set { g = value; }
+               }
+
+               public double B {
+                       get { return b; }
+                       set { b = value; }
+               }
+
+               public double A {
+                       get { return a; }
+                       set { a = value; }
+               }
+       }
+}
index 5d6b7679aac9f009547ab1f9fa87b92fc14693c9..1eff46c1ec19e6c177469166a5e07290c456db03 100644 (file)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -41,117 +41,18 @@ using Cairo;
 
 namespace Cairo {
 
-        public struct Point
-        {              
-               public Point (int x, int y)
-               {
-                       this.x = x;
-                       this.y = y;
-               }
-
-               int x, y;
-               public int X {
-                       get { return x; }
-                       set { x = value; }
-               }
-
-               public int Y {
-                       get { return y; }
-                       set { y = value; }
-               }
-       }
-          
-        public struct PointD
-        {
-               public PointD (double x, double y)
-               {
-                       this.x = x;
-                       this.y = y;
-               }
-
-               double x, y;
-               public double X {
-                       get { return x; }
-                       set { x = value; }
-               }
-
-               public double Y {
-                       get { return y; }
-                       set { y = value; }
-               }
-       }
-   
-
-        public struct Distance
-        {
-               public Distance (double dx, double dy)
-               {
-                       this.dx = dx;
-                       this.dy = dy;
-               }
-
-               double dx, dy;
-               public double Dx {
-                       get { return dx; }
-                       set { dx = value; }
-               }
-
-               public double Dy {
-                       get { return dy; }
-                       set { dy = value; }
-               }
-       }
-             
-        public struct Color
-        {              
-               public Color(double r, double g, double b) : this (r, g, b, 1.0)
-               {
-               }
-
-               public Color(double r, double g, double b, double a)
-               {
-                       this.r = r;
-                       this.g = g;
-                       this.b = b;
-                       this.a = a;
-               }
-
-               double r, g, b, a;
-               
-               public double R {
-                       get { return r; }
-                       set { r = value; }
-               }
-
-               public double G {
-                       get { return g; }
-                       set { g = value; }
-               }
-               
-               public double B {
-                       get { return b; }
-                       set { b = value; }
-               }
-
-               public double A {
-                       get { return a; }
-                       set { a = value; }
-               }
-               
-       }
-   
        [Obsolete ("Renamed Cairo.Context per suggestion from cairo binding guidelines.")]
        public class Graphics : Context {
                public Graphics (IntPtr state) : base (state) {}
                public Graphics (Surface surface) : base (surface) {}
        }
 
-        public class Context : IDisposable 
-        {
-                internal IntPtr state = IntPtr.Zero;
+       public class Context : IDisposable
+       {
+               IntPtr handle = IntPtr.Zero;
 
                static int native_glyph_size, c_compiler_long_size;
-               
+
                static Context ()
                {
                        //
@@ -165,7 +66,7 @@ namespace Cairo {
                        // is 32 bits
                        //
                        int ptr_size = Marshal.SizeOf (typeof (IntPtr));
-                       
+
                        PlatformID platform = Environment.OSVersion.Platform;
                        if (platform == PlatformID.Win32NT ||
                            platform == PlatformID.Win32S ||
@@ -179,558 +80,603 @@ namespace Cairo {
                                native_glyph_size = Marshal.SizeOf (typeof (Glyph));
                        }
                }
-               
-                public Context (Surface surface)
-                {
-                       state = NativeMethods.cairo_create (surface.Handle);
-                }
-               
-               public Context (IntPtr state)
+
+               public Context (Surface surface) : this (NativeMethods.cairo_create (surface.Handle), true)
                {
-                       this.state = state;
                }
-               
+
+
+               public Context (IntPtr handle, bool owner)
+               {
+                       this.handle = handle;
+                       if (!owner)
+                               NativeMethods.cairo_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
+               }
+
+               [Obsolete]
+               public Context (IntPtr state) : this (state, true)
+               {
+               }
+
                ~Context ()
                {
                        Dispose (false);
                }
 
-               void IDisposable.Dispose ()
+               public void Dispose ()
                {
                        Dispose (true);
                        GC.SuppressFinalize (this);
                }
-               
-                protected virtual void Dispose (bool disposing)
-                {
-                       if (!disposing){
-                               Console.Error.WriteLine ("Cairo.Context: called from finalization thread, programmer is missing a call to Dispose");
-                               return;
-                       }
-                       
-                       if (state == IntPtr.Zero)
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<Context> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
                                return;
 
-                       //Console.WriteLine ("Destroying");
-                        NativeMethods.cairo_destroy (state);
-                       state = IntPtr.Zero;
-                }
+                       NativeMethods.cairo_destroy (handle);
+                       handle = IntPtr.Zero;
 
-                public void Save ()
-                {
-                        NativeMethods.cairo_save (state);
-                }
+               }
 
-                public void Restore ()
-                {
-                        NativeMethods.cairo_restore (state);
-                }
+               public void Save ()
+               {
+                       NativeMethods.cairo_save (handle);
+               }
+
+               public void Restore ()
+               {
+                       NativeMethods.cairo_restore (handle);
+               }
 
                public Antialias Antialias {
-                       get { return NativeMethods.cairo_get_antialias (state); }
-                       set { NativeMethods.cairo_set_antialias (state, value); }
-               }
-                
-                public Cairo.Status Status {
-                        get {
-                                return NativeMethods.cairo_status (state);
-                        }
-                }
-               
-                public IntPtr Handle {
-                        get {
-                                return state;
-                        }
-                }
-                
-                public Cairo.Operator Operator {
-                        set {
-                                NativeMethods.cairo_set_operator (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_operator (state);
-                        }
-                }
-                
-                //FIXME: obsolete this property
-                public Cairo.Color Color {
-                       set { 
-                               NativeMethods.cairo_set_source_rgba (state, value.R, value.G, value.B, value.A);
-                       }                       
-                }
-
-               [Obsolete ("Use Color property")]
-                public Cairo.Color ColorRgb {
-                       set { 
+                       get { return NativeMethods.cairo_get_antialias (handle); }
+                       set { NativeMethods.cairo_set_antialias (handle, value); }
+               }
+
+               public Cairo.Status Status {
+                       get {
+                               return NativeMethods.cairo_status (handle);
+                       }
+               }
+
+               public IntPtr Handle {
+                       get {
+                               return handle;
+                       }
+               }
+
+               public Operator Operator {
+                       set {
+                               NativeMethods.cairo_set_operator (handle, value);
+                       }
+
+                       get {
+                               return NativeMethods.cairo_get_operator (handle);
+                       }
+               }
+
+               [Obsolete ("Use SetSourceRGBA method")]
+               public Color Color {
+                       set {
+                               NativeMethods.cairo_set_source_rgba (handle, value.R, value.G, value.B, value.A);
+                       }
+               }
+
+               [Obsolete ("Use SetSourceRGBA method")]
+               public Cairo.Color ColorRgb {
+                       set {
                                Color = new Color (value.R, value.G, value.B);
                        }
-                }              
+               }
 
-                public double Tolerance {
+               public double Tolerance {
                        get {
-                               return NativeMethods.cairo_get_tolerance (state);
-                       }
-
-                        set {
-                                NativeMethods.cairo_set_tolerance (state, value);
-                        }
-                }
-                
-                public Cairo.FillRule FillRule {
-                        set {
-                                NativeMethods.cairo_set_fill_rule (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_fill_rule (state);
-                        }
-                }
-                                        
-                public double LineWidth {
-                        set {
-                                NativeMethods.cairo_set_line_width (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_line_width (state);
-                        }
-                }
-
-                public Cairo.LineCap LineCap {
-                        set {
-                                NativeMethods.cairo_set_line_cap (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_line_cap (state);
-                        }
-                }
-
-                public Cairo.LineJoin LineJoin {
-                        set {
-                                NativeMethods.cairo_set_line_join (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_line_join (state);
-                        }
-                }
-
-                public void SetDash (double [] dashes, double offset)
-                {
-                        NativeMethods.cairo_set_dash (state, dashes, dashes.Length, offset);
-                }
-
-                public Pattern Pattern {
-                        set {
-                                NativeMethods.cairo_set_source (state, value.Pointer);
-                        }
-                       
+                               return NativeMethods.cairo_get_tolerance (handle);
+                       }
+
+                       set {
+                               NativeMethods.cairo_set_tolerance (handle, value);
+                       }
+               }
+
+               public Cairo.FillRule FillRule {
+                       set {
+                               NativeMethods.cairo_set_fill_rule (handle, value);
+                       }
+
                        get {
-                               return new Pattern (NativeMethods.cairo_get_source (state));
-                       }
-                }              
-               
-                public Pattern Source {
-                        set {
-                                NativeMethods.cairo_set_source (state, value.Pointer);
-                        }
-                       
+                               return NativeMethods.cairo_get_fill_rule (handle);
+                       }
+               }
+
+               public double LineWidth {
+                       set {
+                               NativeMethods.cairo_set_line_width (handle, value);
+                       }
+
                        get {
-                               return Pattern.Lookup (NativeMethods.cairo_get_source (state));
-                       }
-                }
-
-                public double MiterLimit {
-                        set {
-                                NativeMethods.cairo_set_miter_limit (state, value);
-                        }
-
-                        get {
-                                return NativeMethods.cairo_get_miter_limit (state);
-                        }
-                }
-
-                public PointD CurrentPoint {
-                        get {
-                                double x, y;
-                                NativeMethods.cairo_get_current_point (state, out x, out y);
-                                return new PointD (x, y);
-                        }
-                }
-
-                public Cairo.Surface Target {
-                        set {
-                               if (state != IntPtr.Zero)
-                                       NativeMethods.cairo_destroy (state);
-                               
-                               state = NativeMethods.cairo_create (value.Handle);
-                        }
-
-                        get {
-                                return Cairo.Surface.LookupExternalSurface (
-                                        NativeMethods.cairo_get_target (state));
-                        }
-                }
-
-               public Cairo.ScaledFont ScaledFont {
-                        set {
-                               NativeMethods.cairo_set_scaled_font (state, value.Handle);
-                        }
-
-                        get {
-                                return new ScaledFont (NativeMethods.cairo_get_scaled_font (state));
-                        }
-                }
+                               return NativeMethods.cairo_get_line_width (handle);
+                       }
+               }
+
+               public Cairo.LineCap LineCap {
+                       set {
+                               NativeMethods.cairo_set_line_cap (handle, value);
+                       }
+
+                       get {
+                               return NativeMethods.cairo_get_line_cap (handle);
+                       }
+               }
+
+               public Cairo.LineJoin LineJoin {
+                       set {
+                               NativeMethods.cairo_set_line_join (handle, value);
+                       }
+
+                       get {
+                               return NativeMethods.cairo_get_line_join (handle);
+                       }
+               }
+
+               public void SetDash (double [] dashes, double offset)
+               {
+                       NativeMethods.cairo_set_dash (handle, dashes, dashes.Length, offset);
+               }
+
+               [Obsolete("Use GetSource/GetSource")]
+               public Pattern Pattern {
+                       set {
+                               SetSource (value);
+                       }
+                       get {
+                               return GetSource ();
+                       }
+               }
+
+               //This is obsolete because it wasn't obvious it needed to be disposed
+               [Obsolete("Use GetSource/GetSource")]
+               public Pattern Source {
+                       set {
+                               SetSource (value);
+                       }
+                       get {
+                               return GetSource ();
+                       }
+               }
+
+               public void SetSource (Pattern source)
+               {
+                       NativeMethods.cairo_set_source (handle, source.Handle);
+               }
+
+               public Pattern GetSource ()
+               {
+                       var ptr = NativeMethods.cairo_get_source (handle);
+                       return Cairo.Pattern.Lookup (ptr, false);
+               }
+
+               public double MiterLimit {
+                       set {
+                               NativeMethods.cairo_set_miter_limit (handle, value);
+                       }
+
+                       get {
+                               return NativeMethods.cairo_get_miter_limit (handle);
+                       }
+               }
+
+               public PointD CurrentPoint {
+                       get {
+                               double x, y;
+                               NativeMethods.cairo_get_current_point (handle, out x, out y);
+                               return new PointD (x, y);
+                       }
+               }
+
+               [Obsolete ("Use GetTarget/SetTarget")]
+               public Cairo.Surface Target {
+                       set {
+                               if (handle != IntPtr.Zero)
+                                       NativeMethods.cairo_destroy (handle);
+
+                               handle = NativeMethods.cairo_create (value.Handle);
+                       }
+
+                       get {
+                               return GetTarget ();
+                       }
+               }
+
+               public Surface GetTarget ()
+               {
+                       return Surface.Lookup (NativeMethods.cairo_get_target (handle), false);
+               }
+
+               public void SetTarget (Surface target)
+               {
+                       if (handle != IntPtr.Zero)
+                               NativeMethods.cairo_destroy (handle);
+                       handle = NativeMethods.cairo_create (target.Handle);
+               }
+
+               [Obsolete("Use GetScaledFont/SetScaledFont")]
+               public ScaledFont ScaledFont {
+                       set {
+                               SetScaledFont (value);
+                       }
+
+                       get {
+                               return GetScaledFont ();
+                       }
+               }
+
+               public ScaledFont GetScaledFont ()
+               {
+                       return new ScaledFont (NativeMethods.cairo_get_scaled_font (handle), false);
+               }
+
+               public void SetScaledFont (ScaledFont font)
+               {
+                       NativeMethods.cairo_set_scaled_font (handle, font.Handle);
+               }
 
                public uint ReferenceCount {
-                       get { return NativeMethods.cairo_get_reference_count (state); }
+                       get { return NativeMethods.cairo_get_reference_count (handle); }
                }
 
                public void SetSourceRGB (double r, double g, double b)
                {
-                       NativeMethods.cairo_set_source_rgb (state, r, g, b);
+                       NativeMethods.cairo_set_source_rgb (handle, r, g, b);
                }
 
                public void SetSourceRGBA (double r, double g, double b, double a)
                {
-                       NativeMethods.cairo_set_source_rgba (state, r, g, b, a);
+                       NativeMethods.cairo_set_source_rgba (handle, r, g, b, a);
                }
 
                //[Obsolete ("Use SetSource method (with double parameters)")]
                public void SetSourceSurface (Surface source, int x, int y)
                {
-                       NativeMethods.cairo_set_source_surface (state, source.Handle, x, y);
+                       NativeMethods.cairo_set_source_surface (handle, source.Handle, x, y);
                }
 
                public void SetSource (Surface source, double x, double y)
                {
-                       NativeMethods.cairo_set_source_surface (state, source.Handle, x, y);
+                       NativeMethods.cairo_set_source_surface (handle, source.Handle, x, y);
                }
 
                public void SetSource (Surface source)
                {
-                       NativeMethods.cairo_set_source_surface (state, source.Handle, 0, 0);
+                       NativeMethods.cairo_set_source_surface (handle, source.Handle, 0, 0);
                }
-               
+
 #region Path methods
-                
-                public void NewPath ()
-                {
-                        NativeMethods.cairo_new_path (state);
-                }
+
+               public void NewPath ()
+               {
+                       NativeMethods.cairo_new_path (handle);
+               }
 
                public void NewSubPath ()
                {
-                       NativeMethods.cairo_new_sub_path (state);
+                       NativeMethods.cairo_new_sub_path (handle);
                }
-        
-                public void MoveTo (PointD p)
-                {
+
+               public void MoveTo (PointD p)
+               {
                        MoveTo (p.X, p.Y);
-                }
+               }
 
                public void MoveTo (double x, double y)
                {
-                        NativeMethods.cairo_move_to (state, x, y);
+                       NativeMethods.cairo_move_to (handle, x, y);
                }
-                
-                public void LineTo (PointD p)
+
+               public void LineTo (PointD p)
                {
                        LineTo (p.X, p.Y);
                }
-               
+
                public void LineTo (double x, double y)
-                {
-                        NativeMethods.cairo_line_to (state, x, y);
-                }
+               {
+                       NativeMethods.cairo_line_to (handle, x, y);
+               }
 
-                public void CurveTo (PointD p1, PointD p2, PointD p3)
+               public void CurveTo (PointD p1, PointD p2, PointD p3)
                {
                        CurveTo (p1.X, p1.Y, p2.X, p2.Y, p3.X, p3.Y);
                }
-                               
-                public void CurveTo (double x1, double y1, double x2, double y2, double x3, double y3)
-                {
-                        NativeMethods.cairo_curve_to (state, x1, y1, x2, y2, x3, y3);
-                }
 
-                public void RelMoveTo (Distance d)
+               public void CurveTo (double x1, double y1, double x2, double y2, double x3, double y3)
+               {
+                       NativeMethods.cairo_curve_to (handle, x1, y1, x2, y2, x3, y3);
+               }
+
+               public void RelMoveTo (Distance d)
                {
                        RelMoveTo (d.Dx, d.Dy);
                }
-               
-                public void RelMoveTo (double dx, double dy)
-                {
-                        NativeMethods.cairo_rel_move_to (state, dx, dy);
-                }
-               
-                public void RelLineTo (Distance d)
-                {
+
+               public void RelMoveTo (double dx, double dy)
+               {
+                       NativeMethods.cairo_rel_move_to (handle, dx, dy);
+               }
+
+               public void RelLineTo (Distance d)
+               {
                        RelLineTo (d.Dx, d.Dy);
-                }
-               
-                public void RelLineTo (double dx, double dy)
+               }
+
+               public void RelLineTo (double dx, double dy)
                {
-                        NativeMethods.cairo_rel_line_to (state, dx, dy);
+                       NativeMethods.cairo_rel_line_to (handle, dx, dy);
                }
-               
-                public void RelCurveTo (Distance d1, Distance d2, Distance d3)
+
+               public void RelCurveTo (Distance d1, Distance d2, Distance d3)
                {
                        RelCurveTo (d1.Dx, d1.Dy, d2.Dx, d2.Dy, d3.Dx, d3.Dy);
                }
 
-                public void RelCurveTo (double dx1, double dy1, double dx2, double dy2, double dx3, double dy3)
-                {
-                        NativeMethods.cairo_rel_curve_to (state, dx1, dy1, dx2, dy2, dx3, dy3); 
-                }
+               public void RelCurveTo (double dx1, double dy1, double dx2, double dy2, double dx3, double dy3)
+               {
+                       NativeMethods.cairo_rel_curve_to (handle, dx1, dy1, dx2, dy2, dx3, dy3);
+               }
+
+               public void Arc (double xc, double yc, double radius, double angle1, double angle2)
+               {
+                       NativeMethods.cairo_arc (handle, xc, yc, radius, angle1, angle2);
+               }
 
-                public void Arc (double xc, double yc, double radius, double angle1, double angle2)
-                {
-                        NativeMethods.cairo_arc (state, xc, yc, radius, angle1, angle2);
-                }
+               public void ArcNegative (double xc, double yc, double radius, double angle1, double angle2)
+               {
+                       NativeMethods.cairo_arc_negative (handle, xc, yc, radius, angle1, angle2);
+               }
 
-                public void ArcNegative (double xc, double yc, double radius, double angle1, double angle2)
-                {
-                        NativeMethods.cairo_arc_negative (state, xc, yc, radius, angle1, angle2);
-                }
-               
-                public void Rectangle (Rectangle rectangle)
+               public void Rectangle (Rectangle rectangle)
                {
                        Rectangle (rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height);
                }
 
-                public void Rectangle (PointD p, double width, double height)
+               public void Rectangle (PointD p, double width, double height)
                {
                        Rectangle (p.X, p.Y, width, height);
                }
 
-                public void Rectangle (double x, double y, double width, double height)
-                {
-                        NativeMethods.cairo_rectangle (state, x, y, width, height);
-                }
-                
-                public void ClosePath ()
-                {
-                        NativeMethods.cairo_close_path (state);
-                }
+               public void Rectangle (double x, double y, double width, double height)
+               {
+                       NativeMethods.cairo_rectangle (handle, x, y, width, height);
+               }
+
+               public void ClosePath ()
+               {
+                       NativeMethods.cairo_close_path (handle);
+               }
 
-               public Path CopyPath ()
+               public Path CopyPath ()
                {
-                       return new Path (NativeMethods.cairo_copy_path (state));
+                       return new Path (NativeMethods.cairo_copy_path (handle));
                }
 
                public Path CopyPathFlat ()
                {
-                       return new Path (NativeMethods.cairo_copy_path_flat (state));
+                       return new Path (NativeMethods.cairo_copy_path_flat (handle));
                }
 
                public void AppendPath (Path path)
                {
-                       NativeMethods.cairo_append_path (state, path.handle);
+                       NativeMethods.cairo_append_path (handle, path.Handle);
                }
-               
+
 #endregion
 
 #region Painting Methods
                public void Paint ()
                {
-                       NativeMethods.cairo_paint (state);
+                       NativeMethods.cairo_paint (handle);
                }
-               
+
                public void PaintWithAlpha (double alpha)
                {
-                       NativeMethods.cairo_paint_with_alpha (state, alpha);
+                       NativeMethods.cairo_paint_with_alpha (handle, alpha);
                }
-               
+
                public void Mask (Pattern pattern)
                {
-                       NativeMethods.cairo_mask (state, pattern.Pointer);
+                       NativeMethods.cairo_mask (handle, pattern.Handle);
                }
-               
+
                public void MaskSurface (Surface surface, double surface_x, double surface_y)
                {
-                       NativeMethods.cairo_mask_surface (state, surface.Handle, surface_x, surface_y);
+                       NativeMethods.cairo_mask_surface (handle, surface.Handle, surface_x, surface_y);
+               }
+
+               public void Stroke ()
+               {
+                       NativeMethods.cairo_stroke (handle);
+               }
+
+               public void StrokePreserve ()
+               {
+                       NativeMethods.cairo_stroke_preserve (handle);
                }
-               
-                public void Stroke ()
-                {
-                        NativeMethods.cairo_stroke (state);
-                }
-               
-                public void StrokePreserve ()
-                {
-                        NativeMethods.cairo_stroke_preserve (state);
-                }              
 
                public Rectangle StrokeExtents ()
                {
                        double x1, y1, x2, y2;
-                       NativeMethods.cairo_stroke_extents (state, out x1, out y1, out x2, out y2);
-                       return new Rectangle (x1, y1, x2, y2);
+                       NativeMethods.cairo_stroke_extents (handle, out x1, out y1, out x2, out y2);
+                       return new Rectangle (x1, y1, x2 - x1, y2 - y1);
                }
 
-                public void Fill ()
-                {
-                        NativeMethods.cairo_fill (state);
-                }
+               public void Fill ()
+               {
+                       NativeMethods.cairo_fill (handle);
+               }
 
-                public Rectangle FillExtents ()
+               public Rectangle FillExtents ()
                {
                        double x1, y1, x2, y2;
-                       NativeMethods.cairo_fill_extents (state, out x1, out y1, out x2, out y2);
-                       return new Rectangle (x1, y1, x2, y2);
+                       NativeMethods.cairo_fill_extents (handle, out x1, out y1, out x2, out y2);
+                       return new Rectangle (x1, y1, x2 - x1, y2 - y1);
                }
 
                public void FillPreserve ()
                {
-                       NativeMethods.cairo_fill_preserve (state);
+                       NativeMethods.cairo_fill_preserve (handle);
                }
 
 #endregion
 
-                public void Clip ()
-                {
-                        NativeMethods.cairo_clip (state);
-                }
+               public void Clip ()
+               {
+                       NativeMethods.cairo_clip (handle);
+               }
 
                public void ClipPreserve ()
                {
-                       NativeMethods.cairo_clip_preserve (state);
+                       NativeMethods.cairo_clip_preserve (handle);
                }
-               
+
                public void ResetClip ()
                {
-                       NativeMethods.cairo_reset_clip (state);
+                       NativeMethods.cairo_reset_clip (handle);
                }
-               
+
                public bool InStroke (double x, double y)
                {
-                       return NativeMethods.cairo_in_stroke (state, x, y);
+                       return NativeMethods.cairo_in_stroke (handle, x, y);
                }
 
                public bool InFill (double x, double y)
                {
-                       return NativeMethods.cairo_in_fill (state, x, y);
+                       return NativeMethods.cairo_in_fill (handle, x, y);
                }
 
                public Pattern PopGroup ()
                {
-                       return Pattern.Lookup (NativeMethods.cairo_pop_group (state));
+                       return Pattern.Lookup (NativeMethods.cairo_pop_group (handle), true);
                }
 
                public void PopGroupToSource ()
                {
-                       NativeMethods.cairo_pop_group_to_source (state);
+                       NativeMethods.cairo_pop_group_to_source (handle);
                }
 
                public void PushGroup ()
                {
-                       NativeMethods.cairo_push_group (state);
+                       NativeMethods.cairo_push_group (handle);
                }
 
                public void PushGroup (Content content)
                {
-                       NativeMethods.cairo_push_group_with_content (state, content);
+                       NativeMethods.cairo_push_group_with_content (handle, content);
                }
 
+               [Obsolete ("Use GetGroupTarget()")]
                public Surface GroupTarget {
                        get {
-                               IntPtr surface = NativeMethods.cairo_get_group_target (state);
-                               return Surface.LookupSurface (surface);
+                               return GetGroupTarget ();
                        }
                }
 
-                public void Rotate (double angle)
-                {
-                        NativeMethods.cairo_rotate (state, angle);
-                }
+               public Surface GetGroupTarget ()
+               {
+                       IntPtr surface = NativeMethods.cairo_get_group_target (handle);
+                       return Surface.Lookup (surface, false);
+               }
 
-                public void Scale (double sx, double sy)
-                {
-                        NativeMethods.cairo_scale (state, sx, sy);
-                }
+               public void Rotate (double angle)
+               {
+                       NativeMethods.cairo_rotate (handle, angle);
+               }
+
+               public void Scale (double sx, double sy)
+               {
+                       NativeMethods.cairo_scale (handle, sx, sy);
+               }
+
+               public void Translate (double tx, double ty)
+               {
+                       NativeMethods.cairo_translate (handle, tx, ty);
+               }
 
-                public void Translate (double tx, double ty)
-                {
-                        NativeMethods.cairo_translate (state, tx, ty);
-                }
-                
                public void Transform (Matrix m)
                {
-                       NativeMethods.cairo_transform (state, m);
+                       NativeMethods.cairo_transform (handle, m);
                }
-                       
-#region Methods that will become obsolete in the long term, after 1.2.5 becomes wildly available
-               
-               //[Obsolete("Use UserToDevice instead")]
+
+               [Obsolete("Use UserToDevice instead")]
                public void TransformPoint (ref double x, ref double y)
                {
-                       NativeMethods.cairo_user_to_device (state, ref x, ref y);
+                       NativeMethods.cairo_user_to_device (handle, ref x, ref y);
                }
-               
-               //[Obsolete("Use UserToDeviceDistance instead")]
-                public void TransformDistance (ref double dx, ref double dy) 
+
+               [Obsolete("Use UserToDeviceDistance instead")]
+               public void TransformDistance (ref double dx, ref double dy)
                {
-                       NativeMethods.cairo_user_to_device_distance (state, ref dx, ref dy);
+                       NativeMethods.cairo_user_to_device_distance (handle, ref dx, ref dy);
                }
-                       
-               //[Obsolete("Use InverseTransformPoint instead")]
+
+               [Obsolete("Use InverseTransformPoint instead")]
                public void InverseTransformPoint (ref double x, ref double y)
                {
-                       NativeMethods.cairo_device_to_user (state, ref x, ref y);
+                       NativeMethods.cairo_device_to_user (handle, ref x, ref y);
                }
 
-               //[Obsolete("Use DeviceToUserDistance instead")]
+               [Obsolete("Use DeviceToUserDistance instead")]
                public void InverseTransformDistance (ref double dx, ref double dy)
                {
-                       NativeMethods.cairo_device_to_user_distance (state, ref dx, ref dy);
+                       NativeMethods.cairo_device_to_user_distance (handle, ref dx, ref dy);
                }
-#endregion
-               
+
                public void UserToDevice (ref double x, ref double y)
                {
-                       NativeMethods.cairo_user_to_device (state, ref x, ref y);
+                       NativeMethods.cairo_user_to_device (handle, ref x, ref y);
                }
-               
-                public void UserToDeviceDistance (ref double dx, ref double dy) 
+
+               public void UserToDeviceDistance (ref double dx, ref double dy)
                {
-                       NativeMethods.cairo_user_to_device_distance (state, ref dx, ref dy);
+                       NativeMethods.cairo_user_to_device_distance (handle, ref dx, ref dy);
                }
-                       
+
                public void DeviceToUser (ref double x, ref double y)
                {
-                       NativeMethods.cairo_device_to_user (state, ref x, ref y);
+                       NativeMethods.cairo_device_to_user (handle, ref x, ref y);
                }
 
                public void DeviceToUserDistance (ref double dx, ref double dy)
                {
-                       NativeMethods.cairo_device_to_user_distance (state, ref dx, ref dy);
+                       NativeMethods.cairo_device_to_user_distance (handle, ref dx, ref dy);
                }
-               
-                public Cairo.Matrix Matrix {
-                        set {
-                                NativeMethods.cairo_set_matrix (state, value);
-                        }
 
-                        get {
+               public Matrix Matrix {
+                       set {
+                               NativeMethods.cairo_set_matrix (handle, value);
+                       }
+
+                       get {
                                Matrix m = new Matrix();
-                               NativeMethods.cairo_get_matrix (state, m);
-                                return m;
-                        }
-                }
+                               NativeMethods.cairo_get_matrix (handle, m);
+                               return m;
+                       }
+               }
 
                public void SetFontSize (double scale)
                {
-                       NativeMethods.cairo_set_font_size (state, scale);
+                       NativeMethods.cairo_set_font_size (handle, scale);
                }
 
                public void IdentityMatrix ()
                {
-                       NativeMethods.cairo_identity_matrix (state);
+                       NativeMethods.cairo_identity_matrix (handle);
                }
-               
+
                [Obsolete ("Use SetFontSize() instead.")]
                public void FontSetSize (double scale)
                {
@@ -741,23 +687,23 @@ namespace Cairo {
                public double FontSize {
                        set { SetFontSize (value); }
                }
-               
+
                public Matrix FontMatrix {
                        get {
                                Matrix m;
-                               NativeMethods.cairo_get_font_matrix (state, out m);
+                               NativeMethods.cairo_get_font_matrix (handle, out m);
                                return m;
                        }
-                       set { NativeMethods.cairo_set_font_matrix (state, value); }
+                       set { NativeMethods.cairo_set_font_matrix (handle, value); }
                }
 
                public FontOptions FontOptions {
                        get {
                                FontOptions options = new FontOptions ();
-                               NativeMethods.cairo_get_font_options (state, options.Handle);
+                               NativeMethods.cairo_get_font_options (handle, options.Handle);
                                return options;
                        }
-                       set { NativeMethods.cairo_set_font_options (state, value.Handle); }
+                       set { NativeMethods.cairo_set_font_options (handle, value.Handle); }
                }
 
                [StructLayout(LayoutKind.Sequential)]
@@ -787,7 +733,7 @@ namespace Cairo {
                        } else {
                                foreach (Glyph g in glyphs){
                                        NativeGlyph_4byte_longs n = new NativeGlyph_4byte_longs (g);
-                                       
+
                                        Marshal.StructureToPtr (n, (IntPtr)pos, false);
                                        pos += native_glyph_size;
                                }
@@ -796,52 +742,52 @@ namespace Cairo {
                        return dest;
                }
 
-                public void ShowGlyphs (Glyph[] glyphs)
+               public void ShowGlyphs (Glyph[] glyphs)
                {
-                        IntPtr ptr;
+                       IntPtr ptr;
 
-                        ptr = FromGlyphToUnManagedMemory (glyphs);
-                        
-                        NativeMethods.cairo_show_glyphs (state, ptr, glyphs.Length);
+                       ptr = FromGlyphToUnManagedMemory (glyphs);
 
-                        Marshal.FreeHGlobal (ptr);             
+                       NativeMethods.cairo_show_glyphs (handle, ptr, glyphs.Length);
+
+                       Marshal.FreeHGlobal (ptr);
                }
 
                [Obsolete("The matrix argument was never used, use ShowGlyphs(Glyphs []) instead")]
-                public void ShowGlyphs (Matrix matrix, Glyph[] glyphs)
-                {
+               public void ShowGlyphs (Matrix matrix, Glyph[] glyphs)
+               {
                        ShowGlyphs (glyphs);
-                }
+               }
 
                [Obsolete("The matrix argument was never used, use GlyphPath(Glyphs []) instead")]
-                public void GlyphPath (Matrix matrix, Glyph[] glyphs)
-                {
+               public void GlyphPath (Matrix matrix, Glyph[] glyphs)
+               {
                        GlyphPath (glyphs);
                }
 
                public void GlyphPath (Glyph[] glyphs)
                {
-                        IntPtr ptr;
+                       IntPtr ptr;
+
+                       ptr = FromGlyphToUnManagedMemory (glyphs);
 
-                        ptr = FromGlyphToUnManagedMemory (glyphs);
+                       NativeMethods.cairo_glyph_path (handle, ptr, glyphs.Length);
 
-                        NativeMethods.cairo_glyph_path (state, ptr, glyphs.Length);
+                       Marshal.FreeHGlobal (ptr);
 
-                        Marshal.FreeHGlobal (ptr);
+               }
 
-                }
+               public FontExtents FontExtents {
+                       get {
+                               FontExtents f_extents;
+                               NativeMethods.cairo_font_extents (handle, out f_extents);
+                               return f_extents;
+                       }
+               }
 
-                public FontExtents FontExtents {
-                        get {
-                                FontExtents f_extents;
-                                NativeMethods.cairo_font_extents (state, out f_extents);
-                                return f_extents;
-                        }
-                }
-               
                public void CopyPage ()
                {
-                       NativeMethods.cairo_copy_page (state);
+                       NativeMethods.cairo_copy_page (handle);
                }
 
                [Obsolete ("Use SelectFontFace() instead.")]
@@ -850,24 +796,34 @@ namespace Cairo {
                        SelectFontFace (family, slant, weight);
                }
 
+               [Obsolete("Use GetFontFace/SetFontFace")]
                public FontFace ContextFontFace {
                        get {
-                               return Cairo.FontFace.Lookup (NativeMethods.cairo_get_font_face (state));
+                               return GetContextFontFace ();
                        }
-
                        set {
-                               NativeMethods.cairo_set_font_face (state, value == null ? IntPtr.Zero : value.Handle);
+                               SetContextFontFace (value);
                        }
                }
-               
+
+               public FontFace GetContextFontFace ()
+               {
+                       return Cairo.FontFace.Lookup (NativeMethods.cairo_get_font_face (handle), false);
+               }
+
+               public void SetContextFontFace (FontFace value)
+               {
+                       NativeMethods.cairo_set_font_face (handle, value == null ? IntPtr.Zero : value.Handle);
+               }
+
                public void SelectFontFace (string family, FontSlant slant, FontWeight weight)
                {
-                       NativeMethods.cairo_select_font_face (state, family, slant, weight);
+                       NativeMethods.cairo_select_font_face (handle, family, slant, weight);
                }
 
                public void ShowPage ()
                {
-                       NativeMethods.cairo_show_page (state);
+                       NativeMethods.cairo_show_page (handle);
                }
 
                private static byte[] TerminateUtf8(byte[] utf8)
@@ -891,35 +847,35 @@ namespace Cairo {
 
                public void ShowText(string str)
                {
-                       NativeMethods.cairo_show_text(state, TerminateUtf8(str));
+                       NativeMethods.cairo_show_text (handle, TerminateUtf8(str));
                }
 
                public void ShowText(byte[] utf8)
                {
-                       NativeMethods.cairo_show_text(state, TerminateUtf8(utf8));
+                       NativeMethods.cairo_show_text (handle, TerminateUtf8(utf8));
                }
 
                public void TextPath(string str)
                {
-                       NativeMethods.cairo_text_path(state, TerminateUtf8(str));
+                       NativeMethods.cairo_text_path (handle, TerminateUtf8(str));
                }
 
                public void TextPath(byte[] utf8)
                {
-                       NativeMethods.cairo_text_path(state, TerminateUtf8(utf8));
+                       NativeMethods.cairo_text_path (handle, TerminateUtf8(utf8));
                }
 
                public TextExtents TextExtents(string s)
                {
                        TextExtents extents;
-                       NativeMethods.cairo_text_extents(state, TerminateUtf8(s), out extents);
+                       NativeMethods.cairo_text_extents (handle, TerminateUtf8(s), out extents);
                        return extents;
                }
 
                public TextExtents TextExtents(byte[] utf8)
                {
                        TextExtents extents;
-                       NativeMethods.cairo_text_extents(state, TerminateUtf8(utf8), out extents);
+                       NativeMethods.cairo_text_extents (handle, TerminateUtf8(utf8), out extents);
                        return extents;
                }
 
@@ -929,11 +885,11 @@ namespace Cairo {
 
                        TextExtents extents;
 
-                       NativeMethods.cairo_glyph_extents (state, ptr, glyphs.Length, out extents);
+                       NativeMethods.cairo_glyph_extents (handle, ptr, glyphs.Length, out extents);
 
                        Marshal.FreeHGlobal (ptr);
 
                        return extents;
                }
-        }
+       }
 }
index a2ae169e73221254baa6a586009239a889d5da79..afa57b7dff1f4b210e4d353c3227b28569dda0ef 100644 (file)
@@ -36,11 +36,8 @@ namespace Cairo {
                }
 
                public DirectFBSurface (IntPtr dfb, IntPtr dfb_surface)
+                       : base (NativeMethods.cairo_directfb_surface_create (dfb, dfb_surface), true)
                {
-                       surface = NativeMethods.cairo_directfb_surface_create (dfb, dfb_surface);
-                       lock (surfaces.SyncRoot) {
-                               surfaces [surface] = this;
-                       }
                }
        }
 }
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/Distance.cs b/mcs/class/Mono.Cairo/Mono.Cairo/Distance.cs
new file mode 100644 (file)
index 0000000..7cba372
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// Mono.Cairo.Context.cs
+//
+// Author:
+//   Duncan Mak (duncan@ximian.com)
+//   Miguel de Icaza (miguel@novell.com)
+//   Hisham Mardam Bey (hisham.mardambey@gmail.com)
+//   Alp Toker (alp@atoker.com)
+//
+// (C) Ximian Inc, 2003.
+// (C) Novell Inc, 2003.
+//
+// This is an OO wrapper API for the Cairo API.
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Cairo {
+
+       public struct Distance
+       {
+               public Distance (double dx, double dy)
+               {
+                       this.dx = dx;
+                       this.dy = dy;
+               }
+
+               double dx, dy;
+               public double Dx {
+                       get { return dx; }
+                       set { dx = value; }
+               }
+
+               public double Dy {
+                       get { return dy; }
+                       set { dy = value; }
+               }
+       }
+}
index efa479b6d52dfd756d49abc84f23ca939ea892c6..19d8163c35fea4f0f8b9d17db74b6158d01a2f21 100644 (file)
@@ -38,42 +38,48 @@ namespace Cairo
        {
                IntPtr handle;
 
-               internal static FontFace Lookup (IntPtr handle)
+               internal static FontFace Lookup (IntPtr handle, bool owner)
                {
                        if (handle == IntPtr.Zero)
                                return null;
-
-                       NativeMethods.cairo_font_face_reference (handle);
-
-                       return new FontFace (handle);
+                       return new FontFace (handle, owner);
                }
 
                ~FontFace ()
                {
-                       // Since Cairo is not thread safe, we can not unref the
-                       // font_face here, the programmer must do this with Dispose
-
-                       Console.Error.WriteLine ("Programmer forgot to call Dispose on the FontFace");
                        Dispose (false);
                }
 
                public void Dispose ()
                {
                        Dispose (true);
+                       GC.SuppressFinalize (this);
                }
 
                protected virtual void Dispose (bool disposing)
                {
-                       if (disposing)
-                               NativeMethods.cairo_font_face_destroy (handle);
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<FontFace> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
+                               return;
+
+                       NativeMethods.cairo_font_face_destroy (handle);
                        handle = IntPtr.Zero;
-                       GC.SuppressFinalize (this);
                }
-               
-               // TODO: make non-public when all entry points are complete in binding
-               public FontFace (IntPtr handle)
+
+               [Obsolete]
+               public FontFace (IntPtr handle) : this (handle, true)
+               {
+               }
+
+               public FontFace (IntPtr handle, bool owned)
                {
                        this.handle = handle;
+                       if (!owned)
+                               NativeMethods.cairo_font_face_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
                }
 
                public IntPtr Handle {
index 476910f1b1d35396394f8c83430a0366139aa88f..5269d54dfac2ca504e8a29cf3c883292292fed00 100644 (file)
@@ -33,11 +33,9 @@ namespace Cairo
        public class FontOptions : IDisposable
        {
                IntPtr handle;
-               bool disposed;
 
-               public FontOptions ()
+               public FontOptions () : this (NativeMethods.cairo_font_options_create ())
                {
-                       handle = NativeMethods.cairo_font_options_create ();
                }
 
                ~FontOptions ()
@@ -48,6 +46,8 @@ namespace Cairo
                internal FontOptions (IntPtr handle)
                {
                        this.handle = handle;
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
                }
 
                public FontOptions Copy ()
@@ -55,9 +55,10 @@ namespace Cairo
                        return new FontOptions (NativeMethods.cairo_font_options_copy (handle));
                }
 
+               [Obsolete ("Use Dispose()")]
                public void Destroy ()
                {
-                       NativeMethods.cairo_font_options_destroy (handle);
+                       Dispose ();
                }
 
                public void Dispose ()
@@ -66,13 +67,16 @@ namespace Cairo
                        GC.SuppressFinalize (this);
                }
 
-               private void Dispose (bool disposing)
+               protected virtual void Dispose (bool disposing)
                {
-                       if (!disposed) {
-                               Destroy ();
-                               handle = IntPtr.Zero;
-                       }
-                       disposed = true;
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<FontOptions> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
+                               return;
+
+                       NativeMethods.cairo_font_options_destroy (handle);
+                       handle = IntPtr.Zero;
                }
 
                public static bool operator == (FontOptions options, FontOptions other)
index a8cd700a532358aa181f78ab5cae56fec3e4db46..6da1ac6a934e78424b20d4f1fadf55eb6b6c59df 100644 (file)
@@ -36,11 +36,8 @@ namespace Cairo {
                }
 
                public GlitzSurface (IntPtr glitz_surface)
+                       : base (NativeMethods.cairo_glitz_surface_create (glitz_surface), true)
                {
-                       surface = NativeMethods.cairo_glitz_surface_create (glitz_surface);
-                       lock (surfaces.SyncRoot) {
-                               surfaces [surface] = this;
-                       }
                }
        }
 }
index c15980b071c2a5448a38ed8649eab093c5d5922d..0fb617e421fa7c092508982d140ad13b63197b72 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.Gradient.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 using System;
 
 namespace Cairo {
-   
+
        public class Gradient : Pattern
        {
-               protected Gradient (IntPtr handle) : base (handle)
+               protected Gradient (IntPtr handle, bool owned) : base (handle, owned)
                {
                }
 
+               [Obsolete]
                protected Gradient ()
                {
                }
@@ -44,20 +45,20 @@ namespace Cairo {
                public int ColorStopCount {
                        get {
                                int cnt;
-                               NativeMethods.cairo_pattern_get_color_stop_count (pattern, out cnt);
+                               NativeMethods.cairo_pattern_get_color_stop_count (Handle, out cnt);
                                return cnt;
                        }
                }
 
-               public Status AddColorStop (double offset, Cairo.Color c)
+               public Status AddColorStop (double offset, Color c)
                {
-                       NativeMethods.cairo_pattern_add_color_stop_rgba (pattern, offset, c.R, c.G, c.B, c.A);
+                       NativeMethods.cairo_pattern_add_color_stop_rgba (Handle, offset, c.R, c.G, c.B, c.A);
                        return Status;
                }
 
-               public Status AddColorStopRgb (double offset, Cairo.Color c)
+               public Status AddColorStopRgb (double offset, Color c)
                {
-                       NativeMethods.cairo_pattern_add_color_stop_rgb (pattern, offset, c.R, c.G, c.B);
+                       NativeMethods.cairo_pattern_add_color_stop_rgb (Handle, offset, c.R, c.G, c.B);
                        return Status;
                }
        }
index 659833a7cc48918d8fedf74753724e713ce5dbd7..98143fe8e22543efeda94ddba4631f6ea29b1efd 100644 (file)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -37,60 +37,49 @@ using System.Runtime.InteropServices;
 
 namespace Cairo {
 
-        public class ImageSurface : Surface
-        {
+       public class ImageSurface : Surface
+       {
                internal ImageSurface (IntPtr handle, bool owns) : base (handle, owns)
                {
                }
 
                public ImageSurface (Format format, int width, int height)
+                       : base (NativeMethods.cairo_image_surface_create (format, width, height), true)
                {
-                       surface = NativeMethods.cairo_image_surface_create (format, width, height);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
-               
+
                [Obsolete ("Use ImageSurface (byte[] data, Cairo.Format format, int width, int height, int stride)")]
-               public ImageSurface (ref byte[] data, Cairo.Format format, int width, int height, int stride) :this (data, format, width, height, stride)
+               public ImageSurface (ref byte[] data, Cairo.Format format, int width, int height, int stride)
+                       : this (data, format, width, height, stride)
                {
                }
 
-               public ImageSurface (byte[] data, Cairo.Format format, int width, int height, int stride)
+               public ImageSurface (byte[] data, Format format, int width, int height, int stride)
+                       : base (NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride), true)
                {
-                       surface = NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
 
-               public ImageSurface (IntPtr data, Cairo.Format format, int width, int height, int stride)
+               public ImageSurface (IntPtr data, Format format, int width, int height, int stride)
+                       : base (NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride), true)
                {
-                       surface = NativeMethods.cairo_image_surface_create_for_data (data, format, width, height, stride);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
-               
+
                public ImageSurface (string filename)
+                       : base (NativeMethods.cairo_image_surface_create_from_png (filename), true)
                {
-                       surface = NativeMethods.cairo_image_surface_create_from_png (filename);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
-               
+
                public int Width {
-                       get { return NativeMethods.cairo_image_surface_get_width (surface); }
+                       get { return NativeMethods.cairo_image_surface_get_width (Handle); }
                }
-               
+
                public int Height {
-                       get { return NativeMethods.cairo_image_surface_get_height (surface); }
+                       get { return NativeMethods.cairo_image_surface_get_height (Handle); }
                }
-               
+
                public byte[] Data {
                        get {
-                               IntPtr ptr = NativeMethods.cairo_image_surface_get_data (surface);
+                               IntPtr ptr = NativeMethods.cairo_image_surface_get_data (Handle);
                                int length = Height * Stride;
                                byte[] data = new byte[length];
                                Marshal.Copy (ptr, data, 0, length);
@@ -100,16 +89,16 @@ namespace Cairo {
 
                public IntPtr DataPtr {
                        get {
-                               return NativeMethods.cairo_image_surface_get_data (surface);
+                               return NativeMethods.cairo_image_surface_get_data (Handle);
                        }
                }
 
                public Format Format {
-                       get { return NativeMethods.cairo_image_surface_get_format (surface); }
+                       get { return NativeMethods.cairo_image_surface_get_format (Handle); }
                }
 
                public int Stride {
-                       get { return NativeMethods.cairo_image_surface_get_stride (surface); }
+                       get { return NativeMethods.cairo_image_surface_get_stride (Handle); }
                }
        }
 }
index 58d8e21ab8a8024a50362e0a461ce926b339b776..85fdea84a2c53c4252576db7c424c7532b6d3d54 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.LinearGradient.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 using System;
 
 namespace Cairo {
-   
+
        public class LinearGradient : Gradient
        {
-               internal LinearGradient (IntPtr handle) : base (handle)
+               internal LinearGradient (IntPtr handle, bool owned) : base (handle, owned)
                {
                }
 
                public LinearGradient (double x0, double y0, double x1, double y1)
+                       : base (NativeMethods.cairo_pattern_create_linear (x0, y0, x1, y1), true)
                {
-                       pattern = NativeMethods.cairo_pattern_create_linear (x0, y0, x1, y1);
                }
 
                public PointD[] LinearPoints {
-                        get {
+                       get {
                                double x0, y0, x1, y1;
                                PointD[] points = new PointD [2];
 
-                               NativeMethods.cairo_pattern_get_linear_points (pattern, out x0, out y0, out x1, out y1);
+                               NativeMethods.cairo_pattern_get_linear_points (Handle, out x0, out y0, out x1, out y1);
 
                                points[0] = new PointD (x0, y0);
                                points[1] = new PointD (x1, y1);
                                return points;
-                        }
-                }
-
+                       }
+               }
        }
 }
 
index 79e1f359e1dd35db9b18688311ddf22e3371c025..83ffce49d2b2663c06239614fbf12535fd2546fd 100644 (file)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -36,110 +36,110 @@ using System.Runtime.InteropServices;
 
 namespace Cairo {
 
-       [StructLayout(LayoutKind.Sequential)]
-        public class Matrix : ICloneable
-        {              
+       [StructLayout(LayoutKind.Sequential)]
+       public class Matrix : ICloneable
+       {
                public double Xx;
                public double Yx;
-               public double Xy; 
+               public double Xy;
                public double Yy;
-               public double X0; 
+               public double X0;
                public double Y0;
 
                public Matrix (double xx, double yx, double xy, double yy,
                                double x0, double y0)
-               {               
+               {
                        this.Xx = xx; this.Yx = yx; this.Xy = xy;
                        this.Yy = yy; this.X0 = x0; this.Y0 = y0;
                }
-                
-                public Matrix ()
+
+               public Matrix ()
                {
                        this.InitIdentity ();
                }
-               
+
                public bool IsIdentity ()
                {
                        return (this == new Matrix ());
                }
-                       
-                public void InitIdentity ()
-                {
-                       // this.Init(1,0,0,1,0,0);
-                       NativeMethods.cairo_matrix_init_identity (this);
-                }
-               
+
+               public void InitIdentity ()
+               {
+                       // this.Init(1,0,0,1,0,0);
+                       NativeMethods.cairo_matrix_init_identity (this);
+               }
+
                public void Init (double xx, double yx, double xy, double yy,
                                  double x0, double y0)
                {
                        this.Xx = xx; this.Yx = yx; this.Xy = xy;
                        this.Yy = yy; this.X0 = x0; this.Y0 = y0;
                }
-               
+
                public void InitTranslate (double tx, double ty)
-               {               
+               {
                        //this.Init (1, 0, 0, 1, tx, ty);
                        NativeMethods.cairo_matrix_init_translate (this, tx, ty);
-               }               
-                                              
+               }
+
                public void Translate (double tx, double ty)
                {
                        NativeMethods.cairo_matrix_translate (this, tx, ty);
                }
-               
-                public void InitScale (double sx, double sy)
-                {
+
+               public void InitScale (double sx, double sy)
+               {
                        //this.Init (sx, 0, 0, sy, 0, 0);
-                       NativeMethods.cairo_matrix_init_scale (this, sx, sy);
-                }              
-               
-                public void Scale (double sx, double sy)
-                {
+                       NativeMethods.cairo_matrix_init_scale (this, sx, sy);
+               }
+
+               public void Scale (double sx, double sy)
+               {
                        NativeMethods.cairo_matrix_scale (this, sx, sy);
-                }
-
-                public void InitRotate (double radians)
-                {
-                       /*
-                       double s, c;
-                       s = Math.Sin (radians);
-                       c = Math.Cos (radians);
-                       this.Init (c, s, -s, c, 0, 0);
-                       */
-                       NativeMethods.cairo_matrix_init_rotate (this, radians);
-                }              
-               
-                public void Rotate (double radians)
-                {
+               }
+
+               public void InitRotate (double radians)
+               {
+                       /*
+                       double s, c;
+                       s = Math.Sin (radians);
+                       c = Math.Cos (radians);
+                       this.Init (c, s, -s, c, 0, 0);
+                       */
+                       NativeMethods.cairo_matrix_init_rotate (this, radians);
+               }
+
+               public void Rotate (double radians)
+               {
                        NativeMethods.cairo_matrix_rotate (this, radians);
-                }
+               }
 
-                public Cairo.Status Invert ()
-                {
+               public Cairo.Status Invert ()
+               {
                        return NativeMethods.cairo_matrix_invert (this);
-                }
+               }
 
                public void Multiply (Matrix b)
                {
                        Matrix a = (Matrix) this.Clone ();
                        NativeMethods.cairo_matrix_multiply (this, a, b);
                }
-               
+
                public static Matrix Multiply (Matrix a, Matrix b) {
                        Matrix result = new Matrix ();
                        NativeMethods.cairo_matrix_multiply (result, a, b);
                        return result;
                }
-                       
-               
-                public void TransformDistance (ref double dx, ref double dy)
+
+
+               public void TransformDistance (ref double dx, ref double dy)
                {
-                        NativeMethods.cairo_matrix_transform_distance (this, ref dx, ref dy);
-                }
+                       NativeMethods.cairo_matrix_transform_distance (this, ref dx, ref dy);
+               }
 
-                public void TransformPoint (ref double x, ref double y)
-                {
-                        NativeMethods.cairo_matrix_transform_point (this, ref x, ref y);
+               public void TransformPoint (ref double x, ref double y)
+               {
+                       NativeMethods.cairo_matrix_transform_point (this, ref x, ref y);
                }
 
                public override String ToString ()
@@ -148,7 +148,7 @@ namespace Cairo {
                                this.Xx, this.Yx, this.Xy, this.Yy, this.X0, this.Y0);
                        return s;
                }
-               
+
                public static bool operator == (Matrix lhs, Matrix rhs)
                {
                        return (lhs.Xx == rhs.Xx &&
@@ -158,14 +158,14 @@ namespace Cairo {
                                lhs.X0 == rhs.X0 &&
                                lhs.Y0 == rhs.Y0 );
                }
-               
+
                public static bool operator != (Matrix lhs, Matrix rhs)
                {
-                       return !(lhs==rhs);     
+                       return !(lhs==rhs);
                }
-               
-               
-               
+
+
+
                public override bool Equals(object o)
                {
                        if (! (o is Matrix))
@@ -173,7 +173,7 @@ namespace Cairo {
                        else
                                return (this == (Matrix) o);
                }
-               
+
                public override int GetHashCode()
                {
                        return  (int)this.Xx ^ (int)this.Xx>>32 ^
@@ -183,11 +183,11 @@ namespace Cairo {
                                (int)this.X0 ^ (int)this.X0>>32 ^
                                (int)this.Y0 ^ (int)this.Y0>>32;
                }
-               
+
                public object Clone()
                {
                        return this.MemberwiseClone ();
                }
-               
-        }
+
+       }
 }
index 855c282f6aa6f229802183f503af013ecdec416b..c53f0009c0019c37312a8f0bc1517fc60665ee71 100644 (file)
@@ -36,8 +36,8 @@ using System.Runtime.InteropServices;
 
 namespace Cairo
 {
-       // sort these so it is easier to find what is missing
-       // http://www.cairographics.org/manual/ix01.html
+       // sort the functions like in the following page so it is easier to find what is missing
+       // http://cairographics.org/manual/index-all.html
 
        internal static class NativeMethods
        {
@@ -86,9 +86,6 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern IntPtr cairo_create (IntPtr target);
 
-               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
-               internal static extern uint cairo_get_reference_count (IntPtr surface);
-               
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_curve_to (IntPtr cr, double x1, double y1, double x2, double y2, double x3, double y3);
                
@@ -240,6 +237,9 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern Operator cairo_get_operator (IntPtr cr);
                
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern uint cairo_get_reference_count (IntPtr surface);
+
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern IntPtr cairo_get_source (IntPtr cr);
                
@@ -292,9 +292,6 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern int cairo_image_surface_get_width  (IntPtr surface);
 
-               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
-               internal static extern uint cairo_surface_get_reference_count (IntPtr surface);
-               
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                [return: MarshalAs (UnmanagedType.U1)]
                internal static extern bool cairo_in_fill (IntPtr cr, double x, double y);
@@ -453,10 +450,10 @@ namespace Cairo
                //[DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                //internal static extern IntPtr cairo_ps_surface_create_for_stream (string filename, double width, double height);
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
-               internal static extern void cairo_ps_surface_begin_page_setup (IntPtr surface);
+               internal static extern void cairo_ps_surface_dsc_begin_page_setup (IntPtr surface);
                
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
-               internal static extern void cairo_ps_surface_begin_setup (IntPtr surface);
+               internal static extern void cairo_ps_surface_dsc_begin_setup (IntPtr surface);
                
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_ps_surface_dsc_comment (IntPtr surface, string comment);
@@ -485,6 +482,75 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_reference (IntPtr cr);
                
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern bool cairo_region_contains_point (IntPtr region, int x, int y);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern RegionOverlap cairo_region_contains_rectangle (IntPtr region, ref RectangleInt rectangle);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern IntPtr cairo_region_copy (IntPtr original);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern IntPtr cairo_region_create ();
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern IntPtr cairo_region_create_rectangle (ref RectangleInt rect);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern IntPtr cairo_region_create_rectangles (RectangleInt[] rects, int count);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern void cairo_region_destroy (IntPtr region);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern bool cairo_region_equal (IntPtr a, IntPtr b);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern void cairo_region_get_extents (IntPtr region, out RectangleInt extents);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern void cairo_region_get_rectangle (IntPtr region, int nth, out RectangleInt rectangle);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_intersect (IntPtr dst, IntPtr other);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_intersect_rectangle (IntPtr dst, ref RectangleInt rectangle);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern bool cairo_region_is_empty (IntPtr region);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern int cairo_region_num_rectangles (IntPtr region);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern IntPtr cairo_region_reference (IntPtr region);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_status (IntPtr region);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_subtract (IntPtr dst, IntPtr other);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_subtract_rectangle (IntPtr dst, ref RectangleInt rectangle);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern void cairo_region_translate (IntPtr region, int dx, int dy);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_union (IntPtr dst, IntPtr other);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_union_rectangle (IntPtr dst, ref RectangleInt rectangle);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_xor (IntPtr dst, IntPtr other);
+
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern Status cairo_region_xor_rectangle (IntPtr dst, ref RectangleInt rectangle);
+
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_rel_curve_to (IntPtr cr, double dx1, double dy1, double dx2, double dy2, double dx3, double dy3);
                
@@ -667,6 +733,9 @@ namespace Cairo
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern void cairo_surface_get_font_options (IntPtr surface, IntPtr FontOptions);
 
+               [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
+               internal static extern uint cairo_surface_get_reference_count (IntPtr surface);
+
                [DllImport (cairo, CallingConvention=CallingConvention.Cdecl)]
                internal static extern SurfaceType cairo_surface_get_type (IntPtr surface);
                
index 1304be6230a295fa69dd921dc5edf431ba3d6767..9d6b73be68996272d7251ab88e8189288070bf56 100644 (file)
@@ -37,31 +37,28 @@ namespace Cairo {
                }
 
                public PSSurface (string filename, double width, double height)
+                       : base (NativeMethods.cairo_ps_surface_create (filename, width, height), true)
                {
-                       surface = NativeMethods.cairo_ps_surface_create (filename, width, height);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
 
                public void BeginPageSetup ()
                {
-                       NativeMethods.cairo_ps_surface_begin_page_setup (surface);
+                       NativeMethods.cairo_ps_surface_dsc_begin_page_setup (Handle);
                }
 
                public void BeginSetup ()
                {
-                       NativeMethods.cairo_ps_surface_begin_setup (surface);
+                       NativeMethods.cairo_ps_surface_dsc_begin_setup (Handle);
                }
 
                public void DscComment (string comment)
                {
-                       NativeMethods.cairo_ps_surface_dsc_comment (surface, comment);
+                       NativeMethods.cairo_ps_surface_dsc_comment (Handle, comment);
                }
 
                public void SetSize (double width, double height)
                {
-                       NativeMethods.cairo_ps_surface_set_size (surface, width, height);
+                       NativeMethods.cairo_ps_surface_set_size (Handle, width, height);
                }
        }
 }
index 97cfb8e2862f1ed297ce5af26a63520ab9d6a89a..184c606cf3470b851e09c0c51de29ea8f7972d95 100644 (file)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -34,13 +34,15 @@ using Cairo;
 
 namespace Cairo {
 
-        public class Path : IDisposable 
-        {
-                internal IntPtr handle = IntPtr.Zero;
-               
+       public class Path : IDisposable
+       {
+               IntPtr handle = IntPtr.Zero;
+
                internal Path (IntPtr handle)
                {
                        this.handle = handle;
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
                }
 
                ~Path ()
@@ -48,25 +50,24 @@ namespace Cairo {
                        Dispose (false);
                }
 
-               
+               public IntPtr Handle { get { return handle; } }
+
                public void Dispose ()
                {
                        Dispose (true);
                        GC.SuppressFinalize (this);
                }
-               
-                protected virtual void Dispose (bool disposing)
-                {
-                       if (!disposing){
-                               Console.Error.WriteLine ("Cairo.Context: called from finalization thread, programmer is missing a call to Dispose");
-                               return;
-                       }
-                       
-                       if (handle == IntPtr.Zero)
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<Path> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
                                return;
 
-                        NativeMethods.cairo_path_destroy (handle);
+                       NativeMethods.cairo_path_destroy (handle);
                        handle = IntPtr.Zero;
-                }
-        }
+               }
+       }
 }
index ebe4b70eaf5f3e8b3585f1f17240753d0d21acc5..bc0a962a218d59d5ff42a45289a56e7c2f5c8f40 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.Pattern.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
@@ -32,116 +32,124 @@ using System.Collections;
 
 namespace Cairo {
    
-        public class Pattern : IDisposable
-        {
-                protected IntPtr pattern = IntPtr.Zero;
+       public class Pattern : IDisposable
+       {
+               [Obsolete]
+               protected IntPtr pattern = IntPtr.Zero;
 
-               internal static Pattern Lookup (IntPtr pattern)
+               public static Pattern Lookup (IntPtr pattern, bool owner)
                {
                        if (pattern == IntPtr.Zero)
                                return null;
-
-                       object x = patterns [pattern];
-                       if (x != null)
-                               return (Pattern) x;
                        
                        PatternType pt = NativeMethods.cairo_pattern_get_type (pattern);
                        switch (pt) {
                        case PatternType.Solid:
-                               return new SolidPattern (pattern);
+                               return new SolidPattern (pattern, owner);
                        case PatternType.Surface:
-                               return new SurfacePattern (pattern);
+                               return new SurfacePattern (pattern, owner);
                        case PatternType.Linear:
-                               return new LinearGradient (pattern);
+                               return new LinearGradient (pattern, owner);
                        case PatternType.Radial:
-                               return new RadialGradient (pattern);
+                               return new RadialGradient (pattern, owner);
                        default:
-                               return new Pattern (pattern);
+                               return new Pattern (pattern, owner);
                        }
                }
-               
-                protected Pattern ()
-                {
-                }
 
-               static Hashtable patterns = new Hashtable ();
+               [Obsolete]
+               protected Pattern ()
+               {
+               }
                
-               internal Pattern (IntPtr ptr)
+               internal Pattern (IntPtr handle, bool owned)
                {
-                       lock (patterns){
-                               patterns [ptr] = this;
-                       }
-                       pattern = ptr;
+                       Handle = handle;
+                       if (!owned)
+                               NativeMethods.cairo_pattern_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
                }
 
                ~Pattern ()
                {
+                       Dispose (false);
                }
                
-                [Obsolete ("Use the SurfacePattern constructor")]
-                public Pattern (Surface surface)
-                {
-                        pattern = NativeMethods.cairo_pattern_create_for_surface (surface.Handle);
-                }
+               [Obsolete ("Use the SurfacePattern constructor")]
+               public Pattern (Surface surface)
+                       : this ( NativeMethods.cairo_pattern_create_for_surface (surface.Handle), true)
+               {
+               }
                
-                protected void Reference ()
-                {
-                        NativeMethods.cairo_pattern_reference (pattern);
-                }
+               [Obsolete]
+               protected void Reference ()
+               {
+                       NativeMethods.cairo_pattern_reference (pattern);
+               }
 
                public void Dispose ()
                {
                        Dispose (true);
+                       GC.SuppressFinalize (this);
                }
 
                protected virtual void Dispose (bool disposing)
                {
-                       if (disposing)
-                               Destroy ();
-                       GC.SuppressFinalize (this);
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<Pattern> (Handle, disposing);
+
+                       if (!disposing|| Handle == IntPtr.Zero)
+                               return;
+
+                       NativeMethods.cairo_pattern_destroy (Handle);
+                       Handle = IntPtr.Zero;
                }
-               
-                public void Destroy ()
-                {
-                       if (pattern != IntPtr.Zero){
-                               NativeMethods.cairo_pattern_destroy (pattern);
-                               pattern = IntPtr.Zero;
-                       }
-                       lock (patterns){
-                               patterns.Remove (this);
-                       }
-                }
-               
+
+               [Obsolete ("Use Dispose()")]
+               public void Destroy ()
+               {
+                       Dispose ();
+               }
+
                public Status Status
                {
-                       get { return NativeMethods.cairo_pattern_status (pattern); }
+                       get { return NativeMethods.cairo_pattern_status (Handle); }
                }
 
                public Extend Extend
                {
-                       get { return NativeMethods.cairo_pattern_get_extend (pattern); }
-                       set { NativeMethods.cairo_pattern_set_extend (pattern, value); }
+                       get { return NativeMethods.cairo_pattern_get_extend (Handle); }
+                       set { NativeMethods.cairo_pattern_set_extend (Handle, value); }
                }
-       
-                public Matrix Matrix {
-                        set { 
-                               NativeMethods.cairo_pattern_set_matrix (pattern, value);
+
+               public Matrix Matrix {
+                       set {
+                               NativeMethods.cairo_pattern_set_matrix (Handle, value);
                        }
 
-                        get {
+                       get {
                                Matrix m = new Matrix ();
-                               NativeMethods.cairo_pattern_get_matrix (pattern, m);
+                               NativeMethods.cairo_pattern_get_matrix (Handle, m);
                                return m;
-                        }
-                }
+                       }
+               }
 
-                public IntPtr Pointer {
-                        get { return pattern; }
-                }              
+#pragma warning disable 612
+               public IntPtr Handle {
+                       get { return pattern; }
+                       private set { pattern = value; }
+               }
+#pragma warning restore 612
+
+               [Obsolete]
+               public IntPtr Pointer {
+                       get { return pattern; }
+               }
 
                public PatternType PatternType {
-                       get { return NativeMethods.cairo_pattern_get_type (pattern); }
+                       get { return NativeMethods.cairo_pattern_get_type (Handle); }
                }
-        }
+       }
 }
 
index f3a184bb5a764f48cb4e75588e31307676d50eca..c980f249ed06ae2626cb83c9e565498d11b82fbc 100644 (file)
@@ -37,16 +37,13 @@ namespace Cairo {
                }
 
                public PdfSurface (string filename, double width, double height)
+                       : base (NativeMethods.cairo_pdf_surface_create (filename, width, height), true)
                {
-                       surface = NativeMethods.cairo_pdf_surface_create (filename, width, height);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
 
                public void SetSize (double width, double height)
                {
-                       NativeMethods.cairo_pdf_surface_set_size (surface, width, height);
+                       NativeMethods.cairo_pdf_surface_set_size (Handle, width, height);
                }
        }
 }
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/Point.cs b/mcs/class/Mono.Cairo/Mono.Cairo/Point.cs
new file mode 100644 (file)
index 0000000..e72ca6c
--- /dev/null
@@ -0,0 +1,57 @@
+//
+// Mono.Cairo.Context.cs
+//
+// Author:
+//   Duncan Mak (duncan@ximian.com)
+//   Miguel de Icaza (miguel@novell.com)
+//   Hisham Mardam Bey (hisham.mardambey@gmail.com)
+//   Alp Toker (alp@atoker.com)
+//
+// (C) Ximian Inc, 2003.
+// (C) Novell Inc, 2003.
+//
+// This is an OO wrapper API for the Cairo API.
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Cairo {
+       public struct Point
+       {
+               public Point (int x, int y)
+               {
+                       this.x = x;
+                       this.y = y;
+               }
+
+               int x, y;
+               public int X {
+                       get { return x; }
+                       set { x = value; }
+               }
+
+               public int Y {
+                       get { return y; }
+                       set { y = value; }
+               }
+       }
+}
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/PointD.cs b/mcs/class/Mono.Cairo/Mono.Cairo/PointD.cs
new file mode 100644 (file)
index 0000000..c2e3587
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// Mono.Cairo.Context.cs
+//
+// Author:
+//   Duncan Mak (duncan@ximian.com)
+//   Miguel de Icaza (miguel@novell.com)
+//   Hisham Mardam Bey (hisham.mardambey@gmail.com)
+//   Alp Toker (alp@atoker.com)
+//
+// (C) Ximian Inc, 2003.
+// (C) Novell Inc, 2003.
+//
+// This is an OO wrapper API for the Cairo API.
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+namespace Cairo {
+
+       public struct PointD
+       {
+               public PointD (double x, double y)
+               {
+                       this.x = x;
+                       this.y = y;
+               }
+
+               double x, y;
+               public double X {
+                       get { return x; }
+                       set { x = value; }
+               }
+
+               public double Y {
+                       get { return y; }
+                       set { y = value; }
+               }
+       }
+}
index df9c329057dd71107b2ff1004f6bd90c42d041d3..6422e00d6e4e778219c400072ba8cf5136353185 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.Pattern.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 using System;
 
 namespace Cairo {
-   
+
        public class RadialGradient : Gradient
        {
-               internal RadialGradient (IntPtr handle) : base (handle)
+               internal RadialGradient (IntPtr handle, bool owned) : base (handle, owned)
                {
                }
 
                public RadialGradient (double cx0, double cy0, double radius0, double cx1, double cy1, double radius1)
+                       : base (NativeMethods.cairo_pattern_create_radial (cx0, cy0, radius0, cx1, cy1, radius1), true)
                {
-                       pattern = NativeMethods.cairo_pattern_create_radial (cx0, cy0, radius0, cx1, cy1, radius1);
                }
        }
 }
diff --git a/mcs/class/Mono.Cairo/Mono.Cairo/Region.cs b/mcs/class/Mono.Cairo/Mono.Cairo/Region.cs
new file mode 100644 (file)
index 0000000..cd0ba33
--- /dev/null
@@ -0,0 +1,196 @@
+// Copyright (C) 2011 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Runtime.InteropServices;
+
+namespace Cairo
+{
+
+       [StructLayout(LayoutKind.Sequential)]
+       public struct RectangleInt {
+               public int X;
+               public int Y;
+               public int Width;
+               public int Height;
+       }
+
+       public enum RegionOverlap {
+               In,
+               Out,
+               Part,
+       }
+
+       public class Region : IDisposable {
+
+               IntPtr handle;
+               public IntPtr Handle {
+                       get { return handle; }
+               }
+
+               [Obsolete]
+               public Region (IntPtr handle) : this (handle, false) {}
+
+               public Region (IntPtr handle, bool owned)
+               {
+                       this.handle = handle;
+                       if (!owned)
+                               NativeMethods.cairo_region_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
+               }
+
+               public Region () : this (NativeMethods.cairo_region_create () , true)
+               {
+               }
+
+               public Region (RectangleInt rect)
+               {
+                       handle = NativeMethods.cairo_region_create_rectangle (ref rect);
+               }
+
+               public Region (RectangleInt[] rects)
+               {
+                       handle = NativeMethods.cairo_region_create_rectangles (rects, rects.Length);
+               }
+
+               public Region Copy ()
+               {
+                       return new Region (NativeMethods.cairo_region_copy (Handle), true);
+               }
+
+               ~Region ()
+               {
+                       Dispose (false);
+               }
+
+               public void Dispose ()
+               {
+                       Dispose (true);
+                       GC.SuppressFinalize (this);
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<Region> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
+                               return;
+
+                       NativeMethods.cairo_region_destroy (Handle);
+                       handle = IntPtr.Zero;
+               }
+
+               public override bool Equals (object obj)
+               {
+                       return (obj is Region) && NativeMethods.cairo_region_equal (Handle, (obj as Region).Handle);
+               }
+
+               public override int GetHashCode ()
+               {
+                       return Handle.GetHashCode ();
+               }
+
+               public Status Status {
+                       get { return NativeMethods.cairo_region_status (Handle); }
+               }
+
+               public RectangleInt Extents {
+                       get {
+                               RectangleInt result;
+                               NativeMethods.cairo_region_get_extents (Handle, out result);
+                               return result;
+                       }
+               }
+
+               public int NumRectangles {
+                       get { return NativeMethods.cairo_region_num_rectangles (Handle); }
+               }
+
+               public RectangleInt GetRectangle (int nth)
+               {
+                       RectangleInt val;
+                       NativeMethods.cairo_region_get_rectangle (Handle, nth, out val);
+                       return val;
+               }
+
+               public bool IsEmpty {
+                       get { return NativeMethods.cairo_region_is_empty (Handle); }
+               }
+
+               public RegionOverlap ContainsPoint (RectangleInt rectangle)
+               {
+                       return NativeMethods.cairo_region_contains_rectangle (Handle, ref rectangle);
+               }
+
+               public bool ContainsPoint (int x, int y)
+               {
+                       return NativeMethods.cairo_region_contains_point (Handle, x, y);
+               }
+
+               public void Translate (int dx, int dy)
+               {
+                       NativeMethods.cairo_region_translate (Handle, dx, dy);
+               }
+
+               public Status Subtract (Region other)
+               {
+                       return NativeMethods.cairo_region_subtract (Handle, other.Handle);
+               }
+
+               public Status SubtractRectangle (RectangleInt rectangle)
+               {
+                       return NativeMethods.cairo_region_subtract_rectangle (Handle, ref rectangle);
+               }
+
+               public Status Intersect (Region other)
+               {
+                       return NativeMethods.cairo_region_intersect (Handle, other.Handle);
+               }
+
+               public Status IntersectRectangle (RectangleInt rectangle)
+               {
+                       return NativeMethods.cairo_region_intersect_rectangle (Handle, ref rectangle);
+               }
+
+               public Status Union (Region other)
+               {
+                       return NativeMethods.cairo_region_union (Handle, other.Handle);
+               }
+
+               public Status UnionRectangle (RectangleInt rectangle)
+               {
+                       return NativeMethods.cairo_region_union_rectangle (Handle, ref rectangle);
+               }
+
+               public Status Xor (Region other)
+               {
+                       return NativeMethods.cairo_region_xor (Handle, other.Handle);
+               }
+
+               public Status XorRectangle (RectangleInt rectangle)
+               {
+                       return NativeMethods.cairo_region_xor_rectangle (Handle, ref rectangle);
+               }
+       }
+}
index 2b0f6cf0c5fb5a8a6cb9f223e4022b815741e458..937194607af414e35fbb5ee6a0b80b02a7949c07 100644 (file)
@@ -32,14 +32,18 @@ namespace Cairo {
        {
                protected IntPtr handle = IntPtr.Zero;
 
-               internal ScaledFont (IntPtr handle)
+               internal ScaledFont (IntPtr handle, bool owner)
                {
                        this.handle = handle;
+                       if (!owner)
+                               NativeMethods.cairo_scaled_font_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
                }
 
                public ScaledFont (FontFace fontFace, Matrix matrix, Matrix ctm, FontOptions options)
+                       : this (NativeMethods.cairo_scaled_font_create (fontFace.Handle, matrix, ctm, options.Handle), true)
                {
-                       handle = NativeMethods.cairo_scaled_font_create (fontFace.Handle, matrix, ctm, options.Handle);
                }
 
                ~ScaledFont ()
@@ -47,19 +51,19 @@ namespace Cairo {
                        Dispose (false);
                }
 
-                public IntPtr Handle {
-                        get {
-                                return handle;
-                        }
-                }
+               public IntPtr Handle {
+                       get {
+                               return handle;
+                       }
+               }
 
                public FontExtents FontExtents {
-                        get {
-                                FontExtents extents;
-                                NativeMethods.cairo_scaled_font_extents (handle, out extents);
-                                return extents;
-                        }
-                }
+                       get {
+                               FontExtents extents;
+                               NativeMethods.cairo_scaled_font_extents (handle, out extents);
+                               return extents;
+                       }
+               }
 
                public Matrix FontMatrix {
                        get {
@@ -99,16 +103,21 @@ namespace Cairo {
 
                protected virtual void Dispose (bool disposing)
                {
-                       if (disposing) {
-                               NativeMethods.cairo_scaled_font_destroy (handle);
-                               handle = IntPtr.Zero;
-                       }
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<ScaledFont> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
+                               return;
+
+                       NativeMethods.cairo_scaled_font_destroy (handle);
+                       handle = IntPtr.Zero;
+               }
+
+               [Obsolete]
+               protected void Reference ()
+               {
+                       NativeMethods.cairo_scaled_font_reference (handle);
                }
-               
-                protected void Reference ()
-                {
-                        NativeMethods.cairo_scaled_font_reference (handle);
-                }
        }
 }
 
index 44dba86a97d9acbf3ae527b89b59c5bb88d4350e..875b3fbf155d9ff19cfe56bda148a7b96f058c21 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.Pattern.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 using System;
 
 namespace Cairo {
-   
+
        public class SolidPattern : Pattern
        {
-               internal SolidPattern (IntPtr handle) : base (handle)
+               internal SolidPattern (IntPtr handle, bool owned) : base (handle, owned)
                {
                }
 
                public SolidPattern (Color color)
+                       : base (NativeMethods.cairo_pattern_create_rgba (color.R, color.G, color.B, color.A), true)
                {
-                       pattern = NativeMethods.cairo_pattern_create_rgba (color.R, color.G, color.B, color.A);
                }
 
                public SolidPattern (double r, double g, double b)
+                       : base (NativeMethods.cairo_pattern_create_rgb (r, g, b), true)
                {
-                       pattern = NativeMethods.cairo_pattern_create_rgb (r, g, b);
                }
 
                public SolidPattern (double r, double g, double b, double a)
+                       : base (NativeMethods.cairo_pattern_create_rgba (r, g, b, a), true)
                {
-                       NativeMethods.cairo_pattern_create_rgba (r, g, b, a);
                }
 
                public SolidPattern (Color color, bool solid)
+                       : base (solid
+                                       ? NativeMethods.cairo_pattern_create_rgb (color.R, color.G, color.B)
+                                       : NativeMethods.cairo_pattern_create_rgba (color.R, color.G, color.B, color.A),
+                               true)
                {
-                       if (solid)
-                               pattern = NativeMethods.cairo_pattern_create_rgb (color.R, color.G, color.B);
-                       else
-                               pattern = NativeMethods.cairo_pattern_create_rgba (color.R, color.G, color.B, color.A);
                }
 
                public Color Color {
-                        get {
+                       get {
                                double red, green, blue, alpha;
-
-                               NativeMethods.cairo_pattern_get_rgba  (pattern, out red, out green, out blue, out alpha);
+                               NativeMethods.cairo_pattern_get_rgba  (Handle, out red, out green, out blue, out alpha);
                                return new Color (red, green, blue, alpha);
-                        }
-                }
+                       }
+               }
        }
 }
 
index 862cbdc606d85ac92f2556106359da1aa97ae3f7..07e0d4d997547e0a66698faaa66fa5affa8f1356 100644 (file)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
@@ -38,94 +38,88 @@ using System.Collections;
 
 namespace Cairo {
 
-       public class Surface : IDisposable 
-        {                                              
+       public class Surface : IDisposable
+       {
+               [Obsolete]
                protected static Hashtable surfaces = new Hashtable ();
-                internal IntPtr surface = IntPtr.Zero;
 
+               IntPtr handle = IntPtr.Zero;
+
+               [Obsolete]
                protected Surface()
                {
                }
-               
-                protected Surface (IntPtr ptr, bool owns)
-                {
-                        surface = ptr;
-                       lock (surfaces.SyncRoot){
-                               surfaces [ptr] = this;
-                       }
-                       if (!owns)
-                               NativeMethods.cairo_surface_reference (ptr);
-                }
-
-               static internal Surface LookupExternalSurface (IntPtr p)
-               {
-                       lock (surfaces.SyncRoot){
-                               object o = surfaces [p];
-                               if (o == null){
-                                       return new Surface (p, false);
-                               }
-                               return (Surface) o;
-                       }
-               }               
 
-               static internal Surface LookupSurface (IntPtr surface)
+               [Obsolete]
+               protected Surface (IntPtr ptr) : this (ptr, true)
+               {
+               }
+
+               protected Surface (IntPtr handle, bool owner)
+               {
+                       this.handle = handle;
+                       if (!owner)
+                               NativeMethods.cairo_surface_reference (handle);
+                       if (CairoDebug.Enabled)
+                               CairoDebug.OnAllocated (handle);
+               }
+
+               public static Surface Lookup (IntPtr surface, bool owned)
                {
                        SurfaceType st = NativeMethods.cairo_surface_get_type (surface);
                        switch (st) {
                        case SurfaceType.Image:
-                               return new ImageSurface (surface, true);
+                               return new ImageSurface (surface, owned);
                        case SurfaceType.Xlib:
-                               return new XlibSurface (surface, true);
+                               return new XlibSurface (surface, owned);
                        case SurfaceType.Xcb:
-                               return new XcbSurface (surface, true);
+                               return new XcbSurface (surface, owned);
                        case SurfaceType.Glitz:
-                               return new GlitzSurface (surface, true);
+                               return new GlitzSurface (surface, owned);
                        case SurfaceType.Win32:
-                               return new Win32Surface (surface, true);
-
+                               return new Win32Surface (surface, owned);
                        case SurfaceType.Pdf:
-                               return new PdfSurface (surface, true);
+                               return new PdfSurface (surface, owned);
                        case SurfaceType.PS:
-                               return new PSSurface (surface, true);
+                               return new PSSurface (surface, owned);
                        case SurfaceType.DirectFB:
-                               return new DirectFBSurface (surface, true);
+                               return new DirectFBSurface (surface, owned);
                        case SurfaceType.Svg:
-                               return new SvgSurface (surface, true);
-
+                               return new SvgSurface (surface, owned);
                        default:
-                               return Surface.LookupExternalSurface (surface);
+                               return new Surface (surface, owned);
                        }
                }
-               
+
                [Obsolete ("Use an ImageSurface constructor instead.")]
-                public static Cairo.Surface CreateForImage (
-                        ref byte[] data, Cairo.Format format, int width, int height, int stride)
-                {
-                        IntPtr p = NativeMethods.cairo_image_surface_create_for_data (
-                                data, format, width, height, stride);
-                        
-                        return new Cairo.Surface (p, true);
-                }
+               public static Cairo.Surface CreateForImage (
+                       ref byte[] data, Cairo.Format format, int width, int height, int stride)
+               {
+                       IntPtr p = NativeMethods.cairo_image_surface_create_for_data (
+                               data, format, width, height, stride);
+
+                       return new Cairo.Surface (p, true);
+               }
 
                [Obsolete ("Use an ImageSurface constructor instead.")]
-                public static Cairo.Surface CreateForImage (
-                        Cairo.Format format, int width, int height)
-                {
-                        IntPtr p = NativeMethods.cairo_image_surface_create (
-                                format, width, height);
+               public static Cairo.Surface CreateForImage (
+                       Cairo.Format format, int width, int height)
+               {
+                       IntPtr p = NativeMethods.cairo_image_surface_create (
+                               format, width, height);
 
-                        return new Cairo.Surface (p, true);
-                }
+                       return new Cairo.Surface (p, true);
+               }
 
 
-                public Cairo.Surface CreateSimilar (
-                        Cairo.Content content, int width, int height)
-                {
-                        IntPtr p = NativeMethods.cairo_surface_create_similar (
-                                this.Handle, content, width, height);
+               public Cairo.Surface CreateSimilar (
+                       Cairo.Content content, int width, int height)
+               {
+                       IntPtr p = NativeMethods.cairo_surface_create_similar (
+                               this.Handle, content, width, height);
 
-                        return new Cairo.Surface (p, true);
-                }
+                       return new Cairo.Surface (p, true);
+               }
 
                ~Surface ()
                {
@@ -133,9 +127,9 @@ namespace Cairo {
                }
 
                //[Obsolete ("Use Context.SetSource() followed by Context.Paint()")]
-               public void Show (Context gr, double x, double y) 
+               public void Show (Context gr, double x, double y)
                {
-                       NativeMethods.cairo_set_source_surface (gr.Handle, surface, x, y);
+                       NativeMethods.cairo_set_source_surface (gr.Handle, handle, x, y);
                        NativeMethods.cairo_paint (gr.Handle);
                }
 
@@ -147,91 +141,92 @@ namespace Cairo {
 
                protected virtual void Dispose (bool disposing)
                {
-                       if (surface == IntPtr.Zero)
+                       if (!disposing || CairoDebug.Enabled)
+                               CairoDebug.OnDisposed<Surface> (handle, disposing);
+
+                       if (!disposing|| handle == IntPtr.Zero)
                                return;
-                       
-                       lock (surfaces.SyncRoot)
-                               surfaces.Remove (surface);
 
-                       NativeMethods.cairo_surface_destroy (surface);
-                       surface = IntPtr.Zero;
+                       NativeMethods.cairo_surface_destroy (handle);
+                       handle = IntPtr.Zero;
                }
-               
+
                public Status Finish ()
                {
-                       NativeMethods.cairo_surface_finish (surface);
+                       NativeMethods.cairo_surface_finish (handle);
                        return Status;
                }
-               
+
                public void Flush ()
                {
-                       NativeMethods.cairo_surface_flush (surface);
+                       NativeMethods.cairo_surface_flush (handle);
                }
-               
+
                public void MarkDirty ()
                {
                        NativeMethods.cairo_surface_mark_dirty (Handle);
                }
-               
+
                public void MarkDirty (Rectangle rectangle)
                {
                        NativeMethods.cairo_surface_mark_dirty_rectangle (Handle, (int)rectangle.X, (int)rectangle.Y, (int)rectangle.Width, (int)rectangle.Height);
                }
-               
-                public IntPtr Handle {
-                        get {
-                               return surface;
+
+               public IntPtr Handle {
+                       get {
+                               return handle;
                        }
-                }
+               }
 
                public PointD DeviceOffset {
                        get {
                                double x, y;
-                               NativeMethods.cairo_surface_get_device_offset (surface, out x, out y);
+                               NativeMethods.cairo_surface_get_device_offset (handle, out x, out y);
                                return new PointD (x, y);
                        }
 
                        set {
-                               NativeMethods.cairo_surface_set_device_offset (surface, value.X, value.Y);
+                               NativeMethods.cairo_surface_set_device_offset (handle, value.X, value.Y);
                        }
                }
-               
+
+               [Obsolete ("Use Dispose()")]
                public void Destroy()
                {
-                       Dispose (true);
+                       Dispose ();
                }
 
                public void SetFallbackResolution (double x, double y)
                {
-                       NativeMethods.cairo_surface_set_fallback_resolution (surface, x, y);
+                       NativeMethods.cairo_surface_set_fallback_resolution (handle, x, y);
                }
 
                public void WriteToPng (string filename)
                {
-                       NativeMethods.cairo_surface_write_to_png (surface, filename);
+                       NativeMethods.cairo_surface_write_to_png (handle, filename);
                }
-               
+
                [Obsolete ("Use Handle instead.")]
-                public IntPtr Pointer {
-                        get {
-                               return surface;
+               public IntPtr Pointer {
+                       get {
+                               return handle;
                        }
-                }
-               
+               }
+
                public Status Status {
-                       get { return NativeMethods.cairo_surface_status (surface); }
+                       get { return NativeMethods.cairo_surface_status (handle); }
                }
 
                public Content Content {
-                       get { return NativeMethods.cairo_surface_get_content (surface); }
+                       get { return NativeMethods.cairo_surface_get_content (handle); }
                }
 
                public SurfaceType SurfaceType {
-                       get { return NativeMethods.cairo_surface_get_type (surface); }
+                       get { return NativeMethods.cairo_surface_get_type (handle); }
                }
 
                public uint ReferenceCount {
-                       get { return NativeMethods.cairo_surface_get_reference_count (surface); }
+                       get { return NativeMethods.cairo_surface_get_reference_count (handle); }
                }
-        }
+       }
 }
index f4f4298c5498a69b17f1cb2a3a5431f231d7df1f..4422b11d41dc899da6aa8edfa5a31fcd8ca23e55 100644 (file)
@@ -1,4 +1,4 @@
-//                                                   
+//
 // Mono.Cairo.Pattern.cs
 //
 // Author: Jordi Mas (jordi@ximian.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 using System;
 
 namespace Cairo {
-   
+
        public class SurfacePattern : Pattern
        {
-               internal SurfacePattern (IntPtr handle) : base (handle)
+               internal SurfacePattern (IntPtr handle, bool owned) : base (handle, owned)
                {
                }
 
                public SurfacePattern (Surface surface)
+                       : base (NativeMethods.cairo_pattern_create_for_surface (surface.Handle), true)
                {
-                       pattern = NativeMethods.cairo_pattern_create_for_surface (surface.Handle);
                }
 
-               public Extend Extend {
-                       set { NativeMethods.cairo_pattern_set_extend (pattern, value); }
-                       get { return NativeMethods.cairo_pattern_get_extend (pattern); }
+               //no idea why this is here, the base one is identical, but we can't remove it now
+               public new Extend Extend {
+                       set { NativeMethods.cairo_pattern_set_extend (Handle, value); }
+                       get { return NativeMethods.cairo_pattern_get_extend (Handle); }
                }
 
                public Filter Filter {
-                       set { NativeMethods.cairo_pattern_set_filter (pattern, value); }
-                       get { return NativeMethods.cairo_pattern_get_filter (pattern); }
+                       set { NativeMethods.cairo_pattern_set_filter (Handle, value); }
+                       get { return NativeMethods.cairo_pattern_get_filter (Handle); }
                }
        }
 }
index 10da981e0ee05b8c70f3f8983d685e299e49744b..418295011fde1c26a144ab920ab513b634844902 100644 (file)
@@ -37,16 +37,13 @@ namespace Cairo {
                }
 
                public SvgSurface (string filename, double width, double height)
+                       : base (NativeMethods.cairo_svg_surface_create (filename, width, height), true)
                {
-                       surface = NativeMethods.cairo_svg_surface_create (filename, width, height);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
 
                public void RestrictToVersion (SvgVersion version)
                {
-                       NativeMethods.cairo_svg_surface_restrict_to_version (surface, version);
+                       NativeMethods.cairo_svg_surface_restrict_to_version (Handle, version);
                }
        }
 }
index fbb22270acad984c1d43e1e1ab9e9b231042bf3f..dd244286dff508a90832ea9ac88cd2aaa1afe99c 100644 (file)
@@ -37,12 +37,8 @@ namespace Cairo {
                }
                
                public Win32Surface (IntPtr hdc)
+                       : base (NativeMethods.cairo_win32_surface_create (hdc), true)
                {
-                       surface = NativeMethods.cairo_win32_surface_create (hdc);
-                       lock (surfaces.SyncRoot) {
-                               surfaces [surface] = this;
-                       }
                }
        }
-
 }
index 97f5f2f6f797a0471d0080d5fc07cc6b4bb93575..142ebf9e31a0530bf5fafa8a4a7cb4e322f0940d 100644 (file)
@@ -36,24 +36,19 @@ namespace Cairo {
                }
 
                public XcbSurface (IntPtr connection, uint drawable, IntPtr visual, int width, int height)
+                       : base (NativeMethods.cairo_xcb_surface_create (connection, drawable, visual, width, height), true)
                {
-                       surface = NativeMethods.cairo_xcb_surface_create (connection, drawable, visual, width, height);
-                       lock (surfaces.SyncRoot) {
-                               surfaces [surface] = this;
-                       }
                }
 
                public static XcbSurface FromBitmap (IntPtr connection, uint bitmap, IntPtr screen, int width, int height)
                {
-                       IntPtr ptr;
-
-                       ptr = NativeMethods.cairo_xcb_surface_create_for_bitmap (connection, bitmap, screen, width, height);
+                       IntPtr ptr = NativeMethods.cairo_xcb_surface_create_for_bitmap (connection, bitmap, screen, width, height);
                        return new XcbSurface (ptr, true);
                }
 
                public void SetSize (int width, int height)
                {
-                       NativeMethods.cairo_xcb_surface_set_size (surface, width, height);
+                       NativeMethods.cairo_xcb_surface_set_size (Handle, width, height);
                }
        }
 }
index ef010feea5935886e5f00e5fdee9460041c901a3..c0003a491e61f3afafefcbb4ebbfb025a1052f75 100644 (file)
@@ -39,11 +39,8 @@ namespace Cairo {
        public class XlibSurface : Surface
        {
                public XlibSurface (IntPtr display, IntPtr drawable, IntPtr visual, int width, int height)
+                       : base (NativeMethods.cairo_xlib_surface_create (display, drawable, visual, width, height), true)
                {
-                       surface = NativeMethods.cairo_xlib_surface_create (display, drawable, visual, width, height);
-                       lock (surfaces.SyncRoot){
-                               surfaces [surface] = this;
-                       }
                }
 
                public XlibSurface (IntPtr ptr, bool own) : base (ptr, own)
@@ -52,48 +49,46 @@ namespace Cairo {
 
                public static XlibSurface FromBitmap (IntPtr display, IntPtr bitmap, IntPtr screen, int width, int height)
                {
-                       IntPtr  ptr;
-
-                       ptr = NativeMethods.cairo_xlib_surface_create_for_bitmap (display, bitmap, screen, width, height);
+                       IntPtr ptr = NativeMethods.cairo_xlib_surface_create_for_bitmap (display, bitmap, screen, width, height);
                        return new XlibSurface(ptr, true);
                }
 
                public void SetDrawable (IntPtr drawable, int width, int height)
                {
-                       NativeMethods.cairo_xlib_surface_set_drawable (surface, drawable, width, height);
+                       NativeMethods.cairo_xlib_surface_set_drawable (Handle, drawable, width, height);
                }
 
                public void SetSize (int width, int height)
                {
-                       NativeMethods.cairo_xlib_surface_set_size (surface, width, height);
+                       NativeMethods.cairo_xlib_surface_set_size (Handle, width, height);
                }
 
                public int Depth {
-                       get { return NativeMethods.cairo_xlib_surface_get_depth (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_depth (Handle); }
                }
                
                public IntPtr Display {
-                       get { return NativeMethods.cairo_xlib_surface_get_display (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_display (Handle); }
                }
 
                public IntPtr Drawable {
-                       get { return NativeMethods.cairo_xlib_surface_get_drawable (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_drawable (Handle); }
                }
 
                public int Height {
-                       get { return NativeMethods.cairo_xlib_surface_get_height (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_height (Handle); }
                }
 
                public IntPtr Screen {
-                       get { return NativeMethods.cairo_xlib_surface_get_screen (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_screen (Handle); }
                }
 
                public IntPtr Visual {
-                       get { return NativeMethods.cairo_xlib_surface_get_visual (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_visual (Handle); }
                }
 
                public int Width {
-                       get { return NativeMethods.cairo_xlib_surface_get_width (surface); }
+                       get { return NativeMethods.cairo_xlib_surface_get_width (Handle); }
                }
 
        }
index c4336d1c74b7d4c728e14d41475e3d71d99f549a..955d4593154408a4bb0ce7b87645157fd3c732bc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{300B4F1B-B9E4-4607-98BC-FFC1F9B2EC4D}</ProjectGuid>\r
+    <ProjectGuid>{7230E9AE-C6D4-402A-91CF-C164148CDD21}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil.Mdb-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_2_0.csproj">\r
-      <Project>{5B6E489A-FD73-4BF7-9B58-6FB1C2F1D3A7}</Project>\r
+      <Project>{2F1D61B7-0586-4587-8ECE-926A065F6276}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cc96584498c92b9bc6173f4282dea80e0c9bc11c..11cabb5dc2b125ba4324f3a9c2c1853f845a939e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E52B918D-8050-4D49-B80C-32293EDC2E5B}</ProjectGuid>\r
+    <ProjectGuid>{5F3D2BE6-A096-4504-AA3E-307B0A819E85}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil.Mdb-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_0.csproj">\r
-      <Project>{57F147C3-2558-4C1A-B462-50AB6FA9EF86}</Project>\r
+      <Project>{1FA0877C-43C9-44C7-9682-0C3F826BEA3E}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d143642b628236bdaf243c94b104c0b28a787e6f..ce8ca9673b18554ebc28c86352529b3c50a4c98d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{571A830B-5A77-4918-897F-100BDFD66F5E}</ProjectGuid>\r
+    <ProjectGuid>{9ABB7BB9-5EA1-4081-B205-5658A602C1F5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil.Mdb-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_5.csproj">\r
-      <Project>{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}</Project>\r
+      <Project>{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 665f3b8d767120ee4c6c6a848955ea40aa872266..6b10dd47dfd51175670afbc2bb09243545e87b44 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5B6E489A-FD73-4BF7-9B58-6FB1C2F1D3A7}</ProjectGuid>\r
+    <ProjectGuid>{2F1D61B7-0586-4587-8ECE-926A065F6276}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a92b2c9ed9989f94e324a3ee76d12f2e4565449a..6b1bddc795a180edc8baea0e15317d20d371a0c1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57F147C3-2558-4C1A-B462-50AB6FA9EF86}</ProjectGuid>\r
+    <ProjectGuid>{1FA0877C-43C9-44C7-9682-0C3F826BEA3E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 64ba29d93fd7be94c0dfee21bac7776ff1216575..f6b273726970de99c81ed29bfbb4ed352a6160b1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}</ProjectGuid>\r
+    <ProjectGuid>{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Cecil-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9b0fe22afa6588ab9c29566879bd4c11380915a0..f270913b1cbadcff61abef095f1d4f6ebd25fd45 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}</ProjectGuid>\r
+    <ProjectGuid>{61E5E4CF-E818-44D1-B718-70EE46F2B85D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CodeContracts-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_5.csproj">\r
-      <Project>{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}</Project>\r
+      <Project>{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil.Mdb\Mono.Cecil.Mdb-net_4_5.csproj">\r
-      <Project>{571A830B-5A77-4918-897F-100BDFD66F5E}</Project>\r
+      <Project>{9ABB7BB9-5EA1-4081-B205-5658A602C1F5}</Project>\r
       <Name>Mono.Cecil.Mdb\Mono.Cecil.Mdb-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fd23a7f9bae4cd5bf10e8158d179d0f0a688b063..3748cca507898ed3ee57e1bb4e0520d7375c8c08 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F3D6F2CB-120A-401F-92B5-59D88F932C4A}</ProjectGuid>\r
+    <ProjectGuid>{BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CodeContracts-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.CodeContracts\Mono.CodeContracts-net_4_5.csproj">\r
-      <Project>{BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}</Project>\r
+      <Project>{61E5E4CF-E818-44D1-B718-70EE46F2B85D}</Project>\r
       <Name>Mono.CodeContracts\Mono.CodeContracts-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d79174e7a777b5ea6ebd5666c2a6799878c6b444..b88ded137cbab53375c55f85bd58dda6a1c39987 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F8E19FD3-0691-4C7E-B4F4-AED6497C3E8E}</ProjectGuid>\r
+    <ProjectGuid>{3712AB0D-C22B-4189-B568-B581E29BBDE2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CompilerServices.SymbolWriter-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 97a3521b97d963a104b29c46b5650b3f4dd92617..7ea809a114d18eb0bf117ac7b9b9ce391e9e3f97 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4950EAE7-E5D9-4142-80DA-4B4A9834EA52}</ProjectGuid>\r
+    <ProjectGuid>{A4916834-A715-41CB-AB5A-2552B85F2249}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CompilerServices.SymbolWriter-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0ab0dc5183a80bae02e0a5ea05fe2ba493ab9ca9..720f4b0d3f1434b4f200700f004c49fed6e1849e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5C0B6042-9C59-4D58-A7C1-A912A0689066}</ProjectGuid>\r
+    <ProjectGuid>{CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.CompilerServices.SymbolWriter-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 363fb1518cc10ec137c7350565ef5f6dd88015a6..a65dc1310908eb51cafb01972a2bcfa724bc45da 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{60E307F3-5E95-42FF-9B41-3FB8AD664AB6}</ProjectGuid>\r
+    <ProjectGuid>{991C45A8-3B22-45BB-B688-DBF8BA835992}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6e42b3a4008687ce18a81d0e89692bd3136e1ab3..2de37f0f62c8e91682d18c744c014a22bc68edc5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}</ProjectGuid>\r
+    <ProjectGuid>{F26434C1-BA3D-41FB-B560-C009CB72B1B6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 33ea8b7a3a9e68c5f7805b68ac43066db88584bd..1ae54d40f5fe68f13d77b5aed63d324515e71ff4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</ProjectGuid>\r
+    <ProjectGuid>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7a067f845cd10fcf9e91c6d7bff1d3e4f1ce3c2e..474401ed818ea50428af9335ddf5aa96ef01717c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DFBE10D3-6BDB-4DE6-91B2-0A57889BD9A2}</ProjectGuid>\r
+    <ProjectGuid>{D7ADECD6-0DB4-4D9D-A491-1686883B3342}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0.csproj">\r
-      <Project>{60E307F3-5E95-42FF-9B41-3FB8AD664AB6}</Project>\r
+      <Project>{991C45A8-3B22-45BB-B688-DBF8BA835992}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 719b3e064d6730e55da2cc278a2bbf62199b13fd..1177c3e61a9e102ed3aee322d22035c70f02742c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{87B34DE3-0534-4941-8AB3-B118AB822099}</ProjectGuid>\r
+    <ProjectGuid>{2A36D174-DA81-441A-8AED-7A37D9B993D2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj">\r
-      <Project>{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}</Project>\r
+      <Project>{F26434C1-BA3D-41FB-B560-C009CB72B1B6}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3b925ae1d62d559d9adc373824ceac42fdc7bd6b..f23443acf28350253248d8ebf08c375e8f39cbd3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}</ProjectGuid>\r
+    <ProjectGuid>{C044B1E6-B892-49DC-BD71-4C796BD8964A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Sqlite-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b271779000a7b99ce56953217bd987f6b450ec29..4d9c7cad293e6b19124d290541aab61d4339029c 100644 (file)
@@ -555,6 +555,8 @@ namespace Mono.Data.Sqlite
       return GetSchemaTable(true, false);\r
     }\r
 \r
+    static bool hasColumnMetadataSupport = true;
+
     internal DataTable GetSchemaTable(bool wantUniqueInfo, bool wantDefaultValue)\r
     {\r
       CheckClosed();\r
@@ -620,18 +622,34 @@ namespace Mono.Data.Sqlite
         row[SchemaTableColumn.DataType] = GetFieldType(n);\r
         row[SchemaTableOptionalColumn.IsHidden] = false;\r
 \r
-#if !MONOTOUCH\r
-        strColumn = _command.Connection._sql.ColumnOriginalName(_activeStatement, n);\r
-        if (String.IsNullOrEmpty(strColumn) == false) row[SchemaTableColumn.BaseColumnName] = strColumn;\r
-\r
-        row[SchemaTableColumn.IsExpression] = String.IsNullOrEmpty(strColumn);\r
-        row[SchemaTableColumn.IsAliased] = (String.Compare(GetName(n), strColumn, true, CultureInfo.InvariantCulture) != 0);\r
-\r
-        temp = _command.Connection._sql.ColumnTableName(_activeStatement, n);\r
-        if (String.IsNullOrEmpty(temp) == false) row[SchemaTableColumn.BaseTableName] = temp;\r
-\r
-        temp = _command.Connection._sql.ColumnDatabaseName(_activeStatement, n);\r
-        if (String.IsNullOrEmpty(temp) == false) row[SchemaTableOptionalColumn.BaseCatalogName] = temp;\r
+        // HACK: Prevent exploding if Sqlite was built without the SQLITE_ENABLE_COLUMN_METADATA option.
+        //
+        // This code depends on sqlite3_column_origin_name, which only exists if Sqlite was built with
+        // the SQLITE_ENABLE_COLUMN_METADATA option. This is not the case on iOS, MacOS or (most?)
+        // Androids, so we exclude it from the MONOTOUCH build, and degrade on other systems by simply
+        //  omitting the metadata from the result.
+        //
+        // TODO: we could implement better fallbacks as proposed in
+        // https://bugzilla.xamarin.com/show_bug.cgi?id=2128
+        //
+#if !MONOTOUCH
+        if (hasColumnMetadataSupport) {
+            try {
+                strColumn = _command.Connection._sql.ColumnOriginalName(_activeStatement, n);
+                if (String.IsNullOrEmpty(strColumn) == false) row[SchemaTableColumn.BaseColumnName] = strColumn;
+
+                row[SchemaTableColumn.IsExpression] = String.IsNullOrEmpty(strColumn);
+                row[SchemaTableColumn.IsAliased] = (String.Compare(GetName(n), strColumn, true, CultureInfo.InvariantCulture) != 0);
+
+                temp = _command.Connection._sql.ColumnTableName(_activeStatement, n);
+                if (String.IsNullOrEmpty(temp) == false) row[SchemaTableColumn.BaseTableName] = temp;
+
+                temp = _command.Connection._sql.ColumnDatabaseName(_activeStatement, n);
+                if (String.IsNullOrEmpty(temp) == false) row[SchemaTableOptionalColumn.BaseCatalogName] = temp;
+            } catch (EntryPointNotFoundException) {
+                hasColumnMetadataSupport = false;
+            }
+        }
 #endif\r
 \r
         string dataType = null;\r
index c4588e900014d3480afb7e63a6815672e70e1d5c..73f73f55cc78189b723b96e49a9e60f0742ca926 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FDB86B5C-19F4-49DB-807F-CB0466C121A1}</ProjectGuid>\r
+    <ProjectGuid>{99315C7A-EEDA-4247-96F4-14924760DB8B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 38f4e301ff3e3657ece8f59809eda1d3c47ae16c..d26381276f5a9ef9fa9e2de0a260a484047a9a42 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2038AFC9-B4E4-4A05-B57B-11B698CA67DF}</ProjectGuid>\r
+    <ProjectGuid>{4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3ec6a875e07b7dc231ad7ba2b0e8a3495c2612fa..1a8a28053c6e9dcb17822e28584295e353a83a26 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2BB65926-A803-484F-A2D2-05CED0254A28}</ProjectGuid>\r
+    <ProjectGuid>{9B26C34E-8E81-4857-A1CB-B50F407EE7E1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bc4796bf75f60a142e43c3945dddb9aeb48b32b1..7580c35de46b4d7684428fb3954ff77a0a7d9610 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DBFC4F84-BE0B-4814-8A78-DA3584DE8DC8}</ProjectGuid>\r
+    <ProjectGuid>{FA614F93-69C6-4BDF-ADA2-B68C2C22B55C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_2_0.csproj">\r
-      <Project>{FDB86B5C-19F4-49DB-807F-CB0466C121A1}</Project>\r
+      <Project>{99315C7A-EEDA-4247-96F4-14924760DB8B}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Net.dll">\r
index 6fb07dad4b2f5ad51e458b7c361d5454e8499d6e..0340d9b1bd949b2cbc5b751ff6e9ddc963cdf213 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{195F7869-84C4-4D20-BCA3-7C0E0AE1A2C3}</ProjectGuid>\r
+    <ProjectGuid>{37C99354-C244-4BEE-B9AD-1FE718CD5A6F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_0.csproj">\r
-      <Project>{2038AFC9-B4E4-4A05-B57B-11B698CA67DF}</Project>\r
+      <Project>{4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net\System.Net-net_2_0.csproj">\r
-      <Project>{52BCBA52-95B9-4437-B630-4A7C492BF560}</Project>\r
+      <Project>{87D4A457-1D00-48A7-8BD6-E786E93CC4CA}</Project>\r
       <Name>System.Net\System.Net-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0fe06191c4850be4f49812c8a4e532622e90d3b8..f93e5fdbe186a22b59994d99c5e986f4c4c53713 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{48172E97-369D-408A-A5CB-DC3B34706C0B}</ProjectGuid>\r
+    <ProjectGuid>{21E94E1F-226D-4BD3-9368-594C0553CE91}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Data.Tds-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj">\r
-      <Project>{2BB65926-A803-484F-A2D2-05CED0254A28}</Project>\r
+      <Project>{9B26C34E-8E81-4857-A1CB-B50F407EE7E1}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net\System.Net-net_4_0.csproj">\r
-      <Project>{26480A1B-A6B9-4865-8492-C18019094CE4}</Project>\r
+      <Project>{0653CFE2-4A19-4B91-A51F-793F8D516790}</Project>\r
       <Name>System.Net\System.Net-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d5275a72754cd58aaa4bc9ceee35a989e0b67e4c..828c1e9ae18fc9a2e8d171f27d18479494898615 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57346D30-7524-46BB-BF8D-E8D43FF040E4}</ProjectGuid>\r
+    <ProjectGuid>{5B419D3D-3435-4FCB-8C86-5645AE0250FA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_2_0.csproj">\r
-      <Project>{5B6E489A-FD73-4BF7-9B58-6FB1C2F1D3A7}</Project>\r
+      <Project>{2F1D61B7-0586-4587-8ECE-926A065F6276}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f2330421ef806130412cd0f49d29903d571b1b45..3daebfd9f588073def1661b397d2256ae24595bb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D7DC4662-463B-4150-8172-BC0E096B8893}</ProjectGuid>\r
+    <ProjectGuid>{3A0F01E1-1196-4C1B-90DF-C3062FBEB5FA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_0.csproj">\r
-      <Project>{57F147C3-2558-4C1A-B462-50AB6FA9EF86}</Project>\r
+      <Project>{1FA0877C-43C9-44C7-9682-0C3F826BEA3E}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 232b043bf696c7beb13c8ebd86a19e626ea3ad99..47a682efefbce9be585b8caf3bdd76cbc32f744f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1B3407DC-BF9A-4679-BC2E-AF1322032D3D}</ProjectGuid>\r
+    <ProjectGuid>{21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_5.csproj">\r
-      <Project>{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}</Project>\r
+      <Project>{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 909ce9ede3782fe59425192fe365ccd61d83088e..1f9e1a0f247939619f3b9618720b9c96916ea016 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0A4AB2F0-6CD6-48DD-9013-EE4402266656}</ProjectGuid>\r
+    <ProjectGuid>{296F67F1-CFC1-402A-9DEB-6FC9503410BE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Debugger.Soft\Mono.Debugger.Soft-net_2_0.csproj">\r
-      <Project>{57346D30-7524-46BB-BF8D-E8D43FF040E4}</Project>\r
+      <Project>{5B419D3D-3435-4FCB-8C86-5645AE0250FA}</Project>\r
       <Name>Mono.Debugger.Soft\Mono.Debugger.Soft-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_2_0.csproj">\r
-      <Project>{5B6E489A-FD73-4BF7-9B58-6FB1C2F1D3A7}</Project>\r
+      <Project>{2F1D61B7-0586-4587-8ECE-926A065F6276}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2e052b6ac451c31fe354583106042f9a2f145806..2093fea91bbb77d6682d4d47755943020c801c95 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C1807BA9-9ADD-4FDE-8DD2-1A138B7E57F3}</ProjectGuid>\r
+    <ProjectGuid>{78E56A08-A352-40E2-AA5F-45BE21755225}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_0.csproj">\r
-      <Project>{D7DC4662-463B-4150-8172-BC0E096B8893}</Project>\r
+      <Project>{3A0F01E1-1196-4C1B-90DF-C3062FBEB5FA}</Project>\r
       <Name>Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_0.csproj">\r
-      <Project>{57F147C3-2558-4C1A-B462-50AB6FA9EF86}</Project>\r
+      <Project>{1FA0877C-43C9-44C7-9682-0C3F826BEA3E}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 57c4a6ad478d706047640744ccbc231f3ad04661..6dfd3f1e239ad037311088b52deac8e2a3550308 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}</ProjectGuid>\r
+    <ProjectGuid>{FBA53F04-D998-43D8-8538-C11EE71EEB70}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Debugger.Soft-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_5.csproj">\r
-      <Project>{1B3407DC-BF9A-4679-BC2E-AF1322032D3D}</Project>\r
+      <Project>{21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}</Project>\r
       <Name>Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Cecil\Mono.Cecil-net_4_5.csproj">\r
-      <Project>{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}</Project>\r
+      <Project>{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}</Project>\r
       <Name>Mono.Cecil\Mono.Cecil-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e8d5f58c8edbe18b68889dbf166a6caeb9f4b801..712953b29d530ee0e03a3c4b15f6c3dba644dc53 100644 (file)
@@ -285,6 +285,9 @@ namespace Mono.Debugger.Soft
                public bool Uncaught {
                        get; set;
                }
+               public bool Subclasses {
+                       get; set;
+               }
        }
 
        class AssemblyModifier : Modifier {
@@ -395,7 +398,7 @@ namespace Mono.Debugger.Soft
                 * with newer runtimes, and vice versa.
                 */
                internal const int MAJOR_VERSION = 2;
-               internal const int MINOR_VERSION = 23;
+               internal const int MINOR_VERSION = 26;
 
                enum WPSuspendPolicy {
                        NONE = 0,
@@ -519,7 +522,8 @@ namespace Mono.Debugger.Soft
                        GET_INFO = 6,
                        GET_BODY = 7,
                        RESOLVE_TOKEN = 8,
-                       GET_CATTRS = 9
+                       GET_CATTRS = 9,
+                       MAKE_GENERIC_METHOD = 10
                }
 
                enum CmdType {
@@ -1875,6 +1879,11 @@ namespace Mono.Debugger.Soft
                        return ReadCattrs (r);
                }
 
+               internal long Method_MakeGenericMethod (long id, long[] args) {
+                       PacketReader r = SendReceive (CommandSet.METHOD, (int)CmdMethod.MAKE_GENERIC_METHOD, new PacketWriter ().WriteId (id).WriteInt (args.Length).WriteIds (args));
+                       return r.ReadId ();
+               }
+
                /*
                 * THREAD
                 */
@@ -2168,6 +2177,11 @@ namespace Mono.Debugger.Soft
                                                } else if (!em.Caught || !em.Uncaught) {
                                                        throw new NotSupportedException ("This request is not supported by the protocol version implemented by the debuggee.");
                                                }
+                                               if (Version.MajorVersion > 2 || Version.MinorVersion > 24) {
+                                                       w.WriteBool (em.Subclasses);
+                                               } else if (!em.Subclasses) {
+                                                       throw new NotSupportedException ("This request is not supported by the protocol version implemented by the debuggee.");
+                                               }
                                        } else if (mod is AssemblyModifier) {
                                                w.WriteByte ((byte)ModifierKind.ASSEMBLY_ONLY);
                                                var amod = (mod as AssemblyModifier);
@@ -2321,6 +2335,8 @@ namespace Mono.Debugger.Soft
 
                public void ForceDisconnect ()
                {
+                       closed = true;
+                       disconnected = true;
                        TransportClose ();
                }
        }
index 07d4d8ccdd054125d6037c4ff899f9435e7cb89f..906b43fd839fee9ad37bbd10972c2c7edc137f46 100644 (file)
@@ -6,7 +6,7 @@ namespace Mono.Debugger.Soft
        public sealed class ExceptionEventRequest : EventRequest {
 
                TypeMirror exc_type;
-               bool caught, uncaught;
+               bool caught, uncaught, subclasses;
                
                internal ExceptionEventRequest (VirtualMachine vm, TypeMirror exc_type, bool caught, bool uncaught) : base (vm, EventType.Exception) {
                        if (exc_type != null) {
@@ -18,6 +18,7 @@ namespace Mono.Debugger.Soft
                        this.exc_type = exc_type;
                        this.caught = caught;
                        this.uncaught = uncaught;
+                       this.subclasses = true;
                }
 
                public TypeMirror ExceptionType {
@@ -26,9 +27,21 @@ namespace Mono.Debugger.Soft
                        }
                }
 
+               // Defaults to true
+               // Supported since protocol version 2.25
+               public bool IncludeSubclasses {
+                       get {
+                               return subclasses;
+                       }
+                       set {
+                               vm.CheckProtocolVersion (2, 25);
+                               subclasses = value;
+                       }
+               }
+
                public override void Enable () {
                        var mods = new List <Modifier> ();
-                       mods.Add (new ExceptionModifier () { Type = exc_type != null ? exc_type.Id : 0, Caught = caught, Uncaught = uncaught });
+                       mods.Add (new ExceptionModifier () { Type = exc_type != null ? exc_type.Id : 0, Caught = caught, Uncaught = uncaught, Subclasses = subclasses });
                        SendReq (mods);
                }
        }
index ac97cb02fb43742c806aedec74020c48f04d6e00..04717c61062dbc191a2f8c662782b326a74eb8d6 100644 (file)
@@ -1,5 +1,6 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Text;
 using System.Reflection;
 using C = Mono.Cecil;
@@ -306,6 +307,30 @@ namespace Mono.Debugger.Soft
                        return type_args;
                }
 
+               // Since protocol version 2.24
+               public MethodMirror MakeGenericMethod (TypeMirror[] args) {
+                       if (args == null)
+                               throw new ArgumentNullException ("args");
+                       foreach (var a in args)
+                               if (a == null)
+                                       throw new ArgumentNullException ("args");
+
+                       if (!IsGenericMethodDefinition)
+                               throw new InvalidOperationException ("not a generic method definition");
+
+                       if (GetGenericArguments ().Length != args.Length)
+                               throw new ArgumentException ("Incorrect length");
+
+                       vm.CheckProtocolVersion (2, 24);
+                       long id = -1;
+                       try {
+                               id = vm.conn.Method_MakeGenericMethod (Id, args.Select (t => t.Id).ToArray ());
+                       } catch (CommandException) {
+                               throw new InvalidOperationException ();
+                       }
+                       return vm.GetMethod (id);
+               }
+
                public IList<int> ILOffsets {
                        get {
                                if (debug_info == null)
index cb3c79231ba09ac0e7e587775c0238da4443e4bf..035fbcee56df096c804a3b8de2989ca9db83a9d8 100644 (file)
@@ -23,7 +23,11 @@ namespace Mono.Debugger.Soft
                StaticCtor = 1,
                /* Since protocol version 2.20 */
                /* Methods which have the [DebuggerHidden] attribute */
+               /* Before protocol version 2.26, this includes [DebuggerStepThrough] as well */
                DebuggerHidden = 2,
+               /* Since protocol version 2.26 */
+               /* Methods which have the [DebuggerStepThrough] attribute */
+               DebuggerStepThrough = 4,
        }
 
        public sealed class StepEventRequest : EventRequest {
index 3cd1edeadf4148e37ab81088f1bc360bef996fb9..125d780fd0e59a06240e7e45dc9ba7fa3bbd4bc9 100644 (file)
@@ -26,6 +26,7 @@ namespace Mono.Debugger.Soft
                TypeMirror[] ifaces;
                Dictionary<TypeMirror, InterfaceMappingMirror> iface_map;
                TypeMirror[] type_args;
+               bool cached_base_type;
                bool inited;
 
                internal const BindingFlags DefaultBindingFlags =
@@ -78,9 +79,9 @@ namespace Mono.Debugger.Soft
 
                public TypeMirror BaseType {
                        get {
-                               // FIXME: base_type could be null for object/interfaces
-                               if (base_type == null) {
+                               if (!cached_base_type) {
                                        base_type = vm.GetType (GetInfo ().base_type);
+                                       cached_base_type = true;
                                }
                                return base_type;
                        }
@@ -591,11 +592,11 @@ namespace Mono.Debugger.Soft
 
                string[] source_files;
                string[] source_files_full_path;
-               public string[] GetSourceFiles (bool return_full_paths) {
-                       string[] res = return_full_paths ? source_files_full_path : source_files;
+               public string[] GetSourceFiles (bool returnFullPaths) {
+                       string[] res = returnFullPaths ? source_files_full_path : source_files;
                        if (res == null) {
-                               res = vm.conn.Type_GetSourceFiles (id, return_full_paths);
-                               if (return_full_paths)
+                               res = vm.conn.Type_GetSourceFiles (id, returnFullPaths);
+                               if (returnFullPaths)
                                        source_files_full_path = res;
                                else
                                        source_files = res;
@@ -684,29 +685,38 @@ namespace Mono.Debugger.Soft
                 * used by the reflection-only functionality on .net.
                 */
                public CustomAttributeDataMirror[] GetCustomAttributes (bool inherit) {
-                       return GetCAttrs (null, inherit);
+                       return GetCustomAttrs (null, inherit);
                }
 
                public CustomAttributeDataMirror[] GetCustomAttributes (TypeMirror attributeType, bool inherit) {
                        if (attributeType == null)
                                throw new ArgumentNullException ("attributeType");
-                       return GetCAttrs (attributeType, inherit);
+                       return GetCustomAttrs (attributeType, inherit);
                }
 
-               CustomAttributeDataMirror[] GetCAttrs (TypeMirror type, bool inherit) {
+               void AppendCustomAttrs (IList<CustomAttributeDataMirror> attrs, TypeMirror type, bool inherit)
+               {
                        if (cattrs == null && Metadata != null && !Metadata.HasCustomAttributes)
                                cattrs = new CustomAttributeDataMirror [0];
 
-                       // FIXME: Handle inherit
                        if (cattrs == null) {
                                CattrInfo[] info = vm.conn.Type_GetCustomAttributes (id, 0, false);
                                cattrs = CustomAttributeDataMirror.Create (vm, info);
                        }
-                       var res = new List<CustomAttributeDataMirror> ();
-                       foreach (var attr in cattrs)
+
+                       foreach (var attr in cattrs) {
                                if (type == null || attr.Constructor.DeclaringType == type)
-                                       res.Add (attr);
-                       return res.ToArray ();
+                                       attrs.Add (attr);
+                       }
+
+                       if (inherit && BaseType != null)
+                               BaseType.AppendCustomAttrs (attrs, type, inherit);
+               }
+
+               CustomAttributeDataMirror[] GetCustomAttrs (TypeMirror type, bool inherit) {
+                       var attrs = new List<CustomAttributeDataMirror> ();
+                       AppendCustomAttrs (attrs, type, inherit);
+                       return attrs.ToArray ();
                }
 
                public MethodMirror[] GetMethodsByNameFlags (string name, BindingFlags flags, bool ignoreCase) {
index d6a2a7896fc2a25457512ef2defa4ca7b78f04c5..b77458b44110eeee8ce8ee64e36dcf4b2d5011f3 100644 (file)
@@ -124,7 +124,7 @@ namespace Mono.Debugger.Soft
                                conn.VM_Resume ();
                        } catch (CommandException ex) {
                                if (ex.ErrorCode == ErrorCode.NOT_SUSPENDED)
-                                       throw new InvalidOperationException ("The vm is not suspended.");
+                                       throw new VMNotSuspendedException ();
                                else
                                        throw;
                        }
@@ -290,7 +290,7 @@ namespace Mono.Debugger.Soft
                        case ErrorCode.INVALID_FRAMEID:
                                throw new InvalidStackFrameException ();
                        case ErrorCode.NOT_SUSPENDED:
-                               throw new InvalidOperationException ("The vm is not suspended.");
+                               throw new VMNotSuspendedException ();
                        case ErrorCode.NOT_IMPLEMENTED:
                                throw new NotSupportedException ("This request is not supported by the protocol version implemented by the debuggee.");
                        case ErrorCode.ABSENT_INFORMATION:
@@ -691,4 +691,11 @@ namespace Mono.Debugger.Soft
                        get; set;
                }
        }
+
+       public class VMNotSuspendedException : InvalidOperationException
+       {
+               public VMNotSuspendedException () : base ("The vm is not suspended.")
+               {
+               }
+       }
 }
index 2208c579bf9f2fb751cd22b444f36d8e341cff6a..176bb8f6bcdf56fade22b409e4ca3713f56441ea 100644 (file)
@@ -132,6 +132,13 @@ public struct GStruct<T> {
        }
 }
 
+public struct NestedStruct {
+       NestedInner nested1, nested2;
+}
+
+public struct NestedInner {
+}
+
 interface ITest
 {
        void Foo ();
@@ -166,7 +173,12 @@ class TestIfaces<T> : ITest<T>
        }
 }
 
-public class Tests : TestsBase
+public interface ITest2
+{
+       int invoke_iface ();
+}
+
+public class Tests : TestsBase, ITest2
 {
 #pragma warning disable 0414
        int field_i;
@@ -193,9 +205,11 @@ public class Tests : TestsBase
        public AStruct field_struct;
        public object field_boxed_struct;
        public GStruct<int> generic_field_struct;
+       public KeyValuePair<int, object> boxed_struct_field;
        [ThreadStatic]
        public static int tls_i;
        public static bool is_attached = Debugger.IsAttached;
+       public NestedStruct nested_struct;
 
 #pragma warning restore 0414
 
@@ -223,6 +237,12 @@ public class Tests : TestsBase
                }
        }
 
+       public static void wait_one ()
+       {
+               ManualResetEvent evt = new ManualResetEvent (false);
+               evt.WaitOne ();
+       }
+
        public static int Main (String[] args) {
                tls_i = 42;
 
@@ -233,10 +253,18 @@ public class Tests : TestsBase
                        unhandled_exception ();
                        return 0;
                }
+               if (args.Length >0 && args [0] == "unhandled-exception-endinvoke") {
+                       unhandled_exception_endinvoke ();
+                       return 0;
+               }
                if (args.Length >0 && args [0] == "unhandled-exception-user") {
                        unhandled_exception_user ();
                        return 0;
                }
+               if (args.Length >0 && args [0] == "wait-one") {
+                       wait_one ();
+                       return 0;
+               }
                breakpoints ();
                single_stepping ();
                arguments ();
@@ -329,7 +357,9 @@ public class Tests : TestsBase
                } catch {
                }
                ss7 ();
+               ss_nested ();
                ss_regress_654694 ();
+               ss_step_through ();
        }
 
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
@@ -403,6 +433,50 @@ public class Tests : TestsBase
                throw new Exception ();
        }
 
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void ss_nested () {
+               ss_nested_1 (ss_nested_2 ());
+               ss_nested_1 (ss_nested_2 ());
+               ss_nested_3 ();
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void ss_nested_1 (int i) {
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static int ss_nested_2 () {
+               return 0;
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void ss_nested_3 () {
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void ss_step_through () {
+               step_through_1 ();
+               StepThroughClass.step_through_2 ();
+               step_through_3 ();
+       }
+
+       [DebuggerStepThrough]
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void step_through_1 () {
+       }
+
+       [DebuggerStepThrough]
+       class StepThroughClass {
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public static void step_through_2 () {
+               }
+       }
+
+       [DebuggerStepThrough]
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void step_through_3 () {
+       }
+
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static bool is_even (int i) {
                return i % 2 == 0;
@@ -484,7 +558,7 @@ public class Tests : TestsBase
        }
 
        public static void vtypes () {
-               Tests t = new Tests () { field_struct = new AStruct () { i = 42, s = "S", k = 43 }, generic_field_struct = new GStruct<int> () { i = 42 }, field_boxed_struct = new AStruct () { i = 42 }};
+               Tests t = new Tests () { field_struct = new AStruct () { i = 42, s = "S", k = 43 }, generic_field_struct = new GStruct<int> () { i = 42 }, field_boxed_struct = new AStruct () { i = 42 }, boxed_struct_field = new KeyValuePair<int, object> (1, (long)42 ) };
                AStruct s = new AStruct { i = 44, s = "T", k = 45 };
                AStruct[] arr = new AStruct[] { 
                        new AStruct () { i = 1, s = "S1" },
@@ -519,6 +593,7 @@ public class Tests : TestsBase
                locals2<string> (null, 5, "ABC", ref s);
                locals3 ();
                locals6 ();
+               locals7<int> (22);
        }
 
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
@@ -538,7 +613,9 @@ public class Tests : TestsBase
        }
 
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
+#if NET_4_5
        [StateMachine (typeof (int))]
+#endif
        public static void locals2<T> (string[] args, int arg, T t, ref string rs) {
                long i = 42;
                string s = "AB";
@@ -552,6 +629,7 @@ public class Tests : TestsBase
                rs = "A";
        }
 
+
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static void locals3 () {
                string s = "B";
@@ -634,6 +712,12 @@ public class Tests : TestsBase
        public static void locals6_6 (int arg) {
        }
 
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void locals7<T> (T arg) {
+               T t = arg;
+               T t2 = t;
+       }
+
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static void line_numbers () {
                LineNumbers.ln1 ();
@@ -788,6 +872,10 @@ public class Tests : TestsBase
                throw new Exception ();
        }
 
+       public int invoke_iface () {
+               return 42;
+       }
+
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static void exceptions () {
                try {
@@ -806,6 +894,15 @@ public class Tests : TestsBase
                        throw new OverflowException ();
                } catch (Exception) {
                }
+               // no subclasses
+               try {
+                       throw new OverflowException ();
+               } catch (Exception) {
+               }
+               try {
+                       throw new Exception ();
+               } catch (Exception) {
+               }
 
                object o = null;
                try {
@@ -827,6 +924,27 @@ public class Tests : TestsBase
                Thread.Sleep (10000);
        }
 
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void unhandled_exception_endinvoke_2 () {
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void unhandled_exception_endinvoke () {
+                       Action action = new Action (() => 
+                       {
+                               throw new Exception ("thrown");
+                       });
+                       action.BeginInvoke ((ar) => {
+                               try {
+                                       action.EndInvoke (ar);
+                               } catch (Exception ex) {
+                                       //Console.WriteLine (ex);
+                               }
+                       }, null);
+               Thread.Sleep (1000);
+               unhandled_exception_endinvoke_2 ();
+       }
+
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static void unhandled_exception_user () {
 #if NET_4_5
@@ -1017,16 +1135,14 @@ public class Tests : TestsBase
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        public static void frames_in_native () {
                Thread.Sleep (500);
+               var evt = new ManualResetEvent (false);
+               
                object mon = new object ();
                ThreadPool.QueueUserWorkItem (delegate {
                                frames_in_native_2 ();
-                               lock (mon) {
-                                       Monitor.Pulse (mon);
-                               }
+                               evt.Set ();
                        });
-               lock (mon) {
-                       Monitor.Wait (mon);
-               }
+               evt.WaitOne ();
        }
 
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
@@ -1128,6 +1244,10 @@ public class Tests : TestsBase
                set_gc_suspend_field ();
                gc_suspend_1 ();
        }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void generic_method<T> () where T : class {
+       }
 }
 
 class TypeLoadClass {
index 6e6b46fe67aa81b04f56c2d383d3515acd7aca07..e2170ec3e8ec291018b769d4fffe3f5eb10aa7b4 100644 (file)
@@ -24,6 +24,7 @@ public class DebuggerTests
        VirtualMachine vm;
        MethodMirror entry_point;
        StepEventRequest step_req;
+       bool forceExit;
 
        void AssertThrows<ExType> (Action del) where ExType : Exception {
                bool thrown = false;
@@ -47,7 +48,13 @@ public class DebuggerTests
                return es [0];
        }
 
-       void Start (string[] args) {
+       void Start (params string[] args) {
+               Start (false, args);
+       }
+
+       void Start (bool forceExit, params string[] args) {
+               this.forceExit = forceExit;
+
                if (!listening) {
                        var pi = new Diag.ProcessStartInfo ();
 
@@ -98,7 +105,7 @@ public class DebuggerTests
                MethodMirror m = entry_point.DeclaringType.GetMethod (name);
                Assert.IsNotNull (m);
                //Console.WriteLine ("X: " + name + " " + m.ILOffsets.Count + " " + m.Locations.Count);
-               vm.SetBreakpoint (m, m.ILOffsets [0]);
+               var req = vm.SetBreakpoint (m, m.ILOffsets [0]);
 
                Event e = null;
 
@@ -109,6 +116,8 @@ public class DebuggerTests
                                break;
                }
 
+               req.Disable ();
+
                Assert.IsInstanceOfType (typeof (BreakpointEvent), e);
                Assert.AreEqual (m.Name, (e as BreakpointEvent).Method.Name);
 
@@ -128,6 +137,16 @@ public class DebuggerTests
                return e;
        }
 
+       Event step_until (ThreadMirror t, string method_name) {
+               Event e;
+               while (true) {
+                       e = single_step (t);
+                       if ((e as StepEvent).Method.Name == method_name)
+                               break;
+               }
+               return e;
+       }
+
        void check_arg_val (StackFrame frame, int pos, Type type, object eval) {
                object val = frame.GetArgument (pos);
                Assert.IsTrue (val is PrimitiveValue);
@@ -155,6 +174,7 @@ public class DebuggerTests
 
        [SetUp]
        public void SetUp () {
+               ThreadMirror.NativeTransitions = false;
                Start (new string [] { "dtest-app.exe" });
        }
 
@@ -167,6 +187,9 @@ public class DebuggerTests
                        step_req.Disable ();
 
                vm.Resume ();
+               if (forceExit)
+                       vm.Exit (0);
+
                while (true) {
                        Event e = GetNextEvent ();
 
@@ -175,6 +198,7 @@ public class DebuggerTests
 
                        vm.Resume ();
                }
+               vm = null;
        }
 
        [Test]
@@ -353,15 +377,19 @@ public class DebuggerTests
                Assert.AreEqual (method, (e as StepEvent).Method.Name);
        }
 
+       StepEventRequest create_step (Event e) {
+               var req = vm.CreateStepRequest (e.Thread);
+               step_req = req;
+               return req;
+       }
+
        [Test]
        public void SingleStepping () {
                Event e = run_until ("single_stepping");
 
-               var req = vm.CreateStepRequest (e.Thread);
+               var req = create_step (e);
                req.Enable ();
 
-               step_req = req;
-
                // Step over 'bool b = true'
                e = step_once ();
                assert_location (e, "single_stepping");
@@ -380,49 +408,24 @@ public class DebuggerTests
                e = step_once ();
                assert_location (e, "single_stepping");
 
-               // Change to step over
-               req.Disable ();
-               req.Depth = StepDepth.Over;
-               req.Enable ();
-
                // Step over ss2
-               e = step_once ();
+               e = step_over ();
                assert_location (e, "single_stepping");
 
-               // Change to step into
-               req.Disable ();
-               req.Depth = StepDepth.Into;
-               req.Enable ();
-
                // Step into ss3
-               e = step_once ();
+               e = step_into ();
                assert_location (e, "ss3");
 
-               // Change to step out
-               req.Disable ();
-               req.Depth = StepDepth.Out;
-               req.Enable ();
-
                // Step back into single_stepping
-               e = step_once ();
+               e = step_out ();
                assert_location (e, "single_stepping");
 
-               // Change to step into
-               req.Disable ();
-               req.Depth = StepDepth.Into;
-               req.Enable ();
-
                // Step into ss3_2 ()
-               e = step_once ();
+               e = step_into ();
                assert_location (e, "ss3_2");
 
-               // Change to step over
-               req.Disable ();
-               req.Depth = StepDepth.Over;
-               req.Enable ();
-
                // Step over ss3_2_2 ()
-               e = step_once ();
+               e = step_over ();
                assert_location (e, "ss3_2");
 
                // Recreate the request
@@ -436,13 +439,8 @@ public class DebuggerTests
                e = step_once ();
                assert_location (e, "single_stepping");
 
-               // Change to step into
-               req.Disable ();
-               req.Depth = StepDepth.Into;
-               req.Enable ();
-
                // Step into ss4 ()
-               e = step_once ();
+               e = step_into ();
                assert_location (e, "ss4");
 
                // Skip nop
@@ -482,13 +480,12 @@ public class DebuggerTests
                assert_location (e, "is_even");
 
                // FIXME: Check that single stepping works with lock (obj)
-               
                req.Disable ();
 
                // Run until ss6
                e = run_until ("ss6");
 
-               req = vm.CreateStepRequest (e.Thread);
+               req = create_step (e);
                req.Depth = StepDepth.Over;
                req.Enable ();
 
@@ -500,18 +497,50 @@ public class DebuggerTests
 
                // Check that a step over stops at an EH clause
                e = run_until ("ss7_2");
-               req = vm.CreateStepRequest (e.Thread);
+               req = create_step (e);
                req.Depth = StepDepth.Out;
                req.Enable ();
                e = step_once ();
                assert_location (e, "ss7");
                req.Disable ();
-               req = vm.CreateStepRequest (e.Thread);
+               req = create_step (e);
                req.Depth = StepDepth.Over;
                req.Enable ();
                e = step_once ();
                assert_location (e, "ss7");
                req.Disable ();
+
+               // Check that stepping stops between nested calls
+               e = run_until ("ss_nested_2");
+               e = step_out ();
+               assert_location (e, "ss_nested");
+               e = step_into ();
+               assert_location (e, "ss_nested_1");
+               e = step_out ();
+               assert_location (e, "ss_nested");
+               // Check that step over steps over nested calls
+               e = step_over ();
+               assert_location (e, "ss_nested");
+               e = step_into ();
+               assert_location (e, "ss_nested_3");
+               req.Disable ();
+
+               // Check DebuggerStepThrough support
+               e = run_until ("ss_step_through");
+               req = create_step (e);
+               req.Filter = StepFilter.DebuggerStepThrough;
+               e = step_into ();
+               // Step through step_through_1 ()
+               e = step_into ();
+               assert_location (e, "ss_step_through");
+               // Step through StepThroughClass.step_through_2 ()
+               e = step_into ();
+               assert_location (e, "ss_step_through");
+               req.Disable ();
+               req.Filter = StepFilter.None;
+               e = step_into ();
+               assert_location (e, "step_through_3");
+               req.Disable ();
        }
 
        [Test]
@@ -1091,7 +1120,7 @@ public class DebuggerTests
                t = frame.Method.GetParameters ()[8].ParameterType;
                Assert.AreEqual ("Tests2", t.Name);
                var attrs = t.GetCustomAttributes (true);
-               Assert.AreEqual (3, attrs.Length);
+               Assert.AreEqual (5, attrs.Length);
                foreach (var attr in attrs) {
                        if (attr.Constructor.DeclaringType.Name == "DebuggerDisplayAttribute") {
                                Assert.AreEqual (1, attr.ConstructorArguments.Count);
@@ -1110,6 +1139,12 @@ public class DebuggerTests
                                Assert.AreEqual (2, attr.NamedArguments.Count);
                                Assert.AreEqual ("afield", attr.NamedArguments [0].Field.Name);
                                Assert.AreEqual ("bfield", attr.NamedArguments [1].Field.Name);
+                       } else if (attr.Constructor.DeclaringType.Name == "ClassInterfaceAttribute") {
+                               // inherited from System.Object
+                               //} else if (attr.Constructor.DeclaringType.Name == "Serializable") {
+                               // inherited from System.Object
+                       } else if (attr.Constructor.DeclaringType.Name == "ComVisibleAttribute") {
+                               // inherited from System.Object
                        } else {
                                Assert.Fail (attr.Constructor.DeclaringType.Name);
                        }
@@ -1313,6 +1348,21 @@ public class DebuggerTests
                Assert.AreEqual ("AStruct", s.Type.Name);
                AssertValue (42, s ["i"]);
 
+               // Check decoding of nested structs (#14942)
+               obj = o.GetValue (o.Type.GetField ("nested_struct"));
+               o.SetValue (o.Type.GetField ("nested_struct"), obj);
+
+               // Check round tripping of boxed struct fields (#12354)
+               obj = o.GetValue (o.Type.GetField ("boxed_struct_field"));
+               o.SetValue (o.Type.GetField ("boxed_struct_field"), obj);
+               obj = o.GetValue (o.Type.GetField ("boxed_struct_field"));
+               s = obj as StructMirror;
+               AssertValue (1, s ["key"]);
+               obj = s ["value"];
+               Assert.IsTrue (obj is StructMirror);
+               s = obj as StructMirror;
+               AssertValue (42, s ["m_value"]);
+
                // vtypes as arguments
                s = frame.GetArgument (0) as StructMirror;
                AssertValue (44, s ["i"]);
@@ -1349,11 +1399,7 @@ public class DebuggerTests
 
                // this on vtype methods
                e = run_until ("vtypes2");
-               
-               // Skip nop
-               e = single_step (e.Thread);
-
-               e = single_step (e.Thread);
+               e = step_until (e.Thread, "foo");
 
                frame = e.Thread.GetFrames () [0];
 
@@ -1368,11 +1414,7 @@ public class DebuggerTests
 
                // this on static vtype methods
                e = run_until ("vtypes3");
-
-               // Skip nop
-               e = single_step (e.Thread);
-
-               e = single_step (e.Thread);
+               e = step_until (e.Thread, "static_foo");
 
                frame = e.Thread.GetFrames () [0];
 
@@ -1450,6 +1492,27 @@ public class DebuggerTests
                return e;
        }
 
+       Event step_into () {
+               step_req.Disable ();
+               step_req.Depth = StepDepth.Into;
+               step_req.Enable ();
+               return step_once ();
+       }
+
+       Event step_over () {
+               step_req.Disable ();
+               step_req.Depth = StepDepth.Over;
+               step_req.Enable ();
+               return step_once ();
+       }
+
+       Event step_out () {
+               step_req.Disable ();
+               step_req.Depth = StepDepth.Out;
+               step_req.Enable ();
+               return step_once ();
+       }
+
        [Test]
        public void Locals () {
                var be = run_until ("locals1");
@@ -1471,9 +1534,8 @@ public class DebuggerTests
                object val = frame.GetValue (frame.Method.GetLocal ("i"));
                AssertValue (0, val);
 
-               var req = vm.CreateStepRequest (be.Thread);
+               var req = create_step (be);
                req.Enable ();
-               step_req = req;
 
                // Skip nop
                step_once ();
@@ -1551,6 +1613,36 @@ public class DebuggerTests
                        });
 
                req.Disable ();
+
+               // gsharedvt
+               be = run_until ("locals7");
+
+               req = create_step (be);
+               req.Enable ();
+
+               // Skip nop
+               e = step_once ();
+
+               // Test that locals are initialized
+               frame = e.Thread.GetFrames () [0];
+               val = frame.GetValue (frame.Method.GetLocal ("t"));
+               AssertValue (0, val);
+
+               // Execute t = arg
+               e = step_once ();
+               Assert.AreEqual ("locals7", (e as StepEvent).Method.Name);
+
+               // Execute t2 = t
+               e = step_once ();
+               Assert.AreEqual ("locals7", (e as StepEvent).Method.Name);
+
+               frame = e.Thread.GetFrames () [0];
+               val = frame.GetValue (frame.Method.GetParameters ()[0]);
+               AssertValue (22, val);
+               val = frame.GetValue (frame.Method.GetLocal ("t"));
+               AssertValue (22, val);
+               val = frame.GetValue (frame.Method.GetLocal ("t2"));
+               AssertValue (22, val);
        }
 
        [Test]
@@ -1642,16 +1734,28 @@ public class DebuggerTests
 
                // FIXME: Merge this with LineNumbers () when its fixed
 
-               step_req = vm.CreateStepRequest (e.Thread);
+               step_req = create_step (e);
                step_req.Depth = StepDepth.Into;
                step_req.Enable ();
 
                Location l;
                
-               vm.Resume ();
+               while (true) {
+                       vm.Resume ();
 
+                       e = GetNextEvent ();
+                       Assert.IsTrue (e is StepEvent);
+                       if (e.Thread.GetFrames ()[0].Method.Name == "ln1")
+                               break;
+               }
+
+               // Do an additional step over so we are not on the beginning line of the method
+               step_req.Disable ();
+               step_req.Depth = StepDepth.Over;
+               step_req.Enable ();
+               vm.Resume ();
                e = GetNextEvent ();
-               Assert.IsTrue (e is StepEvent);
+               Assert.IsTrue (e is StepEvent);         
 
                l = e.Thread.GetFrames ()[0].Location;
 
@@ -1666,7 +1770,7 @@ public class DebuggerTests
        public void LineNumbers () {
                Event e = run_until ("line_numbers");
 
-               step_req = vm.CreateStepRequest (e.Thread);
+               step_req = create_step (e);
                step_req.Depth = StepDepth.Into;
                step_req.Enable ();
 
@@ -1961,6 +2065,12 @@ public class DebuggerTests
                Assert.IsInstanceOfType (typeof (ObjectMirror), v);
                Assert.AreEqual ("Tests", (v as ObjectMirror).Type.Name);
 
+               // interface method
+               var cl1 = frame.Method.DeclaringType.Assembly.GetType ("ITest2");
+               m = cl1.GetMethod ("invoke_iface");
+               v = this_obj.InvokeMethod (e.Thread, m, null);
+               AssertValue (42, v);
+
                // Argument checking
                
                // null thread
@@ -2184,8 +2294,13 @@ public class DebuggerTests
                while (invoke_results.Count < 2) {
                        Thread.Sleep (100);
                }
-               AssertValue ("ABC", invoke_results [0]);
-               AssertValue (42, invoke_results [1]);
+               if (invoke_results [0] is PrimitiveValue) {
+                       AssertValue ("ABC", invoke_results [1]);
+                       AssertValue (42, invoke_results [0]);
+               } else {
+                       AssertValue ("ABC", invoke_results [0]);
+                       AssertValue (42, invoke_results [1]);
+               }
        }
 
        void invoke_multiple_cb (IAsyncResult ar) {
@@ -2352,13 +2467,11 @@ public class DebuggerTests
                Assert.IsNull (v);
 
                // Try a single step after the invoke
-               var req = vm.CreateStepRequest (e.Thread);
+               var req = create_step (e);
                req.Depth = StepDepth.Into;
                req.Size = StepSize.Line;
                req.Enable ();
 
-               step_req = req;
-
                // Skip nop
                step_once ();
 
@@ -2413,6 +2526,17 @@ public class DebuggerTests
                Assert.AreEqual ("OverflowException", (e as ExceptionEvent).Exception.Type.Name);
                req.Disable ();
 
+               // no subclasses
+               req.IncludeSubclasses = false;
+               req.Enable ();
+
+               vm.Resume ();
+
+               e = GetNextEvent ();
+               Assert.IsInstanceOfType (typeof (ExceptionEvent), e);
+               Assert.AreEqual ("Exception", (e as ExceptionEvent).Exception.Type.Name);
+               req.Disable ();
+
                // Implicit exceptions
                req = vm.CreateExceptionRequest (null);
                req.Enable ();
@@ -2437,7 +2561,7 @@ public class DebuggerTests
                Assert.AreEqual ("exceptions2", frames [0].Method.Name);
                req.Disable ();
 
-               var sreq = vm.CreateStepRequest (e.Thread);
+               var sreq = create_step (e);
                sreq.Depth = StepDepth.Over;
                sreq.Size = StepSize.Line;
                sreq.Enable ();
@@ -2841,7 +2965,7 @@ public class DebuggerTests
                e = GetNextEvent ();
                Assert.IsTrue (e is BreakpointEvent);
 
-               var req = vm.CreateStepRequest (e.Thread);
+               var req = create_step (e);
                req.Depth = StepDepth.Over;
                req.Size = StepSize.Line;
                req.Enable ();
@@ -3090,7 +3214,7 @@ public class DebuggerTests
 
        [Test]
        public void UnhandledException () {
-               vm.Detach ();
+               vm.Exit (0);
 
                Start (new string [] { "dtest-app.exe", "unhandled-exception" });
 
@@ -3107,6 +3231,29 @@ public class DebuggerTests
                vm = null;
        }
 
+       [Test]
+       public void UnhandledException_2 () {
+               vm.Exit (0);
+
+               Start (new string [] { "dtest-app.exe", "unhandled-exception-endinvoke" });
+
+               var req = vm.CreateExceptionRequest (null, false, true);
+               req.Enable ();
+
+               MethodMirror m = entry_point.DeclaringType.GetMethod ("unhandled_exception_endinvoke_2");
+               Assert.IsNotNull (m);
+               vm.SetBreakpoint (m, m.ILOffsets [0]);
+
+               var e = run_until ("unhandled_exception_endinvoke");
+               vm.Resume ();
+
+               var e2 = GetNextEvent ();
+               Assert.IsFalse (e2 is ExceptionEvent);
+
+               vm.Exit (0);
+               vm = null;
+       }
+
 #if NET_4_5
        [Test]
        public void UnhandledExceptionUserCode () {
@@ -3151,6 +3298,92 @@ public class DebuggerTests
                var o2 = entry_point.DeclaringType.GetValue (entry_point.DeclaringType.GetField ("gc_suspend_field")) as ObjectMirror;
                Assert.IsNull (o2);
        }
+
+       [Test]
+       public void MakeGenericMethod () {
+               Event e = run_until ("bp1");
+
+               var intm = vm.RootDomain.GetCorrespondingType (typeof (int));
+               var stringm = vm.RootDomain.GetCorrespondingType (typeof (string));
+               var gm = entry_point.DeclaringType.GetMethod ("generic_method");
+               var res = gm.MakeGenericMethod (new TypeMirror [] { stringm });
+               var args = res.GetGenericArguments ();
+               Assert.AreEqual (1, args.Length);
+               Assert.AreEqual (stringm, args [0]);
+
+               // Error checking
+               AssertThrows<ArgumentNullException> (delegate {
+                               gm.MakeGenericMethod (null);
+                       });
+               AssertThrows<ArgumentNullException> (delegate {
+                               gm.MakeGenericMethod (new TypeMirror [] { null });
+                       });
+               AssertThrows<ArgumentException> (delegate {
+                               gm.MakeGenericMethod (new TypeMirror [] { stringm, stringm });
+                       });
+               AssertThrows<InvalidOperationException> (delegate {
+                               gm.MakeGenericMethod (new TypeMirror [] { intm });
+                       });
+               AssertThrows<InvalidOperationException> (delegate {
+                               entry_point.DeclaringType.GetMethod ("Main").MakeGenericMethod (new TypeMirror [] { intm });
+                       });
+       }
+
+       [Test]
+       public void InspectThreadSuspenedOnWaitOne () {
+               TearDown ();
+               Start (true, "dtest-app.exe", "wait-one" );
+
+               ThreadMirror.NativeTransitions = true;
+
+               var evt = run_until ("wait_one");
+               Assert.IsNotNull (evt, "#1");
+
+               var thread = evt.Thread;
+               Assert.AreEqual (ThreadState.Running, thread.ThreadState, "#1.1");
+
+               var frames = thread.GetFrames ();
+               Assert.IsNotNull (frames, "#2");
+               Assert.AreEqual (2, frames.Length, "#3");
+               Assert.AreEqual ("wait_one", frames [0].Method.Name, "#4");
+               Assert.AreEqual ("Main", frames [1].Method.Name, "#5");
+
+               vm.Resume ();
+
+               Thread.Sleep (500); //FIXME this is racy, maybe single step? or something?
+
+               vm.Suspend ();
+               Assert.AreEqual (ThreadState.WaitSleepJoin, thread.ThreadState, "#6");
+
+               frames = thread.GetFrames ();
+               Assert.AreEqual (4, frames.Length, "#7");
+               Assert.AreEqual ("WaitOne_internal", frames [0].Method.Name, "#8");
+               Assert.AreEqual ("WaitOne", frames [1].Method.Name, "#8.1");
+               Assert.AreEqual ("wait_one", frames [2].Method.Name, "#9");
+               Assert.AreEqual ("Main", frames [3].Method.Name, "#10");
+
+
+               var frame = frames [0];
+               Assert.IsTrue (frame.IsNativeTransition, "#11.1");
+               try {
+                       frame.GetThis ();
+                       Assert.Fail ("Known limitation - can't get info from m2n frames");
+               } catch (AbsentInformationException) {}
+
+               frame = frames [1];
+               Assert.IsFalse (frame.IsNativeTransition, "#12.1");
+               var wait_one_this = frame.GetThis ();
+               Assert.IsNotNull (wait_one_this, "#12.2");
+
+               frame = frames [2];
+               var locals = frame.GetVisibleVariables ();
+               Assert.AreEqual (1, locals.Count, "#13.1");
+
+               var local_0 = frame.GetValue (locals [0]);
+               Assert.IsNotNull (local_0, "#13.2");
+
+               Assert.AreEqual (wait_one_this, local_0, "#14.2");
+       }
 }
 
 }
index 140bcd89f95104509d9c782f4ada2296aefcf7cd..5ded317f8c1db622cdb2fe84706559429131c966 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0C933B8F-3EB1-4871-A2E8-7FCFD8C37F64}</ProjectGuid>\r
+    <ProjectGuid>{BCF0458C-9D8F-453A-BEE8-E0BB43B9AB44}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Http-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_2_0.csproj">\r
-      <Project>{A1B1ACC9-95F7-4752-A2A6-CF0214F886BB}</Project>\r
+      <Project>{065A843F-C16B-4F2E-9560-69440147EDB2}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf4eac99dcccc546b9dfb55720aa4d0f29548351..1f0027d0b8a1202188b0969eb3256eeeaf06ef4b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A825C4A3-73B7-4BE6-AA2F-69E1B03E3032}</ProjectGuid>\r
+    <ProjectGuid>{A08CC2D7-9EB8-4C8A-85D8-04AAB16ED742}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Http-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0.csproj">\r
-      <Project>{D769AAF9-10ED-4C32-8D87-8D0648E2D001}</Project>\r
+      <Project>{2DE2CFB0-3166-41D9-B0B5-EFBE309DD7B7}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9c586c168261c3a9791879045ead95b97df65e9e..2223c3b8aa6485d41495452ba0b792fe3b1b45f9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}</ProjectGuid>\r
+    <ProjectGuid>{9F93BC7A-F061-4AF5-AF3C-F81692D20E89}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Http-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5.csproj">\r
-      <Project>{C41C7048-6B86-43DB-9F5E-BED7A92CD56E}</Project>\r
+      <Project>{039AD56A-E91B-4803-8328-287F70B61D14}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d6205a2d4d14f4f1a9f53a695f27a26cdfd5a3a5..7e57265a62a5bc3202dc3f36df7ddb1fcd40f25d 100644 (file)
@@ -42,20 +42,7 @@ namespace Mono.Attach
                }
 
                public string GetWorkingDirectory () {
-                       int len = 256;
-
-                       while (true) {
-                               StringBuilder sb = new StringBuilder (len);
-
-                               int res = Syscall.readlink ("/proc/" + pid + "/cwd", sb);
-                               if (res == -1)
-                                       throw new IOException ("Syscall.readlink () failed with error " + res + ".");
-                               else if (res == len) {
-                                       len = len * 2;
-                               } else {
-                                       return sb.ToString ();
-                               }
-                       }
+                       return UnixPath.ReadLink ("/proc/" + pid + "/cwd");
                }
 
                /*
index b956808ce0c0f7005b2a62df96dd9768575060c6..0c31159c2de3be6f60ee7ba329145b4ad4b8ce76 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E3DDA3ED-24E5-4B9C-BC6E-425A49EE8E36}</ProjectGuid>\r
+    <ProjectGuid>{5BC06293-C615-4F6F-8862-AC69705C4A75}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Management-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b8344e012027e67946ca58def99ad3fe0f0fba0c..1390d22940634f6032857154efa1378723a0f138 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C470F003-2C74-49EB-8D19-412B9E897DC6}</ProjectGuid>\r
+    <ProjectGuid>{F346506A-88AE-4EF0-B2D5-5BB4988EAF28}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Management-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 26584148b98e92215b0c8a8d08a3fb7df154ceb9..69ec52f9047528c088c6ca9d36cea522f1c80986 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{962D9F06-30EC-4E71-B921-36FB856365A6}</ProjectGuid>\r
+    <ProjectGuid>{E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Management-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 276a5ebd1274d1f5fa3bec6036589d10fa9fa50c..2192f18f788adda153197bc99fd5dd7729a1ad11 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8BBA58A9-6639-453E-B83F-D8B6DA6F58A2}</ProjectGuid>\r
+    <ProjectGuid>{74D6BCAB-F3E7-463C-8D99-601FE69F67A6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_2_0.csproj">\r
-      <Project>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</Project>\r
+      <Project>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_2_0.csproj">\r
-      <Project>{85F98B4E-9323-4D5C-A65F-5B30EA4E7424}</Project>\r
+      <Project>{8AD2E2D6-9C65-4DE7-AD7A-6AAA07754C9C}</Project>\r
       <Name>client\RabbitMQ.Client-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 146c43ed9657692219f904169b2e6571525dedc9..1ef17acb86b16389516e31933f678a0da5081231 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{901F0EC1-DE1E-4456-8CF1-82C0D811BCD4}</ProjectGuid>\r
+    <ProjectGuid>{C551B2AB-D371-455F-AA1E-8C3E7A355CC8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_0.csproj">\r
-      <Project>{7D27EF3B-540A-4BBD-873C-878ABC927401}</Project>\r
+      <Project>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_4_0.csproj">\r
-      <Project>{3FB3AB58-B04E-452B-A0D9-EC8FBBEF2031}</Project>\r
+      <Project>{2820B526-5B96-4ABE-AF3D-E8651046A46C}</Project>\r
       <Name>client\RabbitMQ.Client-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index acce7d4402e245411c3bfe5e058d84ae9d72d0c0..f3ad3301f61bd54565ae1eb329b81097ca0e6bd5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}</ProjectGuid>\r
+    <ProjectGuid>{114A51BC-8AB2-4B25-A9A7-CB78C43745B8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</Project>\r
+      <Project>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</Project>\r
+      <Project>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_4_5.csproj">\r
-      <Project>{E4F02B09-E5BF-4DF9-9D55-58396821B80D}</Project>\r
+      <Project>{8BA87CBE-8098-4512-B008-A347E1EA281C}</Project>\r
       <Name>client\RabbitMQ.Client-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1d9cfbc04110e33e07c814644d8bc345f1069646..13b376d0c80a66a8da8b426633bfea876ed976a1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2DE75357-7C91-4C30-A31D-7FE9C834B143}</ProjectGuid>\r
+    <ProjectGuid>{B18D6BCC-5C63-490F-92C5-20E10C4D311A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_2_0.csproj">\r
-      <Project>{8BBA58A9-6639-453E-B83F-D8B6DA6F58A2}</Project>\r
+      <Project>{74D6BCAB-F3E7-463C-8D99-601FE69F67A6}</Project>\r
       <Name>Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_2_0.csproj">\r
-      <Project>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</Project>\r
+      <Project>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_2_0.csproj">\r
-      <Project>{85F98B4E-9323-4D5C-A65F-5B30EA4E7424}</Project>\r
+      <Project>{8AD2E2D6-9C65-4DE7-AD7A-6AAA07754C9C}</Project>\r
       <Name>client\RabbitMQ.Client-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index 2d3b5b876ef641c84b8280a7598670b1e362dd03..cef783c1c48f5ef18a77e5f922f0138cf8942948 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ADEB4A8C-8461-4948-8E98-629AD100E5AD}</ProjectGuid>\r
+    <ProjectGuid>{71304A18-8387-4FAD-982C-BFDC327D79C2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_0.csproj">\r
-      <Project>{901F0EC1-DE1E-4456-8CF1-82C0D811BCD4}</Project>\r
+      <Project>{C551B2AB-D371-455F-AA1E-8C3E7A355CC8}</Project>\r
       <Name>Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_0.csproj">\r
-      <Project>{7D27EF3B-540A-4BBD-873C-878ABC927401}</Project>\r
+      <Project>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_4_0.csproj">\r
-      <Project>{3FB3AB58-B04E-452B-A0D9-EC8FBBEF2031}</Project>\r
+      <Project>{2820B526-5B96-4ABE-AF3D-E8651046A46C}</Project>\r
       <Name>client\RabbitMQ.Client-net_4_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index c21e02d75cfc73514c8745f8b47387e0306cf167..1f5a54e4672bf7c307bf5357836629ba87fe7a59 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70EF0F9A-D878-4858-851E-7B7B6E69C75E}</ProjectGuid>\r
+    <ProjectGuid>{57115A1C-8C33-455E-A108-04DCD04808BD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging.RabbitMQ-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_5.csproj">\r
-      <Project>{6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}</Project>\r
+      <Project>{114A51BC-8AB2-4B25-A9A7-CB78C43745B8}</Project>\r
       <Name>Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</Project>\r
+      <Project>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</Project>\r
+      <Project>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\RabbitMQ.Client\src\client\RabbitMQ.Client-net_4_5.csproj">\r
-      <Project>{E4F02B09-E5BF-4DF9-9D55-58396821B80D}</Project>\r
+      <Project>{8BA87CBE-8098-4512-B008-A347E1EA281C}</Project>\r
       <Name>client\RabbitMQ.Client-net_4_5</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index dcb58fb1879e7a98d6ba982057149e9208b10a8e..3d4ac3029efad40ef41ae0d612962d37780a8e44 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</ProjectGuid>\r
+    <ProjectGuid>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 278d8ef5175c64dd3c4fc7936835cbbd4a1537ab..d0322fdba2309e4fe36cb9d7d858181ad127110e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7D27EF3B-540A-4BBD-873C-878ABC927401}</ProjectGuid>\r
+    <ProjectGuid>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 258ddddc441981ec8090ee9618a104095f8ca6cb..e9794689553488f3257147235cf3f58eeaf64b92 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</ProjectGuid>\r
+    <ProjectGuid>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 46ad7bd279f265e615ed8ef413556559d80abe42..120b399187af53b7cfc2b4ff855f10c779086e9b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3450FBA2-66D1-4D54-BC80-E77EA6EEB551}</ProjectGuid>\r
+    <ProjectGuid>{D82B65CD-2183-48A7-8FF3-79246B831A4D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_2_0.csproj">\r
-      <Project>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</Project>\r
+      <Project>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Messaging.dll">\r
index 0245ae785cf00ea1ee9e265cebb1e232cabdb5cd..920e4314488a7e315474618561f5a381d6f4167e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9D1B38FD-E2E2-4B12-AE99-5E972D5914A8}</ProjectGuid>\r
+    <ProjectGuid>{83CB627D-2C23-45AD-BF22-42C633838188}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_0.csproj">\r
-      <Project>{7D27EF3B-540A-4BBD-873C-878ABC927401}</Project>\r
+      <Project>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index 6837754d0951493f5a4dd4cfaec4464cf820cfcb..799f367d2646de9cbc76d2459e0a6c413fb87adc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EBDF7A9B-728D-4D71-A603-3D840220FBE4}</ProjectGuid>\r
+    <ProjectGuid>{3429D3B3-51DC-4236-9C5A-33C4F9E260FE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Messaging-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</Project>\r
+      <Project>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index 9ee5de646c8d2b824a427f76280fcca94ad8db88..4f1d01bc4b362bc74ca6641c22fd301baa171cfd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0C571D99-7F7B-4FF4-AA05-F82271C8158C}</ProjectGuid>\r
+    <ProjectGuid>{B9B516C1-9723-4DCC-91E8-6904B3B350AB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 80c61cd67439f5d811e9c53751fa6ed1691bf635..b08a8b8590f83d91cde7148b9f0accb755391b2d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A3338247-8E1C-4004-BDDA-6FC8276F47CF}</ProjectGuid>\r
+    <ProjectGuid>{032E130B-91CA-4977-AFAE-846645F40BA5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 449c5f49d87ca917a697e6cc5047cb48eb356431..a45a6f3570ebc52bc9b2ff56c1225b29cab89bdc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{01DD131B-233A-4BA2-AFCA-80FB5743449E}</ProjectGuid>\r
+    <ProjectGuid>{4F4AE80E-7DB0-49A9-B508-80A328137181}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index afef93db902fc679dc7cff06398b543f3877f420..db67c2109cf8948ef5f4968f1d0eba45772f7820 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5FB08388-B878-4D04-BEA6-C182E6E631BE}</ProjectGuid>\r
+    <ProjectGuid>{F9DBE056-BDF6-45CB-987D-4941274A5E32}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Options\Mono.Options-net_2_0.csproj">\r
-      <Project>{0C571D99-7F7B-4FF4-AA05-F82271C8158C}</Project>\r
+      <Project>{B9B516C1-9723-4DCC-91E8-6904B3B350AB}</Project>\r
       <Name>Mono.Options\Mono.Options-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f4e04231d21cc4ce89c545eb2bf4ab6df08524de..65229092040e2656cf5cd3d8de8a9e81b4367ccb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50320C8E-8A75-45AA-877C-B8300E69218F}</ProjectGuid>\r
+    <ProjectGuid>{87590E90-828A-4310-82CA-D83A2DA8A2EC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Options\Mono.Options-net_4_0.csproj">\r
-      <Project>{A3338247-8E1C-4004-BDDA-6FC8276F47CF}</Project>\r
+      <Project>{032E130B-91CA-4977-AFAE-846645F40BA5}</Project>\r
       <Name>Mono.Options\Mono.Options-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 840ef1bc08654db9f0bf431592665431f123a10f..01718152b9e520cf5a04d1bece1dfd333cc00368 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57A29A4C-18F1-43BA-8DC4-00810C45368C}</ProjectGuid>\r
+    <ProjectGuid>{1AC76475-2AAB-431E-BD97-444CD5AF1191}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Options-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Options\Mono.Options-net_4_5.csproj">\r
-      <Project>{01DD131B-233A-4BA2-AFCA-80FB5743449E}</Project>\r
+      <Project>{4F4AE80E-7DB0-49A9-B508-80A328137181}</Project>\r
       <Name>Mono.Options\Mono.Options-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0c6c2bcc20fa7b2f3a7bf55342d2f7f816b84a99..42f2253bae194581655a12f4c95ca78a4d7b7f89 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E35A1700-6277-4FDB-85EE-DC464E0D4F76}</ProjectGuid>\r
+    <ProjectGuid>{48E968B3-B4DE-4658-87C6-E6450CEF18AB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Parallel-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 94a55f87e39e0ef32048c79afb60c7c0c504081d..725f6796a47f748979fb6efedc98b55eea71c9c4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B43E74BB-F4C0-462C-B86A-7108208A22A0}</ProjectGuid>\r
+    <ProjectGuid>{FD8BB787-B115-4DED-ACB0-2858546FC16D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Parallel-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ef868467de632853f30aaffec3bf7c2dbf05c9dd..4770097d06a1ceea57d9c13ac0946e1444ba35c7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3F3BD23F-9BF2-46BD-8E1E-01F001EFBF7A}</ProjectGuid>\r
+    <ProjectGuid>{3E1314BB-ADF3-4287-AA82-26B50768F345}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Parallel-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Parallel\Mono.Parallel-net_4_0.csproj">\r
-      <Project>{E35A1700-6277-4FDB-85EE-DC464E0D4F76}</Project>\r
+      <Project>{48E968B3-B4DE-4658-87C6-E6450CEF18AB}</Project>\r
       <Name>Mono.Parallel\Mono.Parallel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9274aa31dfc65583af76cae7259f13bfbfafe9ca..192da2d648f87c86507e2572ed1700bc974a1c25 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}</ProjectGuid>\r
+    <ProjectGuid>{42F035A7-4FCD-4526-9D82-E7D3D4350AC1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Parallel-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Parallel\Mono.Parallel-net_4_5.csproj">\r
-      <Project>{B43E74BB-F4C0-462C-B86A-7108208A22A0}</Project>\r
+      <Project>{FD8BB787-B115-4DED-ACB0-2858546FC16D}</Project>\r
       <Name>Mono.Parallel\Mono.Parallel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5d3442801d5cfb79671009f0f5797ecbd40dc536..0b530a6ccfc0e5253b949b4a6279895e66559147 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{78F7614C-D0FE-49BE-9521-D2C7DD8A2C55}</ProjectGuid>\r
+    <ProjectGuid>{983EBE35-85B4-4D16-84AE-C3081CAE53EA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-build</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-build-1.csproj">\r
-      <Project>{C3638457-A40E-4E70-81B4-54ACB31DD76D}</Project>\r
+      <Project>{83D197B9-A796-4A0D-B8F9-930DD9415615}</Project>\r
       <Name>System\System-build-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0a1ad10db159e47b9028d19f6f0f4fb40307a55e..6282712df7c55819081a82970ebf2296270262b9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BFC160FF-5B62-41D2-B039-52C469077AE0}</ProjectGuid>\r
+    <ProjectGuid>{F83F663F-89F7-481C-941E-E4FE67867254}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4f376a622d4579c3f2f52a796ccb4338eeff50f8..a25a4036708b5d8edd1a58de2bc66fd2231d31f9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</ProjectGuid>\r
+    <ProjectGuid>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 11dc2c1c95184c94065e336b70cc538985500cb0..09b72ee136a4edcf7b89758b072e125e46c6262a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</ProjectGuid>\r
+    <ProjectGuid>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index df72e294881b39347b1606c87f74dfb61ea3ac95..974555210b0555d6737599ea2a497382e87f6efb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CD337CE5-5687-4838-9D2B-58F51D23FEA7}</ProjectGuid>\r
+    <ProjectGuid>{61812C34-2BF0-4DBA-AEF5-695669556F22}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fed4153c5abe71ddcac61d871616a4322f07ca03..3da622baddd076eeb8eef89db83c426310654a48 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{48D0946C-DB27-45D5-B364-AC32DCB8DD73}</ProjectGuid>\r
+    <ProjectGuid>{DCA562A1-6509-4AEC-AE3A-D91090979A9D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6cbdcc7d95a6e3ad91f127616a25d8081de7a490..7f4ec44f15954831bdf3e9e95960b1af189d8548 100644 (file)
@@ -5,12 +5,13 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8A11FD7A-D62F-4130-9870-49486379AB1C}</ProjectGuid>\r
+    <ProjectGuid>{B915D688-A61F-4B8E-9110-16B76DB4446D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,618</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Posix-tests-net_4_5</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
+    \r
     <AppDesignerFolder>Properties</AppDesignerFolder>\r
     <RootNamespace>\r
     </RootNamespace>\r
@@ -51,8 +52,7 @@
     <Compile Include="Test\Mono.Unix\UnixMarshalTest.cs" />\r
     <Compile Include="Test\Mono.Unix\UnixPathTest.cs" />\r
     <Compile Include="Test\Mono.Unix\UnixSignalTest.cs" />\r
-    <Compile Include="Test\Mono.Unix\UnixUserTest.cs" />\r
-  </ItemGroup>\r
+    <Compile Include="Test\Mono.Unix\UnixUserTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
@@ -62,6 +62,7 @@
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent>\r
+\r
     </PreBuildEvent>\r
     <PostBuildEvent>\r
       xcopy $(TargetName).* $(ProjectDir)..\lib\net_4_5\ /Y /R /D\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
+      <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
-</Project>\r
+</Project>
index b0c430596b21d5d9457befdeb3815cea9e9e1a2d..270b0b6aee680cb64332b06638110b58a6eda18b 100644 (file)
@@ -1,3 +1,4 @@
+Mono.Unix/ReadlinkTest.cs
 Mono.Unix/StdioFileStreamTest.cs
 Mono.Unix/UnixEncodingTest.cs
 Mono.Unix/UnixGroupTest.cs
index 4c56a293d517780d16e64f0e8107db4c6cf71dad..7951d08ae17377a58246b6f81b3df14cdecaf317 100644 (file)
@@ -183,6 +183,8 @@ namespace Mono.Unix.Native {
                        return '-';
                }
 
+               public static readonly DateTime UnixEpoch =
+                       new DateTime (year:1970, month:1, day:1, hour:0, minute:0, second:0, kind:DateTimeKind.Utc);
                public static readonly DateTime LocalUnixEpoch = 
                        new DateTime (1970, 1, 1);
                public static readonly TimeSpan LocalUtcOffset = 
@@ -200,15 +202,18 @@ namespace Mono.Unix.Native {
 
                public static DateTime FromTimeT (long time)
                {
-                       DateTime r = LocalUnixEpoch.AddSeconds ((double) time + 
-                                       LocalUtcOffset.TotalSeconds);
-                       return r;
+                       return UnixEpoch.AddSeconds (time).ToLocalTime ();
                }
 
                public static long ToTimeT (DateTime time)
                {
-                       TimeSpan unixTime = time.Subtract (LocalUnixEpoch) - LocalUtcOffset;
-                       return (long) unixTime.TotalSeconds;
+                       if (time.Kind == DateTimeKind.Unspecified)
+                               throw new ArgumentException ("DateTimeKind.Unspecified is not supported. Use Local or Utc times.", "time");
+
+                       if (time.Kind == DateTimeKind.Local)
+                               time = time.ToUniversalTime ();
+
+                       return (long) (time - UnixEpoch).TotalSeconds;
                }
 
                public static OpenFlags ToOpenFlags (FileMode mode, FileAccess access)
index 27d241539d5a7e3a35ea4d74436ff211bdfd4afb..7488f79b56f2217deecc2832d1f13822ee9bfc40 100644 (file)
@@ -3937,17 +3937,51 @@ namespace Mono.Unix.Native {
                                [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
                                string newpath);
 
+               delegate long DoReadlinkFun (byte[] target);
+
+               // Helper function for readlink(string, StringBuilder) and readlinkat (int, string, StringBuilder)
+               static int ReadlinkIntoStringBuilder (DoReadlinkFun doReadlink, [Out] StringBuilder buf, ulong bufsiz)
+               {
+                       // bufsiz > int.MaxValue can't work because StringBuilder can store only int.MaxValue chars
+                       int bufsizInt = checked ((int) bufsiz);
+                       var target = new byte [bufsizInt];
+
+                       var r = doReadlink (target);
+                       if (r < 0)
+                               return checked ((int) r);
+
+                       buf.Length = 0;
+                       var chars = UnixEncoding.Instance.GetChars (target, 0, checked ((int) r));
+                       // Make sure that at more bufsiz chars are written
+                       buf.Append (chars, 0, System.Math.Min (bufsizInt, chars.Length));
+                       if (r == bufsizInt) {
+                               // may not have read full contents; fill 'buf' so that caller can properly check
+                               buf.Append (new string ('\x00', bufsizInt - buf.Length));
+                       }
+                       return buf.Length;
+               }
+
                // readlink(2)
-               //    int readlink(const char *path, char *buf, size_t bufsize);
+               //    ssize_t readlink(const char *path, char *buf, size_t bufsize);
+               public static int readlink (string path, [Out] StringBuilder buf, ulong bufsiz)
+               {
+                       return ReadlinkIntoStringBuilder (target => readlink (path, target), buf, bufsiz);
+               }
+
+               public static int readlink (string path, [Out] StringBuilder buf)
+               {
+                       return readlink (path, buf, (ulong) buf.Capacity);
+               }
+
                [DllImport (MPH, SetLastError=true,
                                EntryPoint="Mono_Posix_Syscall_readlink")]
-               public static extern int readlink (
+               private static extern long readlink (
                                [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
-                               string path, [Out] StringBuilder buf, ulong bufsiz);
+                               string path, byte[] buf, ulong bufsiz);
 
-               public static int readlink (string path, [Out] StringBuilder buf)
+               public static long readlink (string path, byte[] buf)
                {
-                       return readlink (path, buf, (ulong) buf.Capacity);
+                       return readlink (path, buf, (ulong) buf.LongLength);
                }
 
                [DllImport (LIBC, SetLastError=true)]
@@ -4226,16 +4260,26 @@ namespace Mono.Unix.Native {
                }
 
                // readlinkat(2)
-               //    int readlinkat(int dirfd, const char *pathname, char *buf, size_t bufsize);
+               //    ssize_t readlinkat(int dirfd, const char *pathname, char *buf, size_t bufsize);
+               public static int readlinkat (int dirfd, string pathname, [Out] StringBuilder buf, ulong bufsiz)
+               {
+                       return ReadlinkIntoStringBuilder (target => readlinkat (dirfd, pathname, target), buf, bufsiz);
+               }
+
+               public static int readlinkat (int dirfd, string pathname, [Out] StringBuilder buf)
+               {
+                       return readlinkat (dirfd, pathname, buf, (ulong) buf.Capacity);
+               }
+
                [DllImport (MPH, SetLastError=true,
                                EntryPoint="Mono_Posix_Syscall_readlinkat")]
-               public static extern int readlinkat (int dirfd,
+               private static extern long readlinkat (int dirfd,
                                [MarshalAs (UnmanagedType.CustomMarshaler, MarshalTypeRef=typeof(FileNameMarshaler))]
-                               string pathname, [Out] StringBuilder buf, ulong bufsiz);
+                               string pathname, byte[] buf, ulong bufsiz);
 
-               public static int readlinkat (int dirfd, string pathname, [Out] StringBuilder buf)
+               public static long readlinkat (int dirfd, string pathname, byte[] buf)
                {
-                       return readlinkat (dirfd, pathname, buf, (ulong) buf.Capacity);
+                       return readlinkat (dirfd, pathname, buf, (ulong) buf.LongLength);
                }
 
                [DllImport (LIBC, SetLastError=true)]
index d835fec46245715b7fe3e8feaae6ab08d4e6cef0..90bddb0fbf4abb8d58e6199b4095816dc4d7b49c 100644 (file)
@@ -40,12 +40,12 @@ namespace Mono.Unix {
        public class Catalog {
                private Catalog () {}
 
-               [DllImport("intl")]
+               [DllImport("intl", CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr bindtextdomain (IntPtr domainname, IntPtr dirname);
-               [DllImport("intl")]
+               [DllImport("intl", CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr bind_textdomain_codeset (IntPtr domainname,
                        IntPtr codeset);
-               [DllImport("intl")]
+               [DllImport("intl", CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr textdomain (IntPtr domainname);
                
                public static void Init (String package, String localedir)
@@ -91,7 +91,7 @@ namespace Mono.Unix {
                        }
                }
        
-               [DllImport("intl")]
+               [DllImport("intl", CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr gettext (IntPtr instring);
                
                public static String GetString (String s)
@@ -109,7 +109,7 @@ namespace Mono.Unix {
                        }
                }
        
-               [DllImport("intl")]
+               [DllImport("intl", CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr ngettext (IntPtr singular, IntPtr plural, Int32 n);
                
                public static String GetPluralString (String s, String p, Int32 n)
index 659e0bd6d50ad7059b57aedad352a1741a210c65..e577edb74d4508f668dcc99a7bf282508160f843 100644 (file)
@@ -209,69 +209,59 @@ namespace Mono.Unix {
 
                // Read the specified symbolic link.  If the file isn't a symbolic link,
                // return null; otherwise, return the contents of the symbolic link.
-               //
-               // readlink(2) is horribly evil, as there is no way to query how big the
-               // symlink contents are.  Consequently, it's trial and error...
                internal static string ReadSymbolicLink (string path)
                {
-                       StringBuilder buf = new StringBuilder (256);
+                       string target = TryReadLink (path);
+                       if (target == null) {
+                               Native.Errno errno = Native.Stdlib.GetLastError ();
+                               if (errno != Native.Errno.EINVAL)
+                                       UnixMarshal.ThrowExceptionForError (errno);
+                       }
+                       return target;
+               }
+
+               public static string TryReadLink (string path)
+               {
+                       byte[] buf = new byte[256];
                        do {
-                               int r = Native.Syscall.readlink (path, buf);
-                               if (r < 0) {
-                                       Native.Errno e;
-                                       switch (e = Native.Stdlib.GetLastError()) {
-                                       case Native.Errno.EINVAL:
-                                               // path isn't a symbolic link
-                                               return null;
-                                       default:
-                                               UnixMarshal.ThrowExceptionForError (e);
-                                               break;
-                                       }
-                               }
-                               else if (r == buf.Capacity) {
-                                       buf.Capacity *= 2;
-                               }
+                               long r = Native.Syscall.readlink (path, buf);
+                               if (r < 0)
+                                       return null;
+                               else if (r == buf.Length)
+                                       buf = new byte[checked (buf.LongLength * 2)];
                                else
-                                       return buf.ToString (0, r);
+                                       return UnixEncoding.Instance.GetString (buf, 0, checked ((int) r));
                        } while (true);
                }
 
-               // Read the specified symbolic link.  If the file isn't a symbolic link,
-               // return null; otherwise, return the contents of the symbolic link.
-               //
-               // readlink(2) is horribly evil, as there is no way to query how big the
-               // symlink contents are.  Consequently, it's trial and error...
-               private static string ReadSymbolicLink (string path, out Native.Errno errno)
+               public static string TryReadLinkAt (int dirfd, string path)
                {
-                       errno = (Native.Errno) 0;
-                       StringBuilder buf = new StringBuilder (256);
+                       byte[] buf = new byte[256];
                        do {
-                               int r = Native.Syscall.readlink (path, buf);
-                               if (r < 0) {
-                                       errno = Native.Stdlib.GetLastError ();
+                               long r = Native.Syscall.readlinkat (dirfd, path, buf);
+                               if (r < 0)
                                        return null;
-                               }
-                               else if (r == buf.Capacity) {
-                                       buf.Capacity *= 2;
-                               }
+                               else if (r == buf.Length)
+                                       buf = new byte[checked (buf.LongLength * 2)];
                                else
-                                       return buf.ToString (0, r);
+                                       return UnixEncoding.Instance.GetString (buf, 0, checked ((int) r));
                        } while (true);
                }
 
-               public static string TryReadLink (string path)
+               public static string ReadLink (string path)
                {
-                       Native.Errno errno;
-                       return ReadSymbolicLink (path, out errno);
+                       string target = TryReadLink (path);
+                       if (target == null)
+                               UnixMarshal.ThrowExceptionForLastError (); 
+                       return target;
                }
 
-               public static string ReadLink (string path)
+               public static string ReadLinkAt (int dirfd, string path)
                {
-                       Native.Errno errno;
-                       path = ReadSymbolicLink (path, out errno);
-                       if (errno != 0)
-                               UnixMarshal.ThrowExceptionForError (errno);
-                       return path;
+                       string target = TryReadLinkAt (dirfd, path);
+                       if (target == null)
+                               UnixMarshal.ThrowExceptionForLastError (); 
+                       return target;
                }
 
                public static bool IsPathRooted (string path)
index d0026d2b46ab8333b4cd8562f5057f825879f9db..242a294a2a1a1cb970126dcc436437fb61e35b9a 100644 (file)
@@ -56,19 +56,18 @@ namespace Mono.Unix {
 
                public string ContentsPath {
                        get {
-                               return ReadLink ();
+                               return UnixPath.ReadLink (FullPath);
                        }
                }
 
                public bool HasContents {
                        get {
-                               return TryReadLink () != null;
+                               return UnixPath.TryReadLink (FullPath) != null;
                        }
                }
 
                public UnixFileSystemInfo GetContents ()
                {
-                       ReadLink ();
                        return UnixFileSystemInfo.GetFileSystemEntry (
                                                UnixPath.Combine (UnixPath.GetDirectoryName (FullPath), 
                                                        ContentsPath));
@@ -103,23 +102,6 @@ namespace Mono.Unix {
                {
                        return Native.Syscall.lstat (path, out stat) == 0;
                }
-
-               private string ReadLink ()
-               {
-                       string r = TryReadLink ();
-                       if (r == null)
-                               UnixMarshal.ThrowExceptionForLastError ();
-                       return r;
-               }
-
-               private string TryReadLink ()
-               {
-                       StringBuilder sb = new StringBuilder ((int) base.Length+1);
-                       int r = Native.Syscall.readlink (FullPath, sb);
-                       if (r == -1)
-                               return null;
-                       return sb.ToString (0, r);
-               }
        }
 }
 
diff --git a/mcs/class/Mono.Posix/Test/Mono.Unix/ReadlinkTest.cs b/mcs/class/Mono.Posix/Test/Mono.Unix/ReadlinkTest.cs
new file mode 100644 (file)
index 0000000..2dd8161
--- /dev/null
@@ -0,0 +1,288 @@
+//
+// readlink() / readlinkat() Test Cases
+//
+// Authors:
+//  Steffen Kiess (s-kiess@web.de)
+//
+// Copyright (C) 2013 Steffen Kiess
+//
+
+using System;
+using System.IO;
+using System.Text;
+
+using Mono.Unix;
+using Mono.Unix.Native;
+
+using NUnit.Framework;
+
+namespace MonoTests.Mono.Unix
+{
+       [TestFixture, Category ("NotDotNet")]
+       public class ReadlinkTest {
+
+               static string[] Targets = {
+                       // Simple test cases
+                       "a",
+                       "test",
+                       // With non-ASCII characters
+                       "ä",
+                       "test Ã¶ test",
+                       // With non-UTF8 bytes
+                       UnixEncoding.Instance.GetString (new byte[] {0xff, 0x80, 0x41, 0x80}),
+                       // Size is roughly initial size of buffer
+                       new string ('a', 255),
+                       new string ('a', 256),
+                       new string ('a', 257),
+                       // With non-ASCII characters, size is roughly initial size of buffer
+                       "ä" + new string ('a', 253), // 254 chars, 255 bytes
+                       "ä" + new string ('a', 254), // 255 chars, 256 bytes
+                       "ä" + new string ('a', 255), // 256 chars, 257 bytes
+                       "ä" + new string ('a', 256), // 257 chars, 258 bytes
+                       new string ('a', 253) + "ä", // 254 chars, 255 bytes
+                       new string ('a', 254) + "ä", // 255 chars, 256 bytes
+                       new string ('a', 255) + "ä", // 256 chars, 257 bytes
+                       new string ('a', 256) + "ä", // 257 chars, 258 bytes
+                       // With non-UTF8 bytes, size is roughly initial size of buffer
+                       "\0\u00ff" + new string ('a', 253), // 255 chars, 254 bytes
+                       "\0\u00ff" + new string ('a', 254), // 256 chars, 255 bytes
+                       "\0\u00ff" + new string ('a', 255), // 257 chars, 256 bytes
+                       "\0\u00ff" + new string ('a', 256), // 258 chars, 257 bytes
+                       new string ('a', 253) + "\0\u00ff", // 255 chars, 254 bytes
+                       new string ('a', 254) + "\0\u00ff", // 256 chars, 255 bytes
+                       new string ('a', 255) + "\0\u00ff", // 257 chars, 256 bytes
+                       new string ('a', 256) + "\0\u00ff", // 258 chars, 257 bytes
+               };
+
+               bool HaveReadlinkAt;
+               string TempFolder;
+               int TempFD;
+
+               [SetUp]
+               public void SetUp ()
+               {
+                       HaveReadlinkAt = false;
+                       try {
+                               Syscall.readlinkat (-1, "", new byte[1]);
+                               HaveReadlinkAt = true;
+                       } catch (EntryPointNotFoundException) {
+                       }
+
+
+                       TempFolder = Path.Combine (Path.GetTempPath (), this.GetType ().FullName);
+
+                       if (Directory.Exists (TempFolder))
+                               //Directory.Delete (TempFolder, true); // Fails for long link target paths
+                               new UnixDirectoryInfo (TempFolder).Delete (true);
+
+                       Directory.CreateDirectory (TempFolder);
+
+                       TempFD = Syscall.open (TempFolder, OpenFlags.O_RDONLY | OpenFlags.O_DIRECTORY);
+                       if (TempFD < 0)
+                               UnixMarshal.ThrowExceptionForLastError ();
+               }
+
+               [TearDown]
+               public void TearDown()
+               {
+                       if (Syscall.close (TempFD) < 0)
+                               UnixMarshal.ThrowExceptionForLastError ();
+
+                       if (Directory.Exists (TempFolder))
+                               //Directory.Delete (TempFolder, true); // Fails for long link target paths
+                               new UnixDirectoryInfo (TempFolder).Delete (true);
+               }
+
+               void CreateLink (string s)
+               {
+                               string link = UnixPath.Combine (TempFolder, "link");
+
+                               //File.Delete (link); // Fails for long link target paths
+                               if (Syscall.unlink (link) < 0 && Stdlib.GetLastError () != Errno.ENOENT)
+                                       UnixMarshal.ThrowExceptionForLastError ();
+
+                               if (Syscall.symlink (s, link) < 0)
+                                       UnixMarshal.ThrowExceptionForLastError ();
+               }
+
+               [Test]
+               public void ReadLink ()
+               {
+                       foreach (string s in Targets) {
+                               string link = UnixPath.Combine (TempFolder, "link");
+
+                               CreateLink (s);
+
+                               var target = UnixPath.ReadLink (link);
+                               Assert.AreEqual (s, target);
+                       }
+               }
+
+               [Test]
+               public void ReadLinkAt ()
+               {
+                       if (!HaveReadlinkAt)
+                               return;
+
+                       foreach (string s in Targets) {
+                               CreateLink (s);
+
+                               var target = UnixPath.ReadLinkAt (TempFD, "link");
+                               Assert.AreEqual (s, target);
+                       }
+               }
+
+               [Test]
+               public void TryReadLink ()
+               {
+                       foreach (string s in Targets) {
+                               string link = UnixPath.Combine (TempFolder, "link");
+
+                               CreateLink (s);
+
+                               var target = UnixPath.TryReadLink (link);
+                               Assert.AreEqual (s, target);
+                       }
+               }
+
+               [Test]
+               public void TryReadLinkAt ()
+               {
+                       if (!HaveReadlinkAt)
+                               return;
+
+                       foreach (string s in Targets) {
+                               CreateLink (s);
+
+                               var target = UnixPath.TryReadLinkAt (TempFD, "link");
+                               Assert.AreEqual (s, target);
+                       }
+               }
+
+               [Test]
+               public void readlink_byte ()
+               {
+                       foreach (string s in Targets) {
+                               string link = UnixPath.Combine (TempFolder, "link");
+
+                               CreateLink (s);
+
+                               string target = null;
+                               byte[] buf = new byte[256];
+                               do {
+                                       long r = Syscall.readlink (link, buf);
+                                       if (r < 0)
+                                               UnixMarshal.ThrowExceptionForLastError ();
+                                       Assert.GreaterOrEqual (buf.Length, r);
+                                       if (r == buf.Length)
+                                               buf = new byte[checked (buf.Length * 2)];
+                                       else
+                                               target = UnixEncoding.Instance.GetString (buf, 0, checked ((int) r));
+                               } while (target == null);
+
+                               Assert.AreEqual (s, target);
+                       }
+               }
+
+               [Test]
+               public void readlinkat_byte ()
+               {
+                       if (!HaveReadlinkAt)
+                               return;
+
+                       foreach (string s in Targets) {
+                               CreateLink (s);
+
+                               string target = null;
+                               byte[] buf = new byte[256];
+                               do {
+                                       long r = Syscall.readlinkat (TempFD, "link", buf);
+                                       if (r < 0)
+                                               UnixMarshal.ThrowExceptionForLastError ();
+                                       Assert.GreaterOrEqual (buf.Length, r);
+                                       if (r == buf.Length)
+                                               buf = new byte[checked (buf.Length * 2)];
+                                       else
+                                               target = UnixEncoding.Instance.GetString (buf, 0, checked ((int) r));
+                               } while (target == null);
+
+                               Assert.AreEqual (s, target);
+                       }
+               }
+
+               [Test]
+               public void readlink_char ()
+               {
+                       foreach (string s in Targets) {
+                               string link = UnixPath.Combine (TempFolder, "link");
+
+                               CreateLink (s);
+
+                               var sb = new StringBuilder (256);
+                               do {
+                                       int oldCapacity = sb.Capacity;
+                                       int r = Syscall.readlink (link, sb);
+                                       Assert.AreEqual (oldCapacity, sb.Capacity);
+                                       if (r < 0)
+                                               UnixMarshal.ThrowExceptionForLastError ();
+                                       Assert.AreEqual (r, sb.Length);
+                                       Assert.GreaterOrEqual (sb.Capacity, r);
+                                       if (r == sb.Capacity)
+                                               checked { sb.Capacity *= 2; }
+                                       else
+                                               break;
+                               } while (true);
+                               var target = sb.ToString ();
+
+                               Assert.AreEqual (s, target);
+                       }
+               }
+
+               [Test]
+               public void readlinkat_char ()
+               {
+                       if (!HaveReadlinkAt)
+                               return;
+
+                       foreach (string s in Targets) {
+                               CreateLink (s);
+
+                               var sb = new StringBuilder (256);
+                               do {
+                                       int oldCapacity = sb.Capacity;
+                                       int r = Syscall.readlinkat (TempFD, "link", sb);
+                                       Assert.AreEqual (oldCapacity, sb.Capacity);
+                                       if (r < 0)
+                                               UnixMarshal.ThrowExceptionForLastError ();
+                                       Assert.AreEqual (r, sb.Length);
+                                       Assert.GreaterOrEqual (sb.Capacity, r);
+                                       if (r == sb.Capacity)
+                                               checked { sb.Capacity *= 2; }
+                                       else
+                                               break;
+                               } while (true);
+                               var target = sb.ToString ();
+
+                               Assert.AreEqual (s, target);
+                       }
+               }
+
+               [Test]
+               public void ReadlinkMultiByteChar ()
+               {
+                       string link = UnixPath.Combine (TempFolder, "link");
+
+                       CreateLink ("á");
+
+                       var sb = new StringBuilder (2);
+                       int res = Syscall.readlink (link, sb);
+                       if (res < 0)
+                               UnixMarshal.ThrowExceptionForLastError ();
+
+                       Assert.AreEqual (res, 2);
+                       Assert.AreEqual (sb.Length, 2);
+                       Assert.AreEqual (sb.Capacity, 2);
+                       Assert.AreEqual (sb.ToString (), "á\u0000");
+               }
+       }
+}
index e2a204034ed5eaf0e4ee9fc1c124ac61c55a5874..b1cc37c1a8189f440f61a197aa4b69dca3c39183 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E1BE92F9-66BE-4469-B44D-1BB933B0C479}</ProjectGuid>\r
+    <ProjectGuid>{EB5DE34F-78FA-49EE-B49D-A0ED825F0A71}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security.Win32-net_2_0</OutputPath>\r
@@ -75,7 +75,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1a1687aa81ddc9915f3f28b82a897587ad08b7ee..3b67bfd15cf3b69e4005b7f65fbec676f870cda7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3153F0EB-0210-4B9B-B2A7-B8E798379BE0}</ProjectGuid>\r
+    <ProjectGuid>{F8880326-2172-49A6-A8BD-F82914E1A11B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security.Win32-net_4_0</OutputPath>\r
@@ -75,7 +75,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 184c7d168068dabecb7f5e5472999ad1dda173b9..c98da29826c1bc95921c08f96d636175b050bc6d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}</ProjectGuid>\r
+    <ProjectGuid>{A91ADA57-5818-4949-B584-CB5303EB8842}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security.Win32-net_4_5</OutputPath>\r
@@ -75,7 +75,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3d6987216802b217cf3e19be7234f2ec5d776a81..0356d0a166487af7ffae6befcd7c59b362d180d0 100644 (file)
@@ -208,6 +208,8 @@ namespace Mono.Math {
                
                public BigInteger (byte [] inData)
                {
+                       if (inData.Length == 0)
+                               inData = new byte [1];
                        length = (uint)inData.Length >> 2;
                        int leftOver = inData.Length & 0x3;
 
@@ -239,6 +241,8 @@ namespace Mono.Math {
 #endif 
                public BigInteger (uint [] inData)
                {
+                       if (inData.Length == 0)
+                               inData = new uint [1];
                        length = (uint)inData.Length;
 
                        data = new uint [length];
@@ -1054,7 +1058,7 @@ namespace Mono.Math {
                                if (b > mod)
                                        b %= mod;
 
-                               BigInteger ret = new BigInteger (a * b);
+                               BigInteger ret = a * b;
                                BarrettReduction (ret);
 
                                return ret;
index d6ec61f8ed67085032e96f5ae9b6188c080d5a15..1f35b9e6752575b4265508b689d46c61c3f9a875 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}</ProjectGuid>\r
+    <ProjectGuid>{FC2EF2C1-8774-4DFE-AE47-9574374D3591}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-build</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-build-1.csproj">\r
-      <Project>{C3638457-A40E-4E70-81B4-54ACB31DD76D}</Project>\r
+      <Project>{83D197B9-A796-4A0D-B8F9-930DD9415615}</Project>\r
       <Name>System\System-build-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6fd26a7ec685fef9e0dbd85dbae8e86297dc9267..c36dc4fbdf7007e183e1bbdea4661b1a49dcee8b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</ProjectGuid>\r
+    <ProjectGuid>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ecdde7e5e0b050f78898f4f0ad631502f88c01f4..cbcf0f48401134f7b1cb09fdbaecd1b7eb94ec8c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</ProjectGuid>\r
+    <ProjectGuid>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ce9da6567bfac06f42cb9dfd8e5cfc6b90fe5ced..85ddfccc266bcd8b0d8f56e1b3ad3e3d5802c2c6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</ProjectGuid>\r
+    <ProjectGuid>{99D172A2-7914-496C-9005-AA69F51195AF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 27181d2b7efd037bf687f6ab603d9d111142e203..d79e5e02252390b8c13ba4994f042b85f2ebf849 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4AC2F258-0ABC-49E8-8A63-B94AA4861762}</ProjectGuid>\r
+    <ProjectGuid>{82E0F554-0C45-4529-894D-D3074C177053}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030,169,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e71fc2b4e1375466505e92162ef902ddb5d7886d..191c6b8afb8cb445fd78312094db91135a0428a0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{39A2AE3E-240E-4D9E-9FAA-74EC871B8B90}</ProjectGuid>\r
+    <ProjectGuid>{B97F3146-8EA0-456C-9768-B36ABC325087}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030,169,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 00aa9e4c81ad52fc45f6a7f002d5160bb4dd661f..0864281332619b33c905338a4c747dd75f64efe2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D5968AB0-8856-49DC-9547-63530241BC22}</ProjectGuid>\r
+    <ProjectGuid>{2D07BA52-8035-4434-B4FD-9B87789B8286}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1030,169,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Security-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cc74cca20ae732e538fccdb688d34957040c4374..1efcec91abde0a83b6cbc5f89caae1111a368937 100644 (file)
@@ -198,11 +198,11 @@ namespace Mono.Security.Authenticode {
                        HashAlgorithm ha = null; 
                        switch (signedHash.Length) {
                                case 16:
-                                       ha = HashAlgorithm.Create ("MD5"); 
+                                       ha = MD5.Create (); 
                                        hash = GetHash (ha);
                                        break;
                                case 20:
-                                       ha = HashAlgorithm.Create ("SHA1");
+                                       ha = SHA1.Create ();
                                        hash = GetHash (ha);
                                        break;
                                default:
index a5646d804027928e1ad93b3dec331c69d0953fe4..94c87b6ee3048de8948e38cb1931e779f8da6541 100644 (file)
@@ -40,7 +40,12 @@ namespace Mono.Security.Authenticode {
        // References:
        // a.   http://www.drh-consultancy.demon.co.uk/pvk.html
 
-       public class PrivateKey {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class PrivateKey {
 
                private const uint magic = 0xb0b5f11e;
 
index 2a54a7e4ae9f769ecf0eae39f7e0eb4ec26dfb6b..ca6c2b16c8ab574d727993bffc302c43de8646b4 100644 (file)
@@ -34,7 +34,10 @@ namespace Mono.Security.Cryptography {
        // a.   Usenet 1994 - RC4 Algorithm revealed
        //      http://www.qrst.de/html/dsds/rc4.htm
 
-       public class ARC4Managed : RC4, ICryptoTransform {
+#if !INSIDE_CORLIB
+       public
+#endif
+       class ARC4Managed : RC4, ICryptoTransform {
 
                private byte[] key;
                private byte[] state;
index 9a3ae26563340a5e5bda4d4d389524779e05ba13..3f06114dd0f98b17d61b4d7672d5582bf464a855 100644 (file)
@@ -166,6 +166,10 @@ namespace Mono.Security.Cryptography {
                                throw new CryptographicException ("Invalid blob.", e);
                        }
 
+#if INSIDE_CORLIB && MOBILE
+                       RSA rsa = RSA.Create ();
+                       rsa.ImportParameters (rsap);
+#else
                        RSA rsa = null;
                        try {
                                rsa = RSA.Create ();
@@ -186,6 +190,7 @@ namespace Mono.Security.Cryptography {
                                        throw ce;
                                }
                        }
+#endif
                        return rsa;
                }
 
@@ -246,6 +251,10 @@ namespace Mono.Security.Cryptography {
                                throw new CryptographicException ("Invalid blob.", e);
                        }
 
+#if INSIDE_CORLIB && MOBILE
+                       DSA dsa = (DSA)DSA.Create ();
+                       dsa.ImportParameters (dsap);
+#else
                        DSA dsa = null;
                        try {
                                dsa = (DSA)DSA.Create ();
@@ -266,6 +275,7 @@ namespace Mono.Security.Cryptography {
                                        throw ce;
                                }
                        }
+#endif
                        return dsa;
                }
 
@@ -434,7 +444,10 @@ namespace Mono.Security.Cryptography {
                                rsap.Modulus = new byte [byteLen];
                                Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
                                Array.Reverse (rsap.Modulus);
-
+#if INSIDE_CORLIB && MOBILE
+                               RSA rsa = RSA.Create ();
+                               rsa.ImportParameters (rsap);
+#else
                                RSA rsa = null;
                                try {
                                        rsa = RSA.Create ();
@@ -449,6 +462,7 @@ namespace Mono.Security.Cryptography {
                                        rsa = new RSACryptoServiceProvider (csp);
                                        rsa.ImportParameters (rsap);
                                }
+#endif
                                return rsa;
                        }
                        catch (Exception e) {
index a19dc7afbe44566c1946ee7e3c0f1ee9e603321a..0615770aaf51e6664b630f1ca66f0d88251af0b2 100644 (file)
@@ -98,10 +98,10 @@ namespace Mono.Security.Cryptography {
 #endif
        class KeyPairPersistence {
        
-               private static bool _userPathExists = false; // check at 1st use
+               private static bool _userPathExists; // check at 1st use
                private static string _userPath;
                
-               private static bool _machinePathExists = false; // check at 1st use
+               private static bool _machinePathExists; // check at 1st use
                private static string _machinePath;
 
                private CspParameters _params;
index 41d593c1a3937bbb6875206cf885683cad23e644..bb7d8f7432e11e2e92a7ccd07805401b9318f8ef 100644 (file)
@@ -33,7 +33,10 @@ using System.Security.Cryptography;
 
 namespace Mono.Security.Cryptography {
 
-       public abstract class MD2 : HashAlgorithm {
+#if !INSIDE_CORLIB
+       public 
+#endif
+       abstract class MD2 : HashAlgorithm {
 
                protected MD2 () 
                {
@@ -43,8 +46,12 @@ namespace Mono.Security.Cryptography {
 
                public static new MD2 Create ()
                {
+#if FULL_AOT_RUNTIME
+                       return new MD2Managed ();
+#else
                        // for this to work we must register ourself with CryptoConfig
                        return Create ("MD2");
+#endif
                }
 
                public static new MD2 Create (string hashName)
index be0022364246960cc8089114837d139f5adba257..13f0f5d8e65a639248892d5cedd5011cd4dd6aac 100644 (file)
@@ -35,7 +35,10 @@ namespace Mono.Security.Cryptography {
        // a.   RFC1319: The MD2 Message-Digest Algorithm
        //      http://www.ietf.org/rfc/rfc1319.txt
 
-       public class MD2Managed : MD2 {
+#if !INSIDE_CORLIB
+       public
+#endif
+       class MD2Managed : MD2 {
 
                private byte[] state;
                private byte[] checksum;
index e35cdfcaee2c2f59e34ac7edbea1e19f9d8bd027..bb551536870c87ecb5196c828d38469a820b565d 100644 (file)
@@ -2,9 +2,10 @@
 // MD4.cs - Message Digest 4 Abstract class
 //
 // Author:
-//     Sebastien Pouliot (spouliot@motus.com)
+//     Sebastien Pouliot (sebastien@xamarin.com)
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 
 //
@@ -33,7 +34,10 @@ using System.Security.Cryptography;
 
 namespace Mono.Security.Cryptography {
 
-       public abstract class MD4 : HashAlgorithm {
+#if !INSIDE_CORLIB
+       public
+#endif
+       abstract class MD4 : HashAlgorithm {
 
                protected MD4 () 
                {
@@ -43,8 +47,12 @@ namespace Mono.Security.Cryptography {
 
                public static new MD4 Create () 
                {
+#if FULL_AOT_RUNTIME
+                       return new MD4Managed ();
+#else
                        // for this to work we must register ourself with CryptoConfig
                        return Create ("MD4");
+#endif
                }
 
                public static new MD4 Create (string hashName) 
index a365fb5bcb5471806460b60343151b86fb27e943..eedc8b114b195cc46aa29415cbec47f46aea298f 100644 (file)
@@ -35,7 +35,10 @@ namespace Mono.Security.Cryptography {
        // a.     RFC1320: The MD4 Message-Digest Algorithm
        //        http://www.ietf.org/rfc/rfc1320.txt
 
-       public class MD4Managed : MD4 {
+#if !INSIDE_CORLIB
+       public
+#endif
+       class MD4Managed : MD4 {
 
                private uint[] state;
                private byte[] buffer;
index 2aad2426d971231e8e94322f5d8ef1fa6498ea3c..4e579eee94ae2bab77cd3bd121a7fe3928487bc5 100644 (file)
@@ -2,10 +2,11 @@
 // PKCS1.cs - Implements PKCS#1 primitives.
 //
 // Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -286,7 +287,13 @@ namespace Mono.Security.Cryptography {
                        byte[] S = I2OSP (s, size);
                        return S;
                }
-       
+
+               internal static byte[] Sign_v15 (RSA rsa, string hashName, byte[] hashValue) 
+               {
+                       using (var hash = CreateFromName (hashName))
+                               return Sign_v15 (rsa, hash, hashValue);
+               }
+
                // PKCS #1 v.2.1, Section 8.2.2
                // RSASSA-PKCS1-V1_5-VERIFY ((n, e), M, S)
                public static bool Verify_v15 (RSA rsa, HashAlgorithm hash, byte[] hashValue, byte[] signature) 
@@ -294,6 +301,12 @@ namespace Mono.Security.Cryptography {
                        return Verify_v15 (rsa, hash, hashValue, signature, false);
                }
 
+               internal static bool Verify_v15 (RSA rsa, string hashName, byte[] hashValue, byte[] signature) 
+               {
+                       using (var hash = CreateFromName (hashName))
+                               return Verify_v15 (rsa, hash, hashValue, signature, false);
+               }
+
                // DO NOT USE WITHOUT A VERY GOOD REASON
                public static bool Verify_v15 (RSA rsa, HashAlgorithm hash, byte [] hashValue, byte [] signature, bool tryNonStandardEncoding)
                {
@@ -404,7 +417,7 @@ namespace Mono.Security.Cryptography {
                                Buffer.BlockCopy (C, 0, toBeHashed, mgfSeedLength, 4);
                                byte[] output = hash.ComputeHash (toBeHashed);
                                Buffer.BlockCopy (output, 0, T, pos, hLen);
-                               pos += mgfSeedLength;
+                               pos += hLen;
                        }
                        
                        // 4. Output the leading maskLen octets of T as the octet string mask.
@@ -412,5 +425,71 @@ namespace Mono.Security.Cryptography {
                        Buffer.BlockCopy (T, 0, mask, 0, maskLen);
                        return mask;
                }
+
+               static internal string HashNameFromOid (string oid, bool throwOnError = true)
+               {
+                       switch (oid) {
+                       case "1.2.840.113549.1.1.2":    // MD2 with RSA encryption 
+                               return "MD2";
+                       case "1.2.840.113549.1.1.3":    // MD4 with RSA encryption 
+                               return "MD4";
+                       case "1.2.840.113549.1.1.4":    // MD5 with RSA encryption 
+                               return "MD5";
+                       case "1.2.840.113549.1.1.5":    // SHA-1 with RSA Encryption 
+                       case "1.3.14.3.2.29":           // SHA1 with RSA signature 
+                       case "1.2.840.10040.4.3":       // SHA1-1 with DSA
+                               return "SHA1";
+                       case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
+                               return "SHA256";
+                       case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
+                               return "SHA384";
+                       case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
+                               return "SHA512";
+                       case "1.3.36.3.3.1.2":
+                               return "RIPEMD160";
+                       default:
+                               if (throwOnError)
+                                       throw new CryptographicException ("Unsupported hash algorithm: " + oid);
+                               return null;
+                       }
+               }
+               
+               static internal HashAlgorithm CreateFromOid (string oid)
+               {
+                       return CreateFromName (HashNameFromOid (oid));
+               }
+               
+               static internal HashAlgorithm CreateFromName (string name)
+               {
+#if FULL_AOT_RUNTIME
+                       switch (name) {
+                       case "MD2":
+                               return MD2.Create ();
+                       case "MD4":
+                               return MD4.Create ();
+                       case "MD5":
+                               return MD5.Create ();
+                       case "SHA1":
+                               return SHA1.Create ();
+                       case "SHA256":
+                               return SHA256.Create ();
+                       case "SHA384":
+                               return SHA384.Create ();
+                       case "SHA512":
+                               return SHA512.Create ();
+                       case "RIPEMD160":
+                               return RIPEMD160.Create ();
+                       default:
+                               try {
+                                       return (HashAlgorithm) Activator.CreateInstance (Type.GetType (name));
+                               }
+                               catch {
+                                       throw new CryptographicException ("Unsupported hash algorithm: " + name);
+                               }
+                       }
+#else
+                       return HashAlgorithm.Create (name);
+#endif
+               }
        }
 }
index 164466487e138f644ec944ef589c51c838771f06..352e4649b0ef2c19d327d36ff15b3a0fd54d557f 100644 (file)
@@ -3,10 +3,11 @@
 //     ftp://ftp.rsasecurity.com/pub/pkcs/doc/pkcs-8.doc
 //
 // Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
+//     Sebastien Pouliot <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2006 Novell Inc. (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 using System;
 using System.Collections;
 using System.Security.Cryptography;
-using System.Text;
 
 using Mono.Security.X509;
 
 namespace Mono.Security.Cryptography {
 
-#if INSIDE_CORLIB
-       internal
-#else
+#if !INSIDE_CORLIB
        public 
 #endif
        sealed class PKCS8 {
@@ -279,6 +277,11 @@ namespace Mono.Security.Cryptography {
                                        rsa.ImportParameters (param);
                                }
                                catch (CryptographicException) {
+#if MONOTOUCH
+                                       // there's no machine-wide store available for iOS so we can drop the dependency on
+                                       // CspParameters (which drops other things, like XML key persistance, unless used elsewhere)
+                                       throw;
+#else
                                        // this may cause problem when this code is run under
                                        // the SYSTEM identity on Windows (e.g. ASP.NET). See
                                        // http://bugzilla.ximian.com/show_bug.cgi?id=77559
@@ -286,6 +289,7 @@ namespace Mono.Security.Cryptography {
                                        csp.Flags = CspProviderFlags.UseMachineKeyStore;
                                        rsa = new RSACryptoServiceProvider (csp);
                                        rsa.ImportParameters (param);
+#endif
                                }
                                return rsa;
                        }
index ce5bd081827ba9490053f0c4082b8020a6fd253b..0ff19b4848278e4d01ba166dab01ee509fba3662 100644 (file)
@@ -3,9 +3,10 @@
 //     RC4 is a trademark of RSA Security
 //
 // Author:
-//     Sebastien Pouliot (spouliot@motus.com)
+//     Sebastien Pouliot (sebastien@xamarin.com)
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 
 //
@@ -34,7 +35,10 @@ using System.Security.Cryptography;
 
 namespace Mono.Security.Cryptography {
 
-public abstract class RC4 : SymmetricAlgorithm {
+#if !INSIDE_CORLIB
+       public
+#endif
+       abstract class RC4 : SymmetricAlgorithm {
 
        private static KeySizes[] s_legalBlockSizes = {
                new KeySizes (64, 64, 0)
@@ -61,7 +65,11 @@ public abstract class RC4 : SymmetricAlgorithm {
 
        new static public RC4 Create() 
        {
+#if FULL_AOT_RUNTIME
+               return new ARC4Managed ();
+#else
                return Create ("RC4");
+#endif
        }
 
        new static public RC4 Create (string algName) 
index e03ee300208a13ca93a6745ba9eb0ad3352785be..221f0fb695da35c55adeb344ec1db015086e5867 100644 (file)
@@ -45,16 +45,16 @@ namespace Mono.Security.Cryptography {
        internal abstract class SymmetricTransform : ICryptoTransform {
                protected SymmetricAlgorithm algo;
                protected bool encrypt;
-               private int BlockSizeByte;
-               private byte[] temp;
-               private byte[] temp2;
+               protected int BlockSizeByte;
+               protected byte[] temp;
+               protected byte[] temp2;
                private byte[] workBuff;
                private byte[] workout;
+               protected PaddingMode padmode;
                // Silverlight 2.0 does not support any feedback mode
-               private int FeedBackByte;
-               private int FeedBackIter;
+               protected int FeedBackByte;
                private bool m_disposed = false;
-               private bool lastBlock;
+               protected bool lastBlock;
 
                public SymmetricTransform (SymmetricAlgorithm symmAlgo, bool encryption, byte[] rgbIV) 
                {
@@ -73,14 +73,12 @@ namespace Mono.Security.Cryptography {
                                        rgbIV.Length, BlockSizeByte);
                                throw new CryptographicException (msg);
                        }
-
+                       padmode = algo.Padding;
                        // mode buffers
                        temp = new byte [BlockSizeByte];
                        Buffer.BlockCopy (rgbIV, 0, temp, 0, System.Math.Min (BlockSizeByte, rgbIV.Length));
                        temp2 = new byte [BlockSizeByte];
                        FeedBackByte = (algo.FeedbackSize >> 3);
-                       if (FeedBackByte != 0)
-                               FeedBackIter = (int) BlockSizeByte / FeedBackByte;
                        // transform buffers
                        workBuff = new byte [BlockSizeByte];
                        workout =  new byte [BlockSizeByte];
@@ -176,31 +174,31 @@ namespace Mono.Security.Cryptography {
                }
 
                // Cipher-FeedBack (CFB)
+               // this is how *CryptoServiceProvider implements CFB
+               // only AesCryptoServiceProvider support CFB > 8
+               // RijndaelManaged is incompatible with this implementation (and overrides it in it's own transform)
                protected virtual void CFB (byte[] input, byte[] output) 
                {
                        if (encrypt) {
-                               for (int x = 0; x < FeedBackIter; x++) {
+                               for (int x = 0; x < BlockSizeByte; x++) {
                                        // temp is first initialized with the IV
                                        ECB (temp, temp2);
-
-                                       for (int i = 0; i < FeedBackByte; i++)
-                                               output[i + x] = (byte)(temp2[i] ^ input[i + x]);
-                                       Buffer.BlockCopy (temp, FeedBackByte, temp, 0, BlockSizeByte - FeedBackByte);
-                                       Buffer.BlockCopy (output, x, temp, BlockSizeByte - FeedBackByte, FeedBackByte);
+                                       output [x] = (byte) (temp2 [0] ^ input [x]);
+                                       Buffer.BlockCopy (temp, 1, temp, 0, BlockSizeByte - 1);
+                                       Buffer.BlockCopy (output, x, temp, BlockSizeByte - 1, 1);
                                }
                        }
                        else {
-                               for (int x = 0; x < FeedBackIter; x++) {
+                               for (int x = 0; x < BlockSizeByte; x++) {
                                        // we do not really decrypt this data!
                                        encrypt = true;
                                        // temp is first initialized with the IV
                                        ECB (temp, temp2);
                                        encrypt = false;
 
-                                       Buffer.BlockCopy (temp, FeedBackByte, temp, 0, BlockSizeByte - FeedBackByte);
-                                       Buffer.BlockCopy (input, x, temp, BlockSizeByte - FeedBackByte, FeedBackByte);
-                                       for (int i = 0; i < FeedBackByte; i++)
-                                               output[i + x] = (byte)(temp2[i] ^ input[i + x]);
+                                       Buffer.BlockCopy (temp, 1, temp, 0, BlockSizeByte - 1);
+                                       Buffer.BlockCopy (input, x, temp, BlockSizeByte - 1, 1);
+                                       output [x] = (byte) (temp2 [0] ^ input [x]);
                                }
                        }
                }
@@ -244,7 +242,7 @@ namespace Mono.Security.Cryptography {
 
                        // ordered to avoid possible integer overflow
                        int len = outputBuffer.Length - inputCount - outputOffset;
-                       if (!encrypt && (0 > len) && ((algo.Padding == PaddingMode.None) || (algo.Padding == PaddingMode.Zeros))) {
+                       if (!encrypt && (0 > len) && ((padmode == PaddingMode.None) || (padmode == PaddingMode.Zeros))) {
                                throw new CryptographicException ("outputBuffer", Locale.GetText ("Overflow"));
                        } else if (KeepLastBlock) {
                                if (0 > len + BlockSizeByte) {
@@ -264,7 +262,7 @@ namespace Mono.Security.Cryptography {
 
                private bool KeepLastBlock {
                        get {
-                               return ((!encrypt) && (algo.Padding != PaddingMode.None) && (algo.Padding != PaddingMode.Zeros));
+                               return ((!encrypt) && (padmode != PaddingMode.None) && (padmode != PaddingMode.Zeros));
                        }
                }
 
@@ -336,14 +334,14 @@ namespace Mono.Security.Cryptography {
                        throw new CryptographicException (msg);
                }
 
-               private byte[] FinalEncrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
+               protected virtual byte[] FinalEncrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
                {
                        // are there still full block to process ?
                        int full = (inputCount / BlockSizeByte) * BlockSizeByte;
                        int rem = inputCount - full;
                        int total = full;
 
-                       switch (algo.Padding) {
+                       switch (padmode) {
                        case PaddingMode.ANSIX923:
                        case PaddingMode.ISO10126:
                        case PaddingMode.PKCS7:
@@ -354,7 +352,7 @@ namespace Mono.Security.Cryptography {
                                if (inputCount == 0)
                                        return new byte [0];
                                if (rem != 0) {
-                                       if (algo.Padding == PaddingMode.None)
+                                       if (padmode == PaddingMode.None)
                                                throw new CryptographicException ("invalid block length");
                                        // zero padding the input (by adding a block for the partial data)
                                        byte[] paddedInput = new byte [full + BlockSizeByte];
@@ -380,7 +378,7 @@ namespace Mono.Security.Cryptography {
 
                        // now we only have a single last block to encrypt
                        byte padding = (byte) (BlockSizeByte - rem);
-                       switch (algo.Padding) {
+                       switch (padmode) {
                        case PaddingMode.ANSIX923:
                                // XX 00 00 00 00 00 00 07 (zero + padding length)
                                res [res.Length - 1] = padding;
@@ -411,11 +409,9 @@ namespace Mono.Security.Cryptography {
                        return res;
                }
 
-               private byte[] FinalDecrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
+               protected virtual byte[] FinalDecrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
                {
-                       if ((inputCount % BlockSizeByte) > 0)
-                               throw new CryptographicException ("Invalid input block size.");
-
+                       int full = inputCount;
                        int total = inputCount;
                        if (lastBlock)
                                total += BlockSizeByte;
@@ -423,11 +419,11 @@ namespace Mono.Security.Cryptography {
                        byte[] res = new byte [total];
                        int outputOffset = 0;
 
-                       while (inputCount > 0) {
+                       while (full > 0) {
                                int len = InternalTransformBlock (inputBuffer, inputOffset, BlockSizeByte, res, outputOffset);
                                inputOffset += BlockSizeByte;
                                outputOffset += len;
-                               inputCount -= BlockSizeByte;
+                               full -= BlockSizeByte;
                        }
 
                        if (lastBlock) {
@@ -439,27 +435,27 @@ namespace Mono.Security.Cryptography {
 
                        // total may be 0 (e.g. PaddingMode.None)
                        byte padding = ((total > 0) ? res [total - 1] : (byte) 0);
-                       switch (algo.Padding) {
+                       switch (padmode) {
                        case PaddingMode.ANSIX923:
                                if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (algo.Padding, padding, -1);
+                                       ThrowBadPaddingException (padmode, padding, -1);
                                for (int i = padding - 1; i > 0; i--) {
                                        if (res [total - 1 - i] != 0x00)
-                                               ThrowBadPaddingException (algo.Padding, -1, i);
+                                               ThrowBadPaddingException (padmode, -1, i);
                                }
                                total -= padding;
                                break;
                        case PaddingMode.ISO10126:
                                if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (algo.Padding, padding, -1);
+                                       ThrowBadPaddingException (padmode, padding, -1);
                                total -= padding;
                                break;
                        case PaddingMode.PKCS7:
                                if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (algo.Padding, padding, -1);
+                                       ThrowBadPaddingException (padmode, padding, -1);
                                for (int i = padding - 1; i > 0; i--) {
                                        if (res [total - 1 - i] != padding)
-                                               ThrowBadPaddingException (algo.Padding, -1, i);
+                                               ThrowBadPaddingException (padmode, -1, i);
                                }
                                total -= padding;
                                break;
index 722d2e53b4f9c2f2daad4f07e6f25b6d328795a8..1e09d552a21b29ec0e3533087ac33090220a20e3 100644 (file)
@@ -115,14 +115,9 @@ namespace Mono.Security.Cryptography
                        this.Initialize();
                }
 
-               public HMAC(string hashName, byte[] rgbKey)
+               public HMAC (HashAlgorithm ha, byte[] rgbKey)
                {
-                       // Create the hash
-                       if (hashName == null || hashName.Length == 0)
-                       {
-                               hashName = "MD5";
-                       }
-                       hash = HashAlgorithm.Create(hashName);
+                       hash = ha;
                        // Set HashSizeValue
                        HashSizeValue = hash.HashSize;
 
index eb60c6bd086185c56c1317a29f70c1f278eeeac6..5b5e74e48c10250bfef984801a0913b9081c3216 100644 (file)
@@ -46,7 +46,12 @@ using Mono.Security.Cryptography;
 namespace Mono.Security.Protocol.Ntlm {
 
        [Obsolete (Type3Message.LegacyAPIWarning)]
-       public class ChallengeResponse : IDisposable {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class ChallengeResponse : IDisposable {
 
                static private byte[] magic = { 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 };
 
index abaef0e259bc57a95ab8913e903f99d8be14fae1..747ab89c15b9a0c548ac98cebd1c54e76f607afc 100644 (file)
@@ -49,7 +49,12 @@ using Mono.Security.Cryptography;
 
 namespace Mono.Security.Protocol.Ntlm {
 
-       public static class ChallengeResponse2 {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       static class ChallengeResponse2 {
 
                static private byte[] magic = { 0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25 };
 
index d62ed40c973d02f51a13821b1c417c4e31699bce..0e6e571bb4e2fd768d514053c7be0c5bc05b8518 100644 (file)
@@ -39,7 +39,12 @@ using System.Globalization;
 
 namespace Mono.Security.Protocol.Ntlm {
 
-       public abstract class MessageBase {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       abstract class MessageBase {
 
                static private byte[] header = { 0x4e, 0x54, 0x4c, 0x4d, 0x53, 0x53, 0x50, 0x00 };
                
index e66d5901b5b9dda3ed2d0768652a90f172159b84..2dc12129b5d9a1c7d8321b209f0cc143a9f25768 100644 (file)
@@ -36,7 +36,12 @@ namespace Mono.Security.Protocol.Ntlm {
         * is LM_and_NTLM_and_try_NTLMv2_Session.
         */
        
-       public enum NtlmAuthLevel {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       enum NtlmAuthLevel {
                /* Use LM and NTLM, never use NTLMv2 session security. */
                LM_and_NTLM,
                
index 5b5db641a4a18e5908fa11699fa55d95ef0ecb14..f835bd8b1456e1ad35fbc6ad14a8bbdc3369fdfd 100644 (file)
@@ -40,7 +40,12 @@ using System;
 namespace Mono.Security.Protocol.Ntlm {
 
        [Flags]
-       public enum NtlmFlags : int {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       enum NtlmFlags : int {
                // The client sets this flag to indicate that it supports Unicode strings.
                NegotiateUnicode = 0x00000001,
                // This is set to indicate that the client supports OEM strings.
index 531fce0262275983510daa57a940382110393d26..b9ef85593601087d76b40ef943222e6fa69ac186 100644 (file)
@@ -39,7 +39,12 @@ using System.Text;
 
 namespace Mono.Security.Protocol.Ntlm {
 
-       public class Type1Message : MessageBase {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class Type1Message : MessageBase {
 
                private string _host;
                private string _domain;
index a2f65e3e584b06fb618ae541beb01d8f4769db5e..e6a89936a908e919155df942f5739b9debd354a4 100644 (file)
@@ -39,7 +39,12 @@ using System.Security.Cryptography;
 
 namespace Mono.Security.Protocol.Ntlm {
 
-       public class Type2Message : MessageBase {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class Type2Message : MessageBase {
 
                private byte[] _nonce;
                private string _targetName;
index 50010bffe619311f8bc6cffc6de462ee9950bfd3..d80a50be699ed7494cb41f1536a51671c0e51722 100644 (file)
@@ -39,7 +39,12 @@ using System.Text;
 
 namespace Mono.Security.Protocol.Ntlm {
 
-       public class Type3Message : MessageBase {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class Type3Message : MessageBase {
 
                private NtlmAuthLevel _level;
                private byte[] _challenge;
index 174e0eb58445bee1cdd6d91518a68e9f5457e475..dae12cc401347bd88c129e381b7f5202c8f33311 100644 (file)
@@ -182,42 +182,50 @@ namespace Mono.Security.Protocol.Tls.Handshake.Client
                        return true;
                }
 
-               
-               static private void VerifyOSX (X509CertificateCollection certificates)
-               {
-                       
-               }
-               
                private void validateCertificates(X509CertificateCollection certificates)
                {
                        ClientContext           context                 = (ClientContext)this.Context;
                        AlertDescription        description             = AlertDescription.BadCertificate;
 
-#if NET_2_0
-                       if (context.SslStream.HaveRemoteValidation2Callback) {
-                               ValidationResult res = context.SslStream.RaiseServerCertificateValidation2 (certificates);
-                               if (res.Trusted)
-                                       return;
+#if INSIDE_SYSTEM
+                       // This helps the linker to remove a lot of validation code that will never be used since 
+                       // System.dll will, for OSX and iOS, uses the operating system X.509 certificate validations
+                       RemoteValidation (context, description);
+#else
+                       if (context.SslStream.HaveRemoteValidation2Callback)
+                               RemoteValidation (context, description);
+                       else 
+                               LocalValidation (context, description);
+#endif
+               }
 
-                               long error = res.ErrorCode;
-                               switch (error) {
-                               case 0x800B0101:
-                                       description = AlertDescription.CertificateExpired;
-                                       break;
-                               case 0x800B010A:
-                                       description = AlertDescription.UnknownCA;
-                                       break;
-                               case 0x800B0109:
-                                       description = AlertDescription.UnknownCA;
-                                       break;
-                               default:
-                                       description = AlertDescription.CertificateUnknown;
-                                       break;
-                               }
-                               string err = String.Format ("0x{0:x}", error);
-                               throw new TlsException (description, "Invalid certificate received from server. Error code: " + err);
+               void RemoteValidation (ClientContext context, AlertDescription description)
+               {
+                       ValidationResult res = context.SslStream.RaiseServerCertificateValidation2 (certificates);
+                       if (res.Trusted)
+                               return;
+
+                       long error = res.ErrorCode;
+                       switch (error) {
+                       case 0x800B0101:
+                               description = AlertDescription.CertificateExpired;
+                               break;
+                       case 0x800B010A:
+                               description = AlertDescription.UnknownCA;
+                               break;
+                       case 0x800B0109:
+                               description = AlertDescription.UnknownCA;
+                               break;
+                       default:
+                               description = AlertDescription.CertificateUnknown;
+                               break;
                        }
-#endif
+                       string err = String.Format ("Invalid certificate received from server. Error code: 0x{0:x}", error);
+                       throw new TlsException (description, err);
+               }
+
+               void LocalValidation (ClientContext context, AlertDescription description)
+               {
                        // the leaf is the web server certificate
                        X509Certificate leaf = certificates [0];
                        X509Cert.X509Certificate cert = new X509Cert.X509Certificate (leaf.RawData);
index e8e617143686386e1aa4f0636cdc810bd9ca5a90..b58cc2c785e291cccad5934d2b059cf290262588 100644 (file)
@@ -26,8 +26,13 @@ using System;
 
 namespace Mono.Security.Protocol.Tls
 {
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum CipherAlgorithmType
+       public
+#endif
+       enum CipherAlgorithmType
        {
                Des,
                None,
index 66f3a6536cdfda3221b8eedbc0c670b87e1b5794..6d78fc9d38632340661a6579bf218a64c5f7a7d2 100644 (file)
@@ -115,6 +115,18 @@ namespace Mono.Security.Protocol.Tls
                        }
                }
 
+               internal HashAlgorithm CreateHashAlgorithm ()
+               {
+                       switch (hashAlgorithmType) {
+                       case HashAlgorithmType.Md5:
+                               return MD5.Create ();
+                       case HashAlgorithmType.Sha1:
+                               return SHA1.Create ();
+                       default:
+                               return null;
+                       }
+               }
+
                public HashAlgorithmType HashAlgorithmType
                {
                        get { return this.hashAlgorithmType; }
@@ -389,10 +401,10 @@ namespace Mono.Security.Protocol.Tls
                        Buffer.BlockCopy(secret, (secret.Length - secretLen), secret2, 0, secretLen);
 
                        // Secret 1 processing
-                       byte[] p_md5 = Expand("MD5", secret1, seed, length);
+                       byte[] p_md5 = Expand (MD5.Create (), secret1, seed, length);
 
                        // Secret 2 processing
-                       byte[] p_sha = Expand("SHA1", secret2, seed, length);
+                       byte[] p_sha = Expand (SHA1.Create (), secret2, seed, length);
 
                        // Perfor XOR of both results
                        byte[] masterSecret = new byte[length];
@@ -404,16 +416,16 @@ namespace Mono.Security.Protocol.Tls
                        return masterSecret;
                }
                
-               public byte[] Expand(string hashName, byte[] secret, byte[] seed, int length)
+               public byte[] Expand (HashAlgorithm hash, byte[] secret, byte[] seed, int length)
                {
-                       int hashLength  = hashName == "MD5" ? 16 : 20;
+                       int hashLength  = hash.HashSize / 8;
                        int     iterations      = (int)(length / hashLength);
                        if ((length % hashLength) > 0)
                        {
                                iterations++;
                        }
                        
-                       M.HMAC          hmac    = new M.HMAC(hashName, secret);
+                       M.HMAC          hmac    = new M.HMAC (hash, secret);
                        TlsStream       resMacs = new TlsStream();
                        
                        byte[][] hmacs = new byte[iterations + 1][];
@@ -465,7 +477,12 @@ namespace Mono.Security.Protocol.Tls
                                        break;
 
                                case CipherAlgorithmType.Rijndael:
+#if MOBILE || NET_4_0
+                                       // only AES is really used - and we can use CommonCrypto for iOS and OSX this way
+                                       this.encryptionAlgorithm = Aes.Create();
+#else
                                        this.encryptionAlgorithm = Rijndael.Create();
+#endif
                                        break;
                        }
 
@@ -498,13 +515,13 @@ namespace Mono.Security.Protocol.Tls
                        if (this.context is ClientContext)
                        {
                                this.clientHMAC = new M.HMAC(
-                                       this.HashAlgorithmName,
+                                       CreateHashAlgorithm (),
                                        this.context.Negotiating.ClientWriteMAC);
                        }
                        else
                        {
                                this.serverHMAC = new M.HMAC(
-                                       this.HashAlgorithmName,
+                                       CreateHashAlgorithm (),
                                        this.context.Negotiating.ServerWriteMAC);
                        }
                }
@@ -531,7 +548,12 @@ namespace Mono.Security.Protocol.Tls
                                        break;
 
                                case CipherAlgorithmType.Rijndael:
+#if MOBILE || NET_4_0
+                                       // only AES is really used - and we can use CommonCrypto for iOS and OSX this way
+                                       this.decryptionAlgorithm = Aes.Create();
+#else
                                        this.decryptionAlgorithm = Rijndael.Create();
+#endif
                                        break;
                        }
 
@@ -564,13 +586,13 @@ namespace Mono.Security.Protocol.Tls
                        if (this.context is ClientContext)
                        {
                                this.serverHMAC = new M.HMAC(
-                                       this.HashAlgorithmName,
+                                       CreateHashAlgorithm (),
                                        this.context.Negotiating.ServerWriteMAC);
                        }
                        else
                        {
                                this.clientHMAC = new M.HMAC(
-                                       this.HashAlgorithmName,
+                                       CreateHashAlgorithm (),
                                        this.context.Negotiating.ClientWriteMAC);
                        }
                }
index a244b2ea3a55d92e93faa8416fa7505ff5271c11..3f5156ea93a398b13a3958e85b142d2b9b396983 100644 (file)
@@ -26,8 +26,13 @@ using System;
 
 namespace Mono.Security.Protocol.Tls
 {
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum ExchangeAlgorithmType
+       public
+#endif
+       enum ExchangeAlgorithmType
        {
                DiffieHellman,
                Fortezza,
index 092d7adcfd0b01c2452247c29686fd7845d981df..3f6a60cd7cfe0e53920cd429e7571ff088d39508 100644 (file)
@@ -26,8 +26,13 @@ using System;
 
 namespace Mono.Security.Protocol.Tls
 {
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum HashAlgorithmType
+       public
+#endif
+       enum HashAlgorithmType
        {
                Md5,
                None,
index 0126d73fcc5c5a0cc323fc81f11612ceb5cf5d8f..9937f287dce27809915ff32a608d2ba8e2c085f7 100644 (file)
@@ -37,26 +37,26 @@ using SNCX = System.Security.Cryptography.X509Certificates;
 
 namespace Mono.Security.Protocol.Tls {
 
-        // Note: DO NOT REUSE this class - instead use SslClientStream
+       // Note: DO NOT REUSE this class - instead use SslClientStream
 
-        internal class HttpsClientStream : SslClientStream {
+       internal class HttpsClientStream : SslClientStream {
 
-                private HttpWebRequest _request;
+               private HttpWebRequest _request;
                private int _status;
 
-                public HttpsClientStream (Stream stream, X509CertificateCollection clientCertificates,
+               public HttpsClientStream (Stream stream, X509CertificateCollection clientCertificates,
                                        HttpWebRequest request, byte [] buffer)
-                        : base (stream, request.Address.Host, false, (Mono.Security.Protocol.Tls.SecurityProtocolType)
+                       : base (stream, request.Address.Host, false, (Mono.Security.Protocol.Tls.SecurityProtocolType)
                                ServicePointManager.SecurityProtocol, clientCertificates)
-                {
-                        // this constructor permit access to the WebRequest to call
-                        // ICertificatePolicy.CheckValidationResult
-                        _request = request;
+               {
+                       // this constructor permit access to the WebRequest to call
+                       // ICertificatePolicy.CheckValidationResult
+                        _request = request;
                        _status = 0;
                        if (buffer != null)
                                InputBuffer.Write (buffer, 0, buffer.Length);
-                        // also saved from reflection
-                        base.CheckCertRevocationStatus = ServicePointManager.CheckCertificateRevocationList;
+                       // also saved from reflection
+                       base.CheckCertRevocationStatus = ServicePointManager.CheckCertificateRevocationList;
 
                        ClientCertSelection += delegate (X509CertificateCollection clientCerts, X509Certificate serverCertificate,
                                string targetHost, X509CertificateCollection serverRequestedCertificates) {
@@ -66,7 +66,7 @@ namespace Mono.Security.Protocol.Tls {
                                X509Certificate2 cert = (certificate as X509Certificate2);
                                return (cert == null) ? null : cert.PrivateKey;
                        };
-               }
+               }
 
                public bool TrustFailure {
                        get { 
@@ -81,7 +81,7 @@ namespace Mono.Security.Protocol.Tls {
                }
 
                internal override bool RaiseServerCertificateValidation (X509Certificate certificate, int[] certificateErrors)
-                {
+               {
                        bool failed = (certificateErrors.Length > 0);
                        // only one problem can be reported by this interface
                        _status = ((failed) ? certificateErrors [0] : 0);
@@ -117,5 +117,5 @@ namespace Mono.Security.Protocol.Tls {
                        }
                        return failed;
                }
-        }
+       }
 }
index 1b9f5e4c68c44afc180dc04dc13448f58b390fde..b79728dcc2b8e14a3a394e533273e85d0a1b4db5 100644 (file)
@@ -77,6 +77,9 @@ namespace Mono.Security.Protocol.Tls
 
                public override void SetHashAlgorithm(string strName)
                {
+#if INSIDE_SYSTEM
+                       hash = new Mono.Security.Cryptography.MD5SHA1 ();
+#else
                        switch (strName)
                        {
                                case "MD5SHA1":
@@ -87,6 +90,7 @@ namespace Mono.Security.Protocol.Tls
                                        this.hash = HashAlgorithm.Create(strName);
                                        break;
                        }
+#endif
                }
 
                public override void SetKey(AsymmetricAlgorithm key)
index f2e168c47fcf192a7382f4af9e403d4db56a34e9..5d0e75ae4e0bfa9ebb70e709fd162e61613cdd00 100644 (file)
@@ -74,6 +74,9 @@ namespace Mono.Security.Protocol.Tls
 
                public override void SetHashAlgorithm(string strName)
                {
+#if INSIDE_SYSTEM
+                       hash = new Mono.Security.Cryptography.MD5SHA1 ();
+#else
                        switch (strName)
                        {
                                case "MD5SHA1":
@@ -84,6 +87,7 @@ namespace Mono.Security.Protocol.Tls
                                        this.hash = HashAlgorithm.Create(strName);
                                        break;
                        }
+#endif
                }
 
                public override void SetKey(AsymmetricAlgorithm key)
index 730a8074696c228e402f0ba53d30399c1db13a55..07f5c49a38afe6666ce9b2b7c3a5df4df904c208 100644 (file)
@@ -29,7 +29,12 @@ namespace Mono.Security.Protocol.Tls
        // Information about compression methods allowed by TLS
        // can be found in:
        //      draft-ietf-tls-compression-05.txt (http://www.ietf.org/internet-drafts/draft-ietf-tls-compression-05.txt)
-       public enum SecurityCompressionType
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       enum SecurityCompressionType
        {
                None = 0,
                Zlib = 1
index a914afc13771cf4733451b9a3b82dbaf3b26ddf3..d0693e89d7884bdba24ece65de4444983f1404e8 100644 (file)
@@ -27,8 +27,13 @@ using System;
 namespace Mono.Security.Protocol.Tls
 {
        [Flags]
+#if INSIDE_SYSTEM
+       internal
+#else
        [Serializable]
-       public enum SecurityProtocolType
+       public
+#endif
+       enum SecurityProtocolType
        {
                Default = -1073741824,
                Ssl2    = 12,
index 14540520be2aa531b01fdee6be30f2fb09acf066..ae9b9d56c19eac4c0b480923814b07768ad39b4f 100644 (file)
@@ -74,7 +74,7 @@ namespace Mono.Security.Protocol.Tls
 
                public override byte[] ComputeServerRecordMAC(ContentType contentType, byte[] fragment)
                {
-                       HashAlgorithm   hash    = HashAlgorithm.Create(this.HashAlgorithmName);
+                       HashAlgorithm hash = CreateHashAlgorithm ();
 
                        byte[] smac = this.Context.Read.ServerWriteMAC;
                        hash.TransformBlock (smac, 0, smac.Length, smac, 0);
@@ -107,7 +107,7 @@ namespace Mono.Security.Protocol.Tls
 
                public override byte[] ComputeClientRecordMAC(ContentType contentType, byte[] fragment)
                {
-                       HashAlgorithm   hash    = HashAlgorithm.Create(this.HashAlgorithmName);
+                       HashAlgorithm hash = CreateHashAlgorithm ();
 
                        byte[] cmac = this.Context.Current.ClientWriteMAC;
                        hash.TransformBlock (cmac, 0, cmac.Length, cmac, 0);
index a50679c058b9cbed5cdc48e172b567f759dd572a..4bcc5b9f7f87d242cff58866177f933d8f0603e7 100644 (file)
@@ -37,11 +37,21 @@ namespace Mono.Security.Protocol.Tls
 {
        #region Delegates
 
-       public delegate bool CertificateValidationCallback(
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       delegate bool CertificateValidationCallback(
                X509Certificate certificate, 
                int[]                   certificateErrors);
 
-       public class ValidationResult {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class ValidationResult {
                bool trusted;
                bool user_denied;
                int error_code;
@@ -66,22 +76,41 @@ namespace Mono.Security.Protocol.Tls
                }
        }
 
+#if INSIDE_SYSTEM
+       internal
+#else
        public
+#endif
        delegate ValidationResult CertificateValidationCallback2 (Mono.Security.X509.X509CertificateCollection collection);
 
-       public delegate X509Certificate CertificateSelectionCallback(
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       delegate X509Certificate CertificateSelectionCallback(
                X509CertificateCollection       clientCertificates, 
                X509Certificate                         serverCertificate, 
                string                                          targetHost, 
                X509CertificateCollection       serverRequestedCertificates);
 
-       public delegate AsymmetricAlgorithm PrivateKeySelectionCallback(
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       delegate AsymmetricAlgorithm PrivateKeySelectionCallback(
                X509Certificate certificate, 
                string                  targetHost);
 
        #endregion
 
-       public class SslClientStream : SslStreamBase
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class SslClientStream : SslStreamBase
        {
                #region Internal Events
                
index fba03390993686e42cafa6c282e1e793ba59f60f..2a670b40d5158b9b178ea99408fbb80041cdf280 100644 (file)
@@ -47,8 +47,8 @@ namespace Mono.Security.Protocol.Tls
                public SslHandshakeHash(byte[] secret)
                {
                        // Create md5 and sha1 hashes
-                       this.md5 = HashAlgorithm.Create("MD5");
-                       this.sha = HashAlgorithm.Create("SHA1");
+                       this.md5 = MD5.Create ();
+                       this.sha = SHA1.Create ();
                        
                        // Set HashSizeValue
                        this.HashSizeValue = md5.HashSize + sha.HashSize;
index 2a9d7623223f71458dbb9f885d730fc640f27d8d..02cfccfe9527543c3d73adc455080a231acee2e4 100644 (file)
@@ -34,7 +34,12 @@ using Mono.Security.Protocol.Tls.Handshake;
 
 namespace Mono.Security.Protocol.Tls
 {
-       public class SslServerStream : SslStreamBase
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class SslServerStream : SslStreamBase
        {
                #region Internal Events
                
index 24833d14d2ebc28cd4a427f29ca328fa292b53a6..7462702d9a421a34c64d5c5ff717c429fd35c133 100644 (file)
@@ -33,7 +33,12 @@ using System.Threading;
 
 namespace Mono.Security.Protocol.Tls
 {
-       public abstract class SslStreamBase: Stream, IDisposable
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       abstract class SslStreamBase: Stream, IDisposable
        {
                private delegate void AsyncHandshakeDelegate(InternalAsyncResult asyncResult, bool fromWrite);
                
index c42a63343ffd9307fcebad252fd39ffa861e0932..fb6f940a1ecbc9f4355bf11602c330229ed75bda 100644 (file)
@@ -46,7 +46,12 @@ namespace Mono.Security.X509.Extensions {
         * KeyIdentifier ::= OCTET STRING
         */
 
-       public class AuthorityKeyIdentifierExtension : X509Extension {
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
+       class AuthorityKeyIdentifierExtension : X509Extension {
 
                private byte[] aki;
 
index 46bdaa81d25dbebf03b6549b902da1ca15585d2b..888f3a622b351af7411590ef5faf08e52e07642b 100644 (file)
@@ -44,7 +44,11 @@ namespace Mono.Security.X509.Extensions {
         * KeyPurposeId ::= OBJECT IDENTIFIER
         */
 
-       public 
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
        class ExtendedKeyUsageExtension : X509Extension {
 
                private ArrayList keyPurpose;
index e986af912de6a2cb58ce22848c6b5b6a2ae4ce80..cf4385ef55fa0abd46b5554f1ca02f52cdab694e 100644 (file)
@@ -37,32 +37,6 @@ using Mono.Security;
 using Mono.Security.X509;
 
 namespace Mono.Security.X509.Extensions {      
-       // definition found @ http://groups.yahoo.com/group/ssl-talk/message/1964
-       //
-       // keyAttributes EXTENSION ::= {
-       //      SYNTAX KeyAttributes
-       //      IDENTIFIED BY { id-ce 2 } }
-       //
-       // KeyAttributes ::= SEQUENCE {
-       //      keyIdentifier KeyIdentifier OPTIONAL,
-       //      intendedKeyUsage KeyUsage OPTIONAL,
-       //      privateKeyUsagePeriod PrivateKeyValidity OPTIONAL 
-       // }
-       // KeyUsage ::= BIT STRING {
-       //      digitalSignature (0),
-       //      nonRepudiation (1),
-       //      keyEncipherment (2),
-       //      dataEncipherment (3),
-       //      keyAgreement (4),
-       //      keyCertSign (5),
-       //      offLineCRLSign (6) 
-       // }
-       // PrivateKeyValidity ::= SEQUENCE {
-       //      notBefore [0] GeneralizedTime OPTIONAL,
-       //      notAfter [1] GeneralizedTime OPTIONAL 
-       // }
-       // ( CONSTRAINED BY { -- at least one component shall be present -- })
-
        public class KeyAttributesExtension : X509Extension {
 
                private byte[] keyId;
index d7dd0c1930f8ee26f0dfb3dc621729d44bc340d5..3cf55305aabb9e3f29f4c87ba5874cadcdd42fbb 100644 (file)
@@ -45,7 +45,11 @@ namespace Mono.Security.X509.Extensions {
        // c.   2.16.840.1.113730.1.1 - Netscape certificate type
        //      http://www.alvestrand.no/objectid/2.16.840.1.113730.1.1.html
 
-       public 
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
        class NetscapeCertTypeExtension : X509Extension {
 
                /*
index ef927bceb7ae6745c2463630a57c8372e1ae07ea..23d12c5ab09ae2dc33301144fb454437cf7d69da 100644 (file)
@@ -68,7 +68,11 @@ namespace Mono.Security.X509.Extensions {
         */
 
        // TODO: Directories not supported
-       public 
+#if INSIDE_SYSTEM
+       internal
+#else
+       public
+#endif
        class SubjectAltNameExtension : X509Extension {
 
                private GeneralNames _names;
index f7df6f6d3d95919e783cdf004c6011fecf1ee7ab..a73d2726014a1d21b2cfd49eba9a2107dcc78dcb 100644 (file)
@@ -7,6 +7,8 @@
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 //
 
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -32,7 +34,12 @@ using System;
 
 namespace Mono.Security.X509 {
 
-       public interface ITrustAnchors
+#if INSIDE_CORLIB
+       internal
+#else
+       public
+#endif
+       interface ITrustAnchors
        {
                X509CertificateCollection Anchors { get; }
        }
index 5ecce72b8db96d41dbc1aaa51cdfd990a99cb69f..62ed9c7a3fc404104b19f30d9802fdc053eaf14c 100644 (file)
@@ -2,10 +2,11 @@
 // PKCS12.cs: PKCS 12 - Personal Information Exchange Syntax
 //
 // Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004,2005,2006 Novell Inc. (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Key derivation translated from Bouncy Castle JCE (http://www.bouncycastle.org/)
 // See bouncycastle.txt for license.
@@ -184,7 +185,7 @@ namespace Mono.Security.X509 {
 
                        private byte[] Derive (byte[] diversifier, int n) 
                        {
-                               HashAlgorithm digest = HashAlgorithm.Create (_hashName);
+                               HashAlgorithm digest = PKCS1.CreateFromName (_hashName);
                                int u = (digest.HashSize >> 3); // div 8
                                int v = 64;
                                byte[] dKey = new byte [n];
@@ -265,7 +266,7 @@ namespace Mono.Security.X509 {
                        }
                }
 
-               static private int recommendedIterationCount = 2000;
+               const int recommendedIterationCount = 2000;
 
                //private int _version;
                private byte[] _password;
@@ -649,7 +650,29 @@ namespace Mono.Security.X509 {
                                        throw new NotSupportedException ("unknown oid " + algorithm);
                        }
 
-                       SymmetricAlgorithm sa = SymmetricAlgorithm.Create (algorithm);
+                       SymmetricAlgorithm sa = null;
+#if INSIDE_CORLIB && FULL_AOT_RUNTIME
+                       // we do not want CryptoConfig to bring the whole crypto stack
+                       // in particular Rijndael which is not supported by CommonCrypto
+                       switch (algorithm) {
+                       case "DES":
+                               sa = DES.Create ();
+                               break;
+                       case "RC2":
+                               sa = RC2.Create ();
+                               break;
+                       case "TripleDES":
+                               sa = TripleDES.Create ();
+                               break;
+                       case "RC4":
+                               sa = RC4.Create ();
+                               break;
+                       default:
+                               throw new NotSupportedException (algorithm);
+                       }
+#else
+                       sa = SymmetricAlgorithm.Create (algorithm);
+#endif
                        sa.Key = pd.DeriveKey (keyLength);
                        // IV required only for block ciphers (not stream ciphers)
                        if (ivLength > 0) {
index b5c4e94b2c5428ccc0678094386fafc486cb51d3..daa5a5841ff8f37190ef584e49543e7c648768af 100644 (file)
@@ -2,9 +2,10 @@
 // X509CRL.cs: Handles X.509 certificates revocation lists.
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // Copyright (C) 2004,2006 Novell Inc. (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -32,6 +33,7 @@ using System.Globalization;
 using System.IO;
 using System.Security.Cryptography;
 
+using Mono.Security.Cryptography;
 using Mono.Security.X509.Extensions;
 
 namespace Mono.Security.X509 {
@@ -58,9 +60,7 @@ namespace Mono.Security.X509 {
         *      crlExtensions           [0] Extensions OPTIONAL }
         *              -- if present, MUST be v2
         */
-#if INSIDE_CORLIB
-       internal
-#else
+#if !INSIDE_CORLIB
        public 
 #endif
        class X509Crl {
@@ -218,8 +218,8 @@ namespace Mono.Security.X509 {
                                if (hash_value == null) {
                                        ASN1 encodedCRL = new ASN1 (encoded);
                                        byte[] toBeSigned = encodedCRL [0].GetBytes ();
-                                       HashAlgorithm ha = HashAlgorithm.Create (GetHashName ());
-                                       hash_value = ha.ComputeHash (toBeSigned);
+                                       using (var ha = PKCS1.CreateFromOid (signatureOID))
+                                               hash_value = ha.ComputeHash (toBeSigned);
                                }
                                return hash_value;
                        }
@@ -349,26 +349,6 @@ namespace Mono.Security.X509 {
                        }
                }
 
-               private string GetHashName ()
-               {
-                       switch (signatureOID) {
-                       // MD2 with RSA encryption 
-                       case "1.2.840.113549.1.1.2":
-                               // maybe someone installed MD2 ?
-                               return "MD2";
-                       // MD5 with RSA encryption 
-                       case "1.2.840.113549.1.1.4":
-                               return "MD5";
-                       // SHA-1 with DSA
-                       case "1.2.840.10040.4.3":
-                       // SHA-1 with RSA Encryption 
-                       case "1.2.840.113549.1.1.5":
-                               return "SHA1";
-                       default:
-                               throw new CryptographicException ("Unsupported hash algorithm: " + signatureOID);
-                       }
-               }
-
                internal bool VerifySignature (DSA dsa) 
                {
                        if (signatureOID != "1.2.840.10040.4.3")
@@ -397,7 +377,7 @@ namespace Mono.Security.X509 {
                internal bool VerifySignature (RSA rsa) 
                {
                        RSAPKCS1SignatureDeformatter v = new RSAPKCS1SignatureDeformatter (rsa);
-                       v.SetHashAlgorithm (GetHashName ());
+                       v.SetHashAlgorithm (PKCS1.HashNameFromOid (signatureOID));
                        return v.VerifySignature (Hash, signature);
                }
 
index 76ca22f457c3278c8057235e6bf443cdbc3b5987..11be419681b1abe55aa502fe916dd7aab511351a 100644 (file)
@@ -2,10 +2,11 @@
 // X509Certificates.cs: Handles X.509 certificates.
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -33,6 +34,7 @@ using System.Security.Cryptography;
 using SSCX = System.Security.Cryptography.X509Certificates;
 using System.Security.Permissions;
 using System.Text;
+using Mono.Security.Cryptography;
 
 namespace Mono.Security.X509 {
 
@@ -285,48 +287,14 @@ namespace Mono.Security.X509 {
                public byte[] Hash {
                        get {
                                if (certhash == null) {
-                                       HashAlgorithm hash = null;
-                                       switch (m_signaturealgo) {
-                                               case "1.2.840.113549.1.1.2":    // MD2 with RSA encryption 
-                                                       // maybe someone installed MD2 ?
-#if INSIDE_CORLIB
-                                                       hash = HashAlgorithm.Create ("MD2");
-#else
-                                                       hash = Mono.Security.Cryptography.MD2.Create ();
-#endif
-                                                       break;
-                                               case "1.2.840.113549.1.1.3":    // MD4 with RSA encryption 
-                                                       // maybe someone installed MD4 ?
-#if INSIDE_CORLIB
-                                                       hash = HashAlgorithm.Create ("MD4");
-#else
-                                                       hash = Mono.Security.Cryptography.MD4.Create ();
-#endif
-                                                       break;
-                                               case "1.2.840.113549.1.1.4":    // MD5 with RSA encryption 
-                                                       hash = MD5.Create ();
-                                                       break;
-                                               case "1.2.840.113549.1.1.5":    // SHA-1 with RSA Encryption 
-                                               case "1.3.14.3.2.29":           // SHA1 with RSA signature 
-                                               case "1.2.840.10040.4.3":       // SHA1-1 with DSA
-                                                       hash = SHA1.Create ();
-                                                       break;
-                                               case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
-                                                       hash = SHA256.Create ();
-                                                       break;
-                                               case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
-                                                       hash = SHA384.Create ();
-                                                       break;
-                                               case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
-                                                       hash = SHA512.Create ();
-                                                       break;
-                                               default:
-                                                       return null;
-                                       }
                                        if ((decoder == null) || (decoder.Count < 1))
                                                return null;
+                                       string algo = PKCS1.HashNameFromOid (m_signaturealgo, false);
+                                       if (algo == null)
+                                               return null;
                                        byte[] toBeSigned = decoder [0].GetBytes ();
-                                       certhash = hash.ComputeHash (toBeSigned, 0, toBeSigned.Length);
+                                       using (var hash = PKCS1.CreateFromName (algo))
+                                               certhash = hash.ComputeHash (toBeSigned, 0, toBeSigned.Length);
                                }
                                return (byte[]) certhash.Clone ();
                        }
@@ -421,6 +389,7 @@ namespace Mono.Security.X509 {
                                        case "1.2.840.113549.1.1.11":   // SHA-256 with RSA Encryption
                                        case "1.2.840.113549.1.1.12":   // SHA-384 with RSA Encryption
                                        case "1.2.840.113549.1.1.13":   // SHA-512 with RSA Encryption
+                                       case "1.3.36.3.3.1.2":                  // RIPEMD160 with RSA Encryption
                                                return (byte[]) signature.Clone ();
 
                                        case "1.2.840.10040.4.3":       // SHA-1 with DSA
@@ -512,47 +481,11 @@ namespace Mono.Security.X509 {
 
                internal bool VerifySignature (RSA rsa) 
                {
+                       // SHA1-1 with DSA
+                       if (m_signaturealgo == "1.2.840.10040.4.3")
+                               return false;
                        RSAPKCS1SignatureDeformatter v = new RSAPKCS1SignatureDeformatter (rsa);
-                       switch (m_signaturealgo) {
-                               // MD2 with RSA encryption 
-                               case "1.2.840.113549.1.1.2":
-                                       // maybe someone installed MD2 ?
-                                       v.SetHashAlgorithm ("MD2");
-                                       break;
-                               // MD4 with RSA encryption 
-                               case "1.2.840.113549.1.1.3":
-                                       // maybe someone installed MD4 ?
-                                       v.SetHashAlgorithm ("MD4");
-                                       break;
-                               // MD5 with RSA encryption 
-                               case "1.2.840.113549.1.1.4":
-                                       v.SetHashAlgorithm ("MD5");
-                                       break;
-                               // SHA-1 with RSA Encryption 
-                               case "1.2.840.113549.1.1.5":
-                               case "1.3.14.3.2.29":
-                                       v.SetHashAlgorithm ("SHA1");
-                                       break;
-                               // SHA-256 with RSA Encryption 
-                               case "1.2.840.113549.1.1.11":
-                                       v.SetHashAlgorithm ("SHA256");
-                                       break;
-                               // SHA-384 with RSA Encryption 
-                               case "1.2.840.113549.1.1.12":
-                                       v.SetHashAlgorithm ("SHA384");
-                                       break;
-                               // SHA-512 with RSA Encryption 
-                               case "1.2.840.113549.1.1.13":
-                                       v.SetHashAlgorithm ("SHA512");
-                                       break;
-                               // SHA1-1 with DSA
-                               case "1.2.840.10040.4.3":
-                                       // invalid but this can occurs when building a bad chain - e.g. missing certificate(s)
-                                       // we return false so we can report the "chain" error to the user (not an exception)
-                                       return false;
-                               default:
-                                       throw new CryptographicException ("Unsupported hash algorithm: " + m_signaturealgo);
-                       }
+                       v.SetHashAlgorithm (PKCS1.HashNameFromOid (m_signaturealgo));
                        return v.VerifySignature (this.Hash, this.Signature);
                }
 
@@ -627,4 +560,4 @@ namespace Mono.Security.X509 {
                        return Convert.FromBase64String (base64);
                }
        }
-}
+}
\ No newline at end of file
index a2101f57c09fb0cece85a77fb4ee9bce3d26b663..3f37b750eb25c9b34b07dee319ff8e76ad7e319d 100644 (file)
@@ -459,7 +459,7 @@ namespace Mono.Security {
 
 #if INSIDE_CORLIB
                static object lockObject = new object ();
-               static bool initialized = false;
+               static bool initialized;
 
                // We don't want a dependency on StrongNameManager in Mono.Security.dll
                static public bool IsAssemblyStrongnamed (string assemblyName) 
index e2c9e9fac9cec1fe1e0755742900c508b4a4923c..110311adf1a75f5fff38284e6ed1027cd07dbc20 100644 (file)
@@ -23,7 +23,7 @@ namespace MonoTests.Mono.Security.Cryptography {
        //      http://wp.netscape.com/eng/ssl3/traces/trc-clnt-ex.html
 
        [TestFixture]
-       public class ARC4ManagedTest : Assertion {
+       public class ARC4ManagedTest {
 
                // because most crypto stuff works with byte[] buffers
                static public void AssertEquals (string msg, byte[] array1, byte[] array2) 
@@ -31,9 +31,9 @@ namespace MonoTests.Mono.Security.Cryptography {
                        if ((array1 == null) && (array2 == null))
                                return;
                        if (array1 == null)
-                               Fail (msg + " -> First array is NULL");
+                               Assert.Fail (msg + " -> First array is NULL");
                        if (array2 == null)
-                               Fail (msg + " -> Second array is NULL");
+                               Assert.Fail (msg + " -> Second array is NULL");
                
                        bool a = (array1.Length == array2.Length);
                        if (a) {
@@ -46,7 +46,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                        }
                        msg += " -> Expected " + BitConverter.ToString (array1, 0);
                        msg += " is different than " + BitConverter.ToString (array2, 0);
-                       Assert (msg, a);
+                       Assert.IsTrue (a, msg);
                }
 
                // from ref. a
@@ -205,10 +205,10 @@ namespace MonoTests.Mono.Security.Cryptography {
                public void DefaultProperties () 
                {
                        ARC4Managed rc4 = new ARC4Managed ();
-                       Assert ("CanReuseTransform", !rc4.CanReuseTransform);
-                       Assert ("CanTransformMultipleBlocks", rc4.CanTransformMultipleBlocks);
-                       AssertEquals ("InputBlockSize", 1, rc4.InputBlockSize);
-                       AssertEquals ("OutputBlockSize", 1, rc4.OutputBlockSize);
+                       Assert.IsFalse (rc4.CanReuseTransform, "CanReuseTransform");
+                       Assert.IsTrue (rc4.CanTransformMultipleBlocks, "CanTransformMultipleBlocks");
+                       Assert.AreEqual (1, rc4.InputBlockSize, "InputBlockSize");
+                       Assert.AreEqual (1, rc4.OutputBlockSize, "OutputBlockSize");
                }
                
                [Test]
@@ -217,9 +217,9 @@ namespace MonoTests.Mono.Security.Cryptography {
                        ARC4Managed rc4 = new ARC4Managed ();
                        rc4.GenerateKey ();
                        rc4.GenerateIV ();
-                       AssertEquals ("Key.Length", 16, rc4.Key.Length);
-                       AssertEquals ("KeySize", 128, rc4.KeySize);
-                       AssertEquals ("IV.Length", 0, rc4.IV.Length);
+                       Assert.AreEqual (16, rc4.Key.Length, "Key.Length");
+                       Assert.AreEqual (128, rc4.KeySize, "KeySize");
+                       Assert.AreEqual (0, rc4.IV.Length, "IV.Length");
                }
 
                [Test]
index 5f6469abf1d425bf94becb0a2faef27f753fbde5..01462d5adc9024c9d8b22aacd2a4609357b1f4d8 100644 (file)
@@ -32,7 +32,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                {
                        // try creating ourselve using Create
                        HashAlgorithm h = MD2.Create ("MD2Managed");
-                       Assert ("MD2Managed", (h is MD2Managed));
+                       Assert.IsTrue ((h is MD2Managed), "MD2Managed");
                }
        }
-}
\ No newline at end of file
+}
index b7307cc9b1b50a7291ab0de542c2cc10b458ca5c..6fb7abdceff978b5bb059528e3b1bfb714d37e64 100644 (file)
@@ -24,10 +24,20 @@ namespace MonoTests.Mono.Security.Cryptography {
 
        // MD2 is a abstract class - so ALL of the test included here wont be tested
        // on the abstract class but should be tested in ALL its descendants.
-       public abstract class MD2Test : Assertion {
+       public abstract class MD2Test {
 
                protected MD2 hash;
 
+               static void Fail (string msg)
+               {
+                       Assert.Fail (msg);
+               }
+
+               static void AssertEquals (string msg, int expected, int actual)
+               {
+                       Assert.AreEqual (expected, actual, msg);
+               }
+
                // because most crypto stuff works with byte[] buffers
                static public void AssertEquals (string msg, byte[] array1, byte[] array2) 
                {
@@ -51,7 +61,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                                msg += " -> Expected " + BitConverter.ToString (array1, 0);
                                msg += " is different than " + BitConverter.ToString (array2, 0);
                        }
-                       Assert (msg, a);
+                       Assert.IsTrue (a, msg);
                }
 
                // MD2 ("") = 8350e5a3e24c153df2275c9f80692773
@@ -232,7 +242,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                {
                        // create the default implementation
                        HashAlgorithm h = MD2.Create ();
-                       Assert ("MD2Managed", (h is MD2Managed));
+                       Assert.IsTrue ((h is MD2Managed), "MD2Managed");
                        // Note: will fail is default is changed in machine.config
                }
        }
index ff0bcfb8056a5562390e81d644e223c03b443127..32de43caeb3e962e92643f5ad3ad1ebb47c0a7c5 100644 (file)
@@ -32,7 +32,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                {
                        // try creating ourselve using Create
                        HashAlgorithm h = MD4.Create ("MD4Managed");
-                       Assert ("MD4Managed", (h is MD4Managed));
+                       Assert.IsTrue ((h is MD4Managed), "MD4Managed");
                }
        }
-}
\ No newline at end of file
+}
index dd36e8fa412911d19cf3d67b5ff43b8fbb1b8a68..c14738f6d081936f18371c2c1840e1f575fae704 100644 (file)
@@ -24,19 +24,24 @@ namespace MonoTests.Mono.Security.Cryptography {
 
        // MD4 is a abstract class - so ALL of the test included here wont be tested
        // on the abstract class but should be tested in ALL its descendants.
-       public abstract class MD4Test : Assertion {
+       public abstract class MD4Test {
 
                protected MD4 hash;
 
+               static void AssertEquals (string msg, int expected, int actual)
+               {
+                       Assert.AreEqual (expected, actual, msg);
+               }
+
                // because most crypto stuff works with byte[] buffers
                static public void AssertEquals (string msg, byte[] array1, byte[] array2) 
                {
                        if ((array1 == null) && (array2 == null))
                                return;
                        if (array1 == null)
-                               Assertion.Fail (msg + " -> First array is NULL");
+                               Assert.Fail (msg + " -> First array is NULL");
                        if (array2 == null)
-                               Assertion.Fail (msg + " -> Second array is NULL");
+                               Assert.Fail (msg + " -> Second array is NULL");
 
                        bool a = (array1.Length == array2.Length);
                        if (a) {
@@ -51,7 +56,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                                msg += " -> Expected " + BitConverter.ToString (array1, 0);
                                msg += " is different than " + BitConverter.ToString (array2, 0);
                        }
-                       Assertion.Assert (msg, a);
+                       Assert.IsTrue (a, msg);
                }
 
                // MD4 ("") = 31d6cfe0d16ae931b73c59d7e0c089c0
@@ -232,7 +237,7 @@ namespace MonoTests.Mono.Security.Cryptography {
                {
                        // create the default implementation
                        HashAlgorithm h = MD4.Create ();
-                       Assert ("MD4Managed", (h is MD4Managed));
+                       Assert.IsTrue ((h is MD4Managed), "MD4Managed");
                        // Note: will fail is default is changed in machine.config
                }
        }
index caa8cf9b22fd4bd1023a8a16331173cf150cd18a..0b3a102a8e40db51a77ca28fc8e4afc30f8e5954 100644 (file)
@@ -225,5 +225,143 @@ namespace MonoTests.Mono.Security.X509 {
                        Assert.AreEqual (630663336000000000, cert.ValidFrom.Ticks, "ValidFrom");
                        Assert.AreEqual (633912839400000000, cert.ValidUntil.Ticks, "ValidUntil");
                }
+
+               byte[] sha256_data = {
+                       0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x42, 0x45, 0x47, 0x49, 0x4E, 0x20, 0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 
+                       0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A, 0x4D, 0x49, 0x49, 0x43, 0x78, 0x44, 0x43, 0x43, 0x41, 0x61, 0x79, 
+                       0x67, 0x41, 0x77, 0x49, 0x42, 0x41, 0x67, 0x49, 0x44, 0x41, 0x4B, 0x37, 0x6C, 0x4D, 0x41, 0x30, 0x47, 0x43, 0x53, 0x71, 
+                       0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x42, 0x43, 0x77, 0x55, 0x41, 0x4D, 0x43, 0x34, 0x78, 0x43, 0x7A, 0x41, 
+                       0x4A, 0x42, 0x67, 0x4E, 0x56, 0x42, 0x41, 0x59, 0x54, 0x41, 0x6B, 0x4E, 0x61, 0x0D, 0x0A, 0x4D, 0x51, 0x34, 0x77, 0x44, 
+                       0x41, 0x59, 0x44, 0x56, 0x51, 0x51, 0x4B, 0x45, 0x77, 0x56, 0x53, 0x5A, 0x57, 0x4A, 0x6C, 0x65, 0x44, 0x45, 0x50, 0x4D, 
+                       0x41, 0x30, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4D, 0x47, 0x56, 0x47, 0x56, 0x7A, 0x64, 0x45, 0x4E, 0x42, 0x4D, 
+                       0x42, 0x34, 0x58, 0x44, 0x54, 0x45, 0x7A, 0x4D, 0x44, 0x55, 0x78, 0x4F, 0x54, 0x45, 0x79, 0x4E, 0x44, 0x63, 0x31, 0x0D, 
+                       0x0A, 0x4E, 0x31, 0x6F, 0x58, 0x44, 0x54, 0x51, 0x35, 0x4D, 0x54, 0x49, 0x7A, 0x4D, 0x54, 0x41, 0x77, 0x4D, 0x44, 0x41, 
+                       0x77, 0x4D, 0x46, 0x6F, 0x77, 0x4F, 0x6A, 0x45, 0x57, 0x4D, 0x42, 0x51, 0x47, 0x41, 0x31, 0x55, 0x45, 0x41, 0x78, 0x4D, 
+                       0x4E, 0x55, 0x6D, 0x56, 0x69, 0x5A, 0x58, 0x67, 0x67, 0x55, 0x33, 0x56, 0x77, 0x63, 0x47, 0x39, 0x79, 0x64, 0x44, 0x45, 
+                       0x67, 0x4D, 0x42, 0x34, 0x47, 0x0D, 0x0A, 0x43, 0x53, 0x71, 0x47, 0x53, 0x49, 0x62, 0x33, 0x44, 0x51, 0x45, 0x4A, 0x41, 
+                       0x52, 0x59, 0x52, 0x63, 0x33, 0x56, 0x77, 0x63, 0x47, 0x39, 0x79, 0x64, 0x45, 0x42, 0x79, 0x5A, 0x57, 0x4A, 0x6C, 0x65, 
+                       0x43, 0x35, 0x75, 0x5A, 0x58, 0x51, 0x77, 0x67, 0x5A, 0x38, 0x77, 0x44, 0x51, 0x59, 0x4A, 0x4B, 0x6F, 0x5A, 0x49, 0x68, 
+                       0x76, 0x63, 0x4E, 0x41, 0x51, 0x45, 0x42, 0x42, 0x51, 0x41, 0x44, 0x0D, 0x0A, 0x67, 0x59, 0x30, 0x41, 0x4D, 0x49, 0x47, 
+                       0x4A, 0x41, 0x6F, 0x47, 0x42, 0x41, 0x4B, 0x7A, 0x36, 0x49, 0x37, 0x49, 0x59, 0x4E, 0x4A, 0x4C, 0x44, 0x43, 0x36, 0x42, 
+                       0x79, 0x44, 0x32, 0x75, 0x59, 0x36, 0x69, 0x55, 0x61, 0x34, 0x30, 0x54, 0x34, 0x37, 0x34, 0x44, 0x41, 0x65, 0x59, 0x55, 
+                       0x49, 0x31, 0x37, 0x43, 0x79, 0x39, 0x55, 0x6B, 0x77, 0x62, 0x4E, 0x4D, 0x2B, 0x6B, 0x39, 0x62, 0x57, 0x0D, 0x0A, 0x68, 
+                       0x75, 0x46, 0x62, 0x65, 0x63, 0x56, 0x42, 0x6D, 0x43, 0x37, 0x42, 0x79, 0x31, 0x6C, 0x48, 0x65, 0x2B, 0x79, 0x41, 0x59, 
+                       0x59, 0x78, 0x78, 0x74, 0x47, 0x50, 0x7A, 0x41, 0x48, 0x58, 0x50, 0x76, 0x68, 0x4A, 0x4D, 0x56, 0x50, 0x41, 0x2F, 0x37, 
+                       0x4C, 0x36, 0x41, 0x4B, 0x58, 0x6D, 0x6A, 0x71, 0x69, 0x77, 0x78, 0x7A, 0x47, 0x51, 0x79, 0x30, 0x73, 0x59, 0x67, 0x2F, 
+                       0x6A, 0x36, 0x79, 0x0D, 0x0A, 0x6F, 0x58, 0x39, 0x36, 0x39, 0x52, 0x53, 0x30, 0x49, 0x58, 0x33, 0x75, 0x33, 0x64, 0x31, 
+                       0x72, 0x35, 0x61, 0x6F, 0x44, 0x76, 0x36, 0x4A, 0x58, 0x53, 0x69, 0x53, 0x73, 0x75, 0x67, 0x78, 0x56, 0x47, 0x69, 0x65, 
+                       0x54, 0x53, 0x2F, 0x50, 0x71, 0x55, 0x6E, 0x6E, 0x76, 0x72, 0x49, 0x74, 0x59, 0x78, 0x6F, 0x64, 0x4F, 0x31, 0x58, 0x79, 
+                       0x76, 0x41, 0x67, 0x4D, 0x42, 0x41, 0x41, 0x47, 0x6A, 0x0D, 0x0A, 0x59, 0x7A, 0x42, 0x68, 0x4D, 0x41, 0x34, 0x47, 0x41, 
+                       0x31, 0x55, 0x64, 0x44, 0x77, 0x45, 0x42, 0x2F, 0x77, 0x51, 0x45, 0x41, 0x77, 0x49, 0x45, 0x38, 0x44, 0x41, 0x64, 0x42, 
+                       0x67, 0x4E, 0x56, 0x48, 0x51, 0x34, 0x45, 0x46, 0x67, 0x51, 0x55, 0x66, 0x75, 0x52, 0x51, 0x78, 0x4E, 0x75, 0x59, 0x71, 
+                       0x77, 0x73, 0x38, 0x56, 0x48, 0x7A, 0x4A, 0x6D, 0x4A, 0x50, 0x6F, 0x39, 0x41, 0x45, 0x6F, 0x0D, 0x0A, 0x6F, 0x50, 0x77, 
+                       0x77, 0x44, 0x77, 0x59, 0x44, 0x56, 0x52, 0x30, 0x6C, 0x42, 0x41, 0x67, 0x77, 0x42, 0x67, 0x59, 0x45, 0x56, 0x52, 0x30, 
+                       0x6C, 0x41, 0x44, 0x41, 0x66, 0x42, 0x67, 0x4E, 0x56, 0x48, 0x53, 0x4D, 0x45, 0x47, 0x44, 0x41, 0x57, 0x67, 0x42, 0x51, 
+                       0x39, 0x62, 0x39, 0x74, 0x4C, 0x54, 0x34, 0x4C, 0x78, 0x30, 0x78, 0x43, 0x76, 0x39, 0x48, 0x69, 0x7A, 0x74, 0x50, 0x59, 
+                       0x39, 0x0D, 0x0A, 0x4B, 0x79, 0x39, 0x71, 0x6C, 0x7A, 0x41, 0x4E, 0x42, 0x67, 0x6B, 0x71, 0x68, 0x6B, 0x69, 0x47, 0x39, 
+                       0x77, 0x30, 0x42, 0x41, 0x51, 0x73, 0x46, 0x41, 0x41, 0x4F, 0x43, 0x41, 0x51, 0x45, 0x41, 0x41, 0x59, 0x62, 0x69, 0x46, 
+                       0x41, 0x6D, 0x33, 0x6E, 0x71, 0x61, 0x6F, 0x4A, 0x51, 0x45, 0x41, 0x6D, 0x37, 0x7A, 0x34, 0x33, 0x71, 0x6E, 0x71, 0x41, 
+                       0x6B, 0x41, 0x6E, 0x35, 0x30, 0x76, 0x6F, 0x0D, 0x0A, 0x75, 0x4F, 0x39, 0x4E, 0x57, 0x61, 0x33, 0x53, 0x43, 0x45, 0x38, 
+                       0x78, 0x6B, 0x4C, 0x55, 0x2B, 0x31, 0x50, 0x62, 0x67, 0x76, 0x6F, 0x48, 0x4E, 0x50, 0x54, 0x6A, 0x36, 0x4D, 0x51, 0x30, 
+                       0x59, 0x37, 0x6F, 0x63, 0x2B, 0x6D, 0x42, 0x75, 0x55, 0x6B, 0x5A, 0x52, 0x63, 0x4B, 0x33, 0x51, 0x4C, 0x69, 0x58, 0x6C, 
+                       0x62, 0x34, 0x66, 0x6E, 0x7A, 0x39, 0x59, 0x55, 0x36, 0x66, 0x69, 0x7A, 0x4A, 0x0D, 0x0A, 0x79, 0x6A, 0x33, 0x76, 0x33, 
+                       0x42, 0x34, 0x6B, 0x4A, 0x33, 0x5A, 0x62, 0x42, 0x6D, 0x38, 0x48, 0x4E, 0x34, 0x78, 0x79, 0x44, 0x62, 0x66, 0x6E, 0x77, 
+                       0x6C, 0x67, 0x42, 0x55, 0x65, 0x6F, 0x68, 0x78, 0x61, 0x36, 0x2B, 0x50, 0x78, 0x67, 0x2F, 0x37, 0x72, 0x39, 0x34, 0x78, 
+                       0x54, 0x4A, 0x72, 0x35, 0x46, 0x30, 0x43, 0x68, 0x2F, 0x41, 0x68, 0x2F, 0x6D, 0x59, 0x37, 0x66, 0x4B, 0x6C, 0x50, 0x0D, 
+                       0x0A, 0x46, 0x46, 0x35, 0x47, 0x68, 0x4A, 0x2B, 0x62, 0x34, 0x76, 0x55, 0x6F, 0x36, 0x47, 0x74, 0x6E, 0x79, 0x6F, 0x4F, 
+                       0x33, 0x58, 0x57, 0x4C, 0x45, 0x34, 0x4D, 0x38, 0x4B, 0x67, 0x68, 0x6C, 0x39, 0x78, 0x48, 0x4E, 0x32, 0x52, 0x76, 0x57, 
+                       0x47, 0x45, 0x39, 0x4B, 0x6F, 0x31, 0x4B, 0x31, 0x55, 0x62, 0x42, 0x62, 0x53, 0x4A, 0x51, 0x4D, 0x76, 0x66, 0x65, 0x49, 
+                       0x65, 0x52, 0x38, 0x32, 0x71, 0x0D, 0x0A, 0x69, 0x66, 0x37, 0x49, 0x30, 0x56, 0x2B, 0x77, 0x59, 0x70, 0x57, 0x61, 0x4B, 
+                       0x79, 0x5A, 0x68, 0x33, 0x6C, 0x50, 0x4C, 0x34, 0x33, 0x67, 0x35, 0x4C, 0x4F, 0x42, 0x34, 0x75, 0x51, 0x6C, 0x68, 0x76, 
+                       0x76, 0x50, 0x4D, 0x5A, 0x63, 0x43, 0x48, 0x36, 0x4F, 0x37, 0x37, 0x37, 0x6E, 0x2F, 0x33, 0x4C, 0x2B, 0x54, 0x6C, 0x32, 
+                       0x2F, 0x41, 0x56, 0x31, 0x73, 0x7A, 0x73, 0x67, 0x53, 0x6B, 0x54, 0x0D, 0x0A, 0x47, 0x79, 0x74, 0x54, 0x75, 0x4B, 0x6A, 
+                       0x51, 0x35, 0x6E, 0x50, 0x53, 0x58, 0x76, 0x65, 0x44, 0x39, 0x76, 0x4B, 0x42, 0x50, 0x2F, 0x58, 0x4C, 0x73, 0x54, 0x4D, 
+                       0x75, 0x69, 0x6A, 0x48, 0x4C, 0x43, 0x68, 0x57, 0x55, 0x69, 0x33, 0x74, 0x4B, 0x7A, 0x49, 0x48, 0x6F, 0x66, 0x4B, 0x6F, 
+                       0x58, 0x62, 0x42, 0x43, 0x35, 0x37, 0x77, 0x3D, 0x3D, 0x0D, 0x0A, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x45, 0x4E, 0x44, 0x20, 
+                       0x43, 0x45, 0x52, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x45, 0x2D, 0x2D, 0x2D, 0x2D, 0x2D, 0x0D, 0x0A, };
+
+               [Test]
+               public void Sha256 ()
+               {
+                       X509Certificate c = new X509Certificate (sha256_data);
+                       Assert.AreEqual ("1.2.840.113549.1.1.11", c.SignatureAlgorithm, "SignatureAlgorithm");
+                       Assert.IsFalse (c.VerifySignature (c.RSA), "hash mapping");
+               }
+
+               byte[] sha512_data = {
+                       0x30, 0x82, 0x02, 0x13, 0x30, 0x82, 0x01, 0x9D, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xF8, 0x92, 0xDA, 0x88, 
+                       0xAF, 0x25, 0x83, 0xA3, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D, 0x05, 0x00, 0x30, 
+                       0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 
+                       0x55, 0x04, 0x08, 0x0C, 0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1F, 0x06, 
+                       0x03, 0x55, 0x04, 0x0A, 0x0C, 0x18, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 
+                       0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4C, 0x74, 0x64, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x33, 0x30, 0x35, 0x31, 0x37, 
+                       0x30, 0x37, 0x35, 0x30, 0x33, 0x34, 0x5A, 0x17, 0x0D, 0x34, 0x30, 0x31, 0x30, 0x30, 0x32, 0x30, 0x37, 0x35, 0x30, 0x33, 
+                       0x34, 0x5A, 0x30, 0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 
+                       0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x0C, 0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21, 
+                       0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x0C, 0x18, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x57, 0x69, 
+                       0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4C, 0x74, 0x64, 0x30, 0x7C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 
+                       0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x6B, 0x00, 0x30, 0x68, 0x02, 0x61, 0x00, 0xE2, 0xE0, 
+                       0x43, 0xDF, 0x6A, 0x4F, 0xB5, 0x30, 0xED, 0xE3, 0x70, 0xC4, 0xC3, 0xEE, 0x97, 0x3B, 0x6A, 0xF2, 0x37, 0xEF, 0xF8, 0x52, 
+                       0x7D, 0x38, 0xED, 0x08, 0x38, 0xA0, 0x35, 0x1B, 0x24, 0x45, 0xC4, 0x05, 0x37, 0x6B, 0xDD, 0xFA, 0x7F, 0x82, 0x73, 0x45, 
+                       0xB2, 0x2F, 0x0E, 0x13, 0x56, 0x37, 0xEC, 0x4F, 0x2A, 0x71, 0x1F, 0xA5, 0x3A, 0xD9, 0xEF, 0xB2, 0x1E, 0xD1, 0x65, 0xFB, 
+                       0xAF, 0xBE, 0x7F, 0xEE, 0xE5, 0x9F, 0x4D, 0x7F, 0x24, 0xE8, 0x09, 0xE8, 0x35, 0x44, 0x13, 0xEA, 0x91, 0xFB, 0x6D, 0x2E, 
+                       0xBE, 0x11, 0x77, 0xB0, 0x7D, 0xC3, 0x31, 0xC5, 0xE1, 0xF2, 0x03, 0xE9, 0x66, 0x65, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 
+                       0x50, 0x30, 0x4E, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x92, 0xEB, 0xAA, 0x6A, 0x08, 0xEC, 
+                       0x6A, 0x5B, 0xAF, 0x4F, 0xBF, 0x92, 0x27, 0x52, 0x52, 0x76, 0xF6, 0x60, 0x1F, 0x30, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 
+                       0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x92, 0xEB, 0xAA, 0x6A, 0x08, 0xEC, 0x6A, 0x5B, 0xAF, 0x4F, 0xBF, 0x92, 0x27, 
+                       0x52, 0x52, 0x76, 0xF6, 0x60, 0x1F, 0x30, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 
+                       0xFF, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0D, 0x05, 0x00, 0x03, 0x61, 0x00, 0x3A, 
+                       0x76, 0x0E, 0xF1, 0x00, 0x80, 0x72, 0x7E, 0x81, 0x32, 0xE5, 0xE2, 0xF9, 0xB8, 0xE1, 0xA5, 0xB4, 0x63, 0x11, 0x21, 0x24, 
+                       0x3B, 0xE7, 0xFF, 0x64, 0x41, 0x6E, 0xD3, 0xA3, 0x4B, 0xE2, 0xF8, 0xDB, 0xDA, 0xB8, 0x21, 0xB3, 0x28, 0xA0, 0xA9, 0xE2, 
+                       0xF8, 0x73, 0x51, 0x0D, 0xF7, 0x3A, 0xDF, 0x41, 0x2E, 0x27, 0x4A, 0xE5, 0x5F, 0xE3, 0xB8, 0x1E, 0x75, 0x57, 0xF1, 0x73, 
+                       0xE2, 0xF8, 0xE1, 0xAE, 0xD8, 0x33, 0x99, 0x71, 0x9E, 0xF0, 0x2C, 0xBF, 0x55, 0x90, 0x4E, 0xA1, 0x3F, 0x68, 0xAD, 0x75, 
+                       0x94, 0xCC, 0x45, 0x08, 0xB3, 0xDC, 0x96, 0x9D, 0x20, 0x97, 0x72, 0xB8, 0x7A, 0x9C, 0x5E, };
+
+               [Test]
+               public void Sha512 ()
+               {
+                       X509Certificate c = new X509Certificate (sha512_data);
+                       Assert.AreEqual ("1.2.840.113549.1.1.13", c.SignatureAlgorithm, "SignatureAlgorithm");
+                       Assert.IsTrue (c.VerifySignature (c.RSA), "hash mapping");
+                       Assert.IsTrue (c.IsSelfSigned, "IsSelfSigned");
+               }
+
+               byte[] ripemd160_data = {
+                       0x30, 0x82, 0x02, 0x0D, 0x30, 0x82, 0x01, 0x9A, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x09, 0x00, 0xA6, 0x2A, 0xB2, 0x97, 
+                       0x8A, 0xC3, 0x34, 0x87, 0x30, 0x0A, 0x06, 0x06, 0x2B, 0x24, 0x03, 0x03, 0x01, 0x02, 0x05, 0x00, 0x30, 0x45, 0x31, 0x0B, 
+                       0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 
+                       0x0C, 0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 
+                       0x0A, 0x0C, 0x18, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 0x74, 0x73, 0x20, 
+                       0x50, 0x74, 0x79, 0x20, 0x4C, 0x74, 0x64, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x33, 0x30, 0x35, 0x31, 0x37, 0x30, 0x37, 0x35, 
+                       0x31, 0x31, 0x38, 0x5A, 0x17, 0x0D, 0x34, 0x30, 0x31, 0x30, 0x30, 0x32, 0x30, 0x37, 0x35, 0x31, 0x31, 0x38, 0x5A, 0x30, 
+                       0x45, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 
+                       0x55, 0x04, 0x08, 0x0C, 0x0A, 0x53, 0x6F, 0x6D, 0x65, 0x2D, 0x53, 0x74, 0x61, 0x74, 0x65, 0x31, 0x21, 0x30, 0x1F, 0x06, 
+                       0x03, 0x55, 0x04, 0x0A, 0x0C, 0x18, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 0x74, 0x20, 0x57, 0x69, 0x64, 0x67, 0x69, 
+                       0x74, 0x73, 0x20, 0x50, 0x74, 0x79, 0x20, 0x4C, 0x74, 0x64, 0x30, 0x7C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 
+                       0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x6B, 0x00, 0x30, 0x68, 0x02, 0x61, 0x00, 0x94, 0x15, 0x1A, 0xE1, 0x30, 
+                       0xE7, 0x9E, 0x1E, 0x4B, 0x13, 0x82, 0x67, 0x67, 0xD5, 0x09, 0x64, 0xFC, 0x36, 0x07, 0xCE, 0x38, 0xAE, 0x02, 0xFA, 0xBC, 
+                       0x98, 0xEE, 0xCF, 0x08, 0xD5, 0x61, 0x33, 0x6A, 0xFF, 0x4E, 0x0E, 0x8A, 0xB9, 0xE6, 0x9B, 0x6F, 0xB8, 0xB0, 0x6B, 0xF0, 
+                       0x4D, 0x2F, 0xE7, 0x2A, 0x45, 0xA3, 0x47, 0xA1, 0xD5, 0x03, 0x2C, 0x6C, 0x00, 0x56, 0xD3, 0x1C, 0xEC, 0xD9, 0x99, 0xD8, 
+                       0x1B, 0xFF, 0x03, 0xF1, 0x74, 0xAC, 0xDA, 0x20, 0xD0, 0x71, 0x58, 0xD7, 0x27, 0xC0, 0x17, 0x99, 0x43, 0x09, 0xFD, 0x54, 
+                       0x03, 0x44, 0x4D, 0x51, 0x99, 0x09, 0x9A, 0xBB, 0x22, 0x53, 0x87, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x50, 0x30, 0x4E, 
+                       0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x21, 0x56, 0x19, 0x05, 0x70, 0xE8, 0x5A, 0xFC, 0xE3, 
+                       0xA1, 0xDD, 0x0D, 0x1C, 0x8B, 0x9C, 0xDF, 0x39, 0x33, 0xA2, 0x76, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 
+                       0x30, 0x16, 0x80, 0x14, 0x21, 0x56, 0x19, 0x05, 0x70, 0xE8, 0x5A, 0xFC, 0xE3, 0xA1, 0xDD, 0x0D, 0x1C, 0x8B, 0x9C, 0xDF, 
+                       0x39, 0x33, 0xA2, 0x76, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0A, 
+                       0x06, 0x06, 0x2B, 0x24, 0x03, 0x03, 0x01, 0x02, 0x05, 0x00, 0x03, 0x61, 0x00, 0x93, 0x45, 0x7E, 0xA6, 0xEB, 0x8D, 0xE0, 
+                       0x36, 0xF1, 0x0D, 0xC5, 0xC0, 0x61, 0xA3, 0xF6, 0x36, 0xDB, 0x71, 0xA8, 0x05, 0x8A, 0x8B, 0x12, 0xAD, 0xAC, 0xA5, 0x36, 
+                       0xE8, 0xBE, 0x18, 0xF1, 0x8D, 0x8E, 0x4C, 0x8C, 0x10, 0x47, 0xE8, 0xD2, 0x89, 0x2E, 0x8B, 0x43, 0xC2, 0xB3, 0x70, 0x5F, 
+                       0xBF, 0x0E, 0x69, 0x71, 0x5A, 0x86, 0x83, 0xC6, 0x34, 0x48, 0x1E, 0x10, 0x9B, 0xBD, 0xE8, 0x47, 0x66, 0xF6, 0x97, 0x4C, 
+                       0x07, 0x5D, 0x64, 0x1D, 0xE6, 0x8E, 0xA9, 0xB7, 0x10, 0xF4, 0xC1, 0xC9, 0xD4, 0x5C, 0x3B, 0xB6, 0x82, 0x92, 0x2D, 0xEF, 
+                       0xE7, 0x42, 0x3B, 0x09, 0xBF, 0x53, 0x89, 0xBD, 0x0B, };
+
+               [Test]
+               public void RipeMd160 ()
+               {
+                       X509Certificate c = new X509Certificate (ripemd160_data);
+                       Assert.AreEqual ("1.3.36.3.3.1.2", c.SignatureAlgorithm, "SignatureAlgorithm");
+                       Assert.IsTrue (c.VerifySignature (c.RSA), "hash mapping");
+                       Assert.IsTrue (c.IsSelfSigned, "IsSelfSigned");
+               }
        }
 }
index 31a4be6ce489838de95913ef5150c59285fe78ac..4546273d10ebbdad8801f06f16fea580ed403d64 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50B79A68-50A0-468A-9259-228F03B072D4}</ProjectGuid>\r
+    <ProjectGuid>{938FE3D0-38DE-43E8-8AD9-4D3F04368E16}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Simd-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index edeafc749c2122f6593f553bbb90ddf9e0ee7606..a924e8808002186a861e0b584adb699566a92dc0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{121299CA-0AD6-401A-A500-1577D486248F}</ProjectGuid>\r
+    <ProjectGuid>{5294B094-97BB-4749-89AB-68C871501032}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Simd-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index df28f44c024b376c670c2d86f02e2fe10600b28d..ca0616204db0e01ee9d3a040e926d4210842743e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E845A9A8-0491-4D18-B5B5-32DE93E21328}</ProjectGuid>\r
+    <ProjectGuid>{05D8BAFE-64FA-4F09-AC7B-86627DFF136F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Simd-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 343436e642dce1ff0d8c273261ce5147df099fb0..a68b1e186bdad5b915f86bad777079ab5b38c527 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B07864FC-B565-482A-909C-70031209BE39}</ProjectGuid>\r
+    <ProjectGuid>{F97AEB50-B4E8-4E42-A007-C5963689257D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Tasklets-net_2_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5b03340adfe9e7417bc2168f988eb6fb5943466b..e162f5ee0f09d7975da6bc180e831f85be408fad 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{861566D6-DDA2-440A-806F-1A860CAAE88D}</ProjectGuid>\r
+    <ProjectGuid>{C7FF3EC5-5F00-4464-BD63-437CD5483DDD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Tasklets-net_4_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2d19f6816283507a368da10695e9e00082cac07b..491b3a8a85e26756dbba8407a7f4a382d1b9075e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{203E023D-A06D-49EA-9316-612A16FA5C88}</ProjectGuid>\r
+    <ProjectGuid>{33307B59-24A6-4100-9E0C-F65613FE95AA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Tasklets-net_4_5</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2bfbdb749608dc8db70d812c5ecc11c7e4351ede..f6ffaaf6be48f7b55f2ede38e86900d431c6d404 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4E0AB773-6BB3-4866-881F-B362A573C8DD}</ProjectGuid>\r
+    <ProjectGuid>{D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Web-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0.csproj">\r
-      <Project>{F30781EC-D410-4A00-BD91-0971E37DE140}</Project>\r
+      <Project>{4796A339-E32F-476E-9D7D-69C771CD618C}</Project>\r
       <Name>System.Web\System.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 00831ca310e183aaaf560144105281218b5f76cb..96e5c4b3043e970db9b59d533628c2f57d1981d6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}</ProjectGuid>\r
+    <ProjectGuid>{AA8CFAB1-B81C-434E-AA60-C2373B27EB56}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Web-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0.csproj">\r
-      <Project>{39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}</Project>\r
+      <Project>{BAC369E3-E94E-4E5A-97FF-0CF696D07814}</Project>\r
       <Name>System.Web\System.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e87e0c41307d1fb7fd1c64b685f0b32e1cc15dc5..3b34c0656f52a1cf4779140b688c7fe5414146f3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ABD934FF-6F3A-40CB-85DB-98316F708226}</ProjectGuid>\r
+    <ProjectGuid>{82BD591A-1377-41BD-9B2C-1037574BB935}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.Web-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5.csproj">\r
-      <Project>{3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}</Project>\r
+      <Project>{0B03F192-EC11-49E5-A7F6-E97C0D559E51}</Project>\r
       <Name>System.Web\System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5ed2239e869cad5a80b554fb5cc6478f89f52621..49f2f359c0eb15b7d176ebf8fafa47971cba743d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B65F061B-3980-40B9-B832-4D220388B453}</ProjectGuid>\r
+    <ProjectGuid>{9ABD3BD7-C90F-4137-BC85-A3EEE10473BA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.WebBrowser-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 923add6131281d5e6bfb9f690389647105c74432..07d14e3ae9928981bb1e34b0fe9445b89bfc587f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{48C35A26-B26A-4084-9A9A-7729D345B3B5}</ProjectGuid>\r
+    <ProjectGuid>{A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.WebBrowser-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f3824c60d041aff789da948fb98c0fd5c9308e32..9fdafe9e6062632a5006c635066a644bb29af998 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4F8F4004-E655-463C-8A0F-4F7C99AB85B5}</ProjectGuid>\r
+    <ProjectGuid>{7D94F9AC-9F7A-4639-9E89-85083D77101D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Mono.WebBrowser-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf7f29f44a3f4d27909afbe3288441705bab39dc..2c390895e7da0163b1208891537d73327897bc03 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{05944BB8-A3C6-43A6-AD2B-155E8DB855FA}</ProjectGuid>\r
+    <ProjectGuid>{A397D71E-CB6B-4442-91BC-4F1C801584C1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Moonlight.Build.Tasks-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0.csproj">\r
-      <Project>{13F89BAD-94E5-46B5-B8E1-0F1EDB272352}</Project>\r
+      <Project>{E8E948B8-6DCF-48F2-A6BC-04309AED8740}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0.csproj">\r
-      <Project>{BFA79A16-152D-42DA-98E3-D494F9C4CC3E}</Project>\r
+      <Project>{AB5EDD8C-84A4-4F96-80EE-1B6F3A86785B}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0.csproj">\r
-      <Project>{A77A0E38-0000-4E4D-BEA6-704BC3677151}</Project>\r
+      <Project>{4AC4EDEE-4895-4CF9-84DF-9419E6980F38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_2_0.csproj">\r
-      <Project>{CF0D30D5-B824-4D4E-B1B2-173524B53942}</Project>\r
+      <Project>{3DD52713-DB38-4D0D-8692-650B8821B047}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_2_0.csproj">\r
-      <Project>{A1B1ACC9-95F7-4752-A2A6-CF0214F886BB}</Project>\r
+      <Project>{065A843F-C16B-4F2E-9560-69440147EDB2}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c81f26360355dd6878da75f57bbca34f5fd9830f..7469cf39158df63d2f9ea85450dde74ecb25e2dc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6EDA6CED-12A9-4A15-8B03-FF1ABB38B9A1}</ProjectGuid>\r
+    <ProjectGuid>{8B495C4E-D5D2-4642-9481-F761DDD47ABD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Moonlight.Build.Tasks-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0.csproj">\r
-      <Project>{4A0D8AB4-6A16-484D-9133-D14368A2E39A}</Project>\r
+      <Project>{9B0AC297-CB85-43C1-8C18-12997CF1B78D}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0.csproj">\r
-      <Project>{5EECBD6F-6D04-4194-A127-CE1A0683F978}</Project>\r
+      <Project>{1D4BCF4D-31D1-4F92-A2B2-D9E41A640649}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0.csproj">\r
-      <Project>{38B0128C-C232-4274-BDD0-F90ED189A80F}</Project>\r
+      <Project>{A20F004B-16AC-44DE-A14E-2C2B5E9F72BE}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_0.csproj">\r
-      <Project>{4E865E96-F3C9-4218-8FE7-AC0F9D1E7453}</Project>\r
+      <Project>{0F2C25D7-DF2E-4F4B-85D8-7EFC4DCD3B0C}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0.csproj">\r
-      <Project>{D769AAF9-10ED-4C32-8D87-8D0648E2D001}</Project>\r
+      <Project>{2DE2CFB0-3166-41D9-B0B5-EFBE309DD7B7}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7a565e52bc5c379a3667d0a957221492ffb4ca95..66141f048f6176e187ac2fb638a92025066bbf77 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{29C03463-6071-4FB2-83D2-B5497B35E090}</ProjectGuid>\r
+    <ProjectGuid>{C1BA77F3-938B-4598-BD75-5E9578827F47}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Moonlight.Build.Tasks-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj">\r
-      <Project>{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}</Project>\r
+      <Project>{0DA63190-E6E1-41C5-B683-A54FADBE61CB}</Project>\r
       <Name>Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj">\r
-      <Project>{58CD6625-5643-4A3F-84E6-5568E8573A49}</Project>\r
+      <Project>{2BAFB878-D329-46A5-93AF-5A4ECD403A13}</Project>\r
       <Name>Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj">\r
-      <Project>{B20027FF-D5D8-4AD3-8F5F-535556916D36}</Project>\r
+      <Project>{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}</Project>\r
       <Name>Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5.csproj">\r
-      <Project>{09B16AF2-4480-4F66-995B-6FEFD9C67546}</Project>\r
+      <Project>{B0995E00-BF37-4B8A-8229-285C060E5957}</Project>\r
       <Name>Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5.csproj">\r
-      <Project>{C41C7048-6B86-43DB-9F5E-BED7A92CD56E}</Project>\r
+      <Project>{039AD56A-E91B-4803-8328-287F70B61D14}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 48e8c452273a3d830bdcfb3681e262951e2a9748..fba6fd125259544c122d40ec4b82fa498f8ca062 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EE7F7F21-5B86-4D33-A935-858260FD774D}</ProjectGuid>\r
+    <ProjectGuid>{FCCE71BD-4C5C-4616-8B3E-ED306528BE16}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7a40ea3cbb8a4b3f02a9a77eaaff7adf5b65ecb6..888a367dd02d2b15e38abd045ffec958b476a5ca 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{07D6E719-7A7E-4CA2-9F0B-CADF9A190FE4}</ProjectGuid>\r
+    <ProjectGuid>{7738B238-7C12-401A-8CCF-D44B4BD8ABDE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9dfb7747d8cd331761199a25569731508c350cf0..a33999798c6079f65bba87a4cfb81ba64154e927 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{74565932-18F5-4BEC-AAB6-98230A4B662C}</ProjectGuid>\r
+    <ProjectGuid>{BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1d7d8b2bb1b73f14edb1dfadff0764da41703bb3..bad9affb1ae8ac3a0497cb425b388a2daae81030 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1698631C-4038-416B-8402-F149E4CA8390}</ProjectGuid>\r
+    <ProjectGuid>{21A45B26-5A14-478D-B412-90985F127F78}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0.csproj">\r
-      <Project>{EE7F7F21-5B86-4D33-A935-858260FD774D}</Project>\r
+      <Project>{FCCE71BD-4C5C-4616-8B3E-ED306528BE16}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5fb3fdf9267532ab511800936e34d49c2e5de165..3e558913d1fdc36e9340f3f3b847f49a4fe14a7f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{56E820BC-C87E-4215-910F-3A96EEF1D2CF}</ProjectGuid>\r
+    <ProjectGuid>{EFB8D7EE-3CB6-4361-8A75-B2AD70A2995D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0.csproj">\r
-      <Project>{07D6E719-7A7E-4CA2-9F0B-CADF9A190FE4}</Project>\r
+      <Project>{7738B238-7C12-401A-8CCF-D44B4BD8ABDE}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e3adbaf92273f475a695b25de123d7135470cd7..05fdcc21156aaa7644e58aa0a10e6689e754c554 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}</ProjectGuid>\r
+    <ProjectGuid>{91FFC577-CF58-43EB-BD06-D0233F588A5B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Novell.Directory.Ldap-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj">\r
-      <Project>{74565932-18F5-4BEC-AAB6-98230A4B662C}</Project>\r
+      <Project>{BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6ea7a1315e2f29d6032f6a1311e7b1001a34573d..3612db718e26953d7368f954841c7f16ff2b47bf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EA478331-ECA5-450D-9D53-DCBE3B722037}</ProjectGuid>\r
+    <ProjectGuid>{6C1E3010-EECC-4740-81A4-A1650E170D4D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9f1638190e765d70aefc8f9c3c7ca0f13ede5a3f..45c66e9d1753b07d4a5a38d3ae4df7a5ee002c9c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F448F610-13BF-41D7-978D-FF123FFBC396}</ProjectGuid>\r
+    <ProjectGuid>{ED67E9C3-42DD-4A7E-A789-D384B5E85E76}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0c28dea17199f5cc80421e9a40378758dc7f1921..7d5bd41fd09765acf85a560811d6da9b757a6c25 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3404EE44-7E95-4619-93B8-C7B82ADEB8F5}</ProjectGuid>\r
+    <ProjectGuid>{0E57DA52-274B-4E8D-A60D-3B87910B70E0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b459db2d3db89ed2366714d42d4cf8a027ef9835..11c50c63c993b803d972763146929f039cdf9270 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57208C94-2020-477C-BA78-517FC3E74DB9}</ProjectGuid>\r
+    <ProjectGuid>{AD9FA00D-142B-4398-B36A-7FD09582E88D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Npgsql\Npgsql-net_2_0.csproj">\r
-      <Project>{EA478331-ECA5-450D-9D53-DCBE3B722037}</Project>\r
+      <Project>{6C1E3010-EECC-4740-81A4-A1650E170D4D}</Project>\r
       <Name>Npgsql\Npgsql-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 95dad20149438329be75f9be4c9b21fe2bdb4a24..bed7c60d7979387c733c13127968d4073255da85 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EA465ACB-8023-4A2C-9349-CCD0DEEBC716}</ProjectGuid>\r
+    <ProjectGuid>{9E733C54-4CEA-4CC5-8EAE-76267380AEE4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Npgsql\Npgsql-net_4_0.csproj">\r
-      <Project>{F448F610-13BF-41D7-978D-FF123FFBC396}</Project>\r
+      <Project>{ED67E9C3-42DD-4A7E-A789-D384B5E85E76}</Project>\r
       <Name>Npgsql\Npgsql-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 36887bfa9587ab183ac5e15c73cb2e63022f83e8..b5aae8cd76a6a8433bbbc972e815a58759da5b8a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{76A8C207-5DFF-435F-9F47-9C6E201AF8F4}</ProjectGuid>\r
+    <ProjectGuid>{993AE1D3-7F06-482F-A90A-A06FD59B3FF5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\Npgsql-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Npgsql\Npgsql-net_4_5.csproj">\r
-      <Project>{3404EE44-7E95-4619-93B8-C7B82ADEB8F5}</Project>\r
+      <Project>{0E57DA52-274B-4E8D-A60D-3B87910B70E0}</Project>\r
       <Name>Npgsql\Npgsql-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4e04a2fac8d94a56ba8991118162b6ddbe6624f8..670ffffa9cdffe819a3f97d9fa1665ee9ab6428a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{578CCA29-53D7-41DA-B8FA-742E0C16DE93}</ProjectGuid>\r
+    <ProjectGuid>{BAFF3523-AB42-4BE7-899F-D570297835C1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\OpenSystem.C-net_2_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c6642430a1fa4e5a5f5cbf9c6bfaf28415b86b25..2e69ae4ddefc27dba118c82cf0c3294307909047 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D2C7674E-7904-469A-B8E8-12C67C492DB5}</ProjectGuid>\r
+    <ProjectGuid>{79583C8A-BE9B-49A4-9EDC-99DB2E11DE03}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\OpenSystem.C-net_4_0</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 99baa688a9ca69a63f30e1f65b602c82afa6ce86..a93ae0dbaf893fded4ddc57e3fd0138d8ce7a8fc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}</ProjectGuid>\r
+    <ProjectGuid>{2E94B160-349C-4138-8922-208B3B8175F2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\OpenSystem.C-net_4_5</OutputPath>\r
@@ -65,7 +65,7 @@
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 73fa11ec0a71b681a92257067616963266140b61..e86566ed5662eb49ad622b8a8bc0c040e863ee19 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2EFCEF5E-31D9-4682-93A4-3120381F78C3}</ProjectGuid>\r
+    <ProjectGuid>{55B6390F-2EFA-4701-8DDA-AC6E998B3EFC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,618</NoWarn>\r
     <OutputPath>bin\Debug\PEAPI-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9725472f00257442e1dc9b66be3ce1a6ce19cd4e..fde995b507cd46742fedc19f0a83da48e8b29b25 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FF42F209-B66E-488A-A9B1-9E77AA6D74D8}</ProjectGuid>\r
+    <ProjectGuid>{88B9D6C2-5A74-49A2-A984-EC1A97802B5A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,618</NoWarn>\r
     <OutputPath>bin\Debug\PEAPI-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5daf1575434f3e29539cc0f21828bab8dec69a84..52fad8c30f285db692740f6375797873e6ad97c4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{67C79BA1-2CF2-40B7-B362-1DCAF156AA25}</ProjectGuid>\r
+    <ProjectGuid>{465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,618</NoWarn>\r
     <OutputPath>bin\Debug\PEAPI-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 20d144246d5209562f47ee4d4404fbecc008fb95..51138e60f56fd8ed20df1274e0a4f97ff6b5536a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{85F98B4E-9323-4D5C-A65F-5B30EA4E7424}</ProjectGuid>\r
+    <ProjectGuid>{8AD2E2D6-9C65-4DE7-AD7A-6AAA07754C9C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\RabbitMQ.Client-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a5d0672cfc12140f5ec44d70ccd69a62959a362a..272641fb9151fa924f6709c0334a64d74abefd56 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3FB3AB58-B04E-452B-A0D9-EC8FBBEF2031}</ProjectGuid>\r
+    <ProjectGuid>{2820B526-5B96-4ABE-AF3D-E8651046A46C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\RabbitMQ.Client-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1bc024cfe1ac81ec25a7ea8ae761fd187b549618..d8391c80391a6829d6079cd87fa51c423118c01a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E4F02B09-E5BF-4DF9-9D55-58396821B80D}</ProjectGuid>\r
+    <ProjectGuid>{8BA87CBE-8098-4512-B008-A347E1EA281C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\RabbitMQ.Client-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 947cdc7973dd197d34c47d5dc8814977c2fdf524..6c5d3683ba48a5bff957bec5a83978ef0de8fe4a 100644 (file)
@@ -12,7 +12,7 @@ CLEAN_FILES += $(STRING_MESSAGES)
 EXTRA_DISTFILES = \
        src/ComponentModel/Strings.resx
        
-VALID_PROFILE := $(filter net_4_0 net_4_5 monotouch monodroid, $(PROFILE))
+VALID_PROFILE := $(filter net_4_0 net_4_5 monotouch monodroid mobile_static, $(PROFILE))
 ifndef VALID_PROFILE
 LIBRARY_NAME = dummy-System.ComponentModel.Composition.dll
 NO_INSTALL = yes
index 455b7ce27fe2a73d32f17f7ff56bbb4e56dac9d1..c7451bf98fcbc8db42583189263512695e929690 100644 (file)
@@ -1,3 +1,4 @@
+#if !FULL_AOT_RUNTIME
 // -----------------------------------------------------------------------
 // Copyright (c) Microsoft Corporation.  All rights reserved.
 // -----------------------------------------------------------------------
@@ -331,3 +332,4 @@ namespace Microsoft.Internal
         }
     }
 }
+#endif
index b9f2c41fef0d9819310557bd1eaf6e816e437027..28c8a94840bfaf9186d44d132c66d289836290d7 100644 (file)
@@ -1,4 +1,5 @@
-// -----------------------------------------------------------------------
+#if !FULL_AOT_RUNTIME
+// -----------------------------------------------------------------------
 // Copyright (c) Microsoft Corporation.  All rights reserved.
 // -----------------------------------------------------------------------
 using System;
@@ -379,3 +380,4 @@ namespace System.ComponentModel.Composition
 
     }
 }
+#endif
index 6c660fcf658a2abc0ea5efbec9f5b8b8caef9570..e1e7dd5692ec3f302cb6db9de9e73332f1c42e8c 100644 (file)
@@ -32,6 +32,7 @@ namespace System.ComponentModel.Composition
                 {
                     if(!metadataViewType.IsAttributeDefined<MetadataViewImplementationAttribute>())
                     {
+#if !FULL_AOT_RUNTIME
                         try
                         {
                             proxyType = MetadataViewGenerator.GenerateView(metadataViewType);
@@ -40,6 +41,9 @@ namespace System.ComponentModel.Composition
                         {
                             throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, Strings.NotSupportedInterfaceMetadataView, metadataViewType.FullName), ex);
                         }
+#else
+                       throw new NotSupportedException(string.Format(CultureInfo.CurrentCulture, Strings.NotSupportedInterfaceMetadataView, metadataViewType.FullName));
+#endif
                     }
                     else
                     {
@@ -83,6 +87,7 @@ namespace System.ComponentModel.Composition
                 }
                 catch (TargetInvocationException ex)
                 {
+#if !FULL_AOT_RUNTIME
                     //Unwrap known failures that we want to present as CompositionContractMismatchException
                     if(metadataViewType.IsInterface)
                     {
@@ -107,6 +112,7 @@ namespace System.ComponentModel.Composition
                                 ex.InnerException.Data[MetadataViewGenerator.MetadataItemTargetType]), ex);
                         }
                     }
+#endif
                     throw;
                 }
             }
index 18d81e994bbbafcb3f72deef2e983b23de5b9035..799406c57d7588ba92e7d1ab05e51c7509aeb92c 100644 (file)
@@ -42,7 +42,7 @@ namespace System.ComponentModel.Composition.Primitives
 
         private Type CreateStandardDelegateType()
         {
-#if MONOTOUCH
+#if FULL_AOT_RUNTIME
             throw new NotImplementedException ();
 #else
             ParameterInfo[] parameters = this._method.GetParameters();
index bbca52c8e5089df68a91e2fb3efbe60aef7ce86c..e40202c5d0e1bb5495d9d0303453b1006b5f5c3d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FFA6DC64-24C2-4D34-AAEC-BB03CB8A83C7}</ProjectGuid>\r
+    <ProjectGuid>{FD3CE1C9-E645-48F4-9815-A6359813AF4D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.Composition-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf41871cd75b7485a51821a3fe50dc9f08289f42..db0e052aa6016aeb730318a178867c788268c659 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F0F5AB89-1FCB-400C-B20F-90063C272C28}</ProjectGuid>\r
+    <ProjectGuid>{5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.Composition-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f0f90784e4237aa6f124e821356c9e2de89cdcff..9564b81d88b0fcf436e732a151e8deb00ac5aa09 100644 (file)
@@ -18,7 +18,7 @@ endif
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
 # This is a .NET 3.5+ assembly
-VALID_PROFILE := $(filter net_2_0 net_4_0 net_4_5 monotouch monodroid, $(PROFILE))
+VALID_PROFILE := $(filter net_2_0 net_4_0 net_4_5 monotouch monodroid mobile_static, $(PROFILE))
 ifndef VALID_PROFILE
 LIBRARY_NAME = dummy-System.ComponentModel.DataAnnotations.dll
 NO_INSTALL = yes
index 596e8355590b9fdcc34f06d749f0290dd4e9bc1a..3461026556269a30ae8e2ee151ace7862c0c0e69 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B38D3949-9075-4450-8101-0D26C6B2CC4D}</ProjectGuid>\r
+    <ProjectGuid>{E3E1BF16-7D12-4CCD-85D0-B542F0AC3442}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2c78193aaffbe453e640a23f7a78cedd6f22156b..678cf20f61ae325d2612c5cdba935f26bd87964b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{420D9BE2-8DD3-41E6-A115-6BFFA4B6EB04}</ProjectGuid>\r
+    <ProjectGuid>{F74623F8-5517-4015-8F3A-EB04E926E720}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 797c459447a0d2dcc9321648df47a53f33c213c0..7de19580bffb590cd55c995fc6c0040073792108 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</ProjectGuid>\r
+    <ProjectGuid>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f1bc591ac792d34505879603fb00d2eccb44c407..eaa5eedb8d6e4deae3d5e8b7dae9a4e1e7fef4c6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{90B3DE06-F8A2-44B7-8002-6065EBCEBB97}</ProjectGuid>\r
+    <ProjectGuid>{5B1EC18D-F239-4DEC-BD42-AD48356A1295}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0.csproj">\r
-      <Project>{B38D3949-9075-4450-8101-0D26C6B2CC4D}</Project>\r
+      <Project>{E3E1BF16-7D12-4CCD-85D0-B542F0AC3442}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index df85ee290de61de6759567671a16334395d0fff3..079dd97d85e5dadc19e2cffad40e09b5545b5ffa 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1EB186E5-DB86-458D-A10F-B54D346DDBAA}</ProjectGuid>\r
+    <ProjectGuid>{DB317627-CFF4-42AE-BDF7-769986DE9AC8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0.csproj">\r
-      <Project>{420D9BE2-8DD3-41E6-A115-6BFFA4B6EB04}</Project>\r
+      <Project>{F74623F8-5517-4015-8F3A-EB04E926E720}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 57599784e52727922c409d3e69f1f25357d52d8e..d4f9d3777b7f43ae82c2f6e29123a39167e82b25 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DB1D4B02-5F4D-4383-905E-82205D8F1D76}</ProjectGuid>\r
+    <ProjectGuid>{8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ComponentModel.DataAnnotations-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/CompareAttribute.cs b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/CompareAttribute.cs
new file mode 100644 (file)
index 0000000..afec3c9
--- /dev/null
@@ -0,0 +1,118 @@
+//
+// CompareAttribute.cs
+//
+// Authors:
+//     Pablo Ruiz García <pablo.ruiz@gmail.com>
+//
+// Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com)
+// Copyright (C) 2013 Pablo Ruiz García
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_5
+
+using System;
+using System.Linq;
+using System.Globalization;
+using System.ComponentModel;
+using System.Collections.Generic;
+
+namespace System.ComponentModel.DataAnnotations
+{
+       [AttributeUsageAttribute (AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
+       public class CompareAttribute : ValidationAttribute
+       {
+               private const string DefaultErrorMessage = "'{0}' and '{1}' do not match.";
+               private const string NonExistingPropertyErrorMessage = "Could not find a property named {0}.";
+               private string _otherProperty;
+               private string _otherPropertyDisplayName;
+
+               public CompareAttribute (string otherProperty)
+                       : base (() => DefaultErrorMessage)
+               {
+                       if (string.IsNullOrEmpty (otherProperty))
+                               throw new ArgumentNullException ("otherProperty");
+
+                       _otherProperty = otherProperty;
+               }
+
+               public string OtherProperty { get { return _otherProperty; } }
+               public string OtherPropertyDisplayName { get { return _otherPropertyDisplayName; } }
+               public override bool RequiresValidationContext { get { return true; } }
+
+               private IEnumerable<Attribute> GetPropertyAttributes (Type type, string propertyName)
+               {
+#if MOBILE
+                       return TypeDescriptor.GetProperties (type).Find (propertyName, false).Attributes.OfType<Attribute> ();
+#else
+                       // Using AMTTDP seems the way to go to be able to relay on attributes declared
+                       // by means of associated classes not directly decorating the property.
+                       // See: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.associatedmetadatatypetypedescriptionprovider.aspx
+                       return new AssociatedMetadataTypeTypeDescriptionProvider (type)
+                               .GetTypeDescriptor (type)
+                               .GetProperties ()
+                               .Find (propertyName, false)
+                               .Attributes.OfType<Attribute> ();
+#endif
+               }
+
+               private void ResolveOtherPropertyDisplayName (ValidationContext context)
+               {
+                       if (_otherPropertyDisplayName == null)
+                       {
+                               // NOTE: From my own tests, it seems MS.NET looksup displayName from various sources, what follows
+                               //       is a best guess from my on tests, however, I am probably missing some corner cases. (pruiz)
+                               var attributes = GetPropertyAttributes (context.ObjectType, _otherProperty);
+                               var displayAttr = attributes.FirstOrDefault (x => x is DisplayAttribute) as DisplayAttribute;
+                               var displayNameAttr = attributes.FirstOrDefault (x => x is DisplayNameAttribute) as DisplayNameAttribute;
+
+                               if (displayAttr != null) _otherPropertyDisplayName = displayAttr.GetName ();
+                               else if (displayNameAttr != null) _otherPropertyDisplayName = displayNameAttr.DisplayName;
+                               _otherPropertyDisplayName = _otherProperty;
+                       }
+               }
+
+               public override string FormatErrorMessage (string name)
+               {
+                       var oname = string.IsNullOrEmpty (_otherPropertyDisplayName) ? _otherProperty : _otherPropertyDisplayName;
+                       return string.Format (ErrorMessageString, name, oname);
+               }
+
+               protected override ValidationResult IsValid(object value, ValidationContext context)
+               {
+                       var property = context.ObjectType.GetProperty (_otherProperty);
+
+                       if (property == null) {
+                               string message = string.Format (NonExistingPropertyErrorMessage, _otherProperty);
+                               return new ValidationResult (message);
+                       }
+
+                       // XXX: Could not find a better place to call this, as this is 
+                       //      the only place we have access to a ValidationContext. (pruiz)
+                       ResolveOtherPropertyDisplayName (context);
+
+                       return object.Equals (property.GetValue (context.ObjectInstance, null), value) ? null
+                               : new ValidationResult (FormatErrorMessage (context.DisplayName));
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/CreditCardAttribute.cs b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/CreditCardAttribute.cs
new file mode 100644 (file)
index 0000000..66fdc90
--- /dev/null
@@ -0,0 +1,75 @@
+//
+// CreditCardAttribute.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
+//
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
+// Copyright (C) 2013 Pablo Ruiz García
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_5
+
+using System;
+using System.Linq;
+using System.Globalization;
+
+namespace System.ComponentModel.DataAnnotations
+{
+       [AttributeUsageAttribute (AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
+       public class CreditCardAttribute : DataTypeAttribute
+       {
+               private const string DefaultErrorMessage = "The {0} field is not a valid credit card number.";
+
+               public CreditCardAttribute ()
+                       : base(DataType.CreditCard)
+               {
+                       // XXX: There is no .ctor accepting Func<string> on DataTypeAttribute.. :?
+                       base.ErrorMessage = DefaultErrorMessage;
+               }
+
+               public override bool IsValid(object value)
+               {
+                       if (value == null)
+                               return true;
+
+                       if (string.IsNullOrEmpty(value as string))
+                               return false;
+
+                       // Remove any invalid characters..
+                       var creditCardNumber = (value as string).Replace("-", "").Replace(" ", "");
+
+                       if (creditCardNumber.Any (x => !Char.IsDigit (x)))
+                               return false;
+
+                       // Performan a Luhn-based check against credit card number.
+                       //
+                       // See: http://en.wikipedia.org/wiki/Luhn_algorithm
+                       // See: http://rosettacode.org/wiki/Luhn_test_of_credit_card_numbers
+
+                       return true;    
+               }
+       }
+}
+
+#endif
index 2385e15a2c36e56bfe252d80f9ded24ab4671e1b..5ad56e7498453b1cacefd5ed814db1c62c2a98a8 100644 (file)
@@ -46,7 +46,12 @@ namespace System.ComponentModel.DataAnnotations
                Password,
                Url,
 #if NET_4_0
-               ImageUrl
+               ImageUrl,
+#endif
+#if NET_4_5
+               CreditCard,
+               PostalCode,
+               Upload
 #endif
        }
 }
index 14c5aa5482aa498c920c6bb1330c4702728c6b8b..3a373db85459df28efbc266b53803f3eb2b17b3c 100644 (file)
@@ -3,10 +3,10 @@
 //
 // Author:
 //     Atsushi Enomoto <atsushi@ximian.com>
+//     Pablo Ruiz García <pablo.ruiz@gmail.com>
 //
 // Copyright (C) 2008 Novell Inc. http://novell.com
-//
-
+// Copyright (C) 2013 Pablo Ruiz García
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -50,6 +50,27 @@ namespace System.ComponentModel.DataAnnotations
                                        displayFormat.ApplyFormatInEditMode = true;
                                        displayFormat.ConvertEmptyStringToNull = true;
                                        displayFormat.DataFormatString = "{0:t}";
+#if NET_4_0
+                                       displayFormat.HtmlEncode = true;
+#endif
+                                       break;
+                               case DataType.Date:
+                                       displayFormat = new DisplayFormatAttribute ();
+                                       displayFormat.ApplyFormatInEditMode = true;
+                                       displayFormat.ConvertEmptyStringToNull = true;
+                                       displayFormat.DataFormatString = "{0:d}";
+#if NET_4_0
+                                       displayFormat.HtmlEncode = true;
+#endif
+                                       break;
+                               case DataType.Currency:
+                                       displayFormat = new DisplayFormatAttribute ();
+                                       displayFormat.ApplyFormatInEditMode = false;
+                                       displayFormat.ConvertEmptyStringToNull = true;
+                                       displayFormat.DataFormatString = "{0:C}";
+#if NET_4_0
+                                       displayFormat.HtmlEncode = true;
+#endif
                                        break;
 
                                default:
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/EmailAddressAttribute.cs b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/EmailAddressAttribute.cs
new file mode 100644 (file)
index 0000000..5d79b92
--- /dev/null
@@ -0,0 +1,313 @@
+//
+// EmailAddressAttribute.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
+//
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
+// Copyright (C) 2013 Pablo Ruiz García
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_5
+
+using System;
+using System.Globalization;
+using System.Text.RegularExpressions;
+
+namespace System.ComponentModel.DataAnnotations
+{
+       [AttributeUsageAttribute (AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
+       public class EmailAddressAttribute : DataTypeAttribute
+       {
+               private const string DefaultErrorMessage = "The {0} field is not a valid e-mail address.";
+               const string AtomCharacters = "!#$%&'*+-/=?^_`{|}~";
+
+               static bool IsLetterOrDigit (char c)
+               {
+                       return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9');
+               }
+
+               static bool IsAtom (char c)
+               {
+                       return IsLetterOrDigit (c) || AtomCharacters.IndexOf (c) != -1;
+               }
+
+               static bool IsDomain (char c)
+               {
+                       return IsLetterOrDigit (c) || c == '-';
+               }
+
+               static bool SkipAtom (string text, ref int index)
+               {
+                       int startIndex = index;
+
+                       while (index < text.Length && IsAtom (text[index]))
+                               index++;
+
+                       return index > startIndex;
+               }
+
+               static bool SkipSubDomain (string text, ref int index)
+               {
+                       if (!IsDomain (text[index]) || text[index] == '-')
+                               return false;
+
+                       index++;
+
+                       while (index < text.Length && IsDomain (text[index]))
+                               index++;
+
+                       return true;
+               }
+
+               static bool SkipDomain (string text, ref int index)
+               {
+                       if (!SkipSubDomain (text, ref index))
+                               return false;
+
+                       while (index < text.Length && text[index] == '.') {
+                               index++;
+
+                               if (index == text.Length)
+                                       return false;
+
+                               if (!SkipSubDomain (text, ref index))
+                                       return false;
+                       }
+
+                       return true;
+               }
+
+               static bool SkipQuoted (string text, ref int index)
+               {
+                       bool escaped = false;
+
+                       // skip over leading '"'
+                       index++;
+
+                       while (index < text.Length) {
+                               if (text[index] == (byte) '\\') {
+                                       escaped = !escaped;
+                               } else if (!escaped) {
+                                       if (text[index] == (byte) '"')
+                                               break;
+                               } else {
+                                       escaped = false;
+                               }
+
+                               index++;
+                       }
+
+                       if (index >= text.Length || text[index] != (byte) '"')
+                               return false;
+
+                       index++;
+
+                       return true;
+               }
+
+               static bool SkipWord (string text, ref int index)
+               {
+                       if (text[index] == (byte) '"')
+                               return SkipQuoted (text, ref index);
+
+                       return SkipAtom (text, ref index);
+               }
+
+               static bool SkipIPv4Literal (string text, ref int index)
+               {
+                       int groups = 0;
+
+                       while (index < text.Length && groups < 4) {
+                               int startIndex = index;
+                               int value = 0;
+
+                               while (index < text.Length && text[index] >= '0' && text[index] <= '9') {
+                                       value = (value * 10) + (text[index] - '0');
+                                       index++;
+                               }
+
+                               if (index == startIndex || index - startIndex > 3 || value > 255)
+                                       return false;
+
+                               groups++;
+
+                               if (groups < 4 && index < text.Length && text[index] == '.')
+                                       index++;
+                       }
+
+                       return groups == 4;
+               }
+
+               static bool IsHexDigit (char c)
+               {
+                       return (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f') || (c >= '0' && c <= '9');
+               }
+
+               // This needs to handle the following forms:
+               //
+               // IPv6-addr = IPv6-full / IPv6-comp / IPv6v4-full / IPv6v4-comp
+               // IPv6-hex  = 1*4HEXDIG
+               // IPv6-full = IPv6-hex 7(":" IPv6-hex)
+               // IPv6-comp = [IPv6-hex *5(":" IPv6-hex)] "::" [IPv6-hex *5(":" IPv6-hex)]
+               //             ; The "::" represents at least 2 16-bit groups of zeros
+               //             ; No more than 6 groups in addition to the "::" may be
+               //             ; present
+               // IPv6v4-full = IPv6-hex 5(":" IPv6-hex) ":" IPv4-address-literal
+               // IPv6v4-comp = [IPv6-hex *3(":" IPv6-hex)] "::"
+               //               [IPv6-hex *3(":" IPv6-hex) ":"] IPv4-address-literal
+               //             ; The "::" represents at least 2 16-bit groups of zeros
+               //             ; No more than 4 groups in addition to the "::" and
+               //             ; IPv4-address-literal may be present
+               static bool SkipIPv6Literal (string text, ref int index)
+               {
+                       bool compact = false;
+                       int colons = 0;
+
+                       while (index < text.Length) {
+                               int startIndex = index;
+
+                               while (index < text.Length && IsHexDigit (text[index]))
+                                       index++;
+
+                               if (index >= text.Length)
+                                       break;
+
+                               if (index > startIndex && colons > 2 && text[index] == '.') {
+                                       // IPv6v4
+                                       index = startIndex;
+
+                                       if (!SkipIPv4Literal (text, ref index))
+                                               return false;
+
+                                       break;
+                               }
+
+                               int count = index - startIndex;
+                               if (count > 4)
+                                       return false;
+
+                               if (text[index] != ':')
+                                       break;
+
+                               startIndex = index;
+                               while (index < text.Length && text[index] == ':')
+                                       index++;
+
+                               count = index - startIndex;
+                               if (count > 2)
+                                       return false;
+
+                               if (count == 2) {
+                                       if (compact)
+                                               return false;
+
+                                       compact = true;
+                                       colons += 2;
+                               } else {
+                                       colons++;
+                               }
+                       }
+
+                       if (colons < 2)
+                               return false;
+
+                       if (compact)
+                               return colons < 6;
+
+                       return colons < 7;
+               }
+
+               static bool Validate (string email)
+               {
+                       int index = 0;
+
+                       if (email.Length == 0)
+                               return false;
+
+                       if (!SkipWord (email, ref index) || index >= email.Length)
+                               return false;
+
+                       while (index < email.Length && email[index] == '.') {
+                               index++;
+
+                               if (!SkipWord (email, ref index) || index >= email.Length)
+                                       return false;
+                       }
+
+                       if (index + 1 >= email.Length || email[index++] != '@')
+                               return false;
+
+                       if (email[index] != '[') {
+                               // domain
+                               if (!SkipDomain (email, ref index))
+                                       return false;
+
+                               return index == email.Length;
+                       }
+
+                       // address literal
+                       index++;
+
+                       // we need at least 8 more characters
+                       if (index + 8 >= email.Length)
+                               return false;
+
+                       var ipv6 = email.Substring (index, 5);
+                       if (ipv6.ToLowerInvariant () == "ipv6:") {
+                               index += "IPv6:".Length;
+                               if (!SkipIPv6Literal (email, ref index))
+                                       return false;
+                       } else {
+                               if (!SkipIPv4Literal (email, ref index))
+                                       return false;
+                       }
+
+                       if (index >= email.Length || email[index++] != ']')
+                               return false;
+
+                       return index == email.Length;
+               }
+
+               public EmailAddressAttribute ()
+                       : base(DataType.EmailAddress)
+               {
+                       // XXX: There is no .ctor accepting Func<string> on DataTypeAttribute.. :?
+                       base.ErrorMessage = DefaultErrorMessage;
+               }
+
+               public override bool IsValid(object value)
+               {
+                       if (value == null)
+                               return true;
+
+                       string email = value as string;
+                       if (email == null)
+                               return false;
+
+                       return Validate (email);
+               }
+       }
+}
+
+#endif
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/FileExtensionsAttribute.cs b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/FileExtensionsAttribute.cs
new file mode 100644 (file)
index 0000000..de9c384
--- /dev/null
@@ -0,0 +1,92 @@
+//
+// FileExtensionAttribute.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
+//
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
+// Copyright (C) 2013 Pablo Ruiz García
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_5
+
+using System;
+using System.Linq;
+using System.Globalization;
+using System.Text.RegularExpressions;
+
+namespace System.ComponentModel.DataAnnotations
+{
+       // See: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.fileextensionsattribute.aspx
+
+       [AttributeUsageAttribute (AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
+       public class FileExtensionsAttribute : DataTypeAttribute
+       {
+               private const string DefaultErrorMessage = "The {0} field only accepts files with the following extensions: {1}.";
+               private const string DefaultExtensions = "png,jpg,jpeg,gif";
+
+               public FileExtensionsAttribute ()
+                       : base (DataType.Upload)
+               {
+                       // XXX: There is no .ctor accepting Func<string> on DataTypeAttribute.. :?
+                       base.ErrorMessage = DefaultErrorMessage;
+                       this.Extensions = DefaultExtensions;
+               }
+
+               public string Extensions { get; set; }
+
+               private string[] GetExtensionList ()
+               {
+                       return (Extensions ?? "").Split (',');
+               }
+
+               private string GetExtension (string filename)
+               {
+                       var parts = filename.Split ('.');
+                       return parts.Length > 0 ? parts [parts.Length - 1] : "";
+               }
+
+               public override string FormatErrorMessage (string name)
+               {
+                       var extensions = GetExtensionList().Aggregate ((cur, next) => cur + ", " + next);
+                       return string.Format (ErrorMessageString, name, extensions);
+               }
+
+               public override bool IsValid(object value)
+               {
+                       if (value == null)
+                               return true;
+
+                       if (value is string)
+                       {
+                               var str = value as string;
+                               var ext = GetExtension (str);
+                               return GetExtensionList ().Any (x => string.Equals (x, ext, StringComparison.InvariantCultureIgnoreCase));
+                       }
+
+                       return false;
+               }
+       }
+}
+
+#endif
index 7a2a2c589cc57c1d76e8da69f82016515398e7ad..84fab2a3a63e8612bbafe280a925069d89f9206a 100644 (file)
@@ -3,6 +3,7 @@
 //
 // Authors:
 //     Marek Safar  <marek.safar@gmail.com>
+//     Pablo Ruiz García <pablo.ruiz@gmail.com>
 //
 // Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com)
 //
 
 #if NET_4_5
 
+using System;
+using System.Globalization;
+
 namespace System.ComponentModel.DataAnnotations
 {
        [AttributeUsageAttribute (AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
        public class MaxLengthAttribute : ValidationAttribute
        {
+               private const string DefaultErrorMessage = "The field {0} must be a string or array type with a maximum length of '{1}'.";
+               private const string InvalidLengthErrorMessage = "MaxLengthAttribute must have a Length value that is greater than zero. " +
+                                                                "Use MaxLength() without parameters to indicate that the string or array can have the maximum allowable length.";
+               private bool _maxLength = true;
+
                public MaxLengthAttribute ()
+                       : base (() => DefaultErrorMessage)
                {
                }
                
                public MaxLengthAttribute (int length)
+                       : this ()
                {
                        Length = length;
+                       _maxLength = false;
                }
                
                public int Length { get; private set; }
+
+               public override string FormatErrorMessage (string name)
+               {
+                       return string.Format (ErrorMessageString, name, Length);
+               }
+
+               public override bool IsValid (object value)
+               {
+                       // See: http://msdn.microsoft.com/en-us/library/gg696614.aspx
+
+                       if (this.Length == 0 || this.Length < -1)
+                               throw new InvalidOperationException (InvalidLengthErrorMessage);
+
+                       // Weird, but using 'MaxLength' with no length seems to be valid
+                       // and we should be returning true, and not throwing. (pablo)
+                       if (value != null && !_maxLength) {
+
+                               if (value is string) {
+                                       return (value as string).Length <= this.Length;
+                               }
+
+                               if (value is Array) {
+                                       return (value as Array).Length <= this.Length;
+                               }
+
+                               // NOTE: from my tests, MS.NET does not support IEnumerable as value. :(
+                       }
+
+                       return true;
+               }
        }
 }
 
-#endif
\ No newline at end of file
+#endif
index 5d82ea12ab2521acbf40ebcd3c4975941cfe3caa..ff30f7646d39a106a6d6febbbefa98d93e310263 100644 (file)
@@ -3,6 +3,7 @@
 //
 // Authors:
 //     Marek Safar  <marek.safar@gmail.com>
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
 //
 // Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
 //
 
 #if NET_4_5
 
+using System;
+using System.Globalization;
+
 namespace System.ComponentModel.DataAnnotations
 {
        [AttributeUsageAttribute (AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
        public class MinLengthAttribute : ValidationAttribute
        {
-               public MinLengthAttribute (int length)
+               private const string DefaultErrorMessage = "The field {0} must be a string or array type with a minimum length of '{1}'.";
+               private const string InvalidLengthErrorMessage = "MinLengthAttribute must have a Length value that is zero or greater.";
+
+               public MinLengthAttribute ()
                {
-                       Length = length;
                }
 
-               [MonoTODO]
-               public override bool IsValid (object value)
+               public MinLengthAttribute (int length)
                {
-                       return true;
+                       Length = length;
                }
-               
+
                public int Length { get; private set; }
 
                public override string FormatErrorMessage (string name)
                {
-                       // TODO:
-                       return base.FormatErrorMessage (name);
+                       return string.Format (ErrorMessageString, name, Length);
+               }
+
+               public override bool IsValid (object value)
+               {
+                       if (this.Length < 0)
+                               throw new InvalidOperationException (InvalidLengthErrorMessage);
+
+                       if (value != null) {
+
+                               if (value is string) {
+                                       return (value as string).Length >= this.Length;
+                               }
+
+                               if (value is Array) {
+                                       return (value as Array).Length >= this.Length;
+                               }
+
+                               // NOTE: from my tests, MS.NET does not support IEnumerable as value. :(
+                       }
+
+                       return true;
                }
        }
 }
 
-#endif
\ No newline at end of file
+#endif
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/PhoneAttribute.cs b/mcs/class/System.ComponentModel.DataAnnotations/System.ComponentModel.DataAnnotations/PhoneAttribute.cs
new file mode 100644 (file)
index 0000000..58cec3b
--- /dev/null
@@ -0,0 +1,69 @@
+//
+// PhoneAttribute.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
+//
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
+// Copyright (C) 2013 Pablo Ruiz García
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_5
+
+using System;
+using System.Globalization;
+using System.Text.RegularExpressions;
+
+namespace System.ComponentModel.DataAnnotations
+{
+       [AttributeUsageAttribute (AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
+       public class PhoneAttribute : DataTypeAttribute
+       {
+               private const string DefaultErrorMessage = "The {0} field is not a valid phone number.";
+               private const string _regexStr = @"^\+?(\d[\d-. ]+)?(\([\d-. ]+\))?[\d-. ]+\d$";
+               private static Regex _regex = new Regex (_regexStr, RegexOptions.IgnoreCase | RegexOptions.Compiled);
+
+               public PhoneAttribute ()
+                       : base(DataType.PhoneNumber)
+               {
+                       // XXX: There is no .ctor accepting Func<string> on DataTypeAttribute.. :?
+                       base.ErrorMessage = DefaultErrorMessage;
+               }
+
+               public override bool IsValid(object value)
+               {
+                       if (value == null)
+                               return true;
+
+                       if (value is string)
+                       {
+                               var str = value as string;
+                               return !string.IsNullOrEmpty(str) ? _regex.IsMatch(str) : false;
+                       }
+
+                       return false;
+               }
+       }
+}
+
+#endif
index 6e91b96affe35dcf8849ae6df0962bb76eadcd0c..9bf52669df9e1832a1d535307159cc8a91df242c 100644 (file)
@@ -28,6 +28,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.Globalization;
 using System.ComponentModel;
 
 namespace System.ComponentModel.DataAnnotations
index 342076c88e14ebe3dfdfe267f0ec490c066d43e5..d4d304171f53a4e25bf026b7db4d9fe67e8856a7 100644 (file)
@@ -30,6 +30,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.Globalization;
 using System.ComponentModel;
 using System.Text.RegularExpressions;
 
@@ -60,7 +61,7 @@ namespace System.ComponentModel.DataAnnotations
                
                public override string FormatErrorMessage (string name)
                {
-                       return string.Format(ErrorMessageString, name, Pattern);
+                       return string.Format (ErrorMessageString, name, Pattern);
                }
 
                // LAMESPEC: does not throw ValidationException when value does not match the regular expression
index 40d272ba6cb5c91e374eabe3fa6ca450124f86b8..20a59e74abcf548d48806c3af35f9adcc101d823 100644 (file)
@@ -29,6 +29,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.Globalization;
 using System.ComponentModel;
 
 namespace System.ComponentModel.DataAnnotations
index 3625b6e975a0e6ade8914e8f3c9c7aad8eb96419..4d67b9c49b4877d3331e230b6da4b37c27e71ef9 100644 (file)
@@ -3,8 +3,10 @@
 //
 // Authors:
 //     Marek Safar  <marek.safar@gmail.com>
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
 //
-// Copyright (C) 2012 Xamarin Inc (http://www.xamarin.com)
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
+// Copyright (C) 2013 Pablo Ruiz García
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 #if NET_4_0
 
+using System;
+
 namespace System.ComponentModel.DataAnnotations
 {
-       [AttributeUsageAttribute (AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = true)]
-       public sealed class TimestampAttribute : Attribute
+       [AttributeUsageAttribute (AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
+       public class TimestampAttribute : Attribute
        {
        }
 }
 
-#endif
\ No newline at end of file
+#endif
index 76284252bd73473573f633ac253e8384a9b4a498..d95ff90b3a5f708c76b41b8298c9281e931478c6 100644 (file)
@@ -31,6 +31,7 @@
 using System;
 using System.ComponentModel;
 using System.Reflection;
+using System.Globalization;
 
 namespace System.ComponentModel.DataAnnotations
 {
@@ -129,6 +130,12 @@ namespace System.ComponentModel.DataAnnotations
                protected string ErrorMessageString {
                        get { return GetStringFromResourceAccessor (); }
                }
+
+#if NET_4_5
+               // See: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationattribute.requiresvalidationcontext.aspx
+               public virtual bool RequiresValidationContext { get { return false; } }
+#endif
+
 #if NET_4_0
                NotImplementedException NestedNIEX ()
                {
index efc38b04cdc76f563fc479d22dd8b3b16a063c6a..50afd2182c1b3d08e597591c2ff58efc72f1401a 100644 (file)
@@ -57,5 +57,16 @@ namespace System.ComponentModel.DataAnnotations
                        else
                                MemberNames = new string[] {};
                }
+
+#if NET_4_5
+               public override string ToString ()
+               {
+                       // See: http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.validationresult.tostring.aspx
+                       if (!string.IsNullOrEmpty (ErrorMessage))
+                               return ErrorMessage;
+
+                       return base.ToString ();
+               }
+#endif
        }
 }
index 8be88206e065342aefb4386d1300141fb890fcc8..70011cc02ec1d84ef88aa98e23a2cffecfb965fe 100644 (file)
@@ -14,3 +14,8 @@ System.ComponentModel.DataAnnotations/ValidationContextTest.cs
 System.ComponentModel.DataAnnotations/ValidationResultTest.cs
 System.ComponentModel.DataAnnotations/ValidatorTest.cs
 System.ComponentModel.DataAnnotations/RegularExpressionAttributeTest.cs
+System.ComponentModel.DataAnnotations/EmailAddressAttributeTest.cs
+System.ComponentModel.DataAnnotations/PhoneAttributeTest.cs
+System.ComponentModel.DataAnnotations/CreditCardAttributeTest.cs
+System.ComponentModel.DataAnnotations/FileExtensionsAttributeTest.cs
+System.ComponentModel.DataAnnotations/CompareAttributeTest.cs
index 340cde8c78b3db2edd6b31d43d16b15db1ec9f6c..d0d39e121d444721db2ed294526a0a965e530e0d 100644 (file)
@@ -27,6 +27,8 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+
+#if !MOBILE
 using System;
 using System.ComponentModel;
 using System.ComponentModel.DataAnnotations;
@@ -77,3 +79,4 @@ namespace MonoTests.System.ComponentModel.DataAnnotations
                }
        }
 }
+#endif
\ No newline at end of file
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/CompareAttributeTest.cs b/mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/CompareAttributeTest.cs
new file mode 100644 (file)
index 0000000..dc95296
--- /dev/null
@@ -0,0 +1,70 @@
+//
+// CompareAttributeTest.cs
+//
+// Authors:
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
+//
+// Copyright (C) 2010 Novell, Inc. (http://novell.com/)
+// Copyright (C) 2013 Pablo Ruiz García
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+using NUnit.Framework;
+using MonoTests.Common;
+
+namespace MonoTests.System.ComponentModel.DataAnnotations
+{
+#if NET_4_5
+       [TestFixture]
+       public class CompareAttributeTest
+       {
+               public class TestModel {
+                       public string A { get; set; }
+                       [Display(Name = "TheB")]
+                       public string B { get; set; }
+               }
+
+               [Test]
+               public void GetValidationResult ()
+               {
+                       var sla = new CompareAttribute ("B");
+                       var obj = new TestModel { A = "x", B = "x" };
+                       var ctx = new ValidationContext(obj, null, null);
+
+                       Assert.IsNotNull (sla.GetValidationResult (null, ctx), "#A1-1");
+                       Assert.IsNotNull (sla.GetValidationResult (String.Empty, ctx), "#A1-2");
+                       Assert.IsNotNull (sla.GetValidationResult (obj, ctx), "#A1-3");
+                       Assert.IsNull (sla.GetValidationResult (obj.A, ctx), "#A1-4");
+
+                       obj = new TestModel { A = "x", B = "n" };
+
+                       Assert.IsNotNull (sla.GetValidationResult (null, ctx), "#B-1");
+                       Assert.IsNotNull (sla.GetValidationResult (obj, ctx), "#B-2");
+                       Assert.IsNotNull (sla.GetValidationResult (true, ctx), "#B-3");
+                       Assert.IsNotNull (sla.GetValidationResult (DateTime.Now, ctx), "#B-4");
+               }
+       }
+#endif
+}
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/CreditCardAttributeTest.cs b/mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/CreditCardAttributeTest.cs
new file mode 100644 (file)
index 0000000..67ed9da
--- /dev/null
@@ -0,0 +1,62 @@
+//
+// CreditCardAttributeTest.cs
+//
+// Authors:
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
+//
+// Copyright (C) 2010 Novell, Inc. (http://novell.com/)
+// Copyright (C) 2013 Pablo Ruiz García
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+using NUnit.Framework;
+using MonoTests.Common;
+
+namespace MonoTests.System.ComponentModel.DataAnnotations
+{
+#if NET_4_5
+       [TestFixture]
+       public class CreditCardAttributeTest
+       {
+               [Test]
+               public void IsValid ()
+               {
+                       var sla = new CreditCardAttribute ();
+
+                       Assert.IsTrue (sla.IsValid (null), "#A1-1");
+                       Assert.IsFalse (sla.IsValid (String.Empty), "#A1-2");
+                       Assert.IsFalse (sla.IsValid ("string"), "#A1-3");
+                       Assert.IsTrue (sla.IsValid ("378282246310005"), "#A1-4");
+                       Assert.IsTrue (sla.IsValid ("3782-8224-6310-005"), "#A1-5");
+                       Assert.IsTrue (sla.IsValid ("371449635398431"), "#A-6");
+#if false
+                       Assert.IsFalse (sla.IsValid ("371449635498431"), "#A-6b");
+#endif
+                       Assert.IsFalse (sla.IsValid (true), "#A1-7");
+                       Assert.IsFalse (sla.IsValid (DateTime.Now), "#A1-8");
+               }
+       }
+#endif
+}
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/EmailAddressAttributeTest.cs b/mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/EmailAddressAttributeTest.cs
new file mode 100644 (file)
index 0000000..09350cd
--- /dev/null
@@ -0,0 +1,87 @@
+//
+// EmailAddressAttributeTest.cs
+//
+// Authors:
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
+//
+// Copyright (C) 2010 Novell, Inc. (http://novell.com/)
+// Copyright (C) 2013 Pablo Ruiz García
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+using NUnit.Framework;
+using MonoTests.Common;
+
+namespace MonoTests.System.ComponentModel.DataAnnotations
+{
+#if NET_4_5
+       [TestFixture]
+       public class EmailAddressAttributeTest
+       {
+               static readonly object[] ValidAddresses = new object[] {
+                       null,
+                       "\"Abc\\@def\"@example.com",
+                       "\"Fred Bloggs\"@example.com",
+                       "\"Joe\\\\Blow\"@example.com",
+                       "\"Abc@def\"@example.com",
+                       "customer/department=shipping@example.com",
+                       "$A12345@example.com",
+                       "!def!xyz%abc@example.com",
+                       "_somename@example.com",
+                       "valid.ipv4.addr@[123.1.72.10]",
+                       "valid.ipv6.addr@[IPv6:0::1]",
+                       "valid.ipv6.addr@[IPv6:2607:f0d0:1002:51::4]",
+                       "valid.ipv6.addr@[IPv6:fe80::230:48ff:fe33:bc33]",
+                       "valid.ipv6v4.addr@[IPv6:aaaa:aaaa:aaaa:aaaa:aaaa:aaaa:127.0.0.1]",
+               };
+
+               static readonly object[] InvalidAddresses = new object[] {
+                       "",
+                       123,
+                       DateTime.Now,
+                       "invalid",
+                       "invalid@",
+                       "invalid @",
+                       "invalid@[555.666.777.888]",
+                       "invalid@[IPv6:123456]",
+                       "invalid@[127.0.0.1.]",
+                       "invalid@[127.0.0.1].",
+                       "invalid@[127.0.0.1]x",
+               };
+
+               [Test]
+               public void IsValid ()
+               {
+                       var sla = new EmailAddressAttribute ();
+
+                       for (int i = 0; i < ValidAddresses.Length; i++)
+                               Assert.IsTrue (sla.IsValid (ValidAddresses[i]), "#A1-{0}", i);
+
+                       for (int i = 0; i < InvalidAddresses.Length; i++)
+                               Assert.IsFalse (sla.IsValid (InvalidAddresses[i]), "#B1-{0}", i);
+               }
+       }
+#endif
+}
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/FileExtensionsAttributeTest.cs b/mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/FileExtensionsAttributeTest.cs
new file mode 100644 (file)
index 0000000..257161f
--- /dev/null
@@ -0,0 +1,61 @@
+//
+// FileExtensionsAttributeTest.cs
+//
+// Authors:
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
+//
+// Copyright (C) 2010 Novell, Inc. (http://novell.com/)
+// Copyright (C) 2013 Pablo Ruiz García
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+using NUnit.Framework;
+using MonoTests.Common;
+
+namespace MonoTests.System.ComponentModel.DataAnnotations
+{
+#if NET_4_5
+       [TestFixture]
+       public class FileExtensionsAttributeTest
+       {
+               [Test]
+               public void IsValid ()
+               {
+                       var sla = new FileExtensionsAttribute () {
+                               Extensions = "txt,jpg"
+                       };
+
+                       Assert.IsTrue (sla.IsValid (null), "#A1-1");
+                       Assert.IsFalse (sla.IsValid (String.Empty), "#A1-2");
+                       Assert.IsFalse (sla.IsValid ("string"), "#A1-3");
+                       Assert.IsTrue (sla.IsValid ("file.txt"), "#A1-4");
+                       Assert.IsTrue (sla.IsValid ("file.jpg"), "#A1-5");
+                       Assert.IsTrue (sla.IsValid ("file.xxx.txt"), "#A-6");
+                       Assert.IsFalse (sla.IsValid (true), "#A1-7");
+                       Assert.IsFalse (sla.IsValid (DateTime.Now), "#A1-8");
+               }
+       }
+#endif
+}
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/PhoneAttributeTest.cs b/mcs/class/System.ComponentModel.DataAnnotations/Test/System.ComponentModel.DataAnnotations/PhoneAttributeTest.cs
new file mode 100644 (file)
index 0000000..3ca6e0b
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// PhoneAttributeTest.cs
+//
+// Authors:
+//      Pablo Ruiz García <pablo.ruiz@gmail.com>
+//
+// Copyright (C) 2010 Novell, Inc. (http://novell.com/)
+// Copyright (C) 2013 Pablo Ruiz García
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.Text;
+
+using NUnit.Framework;
+using MonoTests.Common;
+
+namespace MonoTests.System.ComponentModel.DataAnnotations
+{
+#if NET_4_5
+       [TestFixture]
+       public class PhoneAttributeTest
+       {
+               [Test]
+               public void IsValid ()
+               {
+                       var sla = new PhoneAttribute ();
+
+                       Assert.IsTrue (sla.IsValid (null), "#A1-1");
+                       Assert.IsFalse (sla.IsValid (String.Empty), "#A1-2");
+                       Assert.IsFalse (sla.IsValid ("string"), "#A1-3");
+                       Assert.IsTrue (sla.IsValid ("1-800-642-7676"), "#A1-4");
+                       Assert.IsTrue (sla.IsValid ("+86-21-96081318"), "#A1-5");
+                       Assert.IsFalse (sla.IsValid (true), "#A1-6");
+                       Assert.IsFalse (sla.IsValid (DateTime.Now), "#A1-7");
+               }
+       }
+#endif
+}
diff --git a/mcs/class/System.ComponentModel.DataAnnotations/mobile_static_System.ComponentModel.DataAnnotations.dll.sources b/mcs/class/System.ComponentModel.DataAnnotations/mobile_static_System.ComponentModel.DataAnnotations.dll.sources
new file mode 100644 (file)
index 0000000..3de14f5
--- /dev/null
@@ -0,0 +1 @@
+#include net_4_5_System.ComponentModel.DataAnnotations.dll.sources
index 8faf2a074fba5bda4bb8648cf8542bf959faa657..49e068c167e53259b8f531fc9eea8fb0b70a9c76 100644 (file)
@@ -2,6 +2,11 @@
 
 System.ComponentModel.DataAnnotations/MinLengthAttribute.cs
 System.ComponentModel.DataAnnotations/MaxLengthAttribute.cs
+System.ComponentModel.DataAnnotations/CreditCardAttribute.cs
+System.ComponentModel.DataAnnotations/EmailAddressAttribute.cs
+System.ComponentModel.DataAnnotations/PhoneAttribute.cs
+System.ComponentModel.DataAnnotations/FileExtensionsAttribute.cs
+System.ComponentModel.DataAnnotations/CompareAttribute.cs
 System.ComponentModel.DataAnnotations.Schema/ColumnAttribute.cs
 System.ComponentModel.DataAnnotations.Schema/ComplexTypeAttribute.cs
 System.ComponentModel.DataAnnotations.Schema/DatabaseGeneratedAttribute.cs
index f1e8590928f1da13dacc15ea6306dceb8d40f29a..8a23dd8f3f901307fb56ea3ee9c86216f0e55c5d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</ProjectGuid>\r
+    <ProjectGuid>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration.Install-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c200a1154f64a365d883a5f38d1d5403f6d942f0..fa3ba4ed1a5315f8ddf2792fb41ff73c6a038daf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{878F802D-3249-41E8-8322-A32C406383C6}</ProjectGuid>\r
+    <ProjectGuid>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration.Install-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1c55128796fb613f77b1e863e4c8f743d59ea05d..7902912315a6f17b09feedf371be17ec97d204e8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</ProjectGuid>\r
+    <ProjectGuid>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration.Install-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e2b521ae113ad2337c0f64353eb239a00023965f..ba1ef86a343f2ef4270ec77798ca9253bdbe3fa4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{725170B0-51F0-46E2-A74D-F764B68553D6}</ProjectGuid>\r
+    <ProjectGuid>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-1.csproj">\r
-      <Project>{980C299E-664F-4905-B01C-19599BBE78FF}</Project>\r
+      <Project>{FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}</Project>\r
       <Name>System\System-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0.csproj">\r
-      <Project>{67A04408-CBEF-4B63-B975-29D827B0DBED}</Project>\r
+      <Project>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</Project>\r
       <Name>System.XML\System.Xml-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0b2bfc71548b8fd9aa8f1e21538f74f258d260a3..cc8b549f42003d17c014e9889f2c0e3da24b2ac9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</ProjectGuid>\r
+    <ProjectGuid>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-1.csproj">\r
-      <Project>{C57BB644-EEFC-475A-AF6F-43EF29C75933}</Project>\r
+      <Project>{FCBCCC55-006E-41B2-A649-CF9A843E34BD}</Project>\r
       <Name>System\System-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0.csproj">\r
-      <Project>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</Project>\r
+      <Project>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</Project>\r
       <Name>System.XML\System.Xml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 49de589658fa61261be3ef74f1d4c42e590310d0..5af0d031d571f4d9289ea3a83c8ab3d681193582 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</ProjectGuid>\r
+    <ProjectGuid>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</Project>\r
+      <Project>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</Project>\r
       <Name>System\System-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a9d2bb7062265012802f838589da4a7a8810ee03..b82d11f60fe29d58ccd8b7936059af5b39d58d70 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5CFB60F3-DD25-4621-A530-DE5ACD9FEEDB}</ProjectGuid>\r
+    <ProjectGuid>{978A3CA5-B812-4E55-BD9E-BAACA928A978}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-1.csproj">\r
-      <Project>{980C299E-664F-4905-B01C-19599BBE78FF}</Project>\r
+      <Project>{FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}</Project>\r
       <Name>System\System-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0.csproj">\r
-      <Project>{67A04408-CBEF-4B63-B975-29D827B0DBED}</Project>\r
+      <Project>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</Project>\r
       <Name>System.XML\System.Xml-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e345d9091249f4f642ca095199ddd7473d785b20..f4ced553411d23a0e485d41e75a660ad86feb248 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5E353685-1B78-4BE8-B3E9-47B6CF50E550}</ProjectGuid>\r
+    <ProjectGuid>{847AAD33-F3B3-4A94-82D2-95D71872660B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-1.csproj">\r
-      <Project>{C57BB644-EEFC-475A-AF6F-43EF29C75933}</Project>\r
+      <Project>{FCBCCC55-006E-41B2-A649-CF9A843E34BD}</Project>\r
       <Name>System\System-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0.csproj">\r
-      <Project>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</Project>\r
+      <Project>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</Project>\r
       <Name>System.XML\System.Xml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 16056f50c63a4e47ee1927afac01d051494bfce1..fa9d659a614843496e6a357af0832bd5021699c3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5592C0B6-11CF-43FB-A673-8386BBFEA147}</ProjectGuid>\r
+    <ProjectGuid>{A1C102BA-BFA1-4242-A44D-E041A6E37161}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Configuration-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</Project>\r
+      <Project>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</Project>\r
       <Name>System\System-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1008a0ae986c214146c513f2320112e183479032..b6e3468fbda0fc284a27ee19128628a6339311e3 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.ComponentModel;
 using System.Collections.Specialized;
@@ -135,4 +134,3 @@ namespace System.Configuration {
                }
        }
 }
-#endif
index cc625da5776b066dfed73a762b741bcdf111767b..e988eb92afd6838da475c5e9c7348f439aa0c4eb 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -53,4 +52,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 5c06d51d38c53220b6cafeabb081e83caed5be71..038af330cc4f79fd32aae3594fa76e0358dbd4af 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -64,4 +63,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index f3e93f13426988277f993aa93b3a74fd96687b4d..6d26677d27cd8970ab3bcf680a8695418964da77 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2006 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.Reflection;
 using System.Configuration.Internal;
@@ -73,5 +71,3 @@ namespace System.Configuration
                }
        }
 }
-
-#endif
index d2ecc4ab520e4ef70b22c515f92768832abe11cc..4913c8098311d7a15561e13f973e4bea66d60cbd 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections.Specialized;
 
@@ -148,5 +147,3 @@ namespace System.Configuration {
        }
 
 }
-
-#endif
index 5959d1cd7af9f32eb2188df2b5b5843ad6206f59..52824cbd0d07c518dc2d8cb6865233ac9fb0fe35 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.Collections.Specialized;
 using System.ComponentModel;
 using System.Globalization;
@@ -63,4 +61,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index d1e192510be67eae113c7e015cd69a9217d7ccd5..977c16002b0f4d3753f185047156f07a23c7f4ae 100644 (file)
@@ -25,7 +25,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -88,5 +88,3 @@ namespace System.Configuration {
                internal abstract void ResetModified (Configuration config);
        }
 }
-
-#endif
index a3fbf3810c00de18aefc66bedb998a6d5c23de88..c047cc5e172ee111575aaa5933a18398d9556f8d 100644 (file)
@@ -26,8 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.Configuration.Internal;
 using System.IO;
@@ -59,4 +57,3 @@ internal class ConfigXmlTextReader : XmlTextReader, IConfigErrorInfo
        }
 }
 
-#endif
index 2da304b6c749a012957cf64f50c15331ee39427d..760371766904e216889732ba05dc9a24cc7746b3 100644 (file)
@@ -26,7 +26,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -582,4 +582,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 7e75dc4df1af89c6c49433235023457644a60f52..5105d30ddb7b9d63a5ac86ace6c5fc19ad69ffd9 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 namespace System.Configuration
 {
         public enum ConfigurationAllowDefinition
@@ -37,4 +36,4 @@ namespace System.Configuration
                 Everywhere = 300
         }
 }
-#endif
+
index a7962247e9b683a4101a774296c4abcdbf6b8288..5bc5df666006caafd8990075ce9236a776a3b169 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 namespace System.Configuration
 {
        public enum ConfigurationAllowExeDefinition
@@ -37,4 +36,3 @@ namespace System.Configuration
                MachineToRoamingUser = 200
        }
 }
-#endif
index 866070f5489d26c1d8033332fabbf2c97afdf811..e9ddfd1198d1f543b3f8a0fd8f77f719105e53fb 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 
 namespace System.Configuration
@@ -71,5 +70,3 @@ namespace System.Configuration
                }
        }
 }
-
-#endif
index 9fb7171b0a60b80b46da530d4eff53386fe636c2..1570181d44fe4f87a3866b2c31abe0ecaf3ec4dd 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 
 namespace System.Configuration
@@ -51,4 +49,3 @@ namespace System.Configuration
                }
        }
 }
-#endif
index a96d1e4ad6a0aed42e8921c5dbae0c16193cdc96..a49a9679f7b4009c89ccee2613f55ad44642c88f 100644 (file)
@@ -29,7 +29,6 @@
 // Copyright (c) 2012 Xamarin Inc. (http://www.xamarin.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 using System.Reflection;
@@ -849,4 +848,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 22bc35f1554311967ec0fd4ba8beb36f5ac07498..6e379c87b9153222c541f65ea3cacf33c3561aed 100644 (file)
@@ -31,8 +31,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.Collections;
 using System.Diagnostics;
 using System.Xml;
@@ -595,4 +593,3 @@ namespace System.Configuration
         }
 }
 
-#endif
index 4e4de9afb3c07a1b217d16471a5480026a05afcc..4768452fe279e69c868d2b2acdba3f6b781b2718 100644 (file)
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        public enum ConfigurationElementCollectionType
@@ -41,5 +39,3 @@ namespace System.Configuration
        }
 
 }
-
-#endif
index 7f2a5a8fa14379878b3c64c855dd234ed394e885..ca63684d6736601a28cd36342c894177eaede9b3 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration 
 {
        public sealed class ConfigurationElementProperty
@@ -47,4 +45,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 638804aebe14fba685cbdac820a5a037c65045ff..06bfc5e5e7dff5624185fe6fd216dfac306f0787 100644 (file)
@@ -29,8 +29,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.Configuration.Internal;
 using System.Globalization;
@@ -189,4 +187,3 @@ namespace System.Configuration
 #pragma warning restore
 }
 
-#endif
index f2756dce0e7c979a941a414be749ecb54263a07c..8c58cc329b38003ef5b49c6d7a3518ffc16713ab 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 
 namespace System.Configuration
@@ -56,4 +55,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index e9669003ee8704eb2c716ba51f16cfad174820a1..cc3a2dc529ba0ef3a9ac9b5313884fab27175949 100644 (file)
@@ -27,8 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.Xml;
 using System.IO;
 
@@ -118,4 +116,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 3a68ae66c3dcc56fbd73a1f3d9518129e59722cf..c59fad535e48b7e18d5920275837de116dfb7345 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.Collections;
 
 namespace System.Configuration {
@@ -92,4 +90,4 @@ namespace System.Configuration {
                }
        }
 }
-#endif
+
index d282907c208bf24009a715b4f7165d1ee7bc1bb9..651bd7650ec3c6efa46b18d157cec2eb43f09e72 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.Collections;
 
@@ -195,4 +193,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 7835a0b0fda924d5b8089467ca4fcf67a82402ae..28b1d6bf3d4c4477c039b8e92d5a86a5c8451a70 100644 (file)
@@ -26,7 +26,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Runtime.CompilerServices;
@@ -177,7 +177,6 @@ namespace System.Configuration {
                        }
                }
 
-               [MonoTODO]
                public static ConnectionStringSettingsCollection ConnectionStrings {
                        get {
                                ConnectionStringsSection connectionStrings = (ConnectionStringsSection) GetSection ("connectionStrings");
@@ -209,5 +208,3 @@ namespace System.Configuration {
                }
        }
 }
-
-#endif
index b32fcbbe210ad2af7345af3cc1b0b4cbb8b8ad48..01d297fbca6c2f30cf3d15e5fc9495621c2b1e4a 100644 (file)
@@ -27,8 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System.Security;
 using System.Security.Permissions;
 
@@ -121,4 +119,3 @@ namespace System.Configuration {
        }
 
 }
-#endif
index c63d75b2aac599f880c1e69ab6505024d3e96c79..cd3711ffa45a4484650f194724025bf3f34b8b5a 100644 (file)
@@ -27,7 +27,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 
 using System.Security;
 using System.Security.Permissions;
@@ -52,4 +51,3 @@ namespace System.Configuration {
 
 }
 
-#endif
index 93a2c5d1123ae447717e6a84569ddaf97a667112..ec3738812310c8e3e9649b5a33d41af3353d9dd4 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.ComponentModel;
 
@@ -177,4 +176,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 1b816f9b919304ca6e15794d6ecd7e5b43f339e2..ad993cd59634331b71538962141580be82dfe0f0 100644 (file)
@@ -27,8 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        [AttributeUsage (AttributeTargets.Property)]
@@ -82,4 +80,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 33dba87688bba8ab8648c12eeda9646a78b77993..eeb6921707cb3414a15399901927d094c40c791a 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Collections.Generic;
@@ -107,4 +106,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 5f3ec80b87f4977959cce6d02f47621cf0a7af44..d13889968f144abf8cee44891645c21d3931ab78 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 namespace System.Configuration
 {
         [Flags]
@@ -38,4 +37,3 @@ namespace System.Configuration
                 IsKey = 4
         }
 }
-#endif
index 332bcd05e68e480323a4bbcdff5611582ff1dafd..452c483d18a85ddc0fc3a810031c8ea4a9c73594 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.ComponentModel;
 using System.Configuration;
@@ -71,5 +69,3 @@ namespace System.Configuration
                }
        }
 }
-
-#endif 
\ No newline at end of file
index a226764be90434aa55fff72ef6fd292952c4b10a..1c707f3f6520ad8a4effc1d6c04fd979b90e2ad7 100644 (file)
@@ -26,7 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 //
-#if NET_2_0
+
 using System;
 
 namespace System.Configuration 
@@ -49,4 +49,3 @@ namespace System.Configuration
                }
        }
 }
-#endif
\ No newline at end of file
index 2a8b8ef00d66bca5d321cbc07b7f76e82392bdb6..9c25122eef6013a5ac9745416ce93fc1ef73bcd2 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 //
-#if NET_2_0
+
 using System;
 
 namespace System.Configuration 
 {
        internal delegate void ConfigurationSaveEventHandler (Configuration sender, ConfigurationSaveEventArgs args);
 }
-#endif
-       
\ No newline at end of file
index 47f65000d20e36104a54a05279b086ef703b3830..2344dbd7e368f4b6f1199649cd245aad9c063d52 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 namespace System.Configuration
 {
         public enum ConfigurationSaveMode
@@ -36,4 +35,3 @@ namespace System.Configuration
                 Modified = 0
         }
 }
-#endif
index 74d7de303cf723701594ccec9488e487f3d62bb3..8a76dd6fff5a0ff29f7e323a158db89ce1b61e52 100644 (file)
@@ -29,7 +29,6 @@
 // Copyright (c) 2012 Xamarin Inc. (http://www.xamarin.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 using System.IO;
@@ -284,4 +283,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 34848b119d9aef383322043bf19ce1ab8d5e7105..5b0f531e55d587d0fd1baeb8d20826a7bd236cc7 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -138,4 +137,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 4b212c54a499d92e7fe5a3c52b9ac1d2e420dafb..add89b5bd3f5bb673ecf4f83b3866822c205f6ae 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration
@@ -120,4 +119,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 52be097c8e75fd62693ae1f32cc4381e4be7d8c9..463868f54a7d26c42be8f93e1deefe1763c5eb79 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -132,4 +131,4 @@ namespace System.Configuration {
                }
        }
 }
-#endif
+
index 083a74d9872bc03b8a9854333a04120703ba7c6a..2e75d37e46ec2e0f0ab03d6af28b1fd9c3fd1a48 100644 (file)
@@ -25,7 +25,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 
 namespace System.Configuration {
@@ -37,4 +37,3 @@ namespace System.Configuration {
                 PerUserRoamingAndLocal = 20
         }
 }
-#endif
index e8b0992a76ac8694205de2d1979fc9a1c15acf2f..49ef9f16e304b8900475d19cf96a31ddcafe15b0 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration
@@ -59,4 +58,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index c0930a98c2e39b4b3cfd6c8f100b1d9eda329458..b325ef2efc0f5a1e2f5c9282c748ca9e33ed4ddd 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration
@@ -45,4 +44,4 @@ namespace System.Configuration
                public abstract void Validate (object value);
        }
 }
-#endif
+
index eabcaa037b1557a9e7ff32b3a65b598de6521b77..7d4bb7859cd0477bc8f0d82f2c8adf864d309957 100644 (file)
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.ComponentModel;
 
@@ -110,4 +108,4 @@ namespace System.Configuration
                }
        }
 }
-#endif // NET_2_0
+
index d11c4051be71ea28a639826c7be1856942267161..7da715ce56b673905927aac7fa1ab18965da320d 100644 (file)
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 
 namespace System.Configuration
@@ -126,4 +124,4 @@ namespace System.Configuration
         }
 
 }
-#endif // NET_2_0
+
index a891dd9ea6308af1542308c4eb7f0b4d26db32fc..fe41acb79a79d7c4d79d5ee2c06bdadc2390c844 100644 (file)
@@ -29,8 +29,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.Xml;
 
@@ -73,4 +71,3 @@ namespace System.Configuration
         }
 
 }
-#endif // NET_2_0
index 01304d829638ef690a6c435312498bf48dc47327..b7831bf5752b6ccd8ba01ab617e6be4ec433edb5 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 
@@ -60,4 +59,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index ab3b0800cd40ef84db1936e27337c4e80eec41a4..bfc0af5c25d5d2b8e661000df1c261bff109059b 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Xml;
 
@@ -85,4 +84,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 5dd484c647457e15b145108059388508e6a2cc7b..8991c4fc95fd40a962e69b415803428beaf84789 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -47,4 +46,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 50a4d0b14e03a2f68c38939a39845166204a6165..71fd65b193fcf99f29d2996059274a042ec0df96 100644 (file)
@@ -26,7 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 using System.Xml;
 using System.Collections.Specialized;
 
@@ -67,4 +66,3 @@ it is suggested that you use the RsaProtectedConfigurationProvider.";
                }
        }
 }
-#endif
index 2f3be5c0d81e632b34193c4a63f16724356b6a54..7e5c729ce22302e4285ec6cde4083e81c15fe784 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 
 namespace System.Configuration
@@ -96,4 +95,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 7ebc071c3f9cab5c0864f9c0ebfebce2658a3566..331f1e998d8f42b47e03637499c336155194e9b2 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        public sealed class ExeConfigurationFileMap: ConfigurationFileMap
@@ -69,4 +67,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 0765c84f54f56ab06a0da1da253026b0bc1b90a5..e82908eb532526d6368c0e509c941469ffd09816 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 
@@ -52,4 +51,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index bc57cca09729511e92e5c6d8b8167c481a81f890..bf075aecc93596af91c3f4d3fa60e5168f04ff18 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -58,4 +56,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 7cb13fd5dadeba14aac3296583952647d0880ddc..0e6672df18b5bb10dc4b1c5ce3af88e5333c3ddd 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections.Specialized;
 using System.Xml;
@@ -82,4 +81,3 @@ namespace System.Configuration {
                }
        }
 }
-#endif
index 8e5da4ef7c0778b4f86a2c3d237c413860603d9b..25bfeb666f45208128801ac9acd6b4c1cb652230 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -63,4 +61,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index d38645c8954ce5c293c857ffddba993a30d8d00b..5977737f74b3985d94144bab902334e6cf69f3cf 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -63,4 +61,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index fdad2901662fc49fefbbf269a4c425f5bfaf47c3..c24c86bfb57cf431ac493f602b9a6437f1bf977e 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.IO;
 
@@ -81,4 +80,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 9ce102b9293af770207ad888d0c527dc356c90eb..9323349b61f06142bf54cd5a1157ef234ffd4335 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -69,4 +68,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index bef6dbcb013184113c7c980e23ef46901b742c1d..528a129d1a044799ba62894631eebe39364c7728 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Configuration.Internal;
@@ -77,4 +76,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index f5a4cd18a5345e20983e1f6d95a6875e1e4ca799..80f410891de15586043111546f0b43cad5588e8f 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.IO;
 using System.Security;
@@ -411,4 +409,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index d51b5fd81a20588409703d8ee09410a93f32a0a7..f5b391f5084bccf55650e312a31f7a231bb59462 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.Collections;
 using System.Configuration.Internal;
@@ -91,4 +89,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 16814e1826523b17179636ac805dfb098966678d..62422bf8b9a64c13f29b693021786544895a0792 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 
@@ -98,4 +97,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 66476dd0bcbbb14260df4570cfa6951defd68b51..c66caab7b607f2238c465d8310e4d51700001ffa 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 
@@ -79,4 +78,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index e8e585c6ba28d106b7308415263154f6f3d344a5..f2fd63df1034ce2a8f0e700638e77709d831b12d 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections.Specialized;
 using System.Xml;
 
@@ -57,4 +56,3 @@ namespace System.Configuration
 
        }
 }
-#endif
index b21173889eb317ba26feacb71460c239ffe31ddd..96c9cac1a017ec193f9b1c0f7c4b4a1067f9e210 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.IO;
 
@@ -78,4 +77,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 47c8225ecdc77d47fc041cea058131c44da9fabd..ef5d62fe526439702bfb1f99e3fd45fdd7cda83f 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -69,4 +68,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 74158384529b254a553171d01d1964071b6e7a87..f15fd15b96c60da1bf8436ba43e36c54f0eadc5e 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -106,4 +105,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index d11db1fa353d8970bdf99a23ffdbc3c96c6b32ca..19a07fd473df3a80737a44ffe30b40fbf640a8ac 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -74,4 +73,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index e5abf997743b9e624f85f05b5f9568cddb744640..24ec33958602998852ba0c248f0976efa655748e 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration
@@ -51,4 +50,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 13a1870ca7a848cc28199cab26967b012c575df3..6b4350e62a9fc462c0367792caaefc1e4fd54d7a 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -50,5 +49,3 @@ namespace System.Configuration {
                }
        }
 }
-
-#endif
index 32ff06450902d4a6b99eddafc774a9ea14be8e0f..8f3e223a80a8bf9c0b6f4fa1ffe657ee3ced76c5 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.ComponentModel;
 
 namespace System.Configuration
@@ -169,4 +168,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index fc839bf7f478c456d0d0129d4079f14397166c58..1cbf5f5d05c6494eda131d35a962f784f4f9a9c1 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Collections.Specialized;
 using System.Runtime.Serialization;
@@ -100,4 +99,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index e021cdb88f7b5b8835e6bb6f58532d8a096e8ffc..b1dbd5d57fb6e6f246d3904361339e1282b6d371 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        public enum PropertyValueOrigin
@@ -37,4 +35,3 @@ namespace System.Configuration
                SetHere = 2
        }
 }
-#endif
index 42cdd11be4023eb45352afeab3ea8821d777ef13..a3acc5e83b1364a0289c72218058b1c1d00a0b39 100644 (file)
@@ -26,7 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 using System.Xml;
 using System.Collections.Specialized;
 using System.Security.Cryptography;
@@ -63,5 +62,3 @@ namespace System.Configuration
        }
 
 }
-
-#endif
index dbdcf34c97a0a271dc80adb84eccdd226f88d0bd..aca0c163f02bcc4587b7a7223635fe172c732c5c 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Xml;
 using System.Configuration.Provider;
 
@@ -43,4 +42,3 @@ namespace System.Configuration
                public abstract XmlNode Encrypt (XmlNode node);
        }
 }
-#endif
index 0fe7a705588ae09660b4b6b84190fecb6bf15663..4b1d1e155ca8297bdc0d15b829cc4d112379ffc5 100644 (file)
@@ -26,8 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System.Configuration.Provider;
 
 namespace System.Configuration
@@ -52,4 +50,3 @@ namespace System.Configuration
 
 }
 
-#endif
index 5cfda98a62059534565c0be4e61051136c8c4dac..30143f777e0b2f0c4f98fe353ed3bec2199092b8 100644 (file)
@@ -27,8 +27,6 @@
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.IO;
 using System.Xml;
 
@@ -113,4 +111,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 2cacd501698bd88ced6672b88b75eb74b294d64f..9f8e233215a5b5424df56e45b86d1a7c590aa655 100644 (file)
@@ -26,8 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        public class ProtectedProviderSettings : ConfigurationElement
@@ -56,4 +54,3 @@ namespace System.Configuration
 
 }
 
-#endif
index efbf00bdc41c1abece4444daa4bf69856fdabb51..6d4db6a0b077bb72ef79978599a6d32cfa999417 100644 (file)
@@ -28,8 +28,6 @@
 // Copyright (C) 2004,2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.Xml;
 using System.Collections.Specialized;
@@ -123,4 +121,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 31b3c323a43af76bc306cd3a09c0353fae5386d7..25bbc3a41f4094a9e51b3fa36898319bfe5290db 100644 (file)
@@ -28,8 +28,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
-
 using System;
 using System.Configuration;
 
@@ -82,4 +80,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 6ec0031412e3d1f856b6fe81050caa9a4c3cbe87..900a2e751e6b3cb8f79d8dc9bb3ef5be1f85fa23 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System;
 using System.Text.RegularExpressions;
 
@@ -55,4 +53,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 8fb2e41ea1a1800e6ad579d6c1fba7dff21041c9..225ed103b1193121c7a209c15abe78da45abf615 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        [AttributeUsage (AttributeTargets.Property)]
@@ -55,4 +53,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index f928490616946f33bd5b72e2d5bd1259d358ae62..bbb0eea08b302223ce6347cb7ad559d2f2fe5f2d 100644 (file)
@@ -26,7 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if NET_2_0
 using System.Xml;
 using System.IO;
 using System.Collections.Specialized;
@@ -170,4 +169,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 3bb64d17db203d55de9ff23a24d7068e8913e099..c418d5160b17573c5b99abe2324d890b763575a4 100644 (file)
@@ -25,7 +25,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -480,4 +480,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 965745a9db36e872176797bc8be3ac2163ba70b3..3a19ea27c332e5d08588e509b535c10272e848bb 100644 (file)
@@ -25,7 +25,7 @@
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
-#if NET_2_0
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -251,4 +251,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 24767c62a49525bb9885c2f33ad1f60b1bbe3311..f05406c4b5bf19f22054bca318f66cdef8f87a2a 100644 (file)
@@ -27,7 +27,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System.Collections;
 using System.Xml;
 
@@ -214,4 +213,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 40cea56c843b135863ab6bcd022346f40efbbfe0..1b737b7e642d6f55088c11376b6f8411e34be572 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        public class StringValidator: ConfigurationValidatorBase
@@ -79,5 +77,3 @@ namespace System.Configuration
                }
        }
 }
-
-#endif
index 003b3eb0bf57eeac00345b1874371625dc799d78..deb6a969b050c6ee57dc97cf999d8000e0aa13ed 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        [AttributeUsage (AttributeTargets.Property)]
@@ -63,4 +61,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 22989efba07be78659250a3cf1c4d359f363810d..65926b1d81d99ba710918ea9545e1d84c169a449 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -53,5 +52,3 @@ namespace System.Configuration {
                }
        }
 }
-
-#endif
index 4d3cc9bb666e3691e60aedb2041fb46f02ab78ec..1663b8e9fd7e3f4b30cfa42711accb9c50654360 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration {
@@ -59,4 +58,3 @@ namespace System.Configuration {
        }
 }
 
-#endif
index 71bfd3bbf54f99d51569205ad2e7e1ccb14aa974..95a7f44c79eb970bee3141a00c1ef39d90984d24 100644 (file)
@@ -27,8 +27,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -54,4 +52,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 72b387d7b7204255cf5d224056812e6eac893e10..03e09c289cc4f6005df04147f84bf09efb674763 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -59,5 +57,5 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
 
index 9b69594bd5a38762ad23c9298b71cd7002f9e85b..a839a8b54a796a149028d1d47f1efd31aa8477da 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -60,4 +58,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
+
index 8c68e1d398b1eda97295cbdba9341b30062d0caa..1cb0f0685f7d3bf67d7e683fedfa95cd505ed460 100644 (file)
@@ -27,8 +27,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -60,5 +58,4 @@ namespace System.Configuration
                }
        }
 }
-#endif
 
index 7e1149b4113990a7f40946c94743d14f70a18665..54c1fd85aa6cc0415b032e97b42bae4b18ea5595 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 
 namespace System.Configuration
@@ -75,4 +74,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 7723c130d5e2c03388f7217410ae88750ae394bc..cd1b2d7e2b11af08651096ec7277ccf0304285b0 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 namespace System.Configuration
 {
        [AttributeUsage (AttributeTargets.Property)]
@@ -75,4 +73,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index c58445465891af890fb8e52c132e5cf9aed0350c..6be4bc02a17758993f928a6908f37948aceec999 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -53,4 +51,3 @@ namespace System.Configuration
        }
 }
 
-#endif
index 64ae7913dbb4a84137157d17970af9f6a4e4d51d..4713a1d4a373cd0530ba6431a1367ef609149b1b 100644 (file)
@@ -26,7 +26,6 @@
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
 using System;
 using System.IO;
 
@@ -34,4 +33,3 @@ namespace System.Configuration {
        public delegate void ValidatorCallback (object o);
 }
 
-#endif
index 152d0a2c1a3f05ee6e68aee19b1f053ef36a9d64..3739d6504e5a35d0ff2e0fa32afe9d00c1eadffe 100644 (file)
@@ -26,8 +26,6 @@
 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
 //
 
-#if NET_2_0
-
 using System.ComponentModel;
 using System.Globalization;
 
@@ -53,4 +51,3 @@ namespace System.Configuration
        }
 }
 
-#endif
diff --git a/mcs/class/System.Configuration/System.Configuration_test_net_2_0.dll.config b/mcs/class/System.Configuration/System.Configuration_test_net_2_0.dll.config
new file mode 120000 (symlink)
index 0000000..6f31b34
--- /dev/null
@@ -0,0 +1 @@
+Test/App.config
\ No newline at end of file
diff --git a/mcs/class/System.Configuration/System.Configuration_test_net_4_0.dll.config b/mcs/class/System.Configuration/System.Configuration_test_net_4_0.dll.config
new file mode 120000 (symlink)
index 0000000..6f31b34
--- /dev/null
@@ -0,0 +1 @@
+Test/App.config
\ No newline at end of file
diff --git a/mcs/class/System.Configuration/System.Configuration_test_net_4_5.dll.config b/mcs/class/System.Configuration/System.Configuration_test_net_4_5.dll.config
new file mode 120000 (symlink)
index 0000000..6f31b34
--- /dev/null
@@ -0,0 +1 @@
+Test/App.config
\ No newline at end of file
diff --git a/mcs/class/System.Configuration/Test/App.config b/mcs/class/System.Configuration/Test/App.config
new file mode 100644 (file)
index 0000000..ac4ae1b
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<configuration>
+       <connectionStrings>
+               <add name="test-connstring"
+                       connectionString="Server=(local);Initial Catalog=someDb;User Id=someUser;Password=somePassword;Application Name=someAppName;Min Pool Size=5;Max Pool Size=500;Connect Timeout=10;Connection Lifetime=29;" />
+       </connectionStrings>
+</configuration>
index f1a383110b2926d0fa2041a89d79b5b8acb270ce..613d0c10df54948e6d165cb5ef7ba9cd0b5f7c92 100644 (file)
@@ -611,5 +611,17 @@ namespace MonoTests.System.Configuration {
                                Assert.That (EvaluationContext != null, label);
                        }
                }
+
+
+               [Test]
+               public void TestConnectionStringRetrieval ()
+               {
+                       var connStringObj = ConfigurationManager.ConnectionStrings ["test-connstring"];
+                       Assert.IsNotNull (connStringObj);
+                       var connString = connStringObj.ConnectionString;
+                       Assert.IsFalse (String.IsNullOrEmpty (connString));
+                       Assert.AreEqual ("Server=(local);Initial Catalog=someDb;User Id=someUser;Password=somePassword;Application Name=someAppName;Min Pool Size=5;Max Pool Size=500;Connect Timeout=10;Connection Lifetime=29;",
+                                        connString);
+               }
        }
 }
index 0b3e9865cf872b893587e3cc262998da24c8de67..22252d68b9f44d0503f3a381dcaf75e5cea7d101 100644 (file)
@@ -14,10 +14,6 @@ ifeq (monodroid, $(PROFILE))
 LIB_MCS_FLAGS += -d:FEATURE_CORE_DLR,FEATURE_REFEMIT,ANDROID
 endif
 
-ifeq (monotouch, $(PROFILE))
-LIB_MCS_FLAGS += -d:FULL_AOT_RUNTIME
-endif
-
 ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
 LIB_MCS_FLAGS += -d:FEATURE_CORE_DLR,FEATURE_REFEMIT,FEATURE_PDBEMIT
 endif
index 0b8aea3a8fe039a256c4e71470b900a1f83a9cd5..9f335aea547160e27adf00924e7162f7da495adb 100644 (file)
@@ -566,8 +566,7 @@ namespace System.Collections.Generic {
 
                                empty_slot = NO_SLOT;
                                if (capacity > 0) {
-                                       table = new int[capacity];
-                                       slots = new T[capacity];
+                                       InitArrays(capacity);
 
                                        T[] tableArray = (T[]) si.GetValue("Elements", typeof(T[]));
                                        if (tableArray == null) 
index 955c4bb30046223bbf879ecc0efb6942898bd7c2..10e856a78e1e3fca4f1666575cbc5fce47cb501d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8F189E8F-4391-4E28-A66B-7ACB47381FFF}</ProjectGuid>\r
+    <ProjectGuid>{7E092751-BD4C-404C-960F-657A8D7DABCF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-build</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-build-1.csproj">\r
-      <Project>{C3638457-A40E-4E70-81B4-54ACB31DD76D}</Project>\r
+      <Project>{83D197B9-A796-4A0D-B8F9-930DD9415615}</Project>\r
       <Name>System\System-build-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-build.csproj">\r
-      <Project>{78F7614C-D0FE-49BE-9521-D2C7DD8A2C55}</Project>\r
+      <Project>{983EBE35-85B4-4D16-84AE-C3081CAE53EA}</Project>\r
       <Name>Mono.Posix\Mono.Posix-build</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0b1a3d8e603fa7bb10a4acba2078c72d80eb99b2..90364da6bf306e126f73abce5d4acea02d9c6d77 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</ProjectGuid>\r
+    <ProjectGuid>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a9371e03b383d2bb911fcde679dfd1ab904032b3..cfffdd43003338391da784520f64cc687385fc6b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2590BECB-2660-49C6-93B1-B9E7D0796214}</ProjectGuid>\r
+    <ProjectGuid>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cc7c7adac07f6ea3e47a36dd1d7da63da43d331e..20dcb9359d80eb6955f863d8bf64c3e06bbf7285 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</ProjectGuid>\r
+    <ProjectGuid>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9dd8da78fe61680344cd7ccc014870652e688043..8ba8ca49433bf263f12bc8115f5eab9bb98c9a8e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B4C23420-200F-44D0-AF16-0878A5CA5DFF}</ProjectGuid>\r
+    <ProjectGuid>{F116BD24-9523-4644-817E-E8B30B468F44}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0897ef05d9684b131e8f90ae33742cb0020d02f9..4e730ca7f1702f42a6867fdc7fc6d2e083981a04 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4E99F056-01A5-4105-B6C7-DF57DB5DE27E}</ProjectGuid>\r
+    <ProjectGuid>{05BFB001-279E-4E81-B12B-E281D0883D4F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2cd0cbeaafc5698c0b1b8a5ac999e012a08b853e..936da3758eb9aa5ca4990a7b3e1cd92d7d970ef9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E52212C3-8609-434F-A1B3-5A63C057C119}</ProjectGuid>\r
+    <ProjectGuid>{9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Core-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_5.csproj">\r
-      <Project>{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}</Project>\r
+      <Project>{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 005f0882ac6054af1f4e178830065b0ee32aa6a7..014cde469fa40cfd79d48db94249e05397586bba 100644 (file)
@@ -236,8 +236,18 @@ namespace System.IO.MemoryMappedFiles
                [DllImport ("libc", SetLastError=true)]
                static extern int open (string path, int flags, int access);
 
+#if MONODROID
+               [DllImport ("__Internal")]
+               static extern int monodroid_getpagesize ();
+
+               static int getpagesize ()
+               {
+                       return monodroid_getpagesize ();
+               }
+#else
                [DllImport ("libc")]
                static extern int getpagesize ();
+#endif
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                static extern long mono_filesize_from_path (string str);
index 143f57513f47f7ba7c38307bf8729162d48b5d95..b0528917b2c0c052d248dfea792d0fd0c0bad41d 100644 (file)
@@ -35,7 +35,9 @@
 
 using System;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
@@ -568,12 +570,48 @@ namespace System.Linq.Expressions {
 
                void EmitRelationalBinary (EmitContext ec)
                {
-                       if (!IsLifted)
+                       if (!IsLifted) {
                                EmitNonLiftedBinary (ec);
-                       else if (IsLiftedToNull)
+                               return;
+                       }
+
+                       if (IsLiftedToNull) {
                                EmitLiftedToNullBinary (ec);
-                       else
-                               EmitLiftedRelationalBinary (ec);
+                               return;
+                       }
+
+                       if (ConstantExpression.IsNull (right) && !ConstantExpression.IsNull (left) && left.Type.IsNullable ()) {
+                               EmitNullEquality (ec, left);
+                               return;
+                       }
+
+                       if (ConstantExpression.IsNull (left) && !ConstantExpression.IsNull (right) && right.Type.IsNullable ()) {
+                               EmitNullEquality (ec, right);
+                               return;
+                       }
+
+                       EmitLiftedRelationalBinary (ec);
+               }
+
+               void EmitNullEquality (EmitContext ec, Expression e)
+               {
+                       var ig = ec.ig;
+
+                       if (IsLiftedToNull) {
+                               e.Emit (ec);
+                               if (e.Type != typeof (void))
+                                       ig.Emit (OpCodes.Pop);
+
+                               ec.EmitNullableNew (typeof (bool?));
+                               return;
+                       }
+
+                       var se = ec.EmitStored (e);
+                       ec.EmitNullableHasValue (se);
+                       if (NodeType == ExpressionType.Equal) {
+                               ig.Emit (OpCodes.Ldc_I4_0);
+                               ig.Emit (OpCodes.Ceq);
+                       }               
                }
 
                void EmitLiftedUserDefinedOperator (EmitContext ec)
index 6d6d5dd60eca27dfa7da896d430566048555c914..6b1ba6ced51d3d444726d3f9f10a420398d7a773 100644 (file)
@@ -27,7 +27,9 @@
 //
 
 using System;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index 38a7b3cab66116f54649681a2016c64a5b4de9af..2ff30c8b81c538b11470a40c4e855c931ad48a95 100644 (file)
@@ -33,7 +33,9 @@
 
 using System;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
@@ -49,6 +51,12 @@ namespace System.Linq.Expressions {
                {
                        this.value = value;
                }
+               
+               internal static bool IsNull (Expression e)
+               {
+                       var c = e as ConstantExpression;
+                       return c != null && c.value == null;
+               }
 
 #if !FULL_AOT_RUNTIME
                internal override void Emit (EmitContext ec)
index 2069927b3066aed4119802c8272b32e1ee243406..b0013419f66ac34c66c551c325d47af42db2054f 100644 (file)
@@ -29,7 +29,9 @@
 using System;
 using System.Collections.ObjectModel;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index 8106c60f47d2607cc8ef501c40d95438fc5e6deb..4c8717396860e0358477aa06a8c077bc75bdcb30 100644 (file)
@@ -34,7 +34,9 @@ using System.Collections.ObjectModel;
 using System.Globalization;
 using System.Linq;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
@@ -50,11 +52,11 @@ namespace System.Linq.Expressions {
                internal const BindingFlags AllStatic = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.FlattenHierarchy;
                internal const BindingFlags All = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance | BindingFlags.FlattenHierarchy;
 
-               public ExpressionType NodeType {
+               public virtual ExpressionType NodeType {
                        get { return node_type; }
                }
 
-               public Type Type {
+               public virtual Type Type {
                        get { return type; }
                }
 
@@ -270,6 +272,12 @@ namespace System.Linq.Expressions {
 
                                        if (ltype == rtype && ultype == typeof (bool))
                                                return null;
+
+                                       if (ltype.IsNullable () && ConstantExpression.IsNull (right) && !ConstantExpression.IsNull (left))
+                                               return null;
+
+                                       if (rtype.IsNullable () && ConstantExpression.IsNull (left) && !ConstantExpression.IsNull (right))
+                                               return null;
                                }
 
                                if (oper_name == "op_LeftShift" || oper_name == "op_RightShift") {
@@ -390,12 +398,16 @@ namespace System.Linq.Expressions {
                                if (!left.Type.IsNullable () && !right.Type.IsNullable ()) {
                                        is_lifted = false;
                                        liftToNull = false;
-                                       type = typeof (bool);
+                                       type = typeof(bool);
                                } else if (left.Type.IsNullable () && right.Type.IsNullable ()) {
                                        is_lifted = true;
-                                       type = liftToNull ? typeof (bool?) : typeof (bool);
-                               } else
+                                       type = liftToNull ? typeof(bool?) : typeof(bool);
+                               } else if (ConstantExpression.IsNull (left) || ConstantExpression.IsNull (right)) {
+                                       is_lifted = true;
+                                       type = typeof (bool);
+                               } else {                        
                                        throw new InvalidOperationException ();
+                               }
                        } else {
                                var parameters = method.GetParameters ();
 
index f8e81498d15d0c104cbea8693d488fafb4d23802..3a44b594c9a7acb0860198da976179c4cec22cfe 100644 (file)
@@ -31,7 +31,7 @@ using System.Collections.ObjectModel;
 
 namespace System.Linq.Expressions {
 
-#if MONOTOUCH
+#if FULL_AOT_RUNTIME
        public
 #endif
        abstract class ExpressionVisitor {
index 0f4eadfd3428136e3ac4df8660c88a9f3a9d6967..3b76fe170e0eb2174e929f59ea3df6ec37f13822 100644 (file)
@@ -29,7 +29,9 @@
 using System;
 using System.Collections.Generic;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 using System.Runtime.CompilerServices;
 
 namespace System.Linq.Expressions {
index 92a40c6d4b7f220bf1591ba48ff3b976b833fd00..6e873b0c9b2d8b12c37a7362b4e0aaa9ff7e6620 100644 (file)
@@ -31,7 +31,10 @@ using System;
 using System.Collections.ObjectModel;
 using System.Collections.Generic;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
+
 
 namespace System.Linq.Expressions {
 
@@ -82,7 +85,7 @@ namespace System.Linq.Expressions {
 
                public Delegate Compile ()
                {
-#if TARGET_JVM || MONOTOUCH
+#if FULL_AOT_RUNTIME
                        return new System.Linq.jvm.Runner (this).CreateDelegate ();
 #else
                        var context = new CompilationContext ();
@@ -91,7 +94,7 @@ namespace System.Linq.Expressions {
 #endif
                }
 
-#if TARGET_JVM || MONOTOUCH
+#if FULL_AOT_RUNTIME
                internal Delegate Compile (System.Linq.jvm.ExpressionInterpreter interpreter)
                {
                        return new System.Linq.jvm.Runner (this, interpreter).CreateDelegate ();
index cf58105456810d348056be60d01d7f53ee5c1221..87329224dc215e059fc62116fac6c8b49ed2c34e 100644 (file)
@@ -28,7 +28,9 @@
 
 using System;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 using System.Text;
 
 namespace System.Linq.Expressions {
index bf0c6835c3fb9c351301af610b557d0881cbb1eb..8f6e026eee1d2b042d6c3af2256a72e394515e33 100644 (file)
@@ -28,7 +28,9 @@
 
 using System;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index 1a0255f4ea776b9f1fc36d7fc4d2a95919a1cab6..b7483d4fdc4b5db0810c44470e2059b748657f8d 100644 (file)
@@ -28,7 +28,9 @@
 
 using System;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index 3c320e63e30a2c4e375287fb3b633507d40caebc..51d16028b4304875e0480773efde79fd46870c2c 100644 (file)
@@ -29,7 +29,9 @@
 using System;
 using System.Collections.ObjectModel;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index ec10de5c5266d8fb05bb1d76e9ac076f85b0a61e..414acf3aa6592422b6a37f374491b62dd8ba206d 100644 (file)
@@ -29,7 +29,9 @@
 using System;
 using System.Collections.ObjectModel;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index 7f898689c0a796adb10d6fd09d2bab77d2683f2c..0e1e7d7d467e09caf59333b29b0e5b9f1cb8a664 100644 (file)
@@ -29,7 +29,9 @@
 using System;
 using System.Collections.ObjectModel;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index c30bec70537a335bae16f82adc8511281d05fd10..68ac8b6d770f16a2b07304030e54ea58a305c0a5 100644 (file)
@@ -30,7 +30,9 @@ using System;
 using System.Collections.ObjectModel;
 using System.Linq;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index 005d17569ec8d9c4943cd897e927b59b4bb0973d..48499f3d2e2af27db4b80f7e04ed4c8f675707ef 100644 (file)
@@ -29,7 +29,9 @@
 using System;
 using System.Collections.ObjectModel;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index 94bd0ea4475dd02c125aa06473877b73481f9300..3fce527e11cabd51063be272b508c88cc9f6316d 100644 (file)
@@ -28,7 +28,9 @@
 //
 
 using System;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index 2629c96c4f20e9c94d7198cfd29edbf4434f81a9..77f91e044d49a37e4f9d5b5a06f9aa5d58ea9b75 100644 (file)
@@ -27,7 +27,9 @@
 //
 
 using System;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index 4f6f9cb890d679651918e0c48e23a76d984df4d8..13a1a5a9b3c372e9a836ab9b4e82e504c1ae0d94 100644 (file)
@@ -28,7 +28,9 @@
 
 using System;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Linq.Expressions {
 
index 5a8985bbe69395ea482688710c969184c949f289..dc533d750343d52824c0d3ae1c27359cf2e6133b 100644 (file)
@@ -62,10 +62,10 @@ namespace System.Linq.Parallel
 
                public int this[int index] {
                        get {
-                               if (start + index <= count)
+                               if (index <= count)
                                        return start + index;
-                               else
-                                       return -1;
+
+                               return -1;
                        }
                        set {
                                throw new NotImplementedException();
index 512f97b27cb15619cd97894d61102b3cb895806d..f4c6de46ddb50c68421fa199ce2730429a8990f3 100644 (file)
@@ -56,7 +56,7 @@ namespace System.Threading {
                 * that are being made. The 3 lowest bits are used as flag to track "destructive" lock entries
                 * (i.e attempting to take the write lock with or without having acquired an upgradeable lock beforehand).
                 * All the remaining bits are intepreted as the actual number of reader currently using the lock
-                * (which mean the lock is limited to 4294967288 concurrent readers but since it's a high number there
+                * (which mean the lock is limited to 2^29 concurrent readers but since it's a high number there
                 * is no overflow safe guard to remain simple).
                 */
                int rwlock;
@@ -98,7 +98,7 @@ namespace System.Threading {
                 * instance are kept here.
                 */
                [ThreadStatic]
-               static IDictionary<int, ThreadLockState> currentThreadState;
+               static Dictionary<int, ThreadLockState> currentThreadState;
 
                /* Rwls tries to use this array as much as possible to quickly retrieve the thread-local
                 * informations so that it ends up being only an array lookup. When the number of thread
@@ -446,6 +446,12 @@ namespace System.Threading {
 
                public void Dispose ()
                {
+                       if (disposed)
+                               return;
+
+                       if (IsReadLockHeld || IsUpgradeableReadLockHeld || IsWriteLockHeld)
+                               throw new SynchronizationLockException ("The lock is being disposed while still being used");
+
                        disposed = true;
                }
 
@@ -519,18 +525,22 @@ namespace System.Threading {
                        get {
                                int tid = Thread.CurrentThread.ManagedThreadId;
 
-                               if (tid < fastStateCache.Length)
-                                       return fastStateCache[tid] == null ? (fastStateCache[tid] = new ThreadLockState ()) : fastStateCache[tid];
+                               return tid < fastStateCache.Length ?
+                                       fastStateCache [tid] ?? (fastStateCache[tid] = new ThreadLockState ()) :
+                                       GetGlobalThreadState (tid);
+                       }
+               }
 
-                               if (currentThreadState == null)
-                                       currentThreadState = new Dictionary<int, ThreadLockState> ();
+               ThreadLockState GetGlobalThreadState (int tid)
+               {
+                       if (currentThreadState == null)
+                               Interlocked.CompareExchange (ref currentThreadState, new Dictionary<int, ThreadLockState> (), null);
 
-                               ThreadLockState state;
-                               if (!currentThreadState.TryGetValue (id, out state))
-                                       currentThreadState[id] = state = new ThreadLockState ();
+                       ThreadLockState state;
+                       if (!currentThreadState.TryGetValue (id, out state))
+                               currentThreadState [id] = state = new ThreadLockState ();
 
-                               return state;
-                       }
+                       return state;
                }
 
                bool CheckState (ThreadLockState state, int millisecondsTimeout, LockState validState)
@@ -554,16 +564,11 @@ namespace System.Threading {
                        if (ctstate.Has (validState))
                                return true;
 
-                       CheckRecursionAuthorization (ctstate, validState);
-
-                       return false;
-               }
-
-               static void CheckRecursionAuthorization (LockState ctstate, LockState desiredState)
-               {
                        // In read mode you can just enter Read recursively
                        if (ctstate == LockState.Read)
                                throw new LockRecursionException ();                            
+
+                       return false;
                }
 
                static int CheckTimeout (TimeSpan timeout)
index d3c16f4fdef29d289cf79bfbd500806458d9f9c6..637d0c400dffd8384193b9dd29ed72f867654d6c 100644 (file)
@@ -74,6 +74,17 @@ namespace System
                                return new AdjustmentRule (dateStart, dateEnd, daylightDelta, daylightTransitionStart, daylightTransitionEnd);
                        }
 
+                       private AdjustmentRule (SerializationInfo info, StreamingContext context)
+                       {
+                               if (info == null)
+                                       throw new ArgumentNullException ("info");
+                               dateStart = (DateTime) info.GetValue ("DateStart", typeof (DateTime));
+                               dateEnd = (DateTime) info.GetValue ("DateEnd", typeof (DateTime));
+                               daylightDelta = (TimeSpan) info.GetValue ("DaylightDelta", typeof (TimeSpan));
+                               daylightTransitionStart = (TimeZoneInfo.TransitionTime) info.GetValue ("DaylightTransitionStart", typeof (TimeZoneInfo.TransitionTime));
+                               daylightTransitionEnd = (TimeZoneInfo.TransitionTime) info.GetValue ("DaylightTransitionEnd", typeof (TimeZoneInfo.TransitionTime));
+                       }
+                       
                        private AdjustmentRule (
                                DateTime dateStart,
                                DateTime dateEnd,
@@ -130,7 +141,13 @@ namespace System
                        public void GetObjectData (SerializationInfo info, StreamingContext context)
 #endif
                        {
-                               throw new NotImplementedException ();
+                               if (info == null)
+                                       throw new ArgumentNullException ("info");
+                               info.AddValue ("DateStart", DateStart);
+                               info.AddValue ("DateEnd", DateEnd);
+                               info.AddValue ("DaylightDelta", DaylightDelta);
+                               info.AddValue ("DaylightTransitionStart", DaylightTransitionStart);
+                               info.AddValue ("DaylightTransitionEnd", DaylightTransitionEnd);
                        }
 #if NET_4_0
                        void IDeserializationCallback.OnDeserialization (object sender)
@@ -138,7 +155,38 @@ namespace System
                        public void OnDeserialization (object sender)
 #endif
                        {
-                               throw new NotImplementedException ();
+                               try {
+                                       TimeZoneInfo.AdjustmentRule.Validate (dateStart, dateEnd, daylightDelta, 
+                                                                             daylightTransitionStart, daylightTransitionEnd);
+                               } catch (ArgumentException ex) {
+                                       throw new SerializationException ("invalid serialization data", ex);
+                               }
+                       }
+
+                       private static void Validate (
+                               DateTime dateStart,
+                               DateTime dateEnd,
+                               TimeSpan daylightDelta,
+                               TransitionTime daylightTransitionStart,
+                               TransitionTime daylightTransitionEnd)
+                       {
+                               if (dateStart.Kind != DateTimeKind.Unspecified || dateEnd.Kind != DateTimeKind.Unspecified)
+                                       throw new ArgumentException ("the Kind property of dateStart or dateEnd parameter does not equal DateTimeKind.Unspecified");
+
+                               if (daylightTransitionStart == daylightTransitionEnd)
+                                       throw new ArgumentException ("daylightTransitionStart parameter cannot equal daylightTransitionEnd parameter");
+
+                               if (dateStart.Ticks % TimeSpan.TicksPerDay != 0 || dateEnd.Ticks % TimeSpan.TicksPerDay != 0)
+                                       throw new ArgumentException ("dateStart or dateEnd parameter includes a time of day value");
+
+                               if (dateEnd < dateStart)
+                                       throw new ArgumentOutOfRangeException ("dateEnd is earlier than dateStart");
+
+                               if (daylightDelta > new TimeSpan (14, 0, 0) || daylightDelta < new TimeSpan (-14, 0, 0))
+                                       throw new ArgumentOutOfRangeException ("daylightDelta is less than -14 or greater than 14 hours");
+
+                               if (daylightDelta.Ticks % TimeSpan.TicksPerSecond != 0)
+                                       throw new ArgumentOutOfRangeException ("daylightDelta parameter does not represent a whole number of seconds");
                        }
                }
        }
index 9518191c849b440568cd1ab4d086ee0a01623add..a21edd6c93ee74a1f66de8d7b9fa5cf91d3fa983 100644 (file)
@@ -29,10 +29,231 @@ using System.Text;
 
 namespace System {
 
+       interface IAndroidTimeZoneDB {
+               IEnumerable<string>   GetAvailableIds ();
+               byte[]                GetTimeZoneData (string id);
+       }
+
+       [StructLayout (LayoutKind.Sequential, Pack=1)]
+       unsafe struct AndroidTzDataHeader {
+               public fixed byte signature [12];
+               public int        indexOffset;
+               public int        dataOffset;
+               public int        zoneTabOffset;
+       }
+
+       [StructLayout (LayoutKind.Sequential, Pack=1)]
+       unsafe struct AndroidTzDataEntry {
+               public fixed byte id [40];
+               public int        byteOffset;
+               public int        length;
+               public int        rawUtcOffset;
+       }
+
+       /*
+        * Android v4.3 Timezone support infrastructure.
+        *
+        * This is a C# port of libcore.util.ZoneInfoDB:
+        *
+        *    https://android.googlesource.com/platform/libcore/+/master/luni/src/main/java/libcore/util/ZoneInfoDB.java
+        *
+        * This is needed in order to read Android v4.3 tzdata files.
+        */
+       sealed class AndroidTzData : IAndroidTimeZoneDB {
+
+               internal static readonly string[] Paths = new string[]{
+                       Environment.GetEnvironmentVariable ("ANDROID_DATA") + "/misc/zoneinfo/tzdata",
+                       Environment.GetEnvironmentVariable ("ANDROID_ROOT") + "/usr/share/zoneinfo/tzdata",
+               };
+
+               string    tzdataPath;
+               Stream    data;
+               string    version;
+               string    zoneTab;
+
+               string[]  ids;
+               int[]     byteOffsets;
+               int[]     lengths;
+
+               public AndroidTzData (params string[] paths)
+               {
+                       foreach (var path in paths)
+                               if (LoadData (path)) {
+                                       tzdataPath = path;
+                                       return;
+                               }
+
+                       Console.Error.WriteLine ("Couldn't find any tzdata!");
+                       tzdataPath  = "/";
+                       version     = "missing";
+                       zoneTab     = "# Emergency fallback data.\n";
+                       ids         = new[]{ "GMT" };
+               }
+
+               public string Version {
+                       get {return version;}
+               }
+
+               public string ZoneTab {
+                       get {return zoneTab;}
+               }
+
+               bool LoadData (string path)
+               {
+                       if (!File.Exists (path))
+                               return false;
+                       try {
+                               data = File.OpenRead (path);
+                       } catch (IOException) {
+                               return false;
+                       } catch (UnauthorizedAccessException) {
+                               return false;
+                       }
+
+                       try {
+                               ReadHeader ();
+                               return true;
+                       } catch (Exception e) {
+                               Console.Error.WriteLine ("tzdata file \"{0}\" was present but invalid: {1}", path, e);
+                       }
+                       return false;
+               }
+
+               unsafe void ReadHeader ()
+               {
+                       int size   = System.Math.Max (Marshal.SizeOf (typeof (AndroidTzDataHeader)), Marshal.SizeOf (typeof (AndroidTzDataEntry)));
+                       var buffer = new byte [size];
+                       var header = ReadAt<AndroidTzDataHeader>(0, buffer);
+
+                       header.indexOffset    = NetworkToHostOrder (header.indexOffset);
+                       header.dataOffset     = NetworkToHostOrder (header.dataOffset);
+                       header.zoneTabOffset  = NetworkToHostOrder (header.zoneTabOffset);
+
+                       sbyte* s = (sbyte*) header.signature;
+                       string magic = new string (s, 0, 6, Encoding.ASCII);
+                       if (magic != "tzdata" || header.signature [11] != 0) {
+                               var b = new StringBuilder ();
+                               b.Append ("bad tzdata magic:");
+                               for (int i = 0; i < 12; ++i) {
+                                       b.Append (" ").Append (((byte) s [i]).ToString ("x2"));
+                               }
+                               throw new InvalidOperationException ("bad tzdata magic: " + b.ToString ());
+                       }
+
+                       version = new string (s, 6, 5, Encoding.ASCII);
+
+                       ReadIndex (header.indexOffset, header.dataOffset, buffer);
+                       ReadZoneTab (header.zoneTabOffset, checked ((int) data.Length) - header.zoneTabOffset);
+               }
+
+               unsafe T ReadAt<T> (long position, byte[] buffer)
+                       where T : struct
+               {
+                       int size = Marshal.SizeOf (typeof (T));
+                       if (buffer.Length < size)
+                               throw new InvalidOperationException ("Internal error: buffer too small");
+
+                       data.Position = position;
+                       int r;
+                       if ((r = data.Read (buffer, 0, size)) < size)
+                               throw new InvalidOperationException (
+                                               string.Format ("Error reading '{0}': read {1} bytes, expected {2}", tzdataPath, r, size));
+
+                       fixed (byte* b = buffer)
+                               return (T) Marshal.PtrToStructure ((IntPtr) b, typeof (T));
+               }
+
+               static int NetworkToHostOrder (int value)
+               {
+                       if (!BitConverter.IsLittleEndian)
+                               return value;
+
+                       return
+                               (((value >> 24) & 0xFF) |
+                                ((value >> 08) & 0xFF00) |
+                                ((value << 08) & 0xFF0000) |
+                                ((value << 24)));
+               }
+
+               unsafe void ReadIndex (int indexOffset, int dataOffset, byte[] buffer)
+               {
+                       int indexSize   = dataOffset - indexOffset;
+                       int entryCount  = indexSize / Marshal.SizeOf (typeof (AndroidTzDataEntry));
+                       int entrySize   = Marshal.SizeOf (typeof (AndroidTzDataEntry));
+
+                       byteOffsets   = new int [entryCount];
+                       ids           = new string [entryCount];
+                       lengths       = new int [entryCount];
+
+                       for (int i = 0; i < entryCount; ++i) {
+                               var entry = ReadAt<AndroidTzDataEntry>(indexOffset + (entrySize*i), buffer);
+                               var p     = (sbyte*) entry.id;
+
+                               byteOffsets [i]   = NetworkToHostOrder (entry.byteOffset) + dataOffset;
+                               ids [i]           = new string (p, 0, GetStringLength (p, 40), Encoding.ASCII);
+                               lengths [i]       = NetworkToHostOrder (entry.length);
+
+                               if (lengths [i] < Marshal.SizeOf (typeof (AndroidTzDataHeader)))
+                                       throw new InvalidOperationException ("Length in index file < sizeof(tzhead)");
+                       }
+               }
+
+               static unsafe int GetStringLength (sbyte* s, int maxLength)
+               {
+                       int len;
+                       for (len = 0; len < maxLength; len++, s++) {
+                               if (*s == 0)
+                                       break;
+                       }
+                       return len;
+               }
+
+               unsafe void ReadZoneTab (int zoneTabOffset, int zoneTabSize)
+               {
+                       byte[] zoneTab = new byte [zoneTabSize];
+
+                       data.Position = zoneTabOffset;
+
+                       int r;
+                       if ((r = data.Read (zoneTab, 0, zoneTab.Length)) < zoneTab.Length)
+                               throw new InvalidOperationException (
+                                               string.Format ("Error reading zonetab: read {0} bytes, expected {1}", r, zoneTabSize));
+
+                       this.zoneTab = Encoding.ASCII.GetString (zoneTab, 0, zoneTab.Length);
+               }
+
+               public IEnumerable<string> GetAvailableIds ()
+               {
+                       return ids;
+               }
+
+               public byte[] GetTimeZoneData (string id)
+               {
+                       int i = Array.BinarySearch (ids, id, StringComparer.Ordinal);
+                       if (i < 0)
+                               return null;
+
+                       int offset = byteOffsets [i];
+                       int length = lengths [i];
+                       var buffer = new byte [length];
+
+                       lock (data) {
+                               data.Position = offset;
+                               int r;
+                               if ((r = data.Read (buffer, 0, buffer.Length)) < buffer.Length)
+                                       throw new InvalidOperationException (
+                                                       string.Format ("Unable to fully read from file '{0}' at offset {1} length {2}; read {3} bytes expected {4}.",
+                                                               tzdataPath, offset, length, r, buffer.Length));
+                       }
+
+                       return buffer;
+               }
+       }
+
        partial class TimeZoneInfo {
 
                /*
-                * Android Timezone support infrastructure.
+                * Android < v4.3 Timezone support infrastructure.
                 *
                 * This is a C# port of org.apache.harmony.luni.internal.util.ZoneInfoDB:
                 *
@@ -48,34 +269,35 @@ namespace System {
                 * which succinctly describes why we can't just use the LIBC implementation in
                 * TimeZoneInfo.cs -- the "standard Unixy" directory structure is NOT used.
                 */
-               static class ZoneInfoDB {
+               sealed class ZoneInfoDB : IAndroidTimeZoneDB {
                        const int TimeZoneNameLength  = 40;
                        const int TimeZoneIntSize     = 4;
 
-                       static readonly string ZoneDirectoryName  = Environment.GetEnvironmentVariable ("ANDROID_ROOT") + "/usr/share/zoneinfo/";
-                       static readonly string ZoneFileName       = ZoneDirectoryName + "zoneinfo.dat";
-                       static readonly string IndexFileName      = ZoneDirectoryName + "zoneinfo.idx";
-                       const           string DefaultVersion     = "2007h";
-                       static readonly string VersionFileName    = ZoneDirectoryName + "zoneinfo.version";
+                       internal static readonly string ZoneDirectoryName  = Environment.GetEnvironmentVariable ("ANDROID_ROOT") + "/usr/share/zoneinfo/";
 
-                       static readonly object _lock = new object ();
+                       const    string ZoneFileName       = "zoneinfo.dat";
+                       const    string IndexFileName      = "zoneinfo.idx";
+                       const    string DefaultVersion     = "2007h";
+                       const    string VersionFileName    = "zoneinfo.version";
 
-                       static readonly string    version;
-                       static readonly string[]  names;
-                       static readonly int[]     starts;
-                       static readonly int[]     lengths;
-                       static readonly int[]     offsets;
+                       readonly string    zoneRoot;
+                       readonly string    version;
+                       readonly string[]  names;
+                       readonly int[]     starts;
+                       readonly int[]     lengths;
+                       readonly int[]     offsets;
 
-                       static ZoneInfoDB ()
+                       public ZoneInfoDB (string zoneInfoDB = null)
                        {
+                               zoneRoot = zoneInfoDB ?? ZoneDirectoryName;
                                try {
-                                       version = ReadVersion ();
+                                       version = ReadVersion (Path.Combine (zoneRoot, VersionFileName));
                                } catch {
                                        version = DefaultVersion;
                                }
 
                                try {
-                                       ReadDatabase (out names, out starts, out lengths, out offsets);
+                                       ReadDatabase (Path.Combine (zoneRoot, IndexFileName), out names, out starts, out lengths, out offsets);
                                } catch {
                                        names   = new string [0];
                                        starts  = new int [0];
@@ -84,16 +306,16 @@ namespace System {
                                }
                        }
 
-                       static string ReadVersion ()
+                       static string ReadVersion (string path)
                        {
-                               using (var file = new StreamReader (VersionFileName, Encoding.GetEncoding ("iso-8859-1"))) {
+                               using (var file = new StreamReader (path, Encoding.GetEncoding ("iso-8859-1"))) {
                                        return file.ReadToEnd ().Trim ();
                                }
                        }
 
-                       static void ReadDatabase (out string[] names, out int[] starts, out int[] lengths, out int[] offsets)
+                       void ReadDatabase (string path, out string[] names, out int[] starts, out int[] lengths, out int[] offsets)
                        {
-                               using (var file = File.OpenRead (IndexFileName)) {
+                               using (var file = File.OpenRead (path)) {
                                        var nbuf = new byte [TimeZoneNameLength];
 
                                        int numEntries = (int) (file.Length / (TimeZoneNameLength + 3*TimeZoneIntSize));
@@ -140,21 +362,21 @@ namespace System {
                                        ((nbuf [2] & 0xff) << 8) + (nbuf [3] & 0xff);
                        }
 
-                       internal static string Version {
+                       internal string Version {
                                get {return version;}
                        }
 
-                       internal static IEnumerable<string> GetAvailableIds ()
+                       public IEnumerable<string> GetAvailableIds ()
                        {
                                return GetAvailableIds (0, false);
                        }
 
-                       internal static IEnumerable<string> GetAvailableIds (int rawOffset)
+                       IEnumerable<string> GetAvailableIds (int rawOffset)
                        {
                                return GetAvailableIds (rawOffset, true);
                        }
 
-                       static IEnumerable<string> GetAvailableIds (int rawOffset, bool checkOffset)
+                       IEnumerable<string> GetAvailableIds (int rawOffset, bool checkOffset)
                        {
                                for (int i = 0; i < offsets.Length; ++i) {
                                        if (!checkOffset || offsets [i] == rawOffset)
@@ -162,21 +384,21 @@ namespace System {
                                }
                        }
 
-                       static TimeZoneInfo _GetTimeZone (string name)
+                       public byte[] GetTimeZoneData (string id)
                        {
                                int start, length;
-                               using (var stream = GetTimeZoneData (name, out start, out length)) {
+                               using (var stream = GetTimeZoneData (id, out start, out length)) {
                                        if (stream == null)
                                                return null;
                                        byte[] buf = new byte [length];
                                        Fill (stream, buf, buf.Length);
-                                       return TimeZoneInfo.ParseTZBuffer (name, buf, length);
+                                       return buf;
                                }
                        }
 
-                       static FileStream GetTimeZoneData (string name, out int start, out int length)
+                       FileStream GetTimeZoneData (string name, out int start, out int length)
                        {
-                               var f = new FileInfo (Path.Combine (ZoneDirectoryName, name));
+                               var f = new FileInfo (Path.Combine (zoneRoot, name));
                                if (f.Exists) {
                                        start   = 0;
                                        length  = (int) f.Length;
@@ -185,18 +407,55 @@ namespace System {
 
                                start = length = 0;
 
-                               int i = Array.BinarySearch (names, name);
+                               int i = Array.BinarySearch (names, name, StringComparer.Ordinal);
                                if (i < 0)
                                        return null;
 
                                start   = starts [i];
                                length  = lengths [i];
 
-                               var stream = File.OpenRead (ZoneFileName);
+                               var stream = File.OpenRead (Path.Combine (zoneRoot, ZoneFileName));
                                stream.Seek (start, SeekOrigin.Begin);
 
                                return stream;
                        }
+               }
+
+               static class AndroidTimeZones {
+
+                       static IAndroidTimeZoneDB db;
+
+                       static AndroidTimeZones ()
+                       {
+                               db = GetDefaultTimeZoneDB ();
+                       }
+
+                       static IAndroidTimeZoneDB GetDefaultTimeZoneDB ()
+                       {
+                               foreach (var p in AndroidTzData.Paths)
+                                       if (File.Exists (p))
+                                               return new AndroidTzData (AndroidTzData.Paths);
+                               if (Directory.Exists (ZoneInfoDB.ZoneDirectoryName))
+                                       return new ZoneInfoDB ();
+                               return null;
+                       }
+
+                       internal static IEnumerable<string> GetAvailableIds ()
+                       {
+                               return db == null
+                                       ? new string [0]
+                                       : db.GetAvailableIds ();
+                       }
+
+                       static TimeZoneInfo _GetTimeZone (string name)
+                       {
+                               if (db == null)
+                                       return null;
+                               byte[] buffer = db.GetTimeZoneData (name);
+                               if (buffer == null)
+                                       return null;
+                               return TimeZoneInfo.ParseTZBuffer (name, buffer, buffer.Length);
+                       }
 
                        internal static TimeZoneInfo GetTimeZone (string id)
                        {
@@ -211,7 +470,7 @@ namespace System {
 
                                try {
                                        return _GetTimeZone (id);
-                               } catch (Exception e) {
+                               } catch (Exception) {
                                        return null;
                                }
                        }
@@ -265,6 +524,8 @@ namespace System {
                                        return sign * (hour * 60) * 60;
                        }
 
+                       static readonly object _lock = new object ();
+
                        static TimeZoneInfo defaultZone;
                        internal static TimeZoneInfo Default {
                                get {
@@ -291,6 +552,54 @@ namespace System {
                                        return buf.ToString ();
                                return null;
                        }
+
+#if SELF_TEST
+                       /*
+                        * Compile:
+                        *    mcs  /out:tzi.exe /unsafe "/d:INSIDE_CORLIB;MONODROID;NET_4_0;LIBC;SELF_TEST" System/TimeZone*.cs ../../build/common/Consts.cs ../Mono.Options/Mono.Options/Options.cs
+                        * Prep:
+                        *    mkdir -p usr/share/zoneinfo
+                        *    android_root=`adb shell echo '$ANDROID_ROOT' | tr -d "\r"`
+                        *    adb pull $android_root/usr/share/zoneinfo usr/share/zoneinfo
+                        * Run:
+                        *    ANDROID_ROOT=`pwd` mono tzi.exe
+                        */
+                       static void Main (string[] args)
+                       {
+                               Func<IAndroidTimeZoneDB> c = () => GetDefaultTimeZoneDB ();
+                               Mono.Options.OptionSet p = null;
+                               p = new Mono.Options.OptionSet () {
+                                       { "T=", "Create AndroidTzData from {PATH}.", v => {
+                                                       c = () => new AndroidTzData (v);
+                                       } },
+                                       { "Z=", "Create ZoneInfoDB from {DIR}.", v => {
+                                                       c = () => new ZoneInfoDB (v);
+                                       } },
+                                       { "help", "Show this message and exit", v => {
+                                                       p.WriteOptionDescriptions (Console.Out);
+                                                       Environment.Exit (0);
+                                       } },
+                               };
+                               p.Parse (args);
+                               AndroidTimeZones.db = c ();
+                               Console.WriteLine ("DB type: {0}", AndroidTimeZones.db.GetType ().FullName);
+                               foreach (var id in GetAvailableIds ()) {
+                                       Console.Write ("name={0,-40}", id);
+                                       try {
+                                               TimeZoneInfo zone = _GetTimeZone (id);
+                                               if (zone != null)
+                                                       Console.Write (" {0}", zone);
+                                               else {
+                                                       Console.Write (" ERROR:null");
+                                               }
+                                       } catch (Exception e) {
+                                               Console.WriteLine ();
+                                               Console.Write ("ERROR: {0}", e);
+                                       }
+                                       Console.WriteLine ();
+                               }
+                       }
+#endif
                }
        }
 }
index a914ed19b3d2649b69b83215207bdf3fc1d842a0..d57df150f0554bb1d318dd787d2b71225cc726f6 100644 (file)
@@ -108,6 +108,26 @@ namespace System
                                return new TransitionTime (timeOfDay, month, week, dayOfWeek);
                        }
 
+                       private TransitionTime (SerializationInfo info, StreamingContext context)
+                       {
+                               if (info == null)
+                                       throw new ArgumentNullException ("info");
+                               timeOfDay = (DateTime) info.GetValue ("TimeOfDay", typeof (DateTime));
+                               month = (byte) info.GetValue ("Month", typeof (byte));
+                               week = (byte) info.GetValue ("Week", typeof (byte));
+                               day = (byte) info.GetValue ("Day", typeof (byte));
+                               dayOfWeek = (DayOfWeek) info.GetValue ("DayOfWeek", typeof (DayOfWeek));
+                               isFixedDateRule = (bool) info.GetValue ("IsFixedDateRule", typeof (bool));
+
+                               if (isFixedDateRule)
+                               {
+                                       week = -1;
+                                       dayOfWeek = (DayOfWeek) (-1);
+                               }
+                               if (!isFixedDateRule)                   
+                                       day = -1;
+                       }
+
                        private TransitionTime (
                                DateTime timeOfDay,
                                int month,
@@ -190,8 +210,24 @@ namespace System
                        public void GetObjectData (SerializationInfo info, StreamingContext context)
 #endif
                        {
-                               throw new NotImplementedException ();
-                       }
+                               if (info == null)
+                                       throw new ArgumentNullException ("info");
+                               info.AddValue ("TimeOfDay", TimeOfDay);
+                               info.AddValue ("Month", System.Convert.ToByte(Month));
+                               if (week > -1)
+                                       info.AddValue ("Week", System.Convert.ToByte(week));
+                               else 
+                                       info.AddValue ("Week", (byte) 1);
+                               if (day > -1)
+                                       info.AddValue ("Day", System.Convert.ToByte(day));
+                               else
+                                       info.AddValue ("Day", (byte) 1);
+                               if (dayOfWeek !=  ((System.DayOfWeek) (-1)))
+                                       info.AddValue ("DayOfWeek", dayOfWeek);
+                               else
+                                       info.AddValue ("DayOfWeek", DayOfWeek.Sunday);
+                               info.AddValue ("IsFixedDateRule", IsFixedDateRule);
+                       }       
        
                        public override bool Equals (object obj)
                        {
@@ -216,7 +252,47 @@ namespace System
                        public void OnDeserialization (object sender)
 #endif
                        {
-                               throw new NotImplementedException ();
+                               try {
+                                       TimeZoneInfo.TransitionTime.Validate (timeOfDay, month, week, day, dayOfWeek, isFixedDateRule);
+                               } catch (ArgumentException ex) {
+                                       throw new SerializationException ("invalid serialization data", ex);
+                               }
+                       }
+
+                       private static void Validate (DateTime timeOfDay, int month,int week, int day, DayOfWeek dayOfWeek, bool isFixedDateRule)
+                       {
+                               if (timeOfDay.Year != 1 || timeOfDay.Month != 1 || timeOfDay.Day != 1)
+                                       throw new ArgumentException ("timeOfDay parameter has a non-default date component");
+
+                               if (timeOfDay.Kind != DateTimeKind.Unspecified)
+                                       throw new ArgumentException ("timeOfDay parameter Kind's property is not DateTimeKind.Unspecified");
+
+                               if (timeOfDay.Ticks % TimeSpan.TicksPerMillisecond != 0)
+                                       throw new ArgumentException ("timeOfDay parameter does not represent a whole number of milliseconds");
+
+                               if (day < 1 || day > 31) {
+                                       if (!(!isFixedDateRule && day == -1))
+                                               throw new ArgumentOutOfRangeException ("day parameter is less than 1 or greater than 31");
+                               }
+
+                               if (week < 1 || week > 5) {
+                                       if (!(isFixedDateRule && week == -1))
+                                               throw new ArgumentOutOfRangeException ("week parameter is less than 1 or greater than 5");
+                               }
+
+                               if (month < 1 || month > 12)
+                                       throw new ArgumentOutOfRangeException ("month parameter is less than 1 or greater than 12");
+
+                               if (dayOfWeek != DayOfWeek.Sunday &&
+                                               dayOfWeek != DayOfWeek.Monday &&
+                                               dayOfWeek != DayOfWeek.Tuesday &&
+                                               dayOfWeek != DayOfWeek.Wednesday &&
+                                               dayOfWeek != DayOfWeek.Thursday &&
+                                               dayOfWeek != DayOfWeek.Friday &&
+                                               dayOfWeek != DayOfWeek.Saturday) {
+                                       if (!(isFixedDateRule && dayOfWeek == (DayOfWeek) (-1)))
+                                               throw new ArgumentOutOfRangeException ("dayOfWeek parameter is not a member od DayOfWeek enumeration");
+                               }
                        }
                }
        }
index ee440a4bd51daa99e02153f2e065e79b31adc04c..5663e4b9bb3ed25dc25f65136bce65185de9c48b 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  * System.TimeZoneInfo
  *
@@ -86,7 +87,7 @@ namespace System
                        get { 
                                if (local == null) {
 #if MONODROID
-                                       local = ZoneInfoDB.Default;
+                                       local = AndroidTimeZones.Default;
 #elif MONOTOUCH
                                        using (Stream stream = GetMonoTouchData (null)) {
                                                local = BuildFromStream ("Local", stream);
@@ -285,10 +286,17 @@ namespace System
 
                        if (this == TimeZoneInfo.Utc)
                                return DateTime.SpecifyKind (dateTime, DateTimeKind.Utc);
-
+                       
                        //FIXME: do not rely on DateTime implementation !
-                       if (this == TimeZoneInfo.Local)
+                       if (this == TimeZoneInfo.Local) 
+                       {
+#if NET_4_0
+                               return dateTime.ToLocalTime ();
+#else
                                return DateTime.SpecifyKind (dateTime.ToLocalTime (), DateTimeKind.Unspecified);
+#endif
+                       }
+
 
                        AdjustmentRule rule = GetApplicableRule (dateTime);
                
@@ -394,7 +402,7 @@ namespace System
                        }
 #endif
 #if MONODROID
-                       var timeZoneInfo = ZoneInfoDB.GetTimeZone (id);
+                       var timeZoneInfo = AndroidTimeZones.GetTimeZone (id);
                        if (timeZoneInfo == null)
                                throw new TimeZoneNotFoundException ();
                        return timeZoneInfo;
@@ -598,7 +606,15 @@ namespace System
                public void GetObjectData (SerializationInfo info, StreamingContext context)
 #endif
                {
-                       throw new NotImplementedException ();
+                       if (info == null)
+                               throw new ArgumentNullException ("info");
+                       info.AddValue ("Id", id);
+                       info.AddValue ("DisplayName", displayName);
+                       info.AddValue ("StandardName", standardDisplayName);
+                       info.AddValue ("DaylightName", daylightDisplayName);
+                       info.AddValue ("BaseUtcOffset", baseUtcOffset);
+                       info.AddValue ("AdjustmentRules", adjustmentRules);
+                       info.AddValue ("SupportsDaylightSavingTime", SupportsDaylightSavingTime);
                }
 
                //FIXME: change this to a generic Dictionary and allow caching for FindSystemTimeZoneById
@@ -619,8 +635,8 @@ namespace System
                                }
 #endif
 #if MONODROID
-                       foreach (string id in ZoneInfoDB.GetAvailableIds ()) {
-                               var tz = ZoneInfoDB.GetTimeZone (id);
+                       foreach (string id in AndroidTimeZones.GetAvailableIds ()) {
+                               var tz = AndroidTimeZones.GetTimeZone (id);
                                if (tz != null)
                                        systemTimeZones.Add (tz);
                        }
@@ -786,7 +802,54 @@ namespace System
                public void OnDeserialization (object sender)
 #endif
                {
-                       throw new NotImplementedException ();
+                       try {
+                                       TimeZoneInfo.Validate (id, baseUtcOffset, adjustmentRules);
+                               } catch (ArgumentException ex) {
+                                       throw new SerializationException ("invalid serialization data", ex);
+                               }
+               }
+
+               private static void Validate (string id, TimeSpan baseUtcOffset, AdjustmentRule [] adjustmentRules)
+               {
+                       if (id == null)
+                               throw new ArgumentNullException ("id");
+
+                       if (id == String.Empty)
+                               throw new ArgumentException ("id parameter is an empty string");
+
+                       if (baseUtcOffset.Ticks % TimeSpan.TicksPerMinute != 0)
+                               throw new ArgumentException ("baseUtcOffset parameter does not represent a whole number of minutes");
+
+                       if (baseUtcOffset > new TimeSpan (14, 0, 0) || baseUtcOffset < new TimeSpan (-14, 0, 0))
+                               throw new ArgumentOutOfRangeException ("baseUtcOffset parameter is greater than 14 hours or less than -14 hours");
+
+#if STRICT
+                       if (id.Length > 32)
+                               throw new ArgumentException ("id parameter shouldn't be longer than 32 characters");
+#endif
+
+                       if (adjustmentRules != null && adjustmentRules.Length != 0) {
+                               AdjustmentRule prev = null;
+                               foreach (AdjustmentRule current in adjustmentRules) {
+                                       if (current == null)
+                                               throw new InvalidTimeZoneException ("one or more elements in adjustmentRules are null");
+
+                                       if ((baseUtcOffset + current.DaylightDelta < new TimeSpan (-14, 0, 0)) ||
+                                                       (baseUtcOffset + current.DaylightDelta > new TimeSpan (14, 0, 0)))
+                                               throw new InvalidTimeZoneException ("Sum of baseUtcOffset and DaylightDelta of one or more object in adjustmentRules array is greater than 14 or less than -14 hours;");
+
+                                       if (prev != null && prev.DateStart > current.DateStart)
+                                               throw new InvalidTimeZoneException ("adjustment rules specified in adjustmentRules parameter are not in chronological order");
+                                       
+                                       if (prev != null && prev.DateEnd > current.DateStart)
+                                               throw new InvalidTimeZoneException ("some adjustment rules in the adjustmentRules parameter overlap");
+
+                                       if (prev != null && prev.DateEnd == current.DateStart)
+                                               throw new InvalidTimeZoneException ("a date can have multiple adjustment rules applied to it");
+
+                                       prev = current;
+                               }
+                       }
                }
                
                public string ToSerializedString ()
@@ -799,6 +862,19 @@ namespace System
                        return DisplayName;
                }
 
+               private TimeZoneInfo (SerializationInfo info, StreamingContext context)
+               {
+                       if (info == null)
+                               throw new ArgumentNullException ("info");
+                       id = (string) info.GetValue ("Id", typeof (string));
+                       displayName = (string) info.GetValue ("DisplayName", typeof (string));
+                       standardDisplayName = (string) info.GetValue ("StandardName", typeof (string));
+                       daylightDisplayName = (string) info.GetValue ("DaylightName", typeof (string));
+                       baseUtcOffset = (TimeSpan) info.GetValue ("BaseUtcOffset", typeof (TimeSpan));
+                       adjustmentRules = (TimeZoneInfo.AdjustmentRule []) info.GetValue ("AdjustmentRules", typeof (TimeZoneInfo.AdjustmentRule []));
+                       supportsDaylightSavingTime = (bool) info.GetValue ("SupportsDaylightSavingTime", typeof (bool));
+               }
+
                private TimeZoneInfo (string id, TimeSpan baseUtcOffset, string displayName, string standardDisplayName, string daylightDisplayName, TimeZoneInfo.AdjustmentRule [] adjustmentRules, bool disableDaylightSavingTime)
                {
                        if (id == null)
index cb4f58b31e0f4a7d94f4d9e86d90f7761448b0cb..128678f91f8a96405de8e80c18c48305e1873850 100644 (file)
@@ -98,12 +98,13 @@ namespace MonoTests.System.Linq.Expressions {
                }
 
                [Test]
-#if MOBILE
-               [Category ("NotWorking")] // String:Intern () is linked away
-#endif
                [ExpectedException (typeof (ArgumentException))]
                public void InstanceTypeDoesntMatchMethodDeclaringType ()
                {
+#if MOBILE
+                       // ensure that String.Intern won't be removed by the linker
+                       string s = String.Intern (String.Empty);
+#endif
                        Expression.Call (Expression.Constant (1), typeof (string).GetMethod ("Intern"));
                }
 
index 2ab978d51876f4e468d375dc9b74b98bd0a4188e..0fe89ea671075b2d1b4cc916ba211cc5bc61f49b 100644 (file)
@@ -163,6 +163,8 @@ namespace MonoTests.System.Linq.Expressions
                }
 
                [Test]
+               // #12987
+               [Category ("MobileNotWorking")]
                public void CoalesceNullableSlotIntoInteger ()
                {
                        var s = Expression.Parameter (typeof (Slot?), "s");
index 06612bdfa1820c312c899e87bfc69b27cde54db3..749d78e40f8dcec109c137a286ebb06c09054468 100644 (file)
@@ -458,5 +458,23 @@ namespace MonoTests.System.Linq.Expressions
                        Assert.AreEqual (false, eq (Foo.Bar, null));
                        Assert.AreEqual (true, eq (null, null));
                }
+
+               [Test]
+               public void NullableNullEqual ()
+               {
+                       var param = Expression.Parameter (typeof (DateTime?), "x");
+
+                       var node = Expression.Equal (param, Expression.Constant (null));
+
+                       Assert.IsTrue (node.IsLifted);
+                       Assert.IsFalse (node.IsLiftedToNull);
+                       Assert.AreEqual (typeof (bool), node.Type);
+                       Assert.IsNull (node.Method);
+
+                       var eq = Expression.Lambda<Func<DateTime?, bool>> (node, new [] { param }).Compile ();
+
+                       Assert.AreEqual (true, eq (null));
+                       Assert.AreEqual (false, eq (DateTime.Now));
+               }
        }
 }
index 30b6738d4474aaa837dc2f242582b00c6800cd67..f5559ae00ea98c4d6b1ced3571c68675e2efaf60 100644 (file)
@@ -608,15 +608,27 @@ namespace MonoTests.System.Linq {
                        AssertException<ArgumentNullException> (delegate () { ((IEnumerable<string>) null).Contains ("2", (IEqualityComparer<string>) EqualityComparer<string>.Default); });
                }
 
+               static void IsFalse(bool b, int[] data) {
+                       if (b) {
+                               Console.WriteLine (data.Contains (0));
+                               object o = null;
+                               o.ToString ();
+                               Assert.IsFalse (true);
+                       }
+                       //Console.WriteLine ("HIT!");
+               }
+
                [Test]
                public void ContainsTest ()
                {
                        int [] data = { 5, 2, 3, 1, 6 };
-
+                       ICollection<int> icoll = data;
 
                        // Contains<TSource> (TSource)
                        Assert.IsTrue (data.Contains (2));
-                       Assert.IsFalse (data.Contains (0));
+                       for (int i = 0; i < 50; ++i)
+                               Console.WriteLine (icoll.Contains (0));//Console.WriteLine (data.Contains (0));
+                       IsFalse (data.Contains (0), data);
 
                        // Contains<TSource> (TSource, IEqualityComparer<TSource>)
                        Assert.IsTrue (data.Contains (2, EqualityComparer<int>.Default));
index 2df6c2d40315491869c7051a959c67e74915536a..f48deafc490cefbc6a70907fb7e0690af404acfa 100644 (file)
@@ -682,7 +682,7 @@ namespace MonoTests.System.Linq
                }
                
                [Test]
-               public void RangeTestCase ()
+               public void Range ()
                {
                        ParallelTestHelper.Repeat (() => {
                                IEnumerable<int> sync  = Enumerable.Range(1, 1000);
@@ -691,7 +691,18 @@ namespace MonoTests.System.Linq
                                AreEquivalent (sync, async_res);
                        });
                }
-               
+       
+               [Test]
+               public void Range_StartOffset ()
+               {
+                       ParallelTestHelper.Repeat (() => {
+                               IEnumerable<int> sync  = Enumerable.Range (30, 10);
+                               IEnumerable<int> async_res = ParallelEnumerable.Range (30, 10);
+                               
+                               AreEquivalent (sync, async_res);
+                       });
+               }
+
                [Test]
                public void RepeatTestCase ()
                {
index 8b04c46b40e46c359266dffbf83620174581e238..aef9fffbb55ea934a8231c8678d1538a2f61d40a 100644 (file)
@@ -81,6 +81,42 @@ namespace MonoTests.System.Threading
                        }
                }
 
+               [Test]
+               public void Dispose_WithReadLock ()
+               {
+                       var rwl = new ReaderWriterLockSlim ();
+                       rwl.EnterReadLock ();
+                       try {
+                               rwl.Dispose ();
+                               Assert.Fail ("1");
+                       } catch (SynchronizationLockException) {
+                       }
+               }
+
+               [Test]
+               public void Dispose_WithWriteLock ()
+               {
+                       var rwl = new ReaderWriterLockSlim ();
+                       rwl.EnterWriteLock ();
+                       try {
+                               rwl.Dispose ();
+                               Assert.Fail ("1");
+                       } catch (SynchronizationLockException) {
+                       }
+               }
+
+               [Test]
+               public void Dispose_UpgradeableReadLock ()
+               {
+                       var rwl = new ReaderWriterLockSlim ();
+                       rwl.EnterUpgradeableReadLock ();
+                       try {
+                               rwl.Dispose ();
+                               Assert.Fail ("1");
+                       } catch (SynchronizationLockException) {
+                       }
+               }
+
                [Test]
                public void TryEnterReadLock_OutOfRange ()
                {
index 6fd2412f9678039dbe10a9fd17437b2989abae87..e9b0d6f1a8e3e8b503c867112e25aa9f028c1bea 100644 (file)
@@ -1,4 +1,6 @@
 using System;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
 using NUnit.Framework;
 
 #if NET_2_0
@@ -89,7 +91,28 @@ namespace MonoTests.System
                                TimeZoneInfo.TransitionTime daylightTransitionEnd = TimeZoneInfo.TransitionTime.CreateFixedDateRule (new DateTime (1,1,1,2,0,0), 10, 11);
                                TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (dateStart, dateEnd, new TimeSpan (55), daylightTransitionStart, daylightTransitionEnd);
                        }
-               }       
+               }
+       
+               [TestFixture]
+               public class NonExceptional
+               {
+                       [Test]
+                       public void Serialization_Deserialization ()
+                       {
+                               TimeZoneInfo.TransitionTime start = TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1,1,1,1,0,0), 3, 5, DayOfWeek.Sunday);
+                               TimeZoneInfo.TransitionTime end = TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1,1,1,2,0,0), 10, 5, DayOfWeek.Sunday);
+                               TimeZoneInfo.AdjustmentRule rule = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (DateTime.MinValue.Date, DateTime.MaxValue.Date, new TimeSpan (1,0,0), start, end);
+                               MemoryStream stream = new MemoryStream ();
+                               BinaryFormatter formatter = new BinaryFormatter ();
+                               formatter.Serialize (stream, rule);
+                               stream.Position = 0;
+                               TimeZoneInfo.AdjustmentRule deserialized = (TimeZoneInfo.AdjustmentRule) formatter.Deserialize (stream);
+                               stream.Close ();
+                               stream.Dispose ();
+
+                               Assert.IsTrue (rule.Equals (deserialized));
+                       }
+               }
        }       
 }
 #endif
index 8dd8263fd223fb82fdb01679173c6c948460538e..38fdac701451664a1f9a7aa9408ab7a82c9d8c51 100644 (file)
@@ -1,5 +1,7 @@
 
 using System;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
 using NUnit.Framework;
 
 #if NET_2_0
@@ -106,6 +108,34 @@ namespace MonoTests.System
                                Assert.IsFalse (tt2.Equals (tt1), "1!=2");
                                Assert.IsFalse (tt1.Equals (tt2), "2!=1");
                        }
+                       
+                       [Test]
+                       public void Serialize_Deserialize_FloatingDateRule ()
+                       {
+                               TimeZoneInfo.TransitionTime floatingDateRule = TimeZoneInfo.TransitionTime.CreateFloatingDateRule(new DateTime(1, 1, 1, 1, 0, 0), 3, 5, DayOfWeek.Sunday);
+                               MemoryStream stream = new MemoryStream ();
+                               BinaryFormatter formatter = new BinaryFormatter ();
+                               formatter.Serialize (stream, floatingDateRule);
+                               stream.Position = 0;
+                               TimeZoneInfo.TransitionTime deserialized = (TimeZoneInfo.TransitionTime) formatter.Deserialize (stream);
+                               stream.Close ();
+                               stream.Dispose ();
+                               Assert.AreEqual (floatingDateRule, deserialized);
+                       }
+
+                       [Test]
+                       public void Serialize_Deserialize_FixedDateRule ()
+                       {
+                               TimeZoneInfo.TransitionTime fixedDateRule = TimeZoneInfo.TransitionTime.CreateFixedDateRule(new DateTime(1, 1, 1, 1, 0, 0), 3, 12);
+                               MemoryStream stream = new MemoryStream ();
+                               BinaryFormatter formatter = new BinaryFormatter ();
+                               formatter.Serialize (stream, fixedDateRule);
+                               stream.Position = 0;
+                               TimeZoneInfo.TransitionTime deserialized = (TimeZoneInfo.TransitionTime) formatter.Deserialize (stream);
+                               stream.Close ();
+                               stream.Dispose ();
+                               Assert.AreEqual (fixedDateRule, deserialized);
+                       }
                }
        }
 }
index 06de33e9ab7262167833ebc8d6cf178b04c4713f..89b4ec11d2ad88cb94fced541c14b552789ad33c 100644 (file)
@@ -27,6 +27,8 @@
  */
 
 using System;
+using System.IO;
+using System.Runtime.Serialization.Formatters.Binary;
 using System.Collections;
 
 using NUnit.Framework;
@@ -385,6 +387,23 @@ namespace MonoTests.System
                
                        }
 
+
+                       [Test]
+                       public void ConvertFromToLocal ()
+                       {
+                               DateTime utc = DateTime.UtcNow;
+                               Assert.AreEqual(utc.Kind, DateTimeKind.Utc);
+                               DateTime converted = TimeZoneInfo.ConvertTimeFromUtc(utc, TimeZoneInfo.Local);
+                       #if NET_4_0
+                               Assert.AreEqual(DateTimeKind.Local, converted.Kind);
+                       #else
+                               Assert.AreEqual(DateTimeKind.Unspecified, converted.Kind);
+                       #endif
+                               DateTime back = TimeZoneInfo.ConvertTimeToUtc(converted, TimeZoneInfo.Local);
+                               Assert.AreEqual(back.Kind, DateTimeKind.Utc);
+                               Assert.AreEqual(utc, back);
+                       }
+
                        [Test]
                        public void ConvertToTimeZone ()
                        {
@@ -657,6 +676,27 @@ namespace MonoTests.System
                                Assert.IsTrue (utc.HasSameRules (custom));
                        }
                }
+
+               [TestFixture]
+               public class SerializationTests
+               {
+                       [Test]
+                       public void Serialization_Deserialization ()
+                       {
+                               TimeZoneInfo.TransitionTime start = TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1,1,1,1,0,0), 3, 5, DayOfWeek.Sunday);
+                               TimeZoneInfo.TransitionTime end = TimeZoneInfo.TransitionTime.CreateFloatingDateRule (new DateTime (1,1,1,2,0,0), 10, 5, DayOfWeek.Sunday);
+                               TimeZoneInfo.AdjustmentRule rule = TimeZoneInfo.AdjustmentRule.CreateAdjustmentRule (DateTime.MinValue.Date, DateTime.MaxValue.Date, new TimeSpan (1,0,0), start, end);
+                               TimeZoneInfo london = TimeZoneInfo.CreateCustomTimeZone ("Europe/London", new TimeSpan (0), "Europe/London", "British Standard Time", "British Summer Time", new TimeZoneInfo.AdjustmentRule [] {rule});
+                               MemoryStream stream = new MemoryStream ();
+                               BinaryFormatter formatter = new BinaryFormatter ();
+                               formatter.Serialize (stream, london);
+                               stream.Position = 0;
+                               TimeZoneInfo deserialized = (TimeZoneInfo) formatter.Deserialize (stream);
+                               stream.Close ();
+                               stream.Dispose ();
+                               Assert.IsTrue (london.Equals (deserialized));
+                       }
+               }
        }
 }
 #endif
index 781a7b174b6bae12a690791a103c9182a9729f3f..4f5e43d10427d4e18429b5a89ffdae232a0bd3e4 100644 (file)
@@ -3,8 +3,8 @@
 ../../build/common/Consts.cs
 ../../build/common/Locale.cs
 ../../build/common/MonoTODOAttribute.cs
-../corlib/Mono.Security.Cryptography/CryptoTools.cs
-../corlib/Mono.Security.Cryptography/SymmetricTransform.cs
+../Mono.Security/Mono.Security.Cryptography/CryptoTools.cs
+../Mono.Security/Mono.Security.Cryptography/SymmetricTransform.cs
 ../corlib/System.Threading/AtomicBoolean.cs
 ../corlib/System.Collections.Generic/CollectionDebuggerView.cs
 ../corlib/System.Collections/HashPrimeNumbers.cs
diff --git a/mcs/class/System.Core/mobile_static_System.Core.dll.sources b/mcs/class/System.Core/mobile_static_System.Core.dll.sources
new file mode 100644 (file)
index 0000000..55e204a
--- /dev/null
@@ -0,0 +1,7 @@
+#include mobile_System.Core.dll.sources
+#include static_System.Core.dll.sources
+System.Linq.jvm/Conversion.cs
+System.Linq.jvm/ExpressionInterpreter.cs
+System.Linq.jvm/Runner.cs
+System.Linq.jvm/Math.cs
+System/TimeZoneInfo.MonoTouch.cs
index 51cb4e882d9c3bab278ae6fdcbf59257cab36725..c681f5a1f8b7bd6df177f0dce7e23161cf15a96f 100644 (file)
@@ -3,6 +3,7 @@
 #include dynamic_System.Core.dll.sources
 
 System/TimeZoneInfo.Android.cs
+System.Security.Cryptography/AesCryptoServiceProvider.cs
 System.Security.Cryptography/AesManaged.cs
 System.Security.Cryptography/AesTransform.cs
 
index 8d9fff04faaa017049ce2118b85dfc9b1b307b14..4dbb4ff12602b8f31991bf6067231db2e0362575 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{295579FC-90FD-4416-94E2-E032336DFEA6}</ProjectGuid>\r
+    <ProjectGuid>{26F9A955-8501-4FDB-8359-8672DE49142E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ab8ebdc032c76ee22b57b7642d3199f9eb56ea89..81b966efb6e25c33ea33ea50fb222f22112ab3dd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A0DAB116-953E-4F95-87EB-E3887533179A}</ProjectGuid>\r
+    <ProjectGuid>{BEF6602C-3A78-4DAE-AD4D-724FE0A4B848}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ae71fc348b2356d2c13e6b6bd59a8d0e07148fe4..e989c13150c470eeceb123adeb89ec02713f1879 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{99723243-801A-4F86-A51B-F88737F567B2}</ProjectGuid>\r
+    <ProjectGuid>{CE1B7764-9679-451A-9ACB-697088B116F1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 50dca69e862ff8e970f59089b5449f2c45685456..fec95441dfd9b54b6d8882ce781ed84f395843ba 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{989AD83B-C73F-4C62-B240-9A94B0CC8502}</ProjectGuid>\r
+    <ProjectGuid>{A0960885-361A-44AF-A38A-67E8D3CAF9E0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_2_0.csproj">\r
-      <Project>{295579FC-90FD-4416-94E2-E032336DFEA6}</Project>\r
+      <Project>{26F9A955-8501-4FDB-8359-8672DE49142E}</Project>\r
       <Name>System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 34bbd0da8edcb6294945a3ed8c373fe24f4192d4..9252699ac56b61086186b53c1f5bb80b742f8fd0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{802E3624-00CF-4576-8AA4-A738C5280F23}</ProjectGuid>\r
+    <ProjectGuid>{163F90CA-4924-437F-87A8-519B74FF2D07}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_0.csproj">\r
-      <Project>{A0DAB116-953E-4F95-87EB-E3887533179A}</Project>\r
+      <Project>{BEF6602C-3A78-4DAE-AD4D-724FE0A4B848}</Project>\r
       <Name>System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0ab0ffdf38f1e2380d579f036798cc89942bb829..f25f237edcf29e2757b4dda5cca4a1f24e70b8f2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{EAFF9F04-A5B5-458E-860B-76D7B2B7D745}</ProjectGuid>\r
+    <ProjectGuid>{53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.DataSetExtensions-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_5.csproj">\r
-      <Project>{99723243-801A-4F86-A51B-F88737F567B2}</Project>\r
+      <Project>{CE1B7764-9679-451A-9ACB-697088B116F1}</Project>\r
       <Name>System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9b7ce9599310c8db9b6d5be87252bac3ed33159b..ad4174ca42a3b0f5d9857841f85cdc6c3accbc30 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</ProjectGuid>\r
+    <ProjectGuid>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b66f9091368e912321abcd4626893c67ca510c4d..49a70de97e26cc42e8782979925a4dabdeb4c577 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</ProjectGuid>\r
+    <ProjectGuid>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8ce46f2db4514b4bc06efa3dee951db29453cc44..5395da7777078796232facbbec44710869daaeb1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</ProjectGuid>\r
+    <ProjectGuid>{D5F1C909-8875-4D37-8CC1-30851258C594}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1445f4513c76560afc4a04158d4335d3f14113db..214d683d36609cf3836e66cee52ee065055d5aa2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5502AC97-CAE5-417B-9F53-7EFF385AC043}</ProjectGuid>\r
+    <ProjectGuid>{3FBFC2E2-4F2E-413D-9384-503983808EAA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0a510606a526aeb36f00ddf9b79faf123634c079..83df81b9eb02fb154cb2311c11c4ae61d1bd0bec 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8446FA9C-8FA9-4D96-B332-FB0C394DA2A0}</ProjectGuid>\r
+    <ProjectGuid>{F5DF0317-B446-4E44-BB0D-0B36CB9455FE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bd71ef697794f46b02fcc7d916906c36858e6a79..6096bd32c5375430319ca4926e1ba3330fe62598 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1FC59170-4045-4778-81DA-EC3EAAE7670C}</ProjectGuid>\r
+    <ProjectGuid>{1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Linq-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5bbe6ec01331bdd5217efba088f82b2fe2e2cc93..4a5bf0b34df631b973f130d7fd1380739aedef9e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CBCB1364-E9BC-4588-863C-F239F943FEFB}</ProjectGuid>\r
+    <ProjectGuid>{EB0B8D4B-E8CF-44EA-A8A8-22B5057ABC6D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 31eeaa6ec64b3b54182452f015450b653dbbca69..38cb93b1749cd3a3ad59e5aa055be35b9cb319e6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2837229A-230B-4279-B293-1B033C65DA8A}</ProjectGuid>\r
+    <ProjectGuid>{4679C254-E945-4B94-AFAE-7FD492EF140C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6178443b862b4f41b02350b9e558c9cfcbf5709c..013b396da585ee5d98b1a3890121b1a9a0dcd617 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7443D41A-D078-49E1-9A88-87902B6EDFFC}</ProjectGuid>\r
+    <ProjectGuid>{7EB08776-A0D3-415F-960A-58869EDFDA02}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c758c5b89ac96900f8904f5fabbf9c6fd6ebf425..04b2b1c111ba06b89f5741ad86cee1b24f92fbdd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD3D10BB-4B00-49B9-B316-B0DD9D3F8D69}</ProjectGuid>\r
+    <ProjectGuid>{1C1E7C2D-0085-46DA-B17F-13FA75FE1DFB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.OracleClient\System.Data.OracleClient-net_2_0.csproj">\r
-      <Project>{CBCB1364-E9BC-4588-863C-F239F943FEFB}</Project>\r
+      <Project>{EB0B8D4B-E8CF-44EA-A8A8-22B5057ABC6D}</Project>\r
       <Name>System.Data.OracleClient\System.Data.OracleClient-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2cd4cd7606b28be2437008f9b8310cbaf8e6e81e..c77bebf67e52c8ca0903ce38f03deb5fd236e9da 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{24117801-22A1-4986-8BBE-4CD289586F90}</ProjectGuid>\r
+    <ProjectGuid>{619A8BFB-F3EC-4473-B156-B407A611513B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.OracleClient\System.Data.OracleClient-net_4_0.csproj">\r
-      <Project>{2837229A-230B-4279-B293-1B033C65DA8A}</Project>\r
+      <Project>{4679C254-E945-4B94-AFAE-7FD492EF140C}</Project>\r
       <Name>System.Data.OracleClient\System.Data.OracleClient-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 34375dde3ab2a551820fc851ada854a4647a7e7f..35fd05b0e6dc68cc468081776e62733e22765f11 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{93ABF627-F02A-4409-9BAE-0E564A43FC9A}</ProjectGuid>\r
+    <ProjectGuid>{228F1876-102C-4817-875C-1D80F17BADF9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.OracleClient-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.OracleClient\System.Data.OracleClient-net_4_5.csproj">\r
-      <Project>{7443D41A-D078-49E1-9A88-87902B6EDFFC}</Project>\r
+      <Project>{7EB08776-A0D3-415F-960A-58869EDFDA02}</Project>\r
       <Name>System.Data.OracleClient\System.Data.OracleClient-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 743a3c72ed81aaacc5c0dfb9c184e8092a48fcff..3e1ce93078593b520eef6e119a8529de49534402 100644 (file)
@@ -225,6 +225,11 @@ namespace System.Data.OracleClient.Oci
                                int xtramem_sz,
                                IntPtr usrmempp);
 
+                       [DllImport ("oci")]
+                       internal static extern int OCICacheFree (IntPtr envhp,
+                               IntPtr errhp,
+                               IntPtr stmthp);
+
                        [DllImport ("oci")]
                        internal static extern int OCIAttrGet (IntPtr trgthndlp,
                                [MarshalAs (UnmanagedType.U4)] OciHandleType trghndltyp,
@@ -464,7 +469,7 @@ namespace System.Data.OracleClient.Oci
                                [MarshalAs (UnmanagedType.SysUInt)] int dstlen,
                                byte [] src,
                                [MarshalAs (UnmanagedType.SysUInt)] int srclen,
-                               [MarshalAs (UnmanagedType.SysUInt)] out int rsize);
+                               out long rsize);
 
                        [DllImport ("oci")]
                        internal static extern int OCIUnicodeToCharSet (
@@ -473,7 +478,7 @@ namespace System.Data.OracleClient.Oci
                                [MarshalAs (UnmanagedType.SysUInt)] int dstlen,
                                [MarshalAs (UnmanagedType.LPWStr)] string src,
                                [MarshalAs (UnmanagedType.SysUInt)] int srclen,
-                               [MarshalAs (UnmanagedType.SysUInt)] out int rsize);
+                               out long rsize);
                }
 
                #endregion
@@ -774,6 +779,16 @@ namespace System.Data.OracleClient.Oci
                                xtramem_sz, usrmempp);
                }
 
+               internal static int OCICacheFree (IntPtr envhp,
+                       IntPtr svchp,
+                       IntPtr stmthp)
+               {
+                       #if TRACE
+                       Trace.WriteLineIf(traceOci, "OCICacheFree", "OCI");
+                       #endif
+                       return OciNativeCalls.OCICacheFree (envhp, svchp, stmthp);
+               }
+
                internal static int OCIAttrGet (IntPtr trgthndlp,
                        OciHandleType trghndltyp,
                        out IntPtr attributep,
@@ -1185,24 +1200,37 @@ namespace System.Data.OracleClient.Oci
                        byte [] src,
                        out int rsize)
                {
+                       int rc;
+                       long retSize;
+
                        #if TRACE
                        Trace.WriteLineIf(traceOci, "OCICharSetToUnicode", "OCI");
                        #endif
-
-                       return OciNativeCalls.OCICharSetToUnicode (svchp, dst, dst!=null ? dst.Capacity : 0, src, src.Length, out rsize);
+                       rc = OciNativeCalls.OCICharSetToUnicode (svchp, dst,
+                                               (dst != null ? dst.Capacity : 0), 
+                                               src, src.Length, out retSize);
+                       rsize = (int) retSize;
+                       return(rc);
                }
 
                internal static int OCIUnicodeToCharSet (
                        IntPtr svchp,
                        byte [] dst,
-                       [MarshalAs (UnmanagedType.LPWStr)] string src,
-                       [MarshalAs (UnmanagedType.SysUInt)] out int rsize)
+                       string src,
+                       out int rsize)
                {
+                       int rc;
+                       long retSize;
+
                        #if TRACE
                        Trace.WriteLineIf(traceOci, "OCIUnicodeToCharSet", "OCI");
                        #endif
 
-                       return OciNativeCalls.OCIUnicodeToCharSet (svchp, dst, dst!=null ? dst.Length : 0, src, src.Length, out rsize);
+                       rc = OciNativeCalls.OCIUnicodeToCharSet (svchp, dst,
+                                       (dst != null ? dst.Length : 0), 
+                                       src, src.Length, out retSize);
+                       rsize = (int) retSize;
+                       return(rc);
                }
 
                [DllImport ("oci")]
index 31afb5cb3246e972c630e1a79980dc261064d5cf..8bbd545fa4be8cdcec7472e477d98cbbaff4b7ca 100644 (file)
@@ -32,6 +32,7 @@ namespace System.Data.OracleClient.Oci {
                bool moreResults;
                OciServiceHandle serviceHandle;
                ArrayList values;
+               ArrayList parm;
                OracleCommand command;
        
                #endregion // Fields
@@ -82,12 +83,11 @@ namespace System.Data.OracleClient.Oci {
                                
                                if (disposing) {
                                        if (values != null) {
-                                               foreach (OciDefineHandle h in values)
+                                               foreach (OciDefineHandle h in values) 
                                                        h.Dispose ();
                                                values = null;
                                        }
                                }
-                               
                                base.Dispose (disposing);
                        }
                }
@@ -110,6 +110,9 @@ namespace System.Data.OracleClient.Oci {
 
                        OciParameterDescriptor output = new OciParameterDescriptor (this, handle);
                        output.ErrorHandle = ErrorHandle;
+                       if (parm == null)
+                               parm = new ArrayList();
+                       parm.Add(handle);
                        return output;
                }
 
@@ -228,6 +231,8 @@ namespace System.Data.OracleClient.Oci {
                        switch (status) {
                        case OciGlue.OCI_NO_DATA:
                                moreResults = false;
+                               foreach (IntPtr h in parm)
+                                       OciCalls.OCIDescriptorFree(h, OciHandleType.Parameter);
                                break;
                        case OciGlue.OCI_DEFAULT:
                                moreResults = true;
index db39d3d551fe0ba6d4a1031cce61ca67fd66604e..eee81ab0c01f5563b97ca7abac235167c8b55c65 100644 (file)
@@ -27,6 +27,7 @@ using System.Data.Common;
 using System.Data.OracleClient.Oci;
 using System.Drawing.Design;
 using System.Text;
+using System.Threading;
 
 namespace System.Data.OracleClient
 {
@@ -705,7 +706,7 @@ namespace System.Data.OracleClient
 
                private void SafeDisposeHandle (OciStatementHandle h)
                {
-                       if (h != null && h != preparedStatement)
+                       if (h != null && h != preparedStatement) 
                                h.Dispose();
                }
 
@@ -757,6 +758,9 @@ namespace System.Data.OracleClient
 
                protected override void Dispose (bool disposing)
                {
+                       if (preparedStatement != null) 
+                               OciCalls.OCIHandleFree(preparedStatement,
+                                                      OciHandleType.Statement);
                        if (disposing)
                                if (Parameters.Count > 0)
                                        foreach (OracleParameter parm in Parameters)
index df17716097dbae6007a10a25bcc7dea4e652ee27..6f11d970f0d46c04f10686f54d92b13fa113a130 100644 (file)
@@ -821,8 +821,11 @@ namespace System.Data.OracleClient
                                        if (direction == ParameterDirection.Output || 
                                                direction == ParameterDirection.InputOutput || 
                                                direction == ParameterDirection.ReturnValue) {
-
-                                               cursor = IntPtr.Zero;
+                                               if (cursor != IntPtr.Zero) {
+                                                       OciCalls.OCIHandleFree (cursor,
+                                                               OciHandleType.Statement);
+                                                       cursor = IntPtr.Zero;
+                                               }
                                                OciCalls.OCIHandleAlloc (connection.Environment,
                                                        out cursor,
                                                        OciHandleType.Statement,
index eb6dbd0490c6d796da201edc395e74e821c63c62..86a85c24d1a62c9fc619cfcd2666046b7e7f34aa 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F74BFD27-8B84-4F0F-B1CB-3FEFB93FA244}</ProjectGuid>\r
+    <ProjectGuid>{28041CBC-632D-4961-B316-C2A15CFD9488}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services.Client-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_2_0.csproj">\r
-      <Project>{32FB4911-5E84-4692-975C-23AB21BF215B}</Project>\r
+      <Project>{13E70866-6FF1-4D25-803F-BAE8CF945920}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_2_0.csproj">\r
-      <Project>{FA9820E4-3756-46DD-A2A0-8508F4F043EA}</Project>\r
+      <Project>{6FC343B3-4186-4DB7-B678-3BDFEF0065CD}</Project>\r
       <Name>WindowsBase\WindowsBase-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 05f889fc979f6885ec02db019504650b8ca02450..45c051ab7adcf87b1ac01f4a63c02d0766d77f65 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E08BEE9C-69A5-46E9-9BA0-4C803470A62C}</ProjectGuid>\r
+    <ProjectGuid>{F743C94C-ACFF-461F-87AE-EA7427D158A5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services.Client-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_0.csproj">\r
-      <Project>{7063C843-FB21-477B-ACC4-DA51C8C374E9}</Project>\r
+      <Project>{E016C66E-35A6-4A95-BD35-AF13FBCD3DA0}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8de7d93f332d9cc745a34cbce9ae8fdb8d3845ab..7c054b085bdb76f33cb5a52f2345eb23f0764f67 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{515D27B3-F7B6-4F0D-9CF6-521F7D37118D}</ProjectGuid>\r
+    <ProjectGuid>{05D23556-E085-4A30-A6AF-8F39651CA284}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services.Client-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_5.csproj">\r
-      <Project>{6D23A57D-01AF-4266-8E58-C16E732FCF81}</Project>\r
+      <Project>{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.Data.Services.Client/mobile_static_System.Data.Services.Client.dll.sources b/mcs/class/System.Data.Services.Client/mobile_static_System.Data.Services.Client.dll.sources
new file mode 100644 (file)
index 0000000..37dc299
--- /dev/null
@@ -0,0 +1 @@
+#include net_4_5_System.Data.Services.Client.dll.sources
index fd39977f965b132bb9f794c9989e0a57b7210c40..9027c49e7fa9095ddc277a094188c60b035ceae4 100644 (file)
@@ -12,6 +12,10 @@ LIB_MCS_FLAGS = \
        -r:System.ServiceModel.Web.dll \
        -r:System.Data.Services.Client.dll
 
+ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
+LIB_MCS_FLAGS += -r:System.ServiceModel.Activation.dll
+endif
+
 TEST_MCS_FLAGS = -r:System.ServiceModel.dll -r:System.Core.dll
 
 include ../../build/library.make
index d8acd9f0fead5318ded3776824378c70e859f03b..d76ecc73ace2d5712902227a55a14324b4303b04 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7A80929F-2EFC-4A39-8969-6F74DA352144}</ProjectGuid>\r
+    <ProjectGuid>{99FD3D71-E25F-4F03-8C59-767F8CBF1FD0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_2_0.csproj">\r
-      <Project>{54969D84-6764-49E4-A6AF-51ADD6A7CDFA}</Project>\r
+      <Project>{C1E98610-9EA1-4973-A48B-E7CE2E790F40}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services.Client\System.Data.Services.Client-net_2_0.csproj">\r
-      <Project>{F74BFD27-8B84-4F0F-B1CB-3FEFB93FA244}</Project>\r
+      <Project>{28041CBC-632D-4961-B316-C2A15CFD9488}</Project>\r
       <Name>System.Data.Services.Client\System.Data.Services.Client-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 650cfeee444e9bcdc1bec39223b8a8950d561737..e0e62349cdeaed8a3291c6b714df0fa4cad5fea7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{44105B5A-7674-4CE0-AB7A-DE36536CA3FA}</ProjectGuid>\r
+    <ProjectGuid>{DEA8B60B-F938-4920-B4AF-3B6D042FA740}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_0.csproj">\r
-      <Project>{2F40A7ED-89D4-414D-B916-6ECB39F15BD2}</Project>\r
+      <Project>{B9CFA1C3-B2EE-40CB-85EC-674A2D1CAC5F}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services.Client\System.Data.Services.Client-net_4_0.csproj">\r
-      <Project>{E08BEE9C-69A5-46E9-9BA0-4C803470A62C}</Project>\r
+      <Project>{F743C94C-ACFF-461F-87AE-EA7427D158A5}</Project>\r
       <Name>System.Data.Services.Client\System.Data.Services.Client-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b260d2ed431e4b7c152952715b0f28919a0998d2..4c5ef4cf981bb4a89c30417211c52b8d78a396da 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}</ProjectGuid>\r
+    <ProjectGuid>{90405849-4C66-4BF7-B9F6-E0D81995231B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj">\r
-      <Project>{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}</Project>\r
+      <Project>{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services.Client\System.Data.Services.Client-net_4_5.csproj">\r
-      <Project>{515D27B3-F7B6-4F0D-9CF6-521F7D37118D}</Project>\r
+      <Project>{05D23556-E085-4A30-A6AF-8F39651CA284}</Project>\r
       <Name>System.Data.Services.Client\System.Data.Services.Client-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0594d6efbc03277aaa259a8f8723d7806979d456..20734d131f2054a0adf6abc316ad81f96ff5ca0f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BAC5423E-A9CD-4D05-B517-0B92E03E6671}</ProjectGuid>\r
+    <ProjectGuid>{B6995A25-E1CA-458A-B248-10EF04ED97E1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services\System.Data.Services-net_2_0.csproj">\r
-      <Project>{7A80929F-2EFC-4A39-8969-6F74DA352144}</Project>\r
+      <Project>{99FD3D71-E25F-4F03-8C59-767F8CBF1FD0}</Project>\r
       <Name>System.Data.Services\System.Data.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a5d21f40be46d955fd23283fe64b58a1655a11c0..06039318a0b88dcc7c437fe131ac466ae784e746 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BBF2A1CC-B488-4739-82A7-E98832D3B873}</ProjectGuid>\r
+    <ProjectGuid>{6C64D29D-CAE4-4F98-9E01-0EBCED683AEF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services\System.Data.Services-net_4_0.csproj">\r
-      <Project>{44105B5A-7674-4CE0-AB7A-DE36536CA3FA}</Project>\r
+      <Project>{DEA8B60B-F938-4920-B4AF-3B6D042FA740}</Project>\r
       <Name>System.Data.Services\System.Data.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 695ddb634fdef0772cfd4970147f56f9b43558b3..ef4c55d3954417ed19c335cb2846ff393f847efa 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}</ProjectGuid>\r
+    <ProjectGuid>{FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Data.Services-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Services\System.Data.Services-net_4_5.csproj">\r
-      <Project>{16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}</Project>\r
+      <Project>{90405849-4C66-4BF7-B9F6-E0D81995231B}</Project>\r
       <Name>System.Data.Services\System.Data.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b015667e2a174c0be56c1ea56add35aedde74eae..8255e6456d6a582e6f87ddf5142663675f4fa80d 100644 (file)
@@ -31,7 +31,7 @@ LIB_MCS_FLAGS +=      \
        -r:J2SE.Helpers.dll                     \
        $(OTHER_LIB_MCS_FLAGS)
 else 
-MOBILE := $(filter monotouch monodroid mobile, $(PROFILE))
+MOBILE := $(filter monotouch monodroid mobile mobile_static, $(PROFILE))
 ifdef MOBILE
 LIB_MCS_FLAGS += \
        -r:Mono.Data.Tds.dll \
index 7b4031675460135482f5728f113af10ed085ca1e..e9a7e35a4d17fe07bc7adf4306f6196a3cd512dd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B8CA1780-FF35-49B9-B385-C24BD0558109}</ProjectGuid>\r
+    <ProjectGuid>{49220562-83E1-49A2-971F-5D31C4AB0258}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-net_2_0</OutputPath>\r
     <Compile Include="System.Data.Common\SchemaTableColumn.cs" />\r
     <Compile Include="System.Data.Common\SchemaTableOptionalColumn.cs" />\r
     <Compile Include="System.Data.Common\SupportedJoinOperators.cs" />\r
+    <Compile Include="System.Data.Common\TaskHelper.cs" />\r
     <Compile Include="System.Data.Odbc\libodbc.cs" />\r
     <Compile Include="System.Data.Odbc\NativeBuffer.cs" />\r
     <Compile Include="System.Data.Odbc\OdbcCategoryAttribute.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_2_0.csproj">\r
-      <Project>{FDB86B5C-19F4-49DB-807F-CB0466C121A1}</Project>\r
+      <Project>{99315C7A-EEDA-4247-96F4-14924760DB8B}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c113fed7d84b847cac2deda80dcb66e39e423460..86d013efe4adf656ada5f8fdbdc5d2d2aeb953b7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</ProjectGuid>\r
+    <ProjectGuid>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-net_4_0</OutputPath>\r
     <Compile Include="System.Data.Common\SchemaTableColumn.cs" />\r
     <Compile Include="System.Data.Common\SchemaTableOptionalColumn.cs" />\r
     <Compile Include="System.Data.Common\SupportedJoinOperators.cs" />\r
+    <Compile Include="System.Data.Common\TaskHelper.cs" />\r
     <Compile Include="System.Data.Odbc\libodbc.cs" />\r
     <Compile Include="System.Data.Odbc\NativeBuffer.cs" />\r
     <Compile Include="System.Data.Odbc\OdbcCategoryAttribute.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_0.csproj">\r
-      <Project>{2038AFC9-B4E4-4A05-B57B-11B698CA67DF}</Project>\r
+      <Project>{4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 10190a1c38155a35d9db6274e0919c07db4f2a07..eb0917787fc596326243599b28c64ad7d02f25ad 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</ProjectGuid>\r
+    <ProjectGuid>{663D8C81-B74E-4D44-8C59-2264C6942B30}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj">\r
-      <Project>{2BB65926-A803-484F-A2D2-05CED0254A28}</Project>\r
+      <Project>{9B26C34E-8E81-4857-A1CB-B50F407EE7E1}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9ac23b46b53f6900215370fe956374becf3c4779..a7680e96131f5476c294cce72fd4b5d5886a4535 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{87ED984F-2902-4E39-BC59-9414811B589A}</ProjectGuid>\r
+    <ProjectGuid>{6E9FDC75-D6F9-4E25-A195-C9F1B02DD8C9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,618,169,612,219,168</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_2_0.csproj">\r
-      <Project>{FDB86B5C-19F4-49DB-807F-CB0466C121A1}</Project>\r
+      <Project>{99315C7A-EEDA-4247-96F4-14924760DB8B}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="Mono.Data.Sqlite.dll">\r
index c8449d3e31415fdfeb992cd083f5df684e8906be..8783657bea91c284c32b03d6bf882a5d2263b41f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{307468CF-4DC4-4070-BB0C-9D45B135F886}</ProjectGuid>\r
+    <ProjectGuid>{53E634B3-1D02-4375-B94D-6BBA8BCC921D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,618,169,612,219,168</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_0.csproj">\r
-      <Project>{2038AFC9-B4E4-4A05-B57B-11B698CA67DF}</Project>\r
+      <Project>{4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0.csproj">\r
-      <Project>{60E307F3-5E95-42FF-9B41-3FB8AD664AB6}</Project>\r
+      <Project>{991C45A8-3B22-45BB-B688-DBF8BA835992}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f3d4e4f70544ac3930b3059dfee6e8cf58003612..ba1719f480fa764309e68ab536a9ef9ad228787d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E763AC5D-E03A-4D54-8B0A-5F904B56FA69}</ProjectGuid>\r
+    <ProjectGuid>{4C5A0721-050A-4457-8D1C-8FB58DA895DE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,618,169,612,219,168</NoWarn>\r
     <OutputPath>bin\Debug\System.Data-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj">\r
-      <Project>{2BB65926-A803-484F-A2D2-05CED0254A28}</Project>\r
+      <Project>{9B26C34E-8E81-4857-A1CB-B50F407EE7E1}</Project>\r
       <Name>Mono.Data.Tds\Mono.Data.Tds-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj">\r
-      <Project>{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}</Project>\r
+      <Project>{F26434C1-BA3D-41FB-B560-C009CB72B1B6}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 29e7b11efc1e3f05e274a1dbc8136a0681672a67..4beb429284e81a5fc21211781e10810a2a121754 100644 (file)
@@ -23,7 +23,9 @@
 using System;
 using System.Collections;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 
 namespace System.Data.Common
 {
index cc28f7dc4e275fc56818d8c4668852bee1162fa0..511edbff86e2612d2c163f7c15273321bae39741 100644 (file)
@@ -1,7 +1,7 @@
 //
 // System.Data.Common.TaskHelper.cs
 //
-// Copyright (C) 2013 Novell, Inc (http://www.novell.com)
+// Copyright (C) 2013 PÄ“teris Å…ikiforovs
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -29,7 +29,7 @@ using System;
 using System.Threading.Tasks;
 
 namespace System.Data.Common {
-       internal sealed class TaskHelper
+       static class TaskHelper
        {
                internal static Task CreateCanceledTask ()
                {
index abd8126d092b33d4bda8548c7df89b137dced674..ece2e96518dda786e68703345c8b0c573d1cb355 100644 (file)
@@ -287,7 +287,7 @@ namespace System.Data
                {
                        if (row == null)
                                throw new IndexOutOfRangeException ("The given datarow is not in the current DataRowCollection.");
-                       int index = List.IndexOf (row);
+                       int index = this.IndexOf (row);
                        if (index < 0)
                                throw new IndexOutOfRangeException ("The given datarow is not in the current DataRowCollection.");
                        List.RemoveAt (index);
diff --git a/mcs/class/System.Data/mobile_static_System.Data.dll.sources b/mcs/class/System.Data/mobile_static_System.Data.dll.sources
new file mode 100644 (file)
index 0000000..bbc860b
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.Data.dll.sources
index e8be02d982dd90d57d051b092916f20d1270b40b..68b44541096d00f041e09f28ae31e867ab597d0f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{89C94BC2-CBEF-4194-AC17-B1757DC2B182}</ProjectGuid>\r
+    <ProjectGuid>{FF5993DD-A243-4512-97FE-EB3613EF2860}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_2_0.csproj">\r
-      <Project>{BA19643F-7F03-4902-9BB6-E94F4467F56A}</Project>\r
+      <Project>{6088F0A1-9658-4B71-86DB-8685B9279154}</Project>\r
       <Name>Accessibility\Accessibility-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Drawing.Design.dll">\r
index 2101d23df2757f14024a9a005a70b9f178ad1be4..fe79201a3664464232c282e2a8bf00cdec90a4a4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70B6D76F-F9A5-4E85-AF0E-3A793C0481AF}</ProjectGuid>\r
+    <ProjectGuid>{F3F4641D-417E-4C93-9254-4A2B6CB57FC6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_0.csproj">\r
-      <Project>{B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}</Project>\r
+      <Project>{3C0E9135-1458-47F6-9076-17FFB1E3E32F}</Project>\r
       <Name>Accessibility\Accessibility-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing.Design\System.Drawing.Design-net_2_0.csproj">\r
-      <Project>{A6599D9A-CDAD-4AF3-84A1-1A664D1CC300}</Project>\r
+      <Project>{21BEB426-C8FA-484B-A7B0-1D4A5BF3307B}</Project>\r
       <Name>System.Drawing.Design\System.Drawing.Design-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c992090d263665ce3e87ceb7409b08db3ce9ced6..575661478504df5e09c3d99a87fb89e5993e5230 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}</ProjectGuid>\r
+    <ProjectGuid>{2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Accessibility\Accessibility-net_4_5.csproj">\r
-      <Project>{7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}</Project>\r
+      <Project>{121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}</Project>\r
       <Name>Accessibility\Accessibility-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing.Design\System.Drawing.Design-net_4_0.csproj">\r
-      <Project>{6BFAB010-392A-4F3D-861D-19B5BEC476D5}</Project>\r
+      <Project>{8C367062-EFEF-4765-B1B1-5553608F6A60}</Project>\r
       <Name>System.Drawing.Design\System.Drawing.Design-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 019eacd4dce66e3aba4c9bd119dd33ab7f3b7fc2..26cb7cd1566ab66d1f0c178fbe12904ae9e61928 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AF5F10D5-D0C9-4D8F-A3EC-368A3F552E15}</ProjectGuid>\r
+    <ProjectGuid>{0FCBC103-009C-4138-948F-3E301D2B1912}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_2_0-1.csproj">\r
-      <Project>{D75106C3-9D48-4054-82FF-DB9E7BAF216D}</Project>\r
+      <Project>{7BD57C92-6B92-45F0-8050-A0AEE810BC8D}</Project>\r
       <Name>System.Design\System.Design-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 679bf0591b6974730ea035068a442b439c51d0b2..62f61678b44034c830ab213d08d7b708efe03bbd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7C59519C-6D08-4503-B08D-D43F668C6701}</ProjectGuid>\r
+    <ProjectGuid>{C9676DB9-1951-4932-851D-F5EEA0C0B62C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_4_0-1.csproj">\r
-      <Project>{6E8873F5-E704-4256-994D-5E4D9EE8EA1D}</Project>\r
+      <Project>{C8576BC8-9511-494F-B50E-C2219D151B4A}</Project>\r
       <Name>System.Design\System.Design-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a1e543a9eb5aecb63991fa8a84a8af8b73089b64..681de1e1ed0cacd716d9de9f2ad232386c2b6c59 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{00CB1FAE-7834-4589-94D0-40166739993E}</ProjectGuid>\r
+    <ProjectGuid>{5F2499BC-D237-48C8-B09A-0CD8C4FB4B2A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Design-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_4_5-1.csproj">\r
-      <Project>{2414C54A-9454-4B25-932C-0724CF003A6D}</Project>\r
+      <Project>{54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}</Project>\r
       <Name>System.Design\System.Design-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dc61855ee01bc81667d007549871fbcbeb1bd5fe..aba9cdd34a8584977b370791392b3b76e582b09e 100644 (file)
@@ -14,16 +14,6 @@ using System.Security;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
-// General Information about the System.DirectoryServices.Protocols assembly
-
-using System;
-using System.Reflection;
-using System.Resources;
-using System.Security;
-using System.Diagnostics;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
 // General Information about the system assembly
 
 [assembly: AssemblyTitle ("System.DirectoryServices.Protocols.dll")]
index 66471e0eb86b9fe101d383f891086fcba83b7c09..f020637d1ce2f5c5c79623159c5b409044311826 100644 (file)
@@ -27,7 +27,6 @@
 //
 
 using System;
-using System.Linq;
 
 namespace System.DirectoryServices.Protocols
 {
@@ -37,8 +36,8 @@ namespace System.DirectoryServices.Protocols
                public SortRequestControl (params SortKey [] sortKeys)
                        : base (null, null, false, false)
                {
-                       throw new NotImplementedException ();
                        SortKeys = sortKeys;
+                       throw new NotImplementedException ();
                }
 
                [MonoTODO]
index dfa5533dffb831c070f9074bb957f81b4db1e9c3..69ac1dab5d07f2a4ff9464d002c1b4a3b8f83df7 100644 (file)
@@ -27,7 +27,6 @@
 //
 
 using System;
-using System.Linq;
 
 namespace System.DirectoryServices.Protocols
 {
@@ -36,12 +35,12 @@ namespace System.DirectoryServices.Protocols
                internal VlvResponseControl (int contentCount, byte [] contextId, ResultCode result, int targetPosition)
                        : base (null, null, false, true)
                {
-                       throw new NotImplementedException ("ctor-chain");
-
                        ContentCount = contentCount;
                        ContextId = contextId;
                        Result = result;
                        TargetPosition = targetPosition;
+
+                       throw new NotImplementedException ("ctor-chain");
                }
 
                [MonoTODO]
index 138cabb9d6b7ba430da391a0093bd87e15b2626b..8014c14c42a9c343e2a9e6a26959126f531af504 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DA3B855A-70BC-444D-A651-3341F419F513}</ProjectGuid>\r
+    <ProjectGuid>{3733F281-341E-4468-BEBC-D17F51743D39}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0.csproj">\r
-      <Project>{EE7F7F21-5B86-4D33-A935-858260FD774D}</Project>\r
+      <Project>{FCCE71BD-4C5C-4616-8B3E-ED306528BE16}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ec4f9580a2ac75d2519feb20fcc316069473e54f..5b36e23d600eac6618b166c49f91287ad74bbfc8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD2159B2-7AA6-414A-86B7-89E4BFDCD4E4}</ProjectGuid>\r
+    <ProjectGuid>{19B659AC-3FDF-450B-8F69-4E664DF20A46}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0.csproj">\r
-      <Project>{07D6E719-7A7E-4CA2-9F0B-CADF9A190FE4}</Project>\r
+      <Project>{7738B238-7C12-401A-8CCF-D44B4BD8ABDE}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ff3d1efd0fcd716b0454c0e77576519859e676dd..4a3e01284d27fd8e30d1ee7165097c0e9b043f32 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}</ProjectGuid>\r
+    <ProjectGuid>{F3D6D651-192F-4209-B272-7F8354D0CDB6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj">\r
-      <Project>{74565932-18F5-4BEC-AAB6-98230A4B662C}</Project>\r
+      <Project>{BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c9750382d8ff396fe8f7b2a36056af8fc6655323..c7a6a75d8342cbb1140cfca84ccf7d6d0f05f326 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C30CABA1-1496-4963-8711-EE0B43583568}</ProjectGuid>\r
+    <ProjectGuid>{FCACAB13-C325-41F6-BDFB-834370D57856}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.DirectoryServices\System.DirectoryServices-net_2_0.csproj">\r
-      <Project>{DA3B855A-70BC-444D-A651-3341F419F513}</Project>\r
+      <Project>{3733F281-341E-4468-BEBC-D17F51743D39}</Project>\r
       <Name>System.DirectoryServices\System.DirectoryServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0.csproj">\r
-      <Project>{EE7F7F21-5B86-4D33-A935-858260FD774D}</Project>\r
+      <Project>{FCCE71BD-4C5C-4616-8B3E-ED306528BE16}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 820078cfbfe6156c053603ad3b79cff9a750c814..2a309149cfd995b61bc8719308d23c3b731bf08f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C6B3877C-19AB-46BA-A731-CF65DA1B546E}</ProjectGuid>\r
+    <ProjectGuid>{B7E7A1B5-FFF1-407C-97DD-C5FDBAEC8256}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.DirectoryServices\System.DirectoryServices-net_4_0.csproj">\r
-      <Project>{AD2159B2-7AA6-414A-86B7-89E4BFDCD4E4}</Project>\r
+      <Project>{19B659AC-3FDF-450B-8F69-4E664DF20A46}</Project>\r
       <Name>System.DirectoryServices\System.DirectoryServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0.csproj">\r
-      <Project>{07D6E719-7A7E-4CA2-9F0B-CADF9A190FE4}</Project>\r
+      <Project>{7738B238-7C12-401A-8CCF-D44B4BD8ABDE}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4e456897fca5bc06fd6b5226fe1fabe503a876d4..af92e368f57ff66a0c75d316534daf278ef4a257 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}</ProjectGuid>\r
+    <ProjectGuid>{D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.DirectoryServices-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.DirectoryServices\System.DirectoryServices-net_4_5.csproj">\r
-      <Project>{97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}</Project>\r
+      <Project>{F3D6D651-192F-4209-B272-7F8354D0CDB6}</Project>\r
       <Name>System.DirectoryServices\System.DirectoryServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj">\r
-      <Project>{74565932-18F5-4BEC-AAB6-98230A4B662C}</Project>\r
+      <Project>{BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}</Project>\r
       <Name>Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryOperationException.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryOperationException.cs
new file mode 100644 (file)
index 0000000..915b1ce
--- /dev/null
@@ -0,0 +1,73 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Runtime.Serialization;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Serializable]
+       public class ActiveDirectoryOperationException : Exception, ISerializable
+       {
+               public int ErrorCode {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectoryOperationException (string message, Exception inner, int errorCode) : base(message, inner)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectoryOperationException (string message, int errorCode) : base(message)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectoryOperationException (string message, Exception inner) : base(message, inner)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectoryOperationException (string message) : base(message)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectoryOperationException () : base("DSUnknownFailure")
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected ActiveDirectoryOperationException (SerializationInfo info, StreamingContext context) : base(info, context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
+               public override void GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryPartition.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryPartition.cs
new file mode 100644 (file)
index 0000000..4b75854
--- /dev/null
@@ -0,0 +1,56 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public abstract class ActiveDirectoryPartition : IDisposable
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               protected ActiveDirectoryPartition ()
+               {
+               }
+
+               public void Dispose ()
+               {
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+
+               }
+
+               public override string ToString ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+               public abstract DirectoryEntry GetDirectoryEntry ();
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryReplicationMetadata.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryReplicationMetadata.cs
new file mode 100644 (file)
index 0000000..9444827
--- /dev/null
@@ -0,0 +1,58 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ActiveDirectoryReplicationMetadata : DictionaryBase
+       {
+               public AttributeMetadata this [string name] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReadOnlyStringCollection AttributeNames {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public AttributeMetadataCollection Values {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (string attributeName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (AttributeMetadata[] array, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryRole.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryRole.cs
new file mode 100644 (file)
index 0000000..7ab5c60
--- /dev/null
@@ -0,0 +1,34 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum ActiveDirectoryRole
+       {
+               SchemaRole,
+               NamingRole,
+               PdcRole,
+               RidRole,
+               InfrastructureRole
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryRoleCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryRoleCollection.cs
new file mode 100644 (file)
index 0000000..37e35b3
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ActiveDirectoryRoleCollection : ReadOnlyCollectionBase
+       {
+               public ActiveDirectoryRole this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ActiveDirectoryRole role)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectoryRole role)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectoryRole[] roles, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchedule.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchedule.cs
new file mode 100644 (file)
index 0000000..22a38e9
--- /dev/null
@@ -0,0 +1,69 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ActiveDirectorySchedule
+       {
+               public bool[,,] RawSchedule {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchedule ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectorySchedule (ActiveDirectorySchedule schedule) : this()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SetSchedule (DayOfWeek day, HourOfDay fromHour, MinuteOfHour fromMinute, HourOfDay toHour, MinuteOfHour toMinute)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SetSchedule (DayOfWeek[] days, HourOfDay fromHour, MinuteOfHour fromMinute, HourOfDay toHour, MinuteOfHour toMinute)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SetDailySchedule (HourOfDay fromHour, MinuteOfHour fromMinute, HourOfDay toHour, MinuteOfHour toMinute)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void ResetSchedule ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchema.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchema.cs
new file mode 100644 (file)
index 0000000..a2fdc83
--- /dev/null
@@ -0,0 +1,112 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class ActiveDirectorySchema : ActiveDirectoryPartition
+       {
+               public DirectoryServer SchemaRoleOwner {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               protected override void Dispose (bool disposing)
+               {
+
+               }
+
+               public static ActiveDirectorySchema GetSchema (DirectoryContext context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void RefreshSchema ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectorySchemaClass FindClass (string ldapDisplayName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectorySchemaClass FindDefunctClass (string commonName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyActiveDirectorySchemaClassCollection FindAllClasses ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyActiveDirectorySchemaClassCollection FindAllClasses (SchemaClassType type)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyActiveDirectorySchemaClassCollection FindAllDefunctClasses ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectorySchemaProperty FindProperty (string ldapDisplayName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectorySchemaProperty FindDefunctProperty (string commonName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyActiveDirectorySchemaPropertyCollection FindAllProperties ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyActiveDirectorySchemaPropertyCollection FindAllProperties (PropertyTypes type)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyActiveDirectorySchemaPropertyCollection FindAllDefunctProperties ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static ActiveDirectorySchema GetCurrentSchema ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaClass.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaClass.cs
new file mode 100644 (file)
index 0000000..6af613f
--- /dev/null
@@ -0,0 +1,179 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class ActiveDirectorySchemaClass : IDisposable
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string CommonName {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string Oid {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string Description {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool IsDefunct {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchemaClassCollection PossibleSuperiors {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReadOnlyActiveDirectorySchemaClassCollection PossibleInferiors {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchemaPropertyCollection MandatoryProperties {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchemaPropertyCollection OptionalProperties {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchemaClassCollection AuxiliaryClasses {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchemaClass SubClassOf {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public SchemaClassType Type {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public Guid SchemaGuid {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySecurity DefaultObjectSecurityDescriptor {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchemaClass (DirectoryContext context, string ldapDisplayName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Dispose ()
+               {
+
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+
+               }
+
+               public static ActiveDirectorySchemaClass FindByName (DirectoryContext context, string ldapDisplayName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyActiveDirectorySchemaPropertyCollection GetAllProperties ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Save ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override string ToString ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaClassCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaClassCollection.cs
new file mode 100644 (file)
index 0000000..fb30942
--- /dev/null
@@ -0,0 +1,108 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ActiveDirectorySchemaClassCollection : CollectionBase
+       {
+               public ActiveDirectorySchemaClass this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int Add (ActiveDirectorySchemaClass schemaClass)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ActiveDirectorySchemaClass[] schemaClasses)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ActiveDirectorySchemaClassCollection schemaClasses)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ReadOnlyActiveDirectorySchemaClassCollection schemaClasses)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Remove (ActiveDirectorySchemaClass schemaClass)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Insert (int index, ActiveDirectorySchemaClass schemaClass)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool Contains (ActiveDirectorySchemaClass schemaClass)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectorySchemaClass[] schemaClasses, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectorySchemaClass schemaClass)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClearComplete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnInsertComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnRemoveComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnSetComplete (int index, object oldValue, object newValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnValidate (object value)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaProperty.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaProperty.cs
new file mode 100644 (file)
index 0000000..8819ec5
--- /dev/null
@@ -0,0 +1,220 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class ActiveDirectorySchemaProperty : IDisposable
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string CommonName {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string Oid {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySyntax Syntax {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string Description {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool IsSingleValued {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool IsIndexed {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool IsIndexedOverContainer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool IsInAnr {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool IsOnTombstonedObject {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool IsTupleIndexed {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool IsInGlobalCatalog {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int RangeLower {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int RangeUpper {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool IsDefunct {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchemaProperty Link {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int? LinkId {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public Guid SchemaGuid {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchemaProperty (DirectoryContext context, string ldapDisplayName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Dispose ()
+               {
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+
+               }
+
+               public static ActiveDirectorySchemaProperty FindByName (DirectoryContext context, string ldapDisplayName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Save ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override string ToString ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaPropertyCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaPropertyCollection.cs
new file mode 100644 (file)
index 0000000..b8721b4
--- /dev/null
@@ -0,0 +1,108 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ActiveDirectorySchemaPropertyCollection : CollectionBase
+       {
+               public ActiveDirectorySchemaProperty this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int Add (ActiveDirectorySchemaProperty schemaProperty)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ActiveDirectorySchemaProperty[] properties)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ActiveDirectorySchemaPropertyCollection properties)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ReadOnlyActiveDirectorySchemaPropertyCollection properties)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Remove (ActiveDirectorySchemaProperty schemaProperty)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Insert (int index, ActiveDirectorySchemaProperty schemaProperty)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool Contains (ActiveDirectorySchemaProperty schemaProperty)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectorySchemaProperty[] properties, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectorySchemaProperty schemaProperty)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClearComplete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnInsertComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnRemoveComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnSetComplete (int index, object oldValue, object newValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnValidate (object value)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySecurity.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySecurity.cs
new file mode 100644 (file)
index 0000000..d921144
--- /dev/null
@@ -0,0 +1,147 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.AccessControl;
+using System.Security.Principal;
+
+namespace System.DirectoryServices
+{
+       public class ActiveDirectorySecurity : DirectoryObjectSecurity
+       {
+               public override Type AccessRightType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public override Type AccessRuleType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public override Type AuditRuleType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySecurity ()
+               {
+               }
+
+               public void AddAccessRule (ActiveDirectoryAccessRule rule)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SetAccessRule (ActiveDirectoryAccessRule rule)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void ResetAccessRule (ActiveDirectoryAccessRule rule)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void RemoveAccess (IdentityReference identity, AccessControlType type)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool RemoveAccessRule (ActiveDirectoryAccessRule rule)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void RemoveAccessRuleSpecific (ActiveDirectoryAccessRule rule)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override bool ModifyAccessRule (AccessControlModification modification, AccessRule rule, out bool modified)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override void PurgeAccessRules (IdentityReference identity)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddAuditRule (ActiveDirectoryAuditRule rule)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SetAuditRule (ActiveDirectoryAuditRule rule)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void RemoveAudit (IdentityReference identity)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool RemoveAuditRule (ActiveDirectoryAuditRule rule)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void RemoveAuditRuleSpecific (ActiveDirectoryAuditRule rule)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override bool ModifyAuditRule (AccessControlModification modification, AuditRule rule, out bool modified)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override void PurgeAuditRules (IdentityReference identity)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public sealed override AccessRule AccessRuleFactory (IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public sealed override AccessRule AccessRuleFactory (IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AccessControlType type, Guid objectGuid, Guid inheritedObjectGuid)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public sealed override AuditRule AuditRuleFactory (IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public sealed override AuditRule AuditRuleFactory (IdentityReference identityReference, int accessMask, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, AuditFlags flags, Guid objectGuid, Guid inheritedObjectGuid)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryServerDownException.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryServerDownException.cs
new file mode 100644 (file)
index 0000000..93fc26e
--- /dev/null
@@ -0,0 +1,80 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Runtime.Serialization;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Serializable]
+       public class ActiveDirectoryServerDownException : Exception, ISerializable
+       {
+               public int ErrorCode {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public override string Message {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectoryServerDownException (string message, Exception inner, int errorCode, string name) : base(message, inner)
+               {
+               }
+
+               public ActiveDirectoryServerDownException (string message, int errorCode, string name) : base(message)
+               {
+
+               }
+
+               public ActiveDirectoryServerDownException (string message, Exception inner) : base(message, inner)
+               {
+               }
+
+               public ActiveDirectoryServerDownException (string message) : base(message)
+               {
+               }
+
+               public ActiveDirectoryServerDownException ()
+               {
+               }
+
+               protected ActiveDirectoryServerDownException (SerializationInfo info, StreamingContext context) : base(info, context)
+               {
+               }
+
+               [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
+               public override void GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySite.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySite.cs
new file mode 100644 (file)
index 0000000..1c03b05
--- /dev/null
@@ -0,0 +1,166 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class ActiveDirectorySite : IDisposable
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainCollection Domains {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySubnetCollection Subnets {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReadOnlyDirectoryServerCollection Servers {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReadOnlySiteCollection AdjacentSites {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReadOnlySiteLinkCollection SiteLinks {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DirectoryServer InterSiteTopologyGenerator {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySiteOptions Options {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string Location {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReadOnlyDirectoryServerCollection BridgeheadServers {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DirectoryServerCollection PreferredSmtpBridgeheadServers {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DirectoryServerCollection PreferredRpcBridgeheadServers {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchedule IntraSiteReplicationSchedule {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public static ActiveDirectorySite FindByName (DirectoryContext context, string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectorySite (DirectoryContext context, string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static ActiveDirectorySite GetComputerSite ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Save ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Delete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override string ToString ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Dispose ()
+               {
+
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteCollection.cs
new file mode 100644 (file)
index 0000000..4df5579
--- /dev/null
@@ -0,0 +1,103 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ActiveDirectorySiteCollection : CollectionBase
+       {
+               public ActiveDirectorySite this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int Add (ActiveDirectorySite site)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ActiveDirectorySite[] sites)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ActiveDirectorySiteCollection sites)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool Contains (ActiveDirectorySite site)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectorySite[] array, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectorySite site)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Insert (int index, ActiveDirectorySite site)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Remove (ActiveDirectorySite site)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClearComplete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnInsertComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnRemoveComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnSetComplete (int index, object oldValue, object newValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnValidate (object value)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLink.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLink.cs
new file mode 100644 (file)
index 0000000..0a230d5
--- /dev/null
@@ -0,0 +1,153 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class ActiveDirectorySiteLink : IDisposable
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectoryTransportType TransportType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySiteCollection Sites {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int Cost {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public TimeSpan ReplicationInterval {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool ReciprocalReplicationEnabled {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool NotificationEnabled {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool DataCompressionEnabled {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchedule InterSiteReplicationSchedule {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySiteLink (DirectoryContext context, string siteLinkName) : this(context, siteLinkName, ActiveDirectoryTransportType.Rpc, null)
+               {
+               }
+
+               public ActiveDirectorySiteLink (DirectoryContext context, string siteLinkName, ActiveDirectoryTransportType transport) : this(context, siteLinkName, transport, null)
+               {
+               }
+
+               public ActiveDirectorySiteLink (DirectoryContext context, string siteLinkName, ActiveDirectoryTransportType transport, ActiveDirectorySchedule schedule)
+               {
+               }
+
+               public static ActiveDirectorySiteLink FindByName (DirectoryContext context, string siteLinkName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static ActiveDirectorySiteLink FindByName (DirectoryContext context, string siteLinkName, ActiveDirectoryTransportType transport)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Save ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Delete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override string ToString ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Dispose ()
+               {
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLinkBridge.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLinkBridge.cs
new file mode 100644 (file)
index 0000000..54679eb
--- /dev/null
@@ -0,0 +1,97 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class ActiveDirectorySiteLinkBridge : IDisposable
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySiteLinkCollection SiteLinks {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectoryTransportType TransportType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySiteLinkBridge (DirectoryContext context, string bridgeName) : this(context, bridgeName, ActiveDirectoryTransportType.Rpc)
+               {
+               }
+
+               public ActiveDirectorySiteLinkBridge (DirectoryContext context, string bridgeName, ActiveDirectoryTransportType transport)
+               {
+
+               }
+
+               public static ActiveDirectorySiteLinkBridge FindByName (DirectoryContext context, string bridgeName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static ActiveDirectorySiteLinkBridge FindByName (DirectoryContext context, string bridgeName, ActiveDirectoryTransportType transport)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Save ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Delete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override string ToString ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Dispose ()
+               {
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLinkCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLinkCollection.cs
new file mode 100644 (file)
index 0000000..2079076
--- /dev/null
@@ -0,0 +1,103 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ActiveDirectorySiteLinkCollection : CollectionBase
+       {
+               public ActiveDirectorySiteLink this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int Add (ActiveDirectorySiteLink link)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ActiveDirectorySiteLink[] links)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ActiveDirectorySiteLinkCollection links)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool Contains (ActiveDirectorySiteLink link)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectorySiteLink[] array, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectorySiteLink link)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Insert (int index, ActiveDirectorySiteLink link)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Remove (ActiveDirectorySiteLink link)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClearComplete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnInsertComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnRemoveComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnSetComplete (int index, object oldValue, object newValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnValidate (object value)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteOptions.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteOptions.cs
new file mode 100644 (file)
index 0000000..4fe9da5
--- /dev/null
@@ -0,0 +1,43 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Flags]
+       public enum ActiveDirectorySiteOptions
+       {
+               None = 0,
+               AutoTopologyDisabled = 1,
+               TopologyCleanupDisabled = 2,
+               AutoMinimumHopDisabled = 4,
+               StaleServerDetectDisabled = 8,
+               AutoInterSiteTopologyDisabled = 16,
+               GroupMembershipCachingEnabled = 32,
+               ForceKccWindows2003Behavior = 64,
+               UseWindows2000IstgElection = 128,
+               RandomBridgeHeaderServerSelectionDisabled = 256,
+               UseHashingForReplicationSchedule = 512,
+               RedundantServerTopologyEnabled = 1024
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySubnet.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySubnet.cs
new file mode 100644 (file)
index 0000000..674aeb5
--- /dev/null
@@ -0,0 +1,98 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class ActiveDirectorySubnet : IDisposable
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySite Site {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string Location {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public static ActiveDirectorySubnet FindByName (DirectoryContext context, string subnetName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectorySubnet (DirectoryContext context, string subnetName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ActiveDirectorySubnet (DirectoryContext context, string subnetName, string siteName) : this(context, subnetName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Save ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Delete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override string ToString ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Dispose ()
+               {
+
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySubnetCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySubnetCollection.cs
new file mode 100644 (file)
index 0000000..70ed679
--- /dev/null
@@ -0,0 +1,108 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ActiveDirectorySubnetCollection : CollectionBase
+       {
+               public ActiveDirectorySubnet this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int Add (ActiveDirectorySubnet subnet)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ActiveDirectorySubnet[] subnets)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (ActiveDirectorySubnetCollection subnets)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool Contains (ActiveDirectorySubnet subnet)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectorySubnet[] array, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectorySubnet subnet)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Insert (int index, ActiveDirectorySubnet subnet)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Remove (ActiveDirectorySubnet subnet)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClear ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClearComplete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnInsertComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnRemoveComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnSetComplete (int index, object oldValue, object newValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnValidate (object value)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySyntax.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectorySyntax.cs
new file mode 100644 (file)
index 0000000..da09d51
--- /dev/null
@@ -0,0 +1,53 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum ActiveDirectorySyntax
+       {
+               CaseExactString,
+               CaseIgnoreString,
+               NumericString,
+               DirectoryString,
+               OctetString,
+               SecurityDescriptor,
+               Int,
+               Int64,
+               Bool,
+               Oid,
+               GeneralizedTime,
+               UtcTime,
+               DN,
+               DNWithBinary,
+               DNWithString,
+               Enumeration,
+               IA5String,
+               PrintableString,
+               Sid,
+               AccessPointDN,
+               ORName,
+               PresentationAddress,
+               ReplicaLink
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryTransportType.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ActiveDirectoryTransportType.cs
new file mode 100644 (file)
index 0000000..a87d384
--- /dev/null
@@ -0,0 +1,31 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum ActiveDirectoryTransportType
+       {
+               Rpc,
+               Smtp
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ApplicationPartition.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ApplicationPartition.cs
new file mode 100644 (file)
index 0000000..c8910b9
--- /dev/null
@@ -0,0 +1,126 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class ApplicationPartition : ActiveDirectoryPartition
+       {
+               public DirectoryServerCollection DirectoryServers {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string SecurityReferenceDomain {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ApplicationPartition (DirectoryContext context, string distinguishedName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ApplicationPartition (DirectoryContext context, string distinguishedName, string objectClass)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void Dispose (bool disposing)
+               {
+
+               }
+
+               public static ApplicationPartition GetApplicationPartition (DirectoryContext context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static ApplicationPartition FindByName (DirectoryContext context, string distinguishedName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryServer FindDirectoryServer ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryServer FindDirectoryServer (string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryServer FindDirectoryServer (bool forceRediscovery)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryServer FindDirectoryServer (string siteName, bool forceRediscovery)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyDirectoryServerCollection FindAllDirectoryServers ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyDirectoryServerCollection FindAllDirectoryServers (string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyDirectoryServerCollection FindAllDiscoverableDirectoryServers ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyDirectoryServerCollection FindAllDiscoverableDirectoryServers (string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Delete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Save ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ApplicationPartitionCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ApplicationPartitionCollection.cs
new file mode 100644 (file)
index 0000000..78cae10
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ApplicationPartitionCollection : ReadOnlyCollectionBase
+       {
+               public ApplicationPartition this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ApplicationPartition applicationPartition)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ApplicationPartition applicationPartition)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ApplicationPartition[] applicationPartitions, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/AttributeMetadata.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/AttributeMetadata.cs
new file mode 100644 (file)
index 0000000..c71b0e4
--- /dev/null
@@ -0,0 +1,73 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+using System.Runtime.InteropServices;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class AttributeMetadata
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int Version {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DateTime LastOriginatingChangeTime {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public Guid LastOriginatingInvocationId {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public long OriginatingChangeUsn {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public long LocalChangeUsn {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string OriginatingServer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/AttributeMetadataCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/AttributeMetadataCollection.cs
new file mode 100644 (file)
index 0000000..d08fd3c
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class AttributeMetadataCollection : ReadOnlyCollectionBase
+       {
+               public AttributeMetadata this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (AttributeMetadata metadata)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (AttributeMetadata metadata)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (AttributeMetadata[] metadata, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryContext.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryContext.cs
new file mode 100644 (file)
index 0000000..b9129c0
--- /dev/null
@@ -0,0 +1,74 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Net;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [EnvironmentPermission(SecurityAction.Assert, Unrestricted = true)]
+       public class DirectoryContext
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string UserName {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DirectoryContextType ContextType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [DirectoryServicesPermission(SecurityAction.Demand, Unrestricted = true)]
+               public DirectoryContext (DirectoryContextType contextType)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.Demand, Unrestricted = true)]
+               public DirectoryContext (DirectoryContextType contextType, string name)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.Demand, Unrestricted = true)]
+               public DirectoryContext (DirectoryContextType contextType, string username, string password)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.Demand, Unrestricted = true)]
+               public DirectoryContext (DirectoryContextType contextType, string name, string username, string password)
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryContextType.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryContextType.cs
new file mode 100644 (file)
index 0000000..dc25ab9
--- /dev/null
@@ -0,0 +1,34 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum DirectoryContextType
+       {
+               Domain,
+               Forest,
+               DirectoryServer,
+               ConfigurationSet,
+               ApplicationPartition
+       }
+}
\ No newline at end of file
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryEntryConfiguration.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryEntryConfiguration.cs
new file mode 100644 (file)
index 0000000..074e672
--- /dev/null
@@ -0,0 +1,90 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class DirectoryEntryConfiguration
+       {
+               public ReferralChasingOption Referral {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public SecurityMasks SecurityMasks {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int PageSize {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int PasswordPort {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public PasswordEncodingMethod PasswordEncoding {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string GetCurrentServerName ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool IsMutuallyAuthenticated ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SetUserNameQueryQuota (string accountName)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryServer.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryServer.cs
new file mode 100644 (file)
index 0000000..c32a7cd
--- /dev/null
@@ -0,0 +1,131 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public abstract class DirectoryServer : IDisposable
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReadOnlyStringCollection Partitions {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public abstract string IPAddress {
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       get;
+               }
+
+               public abstract string SiteName {
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       get;
+               }
+
+               public abstract SyncUpdateCallback SyncFromAllServersCallback {
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       get;
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       set;
+               }
+
+               public abstract ReplicationConnectionCollection InboundConnections {
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       get;
+               }
+
+               public abstract ReplicationConnectionCollection OutboundConnections {
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       get;
+               }
+
+               internal DirectoryContext Context {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public void Dispose ()
+               {
+
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+
+               }
+
+               public override string ToString ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void MoveToAnotherSite (string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public abstract void CheckReplicationConsistency ();
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public abstract ReplicationCursorCollection GetReplicationCursors (string partition);
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public abstract ReplicationOperationInformation GetReplicationOperationInformation ();
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public abstract ReplicationNeighborCollection GetReplicationNeighbors (string partition);
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public abstract ReplicationNeighborCollection GetAllReplicationNeighbors ();
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public abstract ReplicationFailureCollection GetReplicationConnectionFailures ();
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public abstract ActiveDirectoryReplicationMetadata GetReplicationMetadata (string objectPath);
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public abstract void SyncReplicaFromServer (string partition, string sourceServer);
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public abstract void TriggerSyncReplicaFromNeighbors (string partition);
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public abstract void SyncReplicaFromAllServers (string partition, SyncFromAllServersOptions options);
+       }
+
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryServerCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DirectoryServerCollection.cs
new file mode 100644 (file)
index 0000000..d5b2fa8
--- /dev/null
@@ -0,0 +1,103 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class DirectoryServerCollection : CollectionBase
+       {
+               public DirectoryServer this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int Add (DirectoryServer server)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void AddRange (DirectoryServer[] servers)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool Contains (DirectoryServer server)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (DirectoryServer[] array, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (DirectoryServer server)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Insert (int index, DirectoryServer server)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Remove (DirectoryServer server)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClear ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnClearComplete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnInsertComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnRemoveComplete (int index, object value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnSetComplete (int index, object oldValue, object newValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected override void OnValidate (object value)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/Domain.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/Domain.cs
new file mode 100644 (file)
index 0000000..c35a8f9
--- /dev/null
@@ -0,0 +1,224 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class Domain : ActiveDirectoryPartition
+       {
+               public Forest Forest {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainControllerCollection DomainControllers {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainCollection Children {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainMode DomainMode {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public Domain Parent {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainController PdcRoleOwner {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainController RidRoleOwner {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainController InfrastructureRoleOwner {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public static Domain GetDomain (DirectoryContext context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static Domain GetComputerDomain ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void RaiseDomainFunctionality (DomainMode domainMode)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DomainController FindDomainController ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DomainController FindDomainController (string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DomainController FindDomainController (LocatorOptions flag)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DomainController FindDomainController (string siteName, LocatorOptions flag)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DomainControllerCollection FindAllDomainControllers ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DomainControllerCollection FindAllDomainControllers (string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DomainControllerCollection FindAllDiscoverableDomainControllers ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DomainControllerCollection FindAllDiscoverableDomainControllers (string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public TrustRelationshipInformationCollection GetAllTrustRelationships ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public TrustRelationshipInformation GetTrustRelationship (string targetDomainName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool GetSelectiveAuthenticationStatus (string targetDomainName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SetSelectiveAuthenticationStatus (string targetDomainName, bool enable)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool GetSidFilteringStatus (string targetDomainName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SetSidFilteringStatus (string targetDomainName, bool enable)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void DeleteLocalSideOfTrustRelationship (string targetDomainName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void DeleteTrustRelationship (Domain targetDomain)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void VerifyOutboundTrustRelationship (string targetDomainName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void VerifyTrustRelationship (Domain targetDomain, TrustDirection direction)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CreateLocalSideOfTrustRelationship (string targetDomainName, TrustDirection direction, string trustPassword)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CreateTrustRelationship (Domain targetDomain, TrustDirection direction)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void UpdateLocalSideOfTrustRelationship (string targetDomainName, string newTrustPassword)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void UpdateLocalSideOfTrustRelationship (string targetDomainName, TrustDirection newTrustDirection, string newTrustPassword)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void UpdateTrustRelationship (Domain targetDomain, TrustDirection newTrustDirection)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void RepairTrustRelationship (Domain targetDomain)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static Domain GetCurrentDomain ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainCollection.cs
new file mode 100644 (file)
index 0000000..d6108c9
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class DomainCollection : ReadOnlyCollectionBase
+       {
+               public Domain this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (Domain domain)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (Domain domain)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (Domain[] domains, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainCollisionOptions.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainCollisionOptions.cs
new file mode 100644 (file)
index 0000000..ccb4351
--- /dev/null
@@ -0,0 +1,34 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Flags]
+       public enum DomainCollisionOptions
+       {
+               None = 0,
+               SidDisabledByAdmin = 1,
+               SidDisabledByConflict = 2,
+               NetBiosNameDisabledByAdmin = 4,
+               NetBiosNameDisabledByConflict = 8
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainController.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainController.cs
new file mode 100644 (file)
index 0000000..5279b34
--- /dev/null
@@ -0,0 +1,240 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Net;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class DomainController : DirectoryServer
+       {
+               public Forest Forest {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DateTime CurrentTime {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public long HighestCommittedUsn {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string OSVersion {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectoryRoleCollection Roles {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public Domain Domain {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public override string IPAddress {
+                       [DnsPermission(SecurityAction.Assert, Unrestricted = true), DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public override string SiteName {
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public override SyncUpdateCallback SyncFromAllServersCallback {
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public override ReplicationConnectionCollection InboundConnections {
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public override ReplicationConnectionCollection OutboundConnections {
+                       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               protected DomainController ()
+               {
+               }
+
+               protected override void Dispose (bool disposing)
+               {
+                       base.Dispose ();
+
+               }
+
+               public static DomainController GetDomainController (DirectoryContext context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static DomainController FindOne (DirectoryContext context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static DomainController FindOne (DirectoryContext context, string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static DomainController FindOne (DirectoryContext context, LocatorOptions flag)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static DomainController FindOne (DirectoryContext context, string siteName, LocatorOptions flag)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static DomainControllerCollection FindAll (DirectoryContext context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static DomainControllerCollection FindAll (DirectoryContext context, string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public virtual GlobalCatalog EnableGlobalCatalog ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public virtual bool IsGlobalCatalog ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void TransferRoleOwnership (ActiveDirectoryRole role)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SeizeRoleOwnership (ActiveDirectoryRole role)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public virtual DirectorySearcher GetDirectorySearcher ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override void CheckReplicationConsistency ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override ReplicationCursorCollection GetReplicationCursors (string partition)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override ReplicationOperationInformation GetReplicationOperationInformation ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override ReplicationNeighborCollection GetReplicationNeighbors (string partition)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override ReplicationNeighborCollection GetAllReplicationNeighbors ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override ReplicationFailureCollection GetReplicationConnectionFailures ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override ActiveDirectoryReplicationMetadata GetReplicationMetadata (string objectPath)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override void SyncReplicaFromServer (string partition, string sourceServer)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override void TriggerSyncReplicaFromNeighbors (string partition)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override void SyncReplicaFromAllServers (string partition, SyncFromAllServersOptions options)
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainControllerCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainControllerCollection.cs
new file mode 100644 (file)
index 0000000..309854b
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class DomainControllerCollection : ReadOnlyCollectionBase
+       {
+               public DomainController this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (DomainController domainController)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (DomainController domainController)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (DomainController[] domainControllers, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainMode.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/DomainMode.cs
new file mode 100644 (file)
index 0000000..3320386
--- /dev/null
@@ -0,0 +1,35 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum DomainMode
+       {
+               Windows2000MixedDomain,
+               Windows2000NativeDomain,
+               Windows2003InterimDomain,
+               Windows2003Domain,
+               Windows2008Domain,
+               Windows2008R2Domain
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/Forest.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/Forest.cs
new file mode 100644 (file)
index 0000000..d8ff1f9
--- /dev/null
@@ -0,0 +1,240 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class Forest : IDisposable
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReadOnlySiteCollection Sites {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainCollection Domains {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public GlobalCatalogCollection GlobalCatalogs {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ApplicationPartitionCollection ApplicationPartitions {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ForestMode ForestMode {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public Domain RootDomain {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchema Schema {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainController SchemaRoleOwner {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainController NamingRoleOwner {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public void Dispose ()
+               {
+                       this.Dispose (true);
+               }
+
+               protected void Dispose (bool disposing)
+               {
+
+               }
+
+               public static Forest GetForest (DirectoryContext context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void RaiseForestFunctionality (ForestMode forestMode)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override string ToString ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public GlobalCatalog FindGlobalCatalog ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public GlobalCatalog FindGlobalCatalog (string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public GlobalCatalog FindGlobalCatalog (LocatorOptions flag)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public GlobalCatalog FindGlobalCatalog (string siteName, LocatorOptions flag)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public GlobalCatalogCollection FindAllGlobalCatalogs ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public GlobalCatalogCollection FindAllGlobalCatalogs (string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public GlobalCatalogCollection FindAllDiscoverableGlobalCatalogs ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public GlobalCatalogCollection FindAllDiscoverableGlobalCatalogs (string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public TrustRelationshipInformationCollection GetAllTrustRelationships ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ForestTrustRelationshipInformation GetTrustRelationship (string targetForestName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool GetSelectiveAuthenticationStatus (string targetForestName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SetSelectiveAuthenticationStatus (string targetForestName, bool enable)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public bool GetSidFilteringStatus (string targetForestName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void SetSidFilteringStatus (string targetForestName, bool enable)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void DeleteLocalSideOfTrustRelationship (string targetForestName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void DeleteTrustRelationship (Forest targetForest)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void VerifyOutboundTrustRelationship (string targetForestName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void VerifyTrustRelationship (Forest targetForest, TrustDirection direction)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CreateLocalSideOfTrustRelationship (string targetForestName, TrustDirection direction, string trustPassword)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CreateTrustRelationship (Forest targetForest, TrustDirection direction)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void UpdateLocalSideOfTrustRelationship (string targetForestName, string newTrustPassword)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void UpdateLocalSideOfTrustRelationship (string targetForestName, TrustDirection newTrustDirection, string newTrustPassword)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void UpdateTrustRelationship (Forest targetForest, TrustDirection newTrustDirection)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void RepairTrustRelationship (Forest targetForest)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public static Forest GetCurrentForest ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestMode.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestMode.cs
new file mode 100644 (file)
index 0000000..1e1ebeb
--- /dev/null
@@ -0,0 +1,34 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum ForestMode
+       {
+               Windows2000Forest,
+               Windows2003InterimForest,
+               Windows2003Forest,
+               Windows2008Forest,
+               Windows2008R2Forest
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustCollisionException.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustCollisionException.cs
new file mode 100644 (file)
index 0000000..fb07459
--- /dev/null
@@ -0,0 +1,64 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Runtime.Serialization;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Serializable]
+       public class ForestTrustCollisionException : ActiveDirectoryOperationException, ISerializable
+       {
+               public ForestTrustRelationshipCollisionCollection Collisions {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ForestTrustCollisionException (string message, Exception inner, ForestTrustRelationshipCollisionCollection collisions) : base(message, inner)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ForestTrustCollisionException (string message, Exception inner) : base(message, inner)
+               {
+               }
+
+               public ForestTrustCollisionException (string message) : base(message)
+               {
+               }
+
+               public ForestTrustCollisionException () : base("ForestTrustCollision")
+               {
+               }
+
+               protected ForestTrustCollisionException (SerializationInfo info, StreamingContext context) : base(info, context)
+               {
+               }
+
+               [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
+               public override void GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustCollisionType.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustCollisionType.cs
new file mode 100644 (file)
index 0000000..b31f9a0
--- /dev/null
@@ -0,0 +1,31 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum ForestTrustCollisionType
+       {
+               TopLevelName,
+               Domain,
+               Other
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustDomainInfoCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustDomainInfoCollection.cs
new file mode 100644 (file)
index 0000000..2761323
--- /dev/null
@@ -0,0 +1,51 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ForestTrustDomainInfoCollection : ReadOnlyCollectionBase
+       {
+               public ForestTrustDomainInformation this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ForestTrustDomainInformation information)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ForestTrustDomainInformation information)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ForestTrustDomainInformation[] array, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustDomainInformation.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustDomainInformation.cs
new file mode 100644 (file)
index 0000000..a5cd4b7
--- /dev/null
@@ -0,0 +1,55 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ForestTrustDomainInformation
+       {
+               public string DnsName {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string NetBiosName {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string DomainSid {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ForestTrustDomainStatus Status {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustDomainStatus.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustDomainStatus.cs
new file mode 100644 (file)
index 0000000..0e0ddad
--- /dev/null
@@ -0,0 +1,35 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum ForestTrustDomainStatus
+       {
+               Enabled,
+               SidAdminDisabled,
+               SidConflictDisabled,
+               NetBiosNameAdminDisabled = 4,
+               NetBiosNameConflictDisabled = 8
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipCollision.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipCollision.cs
new file mode 100644 (file)
index 0000000..0f81191
--- /dev/null
@@ -0,0 +1,51 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ForestTrustRelationshipCollision
+       {
+               public ForestTrustCollisionType CollisionType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public TopLevelNameCollisionOptions TopLevelNameCollisionOption {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DomainCollisionOptions DomainCollisionOption {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string CollisionRecord {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipCollisionCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipCollisionCollection.cs
new file mode 100644 (file)
index 0000000..95279c3
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ForestTrustRelationshipCollisionCollection : ReadOnlyCollectionBase
+       {
+               public ForestTrustRelationshipCollision this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ForestTrustRelationshipCollision collision)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ForestTrustRelationshipCollision collision)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ForestTrustRelationshipCollision[] array, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipInformation.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipInformation.cs
new file mode 100644 (file)
index 0000000..e6c72b9
--- /dev/null
@@ -0,0 +1,54 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections.Specialized;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class ForestTrustRelationshipInformation : TrustRelationshipInformation
+       {
+               public TopLevelNameCollection TopLevelNames {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public StringCollection ExcludedTopLevelNames {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ForestTrustDomainInfoCollection TrustedDomainInformation {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public void Save ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/GlobalCatalog.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/GlobalCatalog.cs
new file mode 100644 (file)
index 0000000..c3d816b
--- /dev/null
@@ -0,0 +1,95 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class GlobalCatalog : DomainController
+       {
+               public static GlobalCatalog GetGlobalCatalog (DirectoryContext context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public new static GlobalCatalog FindOne (DirectoryContext context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public new static GlobalCatalog FindOne (DirectoryContext context, string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public new static GlobalCatalog FindOne (DirectoryContext context, LocatorOptions flag)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public new static GlobalCatalog FindOne (DirectoryContext context, string siteName, LocatorOptions flag)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public new static GlobalCatalogCollection FindAll (DirectoryContext context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public new static GlobalCatalogCollection FindAll (DirectoryContext context, string siteName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override GlobalCatalog EnableGlobalCatalog ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DomainController DisableGlobalCatalog ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override bool IsGlobalCatalog ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReadOnlyActiveDirectorySchemaPropertyCollection FindAllProperties ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true), DirectoryServicesPermission(SecurityAction.InheritanceDemand, Unrestricted = true)]
+               public override DirectorySearcher GetDirectorySearcher ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/GlobalCatalogCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/GlobalCatalogCollection.cs
new file mode 100644 (file)
index 0000000..9725e7e
--- /dev/null
@@ -0,0 +1,51 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class GlobalCatalogCollection : ReadOnlyCollectionBase
+       {
+               public GlobalCatalog this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (GlobalCatalog globalCatalog)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (GlobalCatalog globalCatalog)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (GlobalCatalog[] globalCatalogs, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/HourOfDay.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/HourOfDay.cs
new file mode 100644 (file)
index 0000000..1e1825a
--- /dev/null
@@ -0,0 +1,53 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum HourOfDay
+       {
+               Zero,    // midnight
+               One,
+               Two,
+               Three,
+               Four,
+               Five,
+               Six,
+               Seven,
+               Eight,
+               Nine,
+               Ten,
+               Eleven,
+               Twelve,
+               Thirteen,
+               Fourteen,
+               Fifteen,
+               Sixteen,
+               Seventeen,
+               Eighteen,
+               Nineteen,
+               Twenty,
+               TwentyOne,
+               TwentyTwo,
+               TwentyThree
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/LocatorOptions.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/LocatorOptions.cs
new file mode 100644 (file)
index 0000000..e4e31dd
--- /dev/null
@@ -0,0 +1,35 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Flags]
+       public enum LocatorOptions : long
+       {
+               ForceRediscovery   =     1L,
+               KdcRequired        =  1024L,
+               TimeServerRequired =  2048L,
+               WriteableRequired  =  4096L,
+               AvoidSelf          = 16384L
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/MinuteOfHour.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/MinuteOfHour.cs
new file mode 100644 (file)
index 0000000..67c3806
--- /dev/null
@@ -0,0 +1,33 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum MinuteOfHour
+       {
+               Zero,
+               Fifteen = 15,
+               Thirty = 30,
+               FortyFive = 45
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/NotificationStatus.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/NotificationStatus.cs
new file mode 100644 (file)
index 0000000..6bf2c2e
--- /dev/null
@@ -0,0 +1,32 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum NotificationStatus
+       {
+               NoNotification,
+               IntraSiteOnly,
+               NotificationAlways
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/PropertyTypes.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/PropertyTypes.cs
new file mode 100644 (file)
index 0000000..179075c
--- /dev/null
@@ -0,0 +1,33 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Flags]
+       public enum PropertyTypes
+       {
+               Indexed = 2,
+               InGlobalCatalog = 4
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyActiveDirectorySchemaClassCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyActiveDirectorySchemaClassCollection.cs
new file mode 100644 (file)
index 0000000..5690994
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReadOnlyActiveDirectorySchemaClassCollection : ReadOnlyCollectionBase
+       {
+               public ActiveDirectorySchemaClass this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ActiveDirectorySchemaClass schemaClass)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectorySchemaClass schemaClass)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectorySchemaClass[] classes, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyActiveDirectorySchemaPropertyCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyActiveDirectorySchemaPropertyCollection.cs
new file mode 100644 (file)
index 0000000..e7ecf7e
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReadOnlyActiveDirectorySchemaPropertyCollection : ReadOnlyCollectionBase
+       {
+               public ActiveDirectorySchemaProperty this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ActiveDirectorySchemaProperty schemaProperty)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectorySchemaProperty schemaProperty)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectorySchemaProperty[] properties, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyDirectoryServerCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyDirectoryServerCollection.cs
new file mode 100644 (file)
index 0000000..a30a4a9
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReadOnlyDirectoryServerCollection : ReadOnlyCollectionBase
+       {
+               public DirectoryServer this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (DirectoryServer directoryServer)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (DirectoryServer directoryServer)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (DirectoryServer[] directoryServers, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlySiteCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlySiteCollection.cs
new file mode 100644 (file)
index 0000000..52e8e9b
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReadOnlySiteCollection : ReadOnlyCollectionBase
+       {
+               public ActiveDirectorySite this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ActiveDirectorySite site)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectorySite site)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectorySite[] sites, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlySiteLinkBridgeCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlySiteLinkBridgeCollection.cs
new file mode 100644 (file)
index 0000000..c73f604
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReadOnlySiteLinkBridgeCollection : ReadOnlyCollectionBase
+       {
+               public ActiveDirectorySiteLinkBridge this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ActiveDirectorySiteLinkBridge bridge)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectorySiteLinkBridge bridge)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectorySiteLinkBridge[] bridges, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlySiteLinkCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlySiteLinkCollection.cs
new file mode 100644 (file)
index 0000000..cef4f67
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReadOnlySiteLinkCollection : ReadOnlyCollectionBase
+       {
+               public ActiveDirectorySiteLink this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ActiveDirectorySiteLink link)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ActiveDirectorySiteLink link)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ActiveDirectorySiteLink[] links, int index)
+               {
+                       base.InnerList.CopyTo (links, index);
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyStringCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReadOnlyStringCollection.cs
new file mode 100644 (file)
index 0000000..9edd14e
--- /dev/null
@@ -0,0 +1,48 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReadOnlyStringCollection : ReadOnlyCollectionBase
+       {
+               public string this [int index] {
+                       get { throw new NotImplementedException (); }
+               }
+
+               public bool Contains (string value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (string value)
+               {
+                       throw new NotImplementedException ();
+               }
+        
+               public void CopyTo (string[] values, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationConnection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationConnection.cs
new file mode 100644 (file)
index 0000000..1976330
--- /dev/null
@@ -0,0 +1,181 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.ComponentModel;
+using System.Runtime.InteropServices;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [DirectoryServicesPermission(SecurityAction.LinkDemand, Unrestricted = true)]
+       public class ReplicationConnection : IDisposable
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string SourceServer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string DestinationServer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Enabled {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectoryTransportType TransportType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool GeneratedByKcc {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool ReciprocalReplicationEnabled {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public NotificationStatus ChangeNotificationStatus {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool DataCompressionEnabled {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool ReplicationScheduleOwnedByUser {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReplicationSpan ReplicationSpan {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySchedule ReplicationSchedule {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public static ReplicationConnection FindByName (DirectoryContext context, string name)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReplicationConnection (DirectoryContext context, string name, DirectoryServer sourceServer) : this(context, name, sourceServer, null, ActiveDirectoryTransportType.Rpc)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReplicationConnection (DirectoryContext context, string name, DirectoryServer sourceServer, ActiveDirectorySchedule schedule) : this(context, name, sourceServer, schedule, ActiveDirectoryTransportType.Rpc)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReplicationConnection (DirectoryContext context, string name, DirectoryServer sourceServer, ActiveDirectoryTransportType transport) : this(context, name, sourceServer, null, transport)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ReplicationConnection (DirectoryContext context, string name, DirectoryServer sourceServer, ActiveDirectorySchedule schedule, ActiveDirectoryTransportType transport)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Dispose ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected virtual void Dispose (bool disposing)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Delete ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void Save ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public override string ToString ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectoryEntry GetDirectoryEntry ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationConnectionCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationConnectionCollection.cs
new file mode 100644 (file)
index 0000000..b46a2b4
--- /dev/null
@@ -0,0 +1,51 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReplicationConnectionCollection : ReadOnlyCollectionBase
+       {
+               public ReplicationConnection this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ReplicationConnection connection)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ReplicationConnection connection)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ReplicationConnection[] connections, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationCursor.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationCursor.cs
new file mode 100644 (file)
index 0000000..7a50391
--- /dev/null
@@ -0,0 +1,60 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Runtime.InteropServices;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReplicationCursor
+       {
+               public string PartitionName {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public Guid SourceInvocationId {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public long UpToDatenessUsn {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string SourceServer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DateTime LastSuccessfulSyncTime {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+       }
+}
\ No newline at end of file
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationCursorCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationCursorCollection.cs
new file mode 100644 (file)
index 0000000..d14e35b
--- /dev/null
@@ -0,0 +1,48 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReplicationCursorCollection : ReadOnlyCollectionBase
+       {
+               public ReplicationCursor this [int index] {
+                       get { throw new NotImplementedException (); }
+               }
+
+               public bool Contains (ReplicationCursor cursor)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ReplicationCursor cursor)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ReplicationCursor[] values, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationFailure.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationFailure.cs
new file mode 100644 (file)
index 0000000..39291b7
--- /dev/null
@@ -0,0 +1,59 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReplicationFailure
+       {
+               public string SourceServer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DateTime FirstFailureTime {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int ConsecutiveFailureCount {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int LastErrorCode {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string LastErrorMessage {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationFailureCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationFailureCollection.cs
new file mode 100644 (file)
index 0000000..4b55b86
--- /dev/null
@@ -0,0 +1,53 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReplicationFailureCollection : ReadOnlyCollectionBase
+       {
+               public ReplicationFailure this[int index]
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains(ReplicationFailure failure)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf(ReplicationFailure failure)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo(ReplicationFailure[] failures, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationNeighbor.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationNeighbor.cs
new file mode 100644 (file)
index 0000000..a134caa
--- /dev/null
@@ -0,0 +1,122 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReplicationNeighbor
+       {
+               [Flags]
+               public enum ReplicationNeighborOptions : long
+               {
+                       Writeable = 16L,
+                       SyncOnStartup = 32L,
+                       ScheduledSync = 64L,
+                       UseInterSiteTransport = 128L,
+                       TwoWaySync = 512L,
+                       ReturnObjectParent = 2048L,
+                       FullSyncInProgress = 65536L,
+                       FullSyncNextPacket = 131072L,
+                       NeverSynced = 2097152L,
+                       Preempted = 16777216L,
+                       IgnoreChangeNotifications = 67108864L,
+                       DisableScheduledSync = 134217728L,
+                       CompressChanges = 268435456L,
+                       NoChangeNotifications = 536870912L,
+                       PartialAttributeSet = 1073741824L
+               }
+
+               public string PartitionName {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string SourceServer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectoryTransportType TransportType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReplicationNeighbor.ReplicationNeighborOptions ReplicationNeighborOption {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public Guid SourceInvocationId {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               
+               public long UsnLastObjectChangeSynced {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               
+               public long UsnAttributeFilter {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               
+               public DateTime LastSuccessfulSync {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               
+               public DateTime LastAttemptedSync {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               
+               public int LastSyncResult {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               
+               public string LastSyncMessage {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int ConsecutiveFailureCount {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+               
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationNeighborCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationNeighborCollection.cs
new file mode 100644 (file)
index 0000000..aac4f9a
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReplicationNeighborCollection : ReadOnlyCollectionBase
+       {
+               public ReplicationNeighbor this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ReplicationNeighbor neighbor)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ReplicationNeighbor neighbor)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ReplicationNeighbor[] neighbors, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperation.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperation.cs
new file mode 100644 (file)
index 0000000..b5af673
--- /dev/null
@@ -0,0 +1,65 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReplicationOperation
+       {
+               public DateTime TimeEnqueued {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int OperationNumber {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int Priority {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReplicationOperationType OperationType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string PartitionName {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string SourceServer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperationCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperationCollection.cs
new file mode 100644 (file)
index 0000000..a8a1326
--- /dev/null
@@ -0,0 +1,56 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReplicationOperationCollection : ReadOnlyCollectionBase
+       {
+               public ReplicationOperation this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (ReplicationOperation operation)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (ReplicationOperation operation)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (ReplicationOperation[] operations, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               private int Add (ReplicationOperation operation)
+               {
+                       throw new NotImplementedException ();
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperationInformation.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperationInformation.cs
new file mode 100644 (file)
index 0000000..50325a0
--- /dev/null
@@ -0,0 +1,46 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class ReplicationOperationInformation
+       {
+               public DateTime OperationStartTime {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReplicationOperation CurrentOperation {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ReplicationOperationCollection PendingOperations {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperationType.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationOperationType.cs
new file mode 100644 (file)
index 0000000..52c3790
--- /dev/null
@@ -0,0 +1,34 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum ReplicationOperationType
+       {
+               Sync,
+               Add,
+               Delete,
+               Modify,
+               UpdateReference
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationSecurityLevel.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationSecurityLevel.cs
new file mode 100644 (file)
index 0000000..17b6a72
--- /dev/null
@@ -0,0 +1,31 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum ReplicationSecurityLevel
+       {
+               MutualAuthentication = 2,
+               Negotiate = 1,
+               NegotiatePassThrough = 0
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationSpan.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/ReplicationSpan.cs
new file mode 100644 (file)
index 0000000..fb59672
--- /dev/null
@@ -0,0 +1,31 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum ReplicationSpan
+       {
+               IntraSite,
+               InterSite
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SchemaClassType.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SchemaClassType.cs
new file mode 100644 (file)
index 0000000..0583790
--- /dev/null
@@ -0,0 +1,33 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum SchemaClassType
+       {
+               Type88,
+               Structural,
+               Abstract,
+               Auxiliary
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SecurityMasks.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SecurityMasks.cs
new file mode 100644 (file)
index 0000000..fb66892
--- /dev/null
@@ -0,0 +1,34 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+namespace System.DirectoryServices
+{
+       [Flags]
+       public enum SecurityMasks
+       {
+               None = 0,
+               Owner = 1,
+               Group = 2,
+               Dacl = 4,
+               Sacl = 8
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersErrorCategory.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersErrorCategory.cs
new file mode 100644 (file)
index 0000000..cc1c762
--- /dev/null
@@ -0,0 +1,32 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum SyncFromAllServersErrorCategory
+       {
+               ErrorContactingServer,
+               ErrorReplicating,
+               ServerUnreachable
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersErrorInformation.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersErrorInformation.cs
new file mode 100644 (file)
index 0000000..4d97002
--- /dev/null
@@ -0,0 +1,59 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class SyncFromAllServersErrorInformation
+       {
+               public SyncFromAllServersErrorCategory ErrorCategory {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public int ErrorCode {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string ErrorMessage {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string TargetServer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string SourceServer {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersEvent.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersEvent.cs
new file mode 100644 (file)
index 0000000..0369dcb
--- /dev/null
@@ -0,0 +1,33 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum SyncFromAllServersEvent
+       {
+               Error,
+               SyncStarted,
+               SyncCompleted,
+               Finished
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersOperationException.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersOperationException.cs
new file mode 100644 (file)
index 0000000..16d2544
--- /dev/null
@@ -0,0 +1,68 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Runtime.Serialization;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Serializable]
+       public class SyncFromAllServersOperationException : ActiveDirectoryOperationException, ISerializable
+       {
+               public SyncFromAllServersErrorInformation[] ErrorInformation {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public SyncFromAllServersOperationException (string message, Exception inner, SyncFromAllServersErrorInformation[] errors) : base(message, inner)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public SyncFromAllServersOperationException (string message, Exception inner) : base(message, inner)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public SyncFromAllServersOperationException (string message) : base(message)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public SyncFromAllServersOperationException () : base("DSSyncAllFailure")
+               {
+                       throw new NotImplementedException ();
+               }
+
+               protected SyncFromAllServersOperationException (SerializationInfo info, StreamingContext context) : base(info, context)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
+               public override void GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersOptions.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncFromAllServersOptions.cs
new file mode 100644 (file)
index 0000000..e00ef1a
--- /dev/null
@@ -0,0 +1,37 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Flags]
+       public enum SyncFromAllServersOptions
+       {
+               None = 0,
+               AbortIfServerUnavailable = 1,
+               SyncAdjacentServerOnly = 2,
+               CheckServerAlivenessOnly = 8,
+               SkipInitialCheck = 16,
+               PushChangeOutward = 32, 
+               CrossSite = 64
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncUpdateCallback.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/SyncUpdateCallback.cs
new file mode 100644 (file)
index 0000000..a9546fe
--- /dev/null
@@ -0,0 +1,28 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public delegate bool SyncUpdateCallback(SyncFromAllServersEvent eventType, string targetServer, string sourceServer, SyncFromAllServersOperationException exception);
+}
\ No newline at end of file
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelName.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelName.cs
new file mode 100644 (file)
index 0000000..f3e9663
--- /dev/null
@@ -0,0 +1,43 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class TopLevelName
+       {
+               public string Name {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public TopLevelNameStatus Status {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelNameCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelNameCollection.cs
new file mode 100644 (file)
index 0000000..709212a
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class TopLevelNameCollection : ReadOnlyCollectionBase
+       {
+               public TopLevelName this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (TopLevelName name)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (TopLevelName name)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (TopLevelName[] names, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelNameCollisionOptions.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelNameCollisionOptions.cs
new file mode 100644 (file)
index 0000000..8f74903
--- /dev/null
@@ -0,0 +1,34 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       [Flags]
+       public enum TopLevelNameCollisionOptions
+       {
+               None = 0,
+               NewlyCreated = 1,
+               DisabledByAdmin = 2,
+               DisabledByConflict = 4
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelNameStatus.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TopLevelNameStatus.cs
new file mode 100644 (file)
index 0000000..36cf61d
--- /dev/null
@@ -0,0 +1,34 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum TopLevelNameStatus
+       {
+               Enabled,
+               NewlyCreated,
+               AdminDisabled,
+               ConflictDisabled = 4
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustDirection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustDirection.cs
new file mode 100644 (file)
index 0000000..ca67864
--- /dev/null
@@ -0,0 +1,33 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum TrustDirection
+       {
+               Inbound = 1,
+               Outbound,
+               Bidirectional
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustRelationshipInformation.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustRelationshipInformation.cs
new file mode 100644 (file)
index 0000000..4dfcbb2
--- /dev/null
@@ -0,0 +1,52 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class TrustRelationshipInformation
+       {
+               public string SourceName {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string TargetName {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public TrustType TrustType {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public TrustDirection TrustDirection {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustRelationshipInformationCollection.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustRelationshipInformationCollection.cs
new file mode 100644 (file)
index 0000000..39dfff9
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Collections;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public class TrustRelationshipInformationCollection : ReadOnlyCollectionBase
+       {
+               public TrustRelationshipInformation this [int index] {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public bool Contains (TrustRelationshipInformation information)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public int IndexOf (TrustRelationshipInformation information)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void CopyTo (TrustRelationshipInformation[] array, int index)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustType.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices.ActiveDirectory/TrustType.cs
new file mode 100644 (file)
index 0000000..659733a
--- /dev/null
@@ -0,0 +1,37 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+
+namespace System.DirectoryServices.ActiveDirectory
+{
+       public enum TrustType
+       {
+               TreeRoot,
+               ParentChild,
+               CrossLink,
+               External,
+               Forest,
+               Kerberos,
+               Unknown
+       }
+}
index 6dfe68caae189aa2d734dd2a589636940b6449bb..0c18dadf88dde6d43525590b73ecb4f772a77605 100644 (file)
@@ -1,17 +1,33 @@
 Assembly/AssemblyInfo.cs
 ../../build/common/Consts.cs.in
 ../../build/common/Locale.cs
+System.DirectoryServices/ActiveDirectoryAccessRule.cs
+System.DirectoryServices/ActiveDirectoryAuditRule.cs
+System.DirectoryServices/ActiveDirectoryRights.cs
+System.DirectoryServices/ActiveDirectorySecurityInheritance.cs
 System.DirectoryServices/AuthenticationTypes.cs
 System.DirectoryServices/DirectoryEntries.cs
 System.DirectoryServices/DirectoryEntry.cs
 System.DirectoryServices/DirectorySearcher.cs
+System.DirectoryServices/DirectoryServicesCOMException.cs
 System.DirectoryServices/DirectoryServicesPermission.cs
 System.DirectoryServices/DirectoryServicesPermissionAccess.cs
 System.DirectoryServices/DirectoryServicesPermissionAttribute.cs
 System.DirectoryServices/DirectoryServicesPermissionEntry.cs
 System.DirectoryServices/DirectoryServicesPermissionEntryCollection.cs
+System.DirectoryServices/DirectorySynchronization.cs
+System.DirectoryServices/DirectorySynchronizationOptions.cs
+System.DirectoryServices/DirectoryVirtualListView.cs
+System.DirectoryServices/DirectoryVirtualListViewContext.cs
 System.DirectoryServices/DSDescriptionAttribute.cs
+System.DirectoryServices/ExtendedDN.cs
+System.DirectoryServices/ExtendedRightAccessRule.cs
+System.DirectoryServices/ListChildrenAccessRule.cs
+System.DirectoryServices/PasswordEncodingMethod.cs
+System.DirectoryServices/PropertyAccess.cs
+System.DirectoryServices/PropertyAccessRule.cs
 System.DirectoryServices/PropertyCollection.cs
+System.DirectoryServices/PropertySetAccessRule.cs
 System.DirectoryServices/PropertyValueCollection.cs
 System.DirectoryServices/ReferralChasingOption.cs
 System.DirectoryServices/ResultPropertyCollection.cs
@@ -24,3 +40,95 @@ System.DirectoryServices/SortDirection.cs
 System.DirectoryServices/SortOption.cs
 ../../build/common/MonoTODOAttribute.cs
 System.DirectoryServices.Design/DirectoryEntryConverter.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectoryOperationException.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectoryPartition.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectoryReplicationMetadata.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectoryRole.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectoryRoleCollection.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySchedule.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySchema.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaClass.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaClassCollection.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaProperty.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySchemaPropertyCollection.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySecurity.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectoryServerDownException.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySite.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteCollection.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLink.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLinkBridge.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteLinkCollection.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySiteOptions.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySubnet.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySubnetCollection.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectorySyntax.cs
+System.DirectoryServices.ActiveDirectory/ActiveDirectoryTransportType.cs
+System.DirectoryServices.ActiveDirectory/ApplicationPartition.cs
+System.DirectoryServices.ActiveDirectory/ApplicationPartitionCollection.cs
+System.DirectoryServices.ActiveDirectory/AttributeMetadata.cs
+System.DirectoryServices.ActiveDirectory/AttributeMetadataCollection.cs
+System.DirectoryServices.ActiveDirectory/DirectoryContext.cs
+System.DirectoryServices.ActiveDirectory/DirectoryContextType.cs
+System.DirectoryServices.ActiveDirectory/DirectoryEntryConfiguration.cs
+System.DirectoryServices.ActiveDirectory/DirectoryServer.cs
+System.DirectoryServices.ActiveDirectory/DirectoryServerCollection.cs
+System.DirectoryServices.ActiveDirectory/Domain.cs
+System.DirectoryServices.ActiveDirectory/DomainCollection.cs
+System.DirectoryServices.ActiveDirectory/DomainController.cs
+System.DirectoryServices.ActiveDirectory/DomainControllerCollection.cs
+System.DirectoryServices.ActiveDirectory/DomainMode.cs
+System.DirectoryServices.ActiveDirectory/DomainCollisionOptions.cs
+System.DirectoryServices.ActiveDirectory/Forest.cs
+System.DirectoryServices.ActiveDirectory/ForestMode.cs
+System.DirectoryServices.ActiveDirectory/ForestTrustCollisionException.cs
+System.DirectoryServices.ActiveDirectory/ForestTrustCollisionType.cs
+System.DirectoryServices.ActiveDirectory/ForestTrustDomainInformation.cs
+System.DirectoryServices.ActiveDirectory/ForestTrustDomainInfoCollection.cs
+System.DirectoryServices.ActiveDirectory/ForestTrustDomainStatus.cs
+System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipCollision.cs
+System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipCollisionCollection.cs
+System.DirectoryServices.ActiveDirectory/ForestTrustRelationshipInformation.cs
+System.DirectoryServices.ActiveDirectory/GlobalCatalog.cs
+System.DirectoryServices.ActiveDirectory/GlobalCatalogCollection.cs
+System.DirectoryServices.ActiveDirectory/HourOfDay.cs
+System.DirectoryServices.ActiveDirectory/LocatorOptions.cs
+System.DirectoryServices.ActiveDirectory/MinuteOfHour.cs
+System.DirectoryServices.ActiveDirectory/NotificationStatus.cs
+System.DirectoryServices.ActiveDirectory/PropertyTypes.cs
+System.DirectoryServices.ActiveDirectory/ReadOnlyActiveDirectorySchemaClassCollection.cs
+System.DirectoryServices.ActiveDirectory/ReadOnlyActiveDirectorySchemaPropertyCollection.cs
+System.DirectoryServices.ActiveDirectory/ReadOnlyDirectoryServerCollection.cs
+System.DirectoryServices.ActiveDirectory/ReadOnlySiteCollection.cs
+System.DirectoryServices.ActiveDirectory/ReadOnlySiteLinkBridgeCollection.cs
+System.DirectoryServices.ActiveDirectory/ReadOnlySiteLinkCollection.cs
+System.DirectoryServices.ActiveDirectory/ReadOnlyStringCollection.cs
+System.DirectoryServices.ActiveDirectory/ReplicationConnection.cs
+System.DirectoryServices.ActiveDirectory/ReplicationConnectionCollection.cs
+System.DirectoryServices.ActiveDirectory/ReplicationCursor.cs
+System.DirectoryServices.ActiveDirectory/ReplicationCursorCollection.cs
+System.DirectoryServices.ActiveDirectory/ReplicationFailure.cs
+System.DirectoryServices.ActiveDirectory/ReplicationFailureCollection.cs
+System.DirectoryServices.ActiveDirectory/ReplicationNeighbor.cs
+System.DirectoryServices.ActiveDirectory/ReplicationNeighborCollection.cs
+System.DirectoryServices.ActiveDirectory/ReplicationOperation.cs
+System.DirectoryServices.ActiveDirectory/ReplicationOperationCollection.cs
+System.DirectoryServices.ActiveDirectory/ReplicationOperationInformation.cs
+System.DirectoryServices.ActiveDirectory/ReplicationOperationType.cs
+System.DirectoryServices.ActiveDirectory/ReplicationSecurityLevel.cs
+System.DirectoryServices.ActiveDirectory/ReplicationSpan.cs
+System.DirectoryServices.ActiveDirectory/SchemaClassType.cs
+System.DirectoryServices.ActiveDirectory/SecurityMasks.cs
+System.DirectoryServices.ActiveDirectory/SyncFromAllServersErrorCategory.cs
+System.DirectoryServices.ActiveDirectory/SyncFromAllServersErrorInformation.cs
+System.DirectoryServices.ActiveDirectory/SyncFromAllServersEvent.cs
+System.DirectoryServices.ActiveDirectory/SyncFromAllServersOperationException.cs
+System.DirectoryServices.ActiveDirectory/SyncFromAllServersOptions.cs
+System.DirectoryServices.ActiveDirectory/SyncUpdateCallback.cs
+System.DirectoryServices.ActiveDirectory/TopLevelNameCollisionOptions.cs
+System.DirectoryServices.ActiveDirectory/TopLevelName.cs
+System.DirectoryServices.ActiveDirectory/TopLevelNameCollection.cs
+System.DirectoryServices.ActiveDirectory/TopLevelNameStatus.cs
+System.DirectoryServices.ActiveDirectory/TrustDirection.cs
+System.DirectoryServices.ActiveDirectory/TrustRelationshipInformation.cs
+System.DirectoryServices.ActiveDirectory/TrustRelationshipInformationCollection.cs
+System.DirectoryServices.ActiveDirectory/TrustType.cs
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectoryAccessRule.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectoryAccessRule.cs
new file mode 100644 (file)
index 0000000..9c85473
--- /dev/null
@@ -0,0 +1,75 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+using System.Security.AccessControl;
+using System.Security.Principal;
+
+namespace System.DirectoryServices
+{
+       public class ActiveDirectoryAccessRule : ObjectAccessRule
+       {
+               public ActiveDirectoryRights ActiveDirectoryRights
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySecurityInheritance InheritanceType
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectoryAccessRule(IdentityReference identity, ActiveDirectoryRights adRights, AccessControlType type) : this(identity, (int)adRights, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ActiveDirectoryAccessRule(IdentityReference identity, ActiveDirectoryRights adRights, AccessControlType type, Guid objectType) : this(identity, (int)adRights, type, objectType, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ActiveDirectoryAccessRule(IdentityReference identity, ActiveDirectoryRights adRights, AccessControlType type, ActiveDirectorySecurityInheritance inheritanceType) : this(identity, (int)adRights, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ActiveDirectoryAccessRule(IdentityReference identity, ActiveDirectoryRights adRights, AccessControlType type, Guid objectType, ActiveDirectorySecurityInheritance inheritanceType) : this(identity, (int)adRights, type, objectType, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ActiveDirectoryAccessRule(IdentityReference identity, ActiveDirectoryRights adRights, AccessControlType type, ActiveDirectorySecurityInheritance inheritanceType, Guid inheritedObjectType) : this(identity, (int)adRights, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, inheritedObjectType)
+               {
+               }
+
+               public ActiveDirectoryAccessRule(IdentityReference identity, ActiveDirectoryRights adRights, AccessControlType type, Guid objectType, ActiveDirectorySecurityInheritance inheritanceType, Guid inheritedObjectType) : this(identity, (int)adRights, type, objectType, false, InheritanceFlags.None, PropagationFlags.None, inheritedObjectType)
+               {
+               }
+
+               internal ActiveDirectoryAccessRule(IdentityReference identity, int accessMask, AccessControlType type, Guid objectType, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, Guid inheritedObjectType) : base(identity, accessMask, isInherited, inheritanceFlags, propagationFlags, objectType, inheritedObjectType, type)
+               {
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectoryAuditRule.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectoryAuditRule.cs
new file mode 100644 (file)
index 0000000..879ed08
--- /dev/null
@@ -0,0 +1,75 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+using System.Security.AccessControl;
+using System.Security.Principal;
+
+namespace System.DirectoryServices
+{
+       public class ActiveDirectoryAuditRule : ObjectAuditRule
+       {
+               public ActiveDirectoryRights ActiveDirectoryRights
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectorySecurityInheritance InheritanceType
+               {
+                       get
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public ActiveDirectoryAuditRule(IdentityReference identity, ActiveDirectoryRights adRights, AuditFlags auditFlags) : this(identity, (int)adRights, auditFlags, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ActiveDirectoryAuditRule(IdentityReference identity, ActiveDirectoryRights adRights, AuditFlags auditFlags, Guid objectType) : this(identity, (int)adRights, auditFlags, objectType, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ActiveDirectoryAuditRule(IdentityReference identity, ActiveDirectoryRights adRights, AuditFlags auditFlags, ActiveDirectorySecurityInheritance inheritanceType) : this(identity, (int)adRights, auditFlags, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ActiveDirectoryAuditRule(IdentityReference identity, ActiveDirectoryRights adRights, AuditFlags auditFlags, Guid objectType, ActiveDirectorySecurityInheritance inheritanceType) : this(identity, (int)adRights, auditFlags, objectType, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ActiveDirectoryAuditRule(IdentityReference identity, ActiveDirectoryRights adRights, AuditFlags auditFlags, ActiveDirectorySecurityInheritance inheritanceType, Guid inheritedObjectType) : this(identity, (int)adRights, auditFlags, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, inheritedObjectType)
+               {
+               }
+
+               public ActiveDirectoryAuditRule(IdentityReference identity, ActiveDirectoryRights adRights, AuditFlags auditFlags, Guid objectType, ActiveDirectorySecurityInheritance inheritanceType, Guid inheritedObjectType) : this(identity, (int)adRights, auditFlags, objectType, false, InheritanceFlags.None, PropagationFlags.None, inheritedObjectType)
+               {
+               }
+
+               internal ActiveDirectoryAuditRule(IdentityReference identity, int accessMask, AuditFlags auditFlags, Guid objectGuid, bool isInherited, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, Guid inheritedObjectType) : base(identity, accessMask, isInherited, inheritanceFlags, propagationFlags, objectGuid, inheritedObjectType, auditFlags)
+               {
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectoryRights.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectoryRights.cs
new file mode 100644 (file)
index 0000000..d8c994e
--- /dev/null
@@ -0,0 +1,50 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+
+namespace System.DirectoryServices
+{
+       [Flags]
+       public enum ActiveDirectoryRights
+       {
+               Delete = 65536,
+               ReadControl = 131072,
+               WriteDacl = 262144,
+               WriteOwner = 524288,
+               Synchronize = 1048576,
+               AccessSystemSecurity = 16777216,
+               GenericRead = 131220,
+               GenericWrite = 131112,
+               GenericExecute = 131076,
+               GenericAll = 983551,
+               CreateChild = 1,
+               DeleteChild = 2,
+               ListChildren = 4,
+               Self = 8,
+               ReadProperty = 16,
+               WriteProperty = 32,
+               DeleteTree = 64,
+               ListObject = 128,
+               ExtendedRight = 256
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectorySecurityInheritance.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/ActiveDirectorySecurityInheritance.cs
new file mode 100644 (file)
index 0000000..6853871
--- /dev/null
@@ -0,0 +1,35 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+
+using System;
+
+namespace System.DirectoryServices
+{
+       public enum ActiveDirectorySecurityInheritance
+       {
+               None,
+               All,
+               Descendents,
+               SelfAndChildren,
+               Children
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/DirectoryServicesCOMException.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/DirectoryServicesCOMException.cs
new file mode 100644 (file)
index 0000000..c163449
--- /dev/null
@@ -0,0 +1,66 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Runtime.InteropServices;
+using System.Runtime.Serialization;
+using System.Security.Permissions;
+
+namespace System.DirectoryServices
+{
+       [Serializable]
+       public class DirectoryServicesCOMException : COMException, ISerializable
+       {
+               public int ExtendedError {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public string ExtendedErrorMessage {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DirectoryServicesCOMException ()
+               {
+               }
+
+               public DirectoryServicesCOMException (string message) : base(message)
+               {
+               }
+
+               public DirectoryServicesCOMException (string message, Exception inner) : base(message, inner)
+               {
+               }
+
+               protected DirectoryServicesCOMException (SerializationInfo info, StreamingContext context) : base(info, context)
+               {
+               }
+
+               [SecurityPermission(SecurityAction.Demand, SerializationFormatter = true)]
+               public override void GetObjectData (SerializationInfo serializationInfo, StreamingContext streamingContext)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/DirectorySynchronization.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/DirectorySynchronization.cs
new file mode 100644 (file)
index 0000000..2602807
--- /dev/null
@@ -0,0 +1,78 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.ComponentModel;
+
+namespace System.DirectoryServices
+{
+       public class DirectorySynchronization
+       {
+               [DefaultValue(DirectorySynchronizationOptions.None), DSDescription("DSDirectorySynchronizationFlag")]
+               public DirectorySynchronizationOptions Option {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DirectorySynchronization ()
+               {
+               }
+
+               public DirectorySynchronization (DirectorySynchronizationOptions option)
+               {
+               }
+
+               public DirectorySynchronization (DirectorySynchronization sync)
+               {
+               }
+
+               public DirectorySynchronization (byte[] cookie)
+               {
+               }
+
+               public DirectorySynchronization (DirectorySynchronizationOptions option, byte[] cookie)
+               {
+               }
+
+               public byte[] GetDirectorySynchronizationCookie ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public void ResetDirectorySynchronizationCookie ()
+               {
+               }
+
+               public void ResetDirectorySynchronizationCookie (byte[] cookie)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public DirectorySynchronization Copy ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/DirectorySynchronizationOptions.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/DirectorySynchronizationOptions.cs
new file mode 100644 (file)
index 0000000..a696064
--- /dev/null
@@ -0,0 +1,34 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+namespace System.DirectoryServices
+{
+       [Flags]
+       public enum DirectorySynchronizationOptions : long
+       {
+               None = 0L,
+               ObjectSecurity = 1L,
+               ParentsFirst = 2048L,
+               PublicDataOnly = 8192L,
+               IncrementalValues = 2147483648L
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/DirectoryVirtualListView.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/DirectoryVirtualListView.cs
new file mode 100644 (file)
index 0000000..92aa076
--- /dev/null
@@ -0,0 +1,126 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.ComponentModel;
+
+namespace System.DirectoryServices
+{
+       public class DirectoryVirtualListView
+       {
+               [DefaultValue(0), DSDescription("DSBeforeCount")]
+               public int BeforeCount {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [DefaultValue(0), DSDescription("DSAfterCount")]
+               public int AfterCount {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [DefaultValue(0), DSDescription("DSOffset")]
+               public int Offset {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [DefaultValue(0), DSDescription("DSTargetPercentage")]
+               public int TargetPercentage {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [DefaultValue("")]
+               [TypeConverter ("System.Diagnostics.Design.StringValueConverter, " + Consts.AssemblySystem_Design)]
+               [DSDescription("DSTarget")]
+               public string Target {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [DefaultValue(0), DSDescription("DSApproximateTotal")]
+               public int ApproximateTotal {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               [DefaultValue(null), DSDescription("DSDirectoryVirtualListViewContext")]
+               public DirectoryVirtualListViewContext DirectoryVirtualListViewContext {
+                       get {
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public DirectoryVirtualListView ()
+               {
+               }
+
+               public DirectoryVirtualListView (int afterCount)
+               {
+
+               }
+
+               public DirectoryVirtualListView (int beforeCount, int afterCount, int offset)
+               {
+               }
+
+               public DirectoryVirtualListView (int beforeCount, int afterCount, string target)
+               {
+               }
+
+               public DirectoryVirtualListView (int beforeCount, int afterCount, int offset, DirectoryVirtualListViewContext context)
+               {
+               }
+
+               public DirectoryVirtualListView (int beforeCount, int afterCount, string target, DirectoryVirtualListViewContext context)
+               {
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/DirectoryVirtualListViewContext.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/DirectoryVirtualListViewContext.cs
new file mode 100644 (file)
index 0000000..809fe2f
--- /dev/null
@@ -0,0 +1,36 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+namespace System.DirectoryServices
+{
+       public class DirectoryVirtualListViewContext
+       {
+               public DirectoryVirtualListViewContext ()
+               {
+               }
+
+               public DirectoryVirtualListViewContext Copy ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/ExtendedDN.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/ExtendedDN.cs
new file mode 100644 (file)
index 0000000..fb1a93e
--- /dev/null
@@ -0,0 +1,31 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+namespace System.DirectoryServices
+{
+       public enum ExtendedDN
+       {
+               None = -1,
+               HexString,
+               Standard
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/ExtendedRightAccessRule.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/ExtendedRightAccessRule.cs
new file mode 100644 (file)
index 0000000..742d15f
--- /dev/null
@@ -0,0 +1,54 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.AccessControl;
+using System.Security.Principal;
+
+namespace System.DirectoryServices
+{
+       public sealed class ExtendedRightAccessRule : ActiveDirectoryAccessRule
+       {
+               public ExtendedRightAccessRule (IdentityReference identity, AccessControlType type) : base(identity, 256, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ExtendedRightAccessRule (IdentityReference identity, AccessControlType type, Guid extendedRightType) : base(identity, 256, type, extendedRightType, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ExtendedRightAccessRule (IdentityReference identity, AccessControlType type, ActiveDirectorySecurityInheritance inheritanceType) : base(identity, 256, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ExtendedRightAccessRule (IdentityReference identity, AccessControlType type, Guid extendedRightType, ActiveDirectorySecurityInheritance inheritanceType) : base(identity, 256, type, extendedRightType, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ExtendedRightAccessRule (IdentityReference identity, AccessControlType type, ActiveDirectorySecurityInheritance inheritanceType, Guid inheritedObjectType) : base(identity, 256, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, inheritedObjectType)
+               {
+               }
+
+               public ExtendedRightAccessRule (IdentityReference identity, AccessControlType type, Guid extendedRightType, ActiveDirectorySecurityInheritance inheritanceType, Guid inheritedObjectType) : base(identity, 256, type, extendedRightType, false, InheritanceFlags.None, PropagationFlags.None, inheritedObjectType)
+               {
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/ListChildrenAccessRule.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/ListChildrenAccessRule.cs
new file mode 100644 (file)
index 0000000..03ef876
--- /dev/null
@@ -0,0 +1,42 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.AccessControl;
+using System.Security.Principal;
+
+namespace System.DirectoryServices
+{
+       public sealed class ListChildrenAccessRule : ActiveDirectoryAccessRule
+       {
+               public ListChildrenAccessRule (IdentityReference identity, AccessControlType type) : base(identity, 4, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ListChildrenAccessRule (IdentityReference identity, AccessControlType type, ActiveDirectorySecurityInheritance inheritanceType) : base(identity, 4, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public ListChildrenAccessRule (IdentityReference identity, AccessControlType type, ActiveDirectorySecurityInheritance inheritanceType, Guid inheritedObjectType) : base(identity, 4, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, inheritedObjectType)
+               {
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/PasswordEncodingMethod.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/PasswordEncodingMethod.cs
new file mode 100644 (file)
index 0000000..4c5224e
--- /dev/null
@@ -0,0 +1,30 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+namespace System.DirectoryServices
+{
+       public enum PasswordEncodingMethod
+       {
+               PasswordEncodingSsl,
+               PasswordEncodingClear
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/PropertyAccess.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/PropertyAccess.cs
new file mode 100644 (file)
index 0000000..54fc88c
--- /dev/null
@@ -0,0 +1,30 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+namespace System.DirectoryServices
+{
+       public enum PropertyAccess
+       {
+               Read,
+               Write
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/PropertyAccessRule.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/PropertyAccessRule.cs
new file mode 100644 (file)
index 0000000..c890cc4
--- /dev/null
@@ -0,0 +1,54 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.AccessControl;
+using System.Security.Principal;
+
+namespace System.DirectoryServices
+{
+       public sealed class PropertyAccessRule : ActiveDirectoryAccessRule
+       {
+               public PropertyAccessRule (IdentityReference identity, AccessControlType type, PropertyAccess access) : base(identity, (int)AccessControlType.Allow, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public PropertyAccessRule (IdentityReference identity, AccessControlType type, PropertyAccess access, Guid propertyType) : base(identity, (int)AccessControlType.Allow, type, propertyType, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public PropertyAccessRule (IdentityReference identity, AccessControlType type, PropertyAccess access, ActiveDirectorySecurityInheritance inheritanceType) : base(identity, (int)AccessControlType.Allow, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public PropertyAccessRule (IdentityReference identity, AccessControlType type, PropertyAccess access, Guid propertyType, ActiveDirectorySecurityInheritance inheritanceType) : base(identity, (int)AccessControlType.Allow, type, propertyType, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public PropertyAccessRule (IdentityReference identity, AccessControlType type, PropertyAccess access, ActiveDirectorySecurityInheritance inheritanceType, Guid inheritedObjectType) : base(identity, (int)AccessControlType.Allow, type, Guid.Empty, false, InheritanceFlags.None, PropagationFlags.None, inheritedObjectType)
+               {
+               }
+
+               public PropertyAccessRule (IdentityReference identity, AccessControlType type, PropertyAccess access, Guid propertyType, ActiveDirectorySecurityInheritance inheritanceType, Guid inheritedObjectType) : base(identity, (int)AccessControlType.Allow, type, propertyType, false, InheritanceFlags.None, PropagationFlags.None, inheritedObjectType)
+               {
+               }
+       }
+}
diff --git a/mcs/class/System.DirectoryServices/System.DirectoryServices/PropertySetAccessRule.cs b/mcs/class/System.DirectoryServices/System.DirectoryServices/PropertySetAccessRule.cs
new file mode 100644 (file)
index 0000000..ab5455b
--- /dev/null
@@ -0,0 +1,42 @@
+/******************************************************************************
+* The MIT License
+*
+* Permission is hereby granted, free of charge, to any person obtaining  a copy
+* of this software and associated documentation files (the Software), to deal
+* in the Software without restriction, including  without limitation the rights
+* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+* copies of the Software, and to  permit persons to whom the Software is
+* furnished to do so, subject to the following conditions:
+*
+* The above copyright notice and this permission notice shall be included in
+* all copies or substantial portions of the Software.
+*
+* THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+* SOFTWARE.
+*******************************************************************************/
+using System;
+using System.Security.AccessControl;
+using System.Security.Principal;
+
+namespace System.DirectoryServices
+{
+       public sealed class PropertySetAccessRule : ActiveDirectoryAccessRule
+       {
+               public PropertySetAccessRule (IdentityReference identity, AccessControlType type, PropertyAccess access, Guid propertySetType) : base(identity, (int)AccessControlType.Allow, type, propertySetType, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public PropertySetAccessRule (IdentityReference identity, AccessControlType type, PropertyAccess access, Guid propertySetType, ActiveDirectorySecurityInheritance inheritanceType) : base(identity, (int)AccessControlType.Allow, type, propertySetType, false, InheritanceFlags.None, PropagationFlags.None, Guid.Empty)
+               {
+               }
+
+               public PropertySetAccessRule (IdentityReference identity, AccessControlType type, PropertyAccess access, Guid propertySetType, ActiveDirectorySecurityInheritance inheritanceType, Guid inheritedObjectType) : base(identity, (int)AccessControlType.Allow, type, propertySetType, false, InheritanceFlags.None, PropagationFlags.None, inheritedObjectType)
+               {
+               }
+       }
+}
index 6b735e3ffc196a89d589f23b0fbc661001b38337..55ee67897c950bb5bbd59598ff8c24290fa0704d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A6599D9A-CDAD-4AF3-84A1-1A664D1CC300}</ProjectGuid>\r
+    <ProjectGuid>{21BEB426-C8FA-484B-A7B0-1D4A5BF3307B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing.Design-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1a1eadca57af3b09e2ca22ea904b2a5dca662985..c9d3d884ab849df49c667e92cfb84554d1672a73 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6BFAB010-392A-4F3D-861D-19B5BEC476D5}</ProjectGuid>\r
+    <ProjectGuid>{8C367062-EFEF-4765-B1B1-5553608F6A60}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing.Design-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 29cbc585a6060639dbd5aee1097564473fc5db58..d8e443b21026c0d8dc56dcedda1fa189a2046594 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{167298A3-F7FD-41D9-888E-AAAD48074482}</ProjectGuid>\r
+    <ProjectGuid>{8B8B57E4-285A-409A-BA4A-290DE0055301}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing.Design-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 516e49c8d4b94aca5a613144b06c4520664fa492..d023bbe5103ab0e5a1be00dbed522d20e8a7a3e6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</ProjectGuid>\r
+    <ProjectGuid>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c6ef57c6fff826192067e5bd30a0e36b4462fbbb..183aa98b9847933ee68b0171c0f65c042512cbde 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</ProjectGuid>\r
+    <ProjectGuid>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 03f80f77541faa57435c9448eb3891becc28ffd8..a516d3918fc18c6671142b4d4b65a550c07b905e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</ProjectGuid>\r
+    <ProjectGuid>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dbd514676b1378deca3e730078dc9c307c809d81..f714bd243494f62340c6629b309cb7b2eea93981 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0EDFBC91-1A16-460C-857A-02FAA48FDD28}</ProjectGuid>\r
+    <ProjectGuid>{C94D612B-833E-4BF7-AA27-6F3420E5698B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Runtime.Serialization.Formatters.Soap.dll">\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 899b51bc01c1034ff59c1b92f05cededa662f26a..35ea9f4c3db8af6cf08d005d4211c1119f889adc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{26DC27D6-9854-4FF7-A4FE-B630E3B056B4}</ProjectGuid>\r
+    <ProjectGuid>{A238B822-D4AF-4D95-AB3B-C6D12C1ABBD4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c483edeea10d48fd1843dddc766bb0ec510e0566..3971ee36d9b6ba820a423c43f326bf3f9761e979 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3F01DF0A-D726-4D86-8E47-DADB8EA4D994}</ProjectGuid>\r
+    <ProjectGuid>{1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Drawing-tests-net_4_5</OutputPath>\r
     <Compile Include="Test\System.Drawing\TestStringFormat.cs" />\r
     <Compile Include="Test\System.Drawing\TestSystemBrushes.cs" />\r
     <Compile Include="Test\System.Drawing\TestSystemPens.cs" />\r
-    <Compile Include="Test\System.Drawing\TextureBrushTest.cs" />\r
-  </ItemGroup>\r
+    <Compile Include="Test\System.Drawing\TextureBrushTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent>\r
+\r
     </PreBuildEvent>\r
     <PostBuildEvent>\r
       xcopy $(TargetName).* $(ProjectDir)..\lib\net_4_5\ /Y /R /D\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
+      <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
+    </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
       <LogicalName>indexed.png</LogicalName>\r
     </EmbeddedResource>\r
   </ItemGroup>\r
-</Project>\r
+</Project>
index 6b16e44addcfdc1d512862f86a1435c698e18c24..02f601566defb854e4a2f4292ecdf80ecfe222b9 100644 (file)
@@ -176,7 +176,7 @@ namespace System.Drawing
                        }
                }
 
-               internal void setProperties (FontFamily family, float emSize, FontStyle style, GraphicsUnit unit, byte charSet, bool isVertical)
+               void setProperties (FontFamily family, float emSize, FontStyle style, GraphicsUnit unit, byte charSet, bool isVertical)
                {
                        _name = family.Name;
                        _fontFamily = family;                   
@@ -548,10 +548,24 @@ namespace System.Drawing
                                return false;
                }
 
+               private int _hashCode;
+
                public override int GetHashCode ()
                {
-                       return _name.GetHashCode () ^ FontFamily.GetHashCode () ^ _size.GetHashCode () ^ _style.GetHashCode () ^
-                               _gdiCharSet ^ _gdiVerticalFont.GetHashCode ();
+                       if (_hashCode == 0) {
+                               _hashCode = 17;
+                               unchecked {
+                                       _hashCode = _hashCode * 23 + _name.GetHashCode();
+                                       _hashCode = _hashCode * 23 + FontFamily.GetHashCode();
+                                       _hashCode = _hashCode * 23 + _size.GetHashCode();
+                                       _hashCode = _hashCode * 23 + _unit.GetHashCode();
+                                       _hashCode = _hashCode * 23 + _style.GetHashCode();
+                                       _hashCode = _hashCode * 23 + _gdiCharSet;
+                                       _hashCode = _hashCode * 23 + _gdiVerticalFont.GetHashCode();
+                               }
+                       }
+
+                       return _hashCode;
                }
 
                [MonoTODO ("The hdc parameter has no direct equivalent in libgdiplus.")]
index 7a849550dd46601c9a88597cf2595de3aa5e681e..6bdec491069f590577fa95a9f6277f8e1a6be42b 100644 (file)
@@ -631,5 +631,35 @@ namespace MonoTests.System.Drawing{
                        Assert.IsFalse (f1.GetHashCode () == f2.GetHashCode (), "1) Fonts with different sizes should have different HashCodes");
                        Assert.IsFalse (f1.GetHashCode () == f3.GetHashCode (), "2) Fonts with different styles should have different HashCodes");
                }
+
+        [Test]
+        public void GetHashCode_UnitDiffers_HashesNotEqual()
+        {
+            Font f1 = new Font("DejaVu Sans", 8.25F, GraphicsUnit.Point);
+            Font f2 = new Font("DejaVu Sans", 8.25F, GraphicsUnit.Pixel);
+
+            Assert.IsFalse(f1.GetHashCode() == f2.GetHashCode(),
+                "Hashcodes should differ if _unit member differs");
+        }
+
+        [Test]
+        public void GetHashCode_NameDiffers_HashesNotEqual()
+        {
+            Font f1 = new Font("DejaVu Sans", 8.25F, GraphicsUnit.Point);
+            Font f2 = new Font("Liberation Sans", 8.25F, GraphicsUnit.Point);
+
+            Assert.IsFalse(f1.GetHashCode() == f2.GetHashCode(),
+                "Hashcodes should differ if _name member differs");
+        }
+
+        [Test]
+        public void GetHashCode_StyleEqualsGdiCharSet_HashesNotEqual()
+        {
+            Font f1 = new Font("DejaVu Sans", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0)));
+            Font f2 = new Font("DejaVu Sans", 8.25F, FontStyle.Bold, GraphicsUnit.Point, ((byte)(1)));
+
+            Assert.IsFalse(f1.GetHashCode() == f2.GetHashCode(),
+                "Hashcodes should differ if _style member differs");
+        }
        }
 }
index 0a58e6a0e357291450a15920c9782a33779bbd83..b2b800565a6a2f47932808f473fdfeb00b95ecf9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{407F9F21-F368-4FC4-843A-5DBD4CC583BF}</ProjectGuid>\r
+    <ProjectGuid>{A946C338-F886-4859-A100-1F13A23E2970}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Dynamic-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fc9cff1fd62bd69d6bb2989987719e6d410b9e1f..bea64ea29b6b09423a69af574707a612c76bae70 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{ADDB864A-84AC-41AB-A978-268B68E98EAF}</ProjectGuid>\r
+    <ProjectGuid>{FB9F6B34-05B5-444F-885E-FF87DA721F12}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Dynamic-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b5ab1168f9109eae50246141a18c28ff7fe1f2bd..72fe3f63aa082c5a98062e3aa83a0b3b12bb3ddf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</ProjectGuid>\r
+    <ProjectGuid>{92E7A483-839B-4EFA-A77D-16C68F051941}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,162</NoWarn>\r
     <OutputPath>bin\Debug\System.EnterpriseServices-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5c9e91e30bf91d975921244195c71cf9e6dc15c3..30a52a03df793ee84d5e5d241a21743ee7f1a019 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</ProjectGuid>\r
+    <ProjectGuid>{31465E05-7B4F-4209-8B9B-5F596A032D27}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,162</NoWarn>\r
     <OutputPath>bin\Debug\System.EnterpriseServices-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2ad886024d1452a0f67d0fc1f16a447b2368605c..e6ce58d59c664ebe89bb781e0df66707ba3014d9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2B2808F7-930A-4416-A060-57D9F8DC879C}</ProjectGuid>\r
+    <ProjectGuid>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,162</NoWarn>\r
     <OutputPath>bin\Debug\System.EnterpriseServices-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 20ddee2d77cf7ed719e8ef19e40f32697d27605f..233b180c61dc6685ecbcedc7520b6b4bfb17017e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{33F1FAD8-42DA-489B-BEEE-E7E4EFE3891F}</ProjectGuid>\r
+    <ProjectGuid>{5A185DDB-82E9-4241-8216-82988647755A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel.Selectors-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_2_0.csproj">\r
-      <Project>{F2FA985C-3E81-483E-BB6E-E814706D57AE}</Project>\r
+      <Project>{FB6EBCB1-9EAF-4671-A9CB-505DC2FEC8A0}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 95c0619df99e4edb215cb8c3507f8170d3f780be..4e55b27a363e58911d6697a95b660ab6a9c49dec 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}</ProjectGuid>\r
+    <ProjectGuid>{45FB5242-B51C-43BC-A7B5-75E5E17C4E95}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel.Selectors-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_0.csproj">\r
-      <Project>{4326E85E-00B2-47F8-9A54-A8E15021CBA3}</Project>\r
+      <Project>{F3D909C0-D548-4FBC-BA04-BC8A445954EA}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5ea897ae8480cb06642d879d46e02959d1d33a78..43ed0c9446ce6c9362fb06f97e6d00f84b56f3de 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}</ProjectGuid>\r
+    <ProjectGuid>{5889C0B9-25DF-4405-A240-AC0615F4B3EB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel.Selectors-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</Project>\r
+      <Project>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 00c4bebd99d21eb5f5ba88a1045901b38fb671d5..fb95c791c03639cec92e689518516682fcd93849 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F2FA985C-3E81-483E-BB6E-E814706D57AE}</ProjectGuid>\r
+    <ProjectGuid>{FB6EBCB1-9EAF-4671-A9CB-505DC2FEC8A0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8ae224be8e5a8e8b1e4db6d673e3497d16e5707c..95caecc82cc973c35220e722cf82a634b18a9c5d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4326E85E-00B2-47F8-9A54-A8E15021CBA3}</ProjectGuid>\r
+    <ProjectGuid>{F3D909C0-D548-4FBC-BA04-BC8A445954EA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 203fc4278e1e067d9952ea695ff62103f79440a4..0414af47742db2c1e13e3ed140b578da33071f11 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</ProjectGuid>\r
+    <ProjectGuid>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4ab4232b6782faf90125add69dbf4d55fdad514b..fb59b3967036e7ba4f411d4915c82ab8539298a2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8013B230-BE02-4CE1-ABE8-BB834870FEC3}</ProjectGuid>\r
+    <ProjectGuid>{3852A17A-5D9C-4348-AEBF-2EE0EC3216FD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_2_0.csproj">\r
-      <Project>{F2FA985C-3E81-483E-BB6E-E814706D57AE}</Project>\r
+      <Project>{FB6EBCB1-9EAF-4671-A9CB-505DC2FEC8A0}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 89cbf67021bbc00fbb6d26dce6e93b089e55ec92..084bf0a3689b10224da71e15d90b95db9941cf85 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0E0B4A97-BE69-42C4-B5A5-B901FD60DBCC}</ProjectGuid>\r
+    <ProjectGuid>{EAA2407E-0E00-46D9-85F4-4EA31B1A0A95}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_0.csproj">\r
-      <Project>{4326E85E-00B2-47F8-9A54-A8E15021CBA3}</Project>\r
+      <Project>{F3D909C0-D548-4FBC-BA04-BC8A445954EA}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 4ead3d1affa26f5f26ba2b07c81b5dd212c9534d..b6667fe1e77e1d9e69ff739d7e0de791455d49bc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{79CC8709-A8CF-4AB2-8077-924F769AC65E}</ProjectGuid>\r
+    <ProjectGuid>{74D8D6B9-1D98-4F19-A834-A0C603AD1482}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.IdentityModel-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</Project>\r
+      <Project>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.Interactive.Async/Assembly/AssemblyInfo.cs b/mcs/class/System.Interactive.Async/Assembly/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..9db583d
--- /dev/null
@@ -0,0 +1,2 @@
+[assembly:System.Reflection.AssemblyVersion ("2.1.30214.0")]
+[assembly:System.Reflection.AssemblyFileVersion ("2.1.30214.0")]
diff --git a/mcs/class/System.Interactive.Async/Makefile b/mcs/class/System.Interactive.Async/Makefile
new file mode 100644 (file)
index 0000000..4305b34
--- /dev/null
@@ -0,0 +1,37 @@
+thisdir = class/System.Interactive.Async
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Interactive.Async.dll
+LIB_MCS_FLAGS = \
+               @more_build_args \
+               -r:System.dll \
+               -r:System.Core.dll
+
+ifeq (2.1, $(FRAMEWORK_VERSION))
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
+endif
+
+NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
+ifdef NET_4_5
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
+endif
+
+TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
+
+EXTRA_DISTFILES = more_build_args
+
+VALID_PROFILE := $(filter monotouch monodroid net_4_0 net_4_5, $(PROFILE))
+ifndef VALID_PROFILE
+LIBRARY_NAME = dummy-System.System.Interactive.Async.dll
+NO_SIGN_ASSEMBLY = yes
+endif
+
+INSTALL_PROFILE := $(filter net_4_5, $(PROFILE))
+ifndef INSTALL_PROFILE
+NO_INSTALL = yes
+endif
+
+NO_TEST = yes
+
+include ../../build/library.make
diff --git a/mcs/class/System.Interactive.Async/System.Interactive.Async.dll.sources b/mcs/class/System.Interactive.Async/System.Interactive.Async.dll.sources
new file mode 100644 (file)
index 0000000..cf0926e
--- /dev/null
@@ -0,0 +1,17 @@
+Assembly/AssemblyInfo.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/AsyncEnumerable.Conversions.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/AsyncEnumerable.Creation.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/AsyncEnumerable.Exceptions.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/AsyncEnumerable.Generated.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/AsyncEnumerable.Single.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/AsyncEnumerable.Multiple.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/AsyncEnumerable.Aggregates.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/AsyncEnumerator.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/Disposables.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/EnumerableGrouping.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/IAsyncEnumerable.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/IAsyncEnumerator.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/IAsyncGrouping.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/IOrderedAsyncEnumerable.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/Properties/AssemblyInfo.cs
+../../../external/rx/Ix/NET/System.Interactive.Async/TaskExt.cs
diff --git a/mcs/class/System.Interactive.Async/more_build_args b/mcs/class/System.Interactive.Async/more_build_args
new file mode 100644 (file)
index 0000000..a53ee7b
--- /dev/null
@@ -0,0 +1,3 @@
+-d:SIGNED
+-delaysign
+-keyfile:../reactive.pub
diff --git a/mcs/class/System.Interactive.Providers/Assembly/AssemblyInfo.cs b/mcs/class/System.Interactive.Providers/Assembly/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..9db583d
--- /dev/null
@@ -0,0 +1,2 @@
+[assembly:System.Reflection.AssemblyVersion ("2.1.30214.0")]
+[assembly:System.Reflection.AssemblyFileVersion ("2.1.30214.0")]
diff --git a/mcs/class/System.Interactive.Providers/Makefile b/mcs/class/System.Interactive.Providers/Makefile
new file mode 100644 (file)
index 0000000..6829108
--- /dev/null
@@ -0,0 +1,38 @@
+thisdir = class/System.Interactive.Providers
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Interactive.Providers.dll
+LIB_MCS_FLAGS = \
+               @more_build_args \
+               -r:System.dll \
+               -r:System.Core.dll \
+               -r:System.Interactive.dll
+
+ifeq (2.1, $(FRAMEWORK_VERSION))
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
+endif
+
+NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
+ifdef NET_4_5
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
+endif
+
+TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
+
+EXTRA_DISTFILES = more_build_args
+
+VALID_PROFILE := $(filter monotouch monodroid net_4_0 net_4_5, $(PROFILE))
+ifndef VALID_PROFILE
+LIBRARY_NAME = dummy-System.System.Interactive.Providers.dll
+NO_SIGN_ASSEMBLY = yes
+endif
+
+INSTALL_PROFILE := $(filter net_4_5, $(PROFILE))
+ifndef INSTALL_PROFILE
+NO_INSTALL = yes
+endif
+
+NO_TEST = yes
+
+include ../../build/library.make
diff --git a/mcs/class/System.Interactive.Providers/System.Interactive.Providers.dll.sources b/mcs/class/System.Interactive.Providers/System.Interactive.Providers.dll.sources
new file mode 100644 (file)
index 0000000..7052a97
--- /dev/null
@@ -0,0 +1,3 @@
+Assembly/AssemblyInfo.cs
+../../../external/rx/Ix/NET/System.Interactive.Providers/Properties/AssemblyInfo.cs
+../../../external/rx/Ix/NET/System.Interactive.Providers/QueryableEx.cs
diff --git a/mcs/class/System.Interactive.Providers/more_build_args b/mcs/class/System.Interactive.Providers/more_build_args
new file mode 100644 (file)
index 0000000..a53ee7b
--- /dev/null
@@ -0,0 +1,3 @@
+-d:SIGNED
+-delaysign
+-keyfile:../reactive.pub
diff --git a/mcs/class/System.Interactive/Assembly/AssemblyInfo.cs b/mcs/class/System.Interactive/Assembly/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..9db583d
--- /dev/null
@@ -0,0 +1,2 @@
+[assembly:System.Reflection.AssemblyVersion ("2.1.30214.0")]
+[assembly:System.Reflection.AssemblyFileVersion ("2.1.30214.0")]
diff --git a/mcs/class/System.Interactive/Makefile b/mcs/class/System.Interactive/Makefile
new file mode 100644 (file)
index 0000000..2d6248e
--- /dev/null
@@ -0,0 +1,37 @@
+thisdir = class/System.Interactive
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Interactive.dll
+LIB_MCS_FLAGS = \
+               @more_build_args \
+               -r:System.dll \
+               -r:System.Core.dll
+
+ifeq (2.1, $(FRAMEWORK_VERSION))
+LIB_MCS_FLAGS += -d:NO_TASK_DELAY -d:HAS_AWAIT
+endif
+
+NET_4_5 := $(filter 4.5, $(FRAMEWORK_VERSION))
+ifdef NET_4_5
+LIB_MCS_FLAGS += -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT
+endif
+
+TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
+
+EXTRA_DISTFILES = more_build_args
+
+VALID_PROFILE := $(filter monotouch monodroid net_4_0 net_4_5, $(PROFILE))
+ifndef VALID_PROFILE
+LIBRARY_NAME = dummy-System.System.Interactive.dll
+NO_SIGN_ASSEMBLY = yes
+endif
+
+INSTALL_PROFILE := $(filter net_4_5, $(PROFILE))
+ifndef INSTALL_PROFILE
+NO_INSTALL = yes
+endif
+
+NO_TEST = yes
+
+include ../../build/library.make
diff --git a/mcs/class/System.Interactive/System.Interactive.dll.sources b/mcs/class/System.Interactive/System.Interactive.dll.sources
new file mode 100644 (file)
index 0000000..6500671
--- /dev/null
@@ -0,0 +1,9 @@
+Assembly/AssemblyInfo.cs
+../../../external/rx/Ix/NET/System.Interactive/EnumerableEx.Imperative.cs
+../../../external/rx/Ix/NET/System.Interactive/EnumerableEx.Multiple.cs
+../../../external/rx/Ix/NET/System.Interactive/EnumerableEx.Single.cs
+../../../external/rx/Ix/NET/System.Interactive/EnumerableEx.Exceptions.cs
+../../../external/rx/Ix/NET/System.Interactive/EnumerableEx.Creation.cs
+../../../external/rx/Ix/NET/System.Interactive/EnumerableEx.Buffering.cs
+../../../external/rx/Ix/NET/System.Interactive/EnumerableEx.Aggregates.cs
+../../../external/rx/Ix/NET/System.Interactive/Properties/AssemblyInfo.cs
diff --git a/mcs/class/System.Interactive/more_build_args b/mcs/class/System.Interactive/more_build_args
new file mode 100644 (file)
index 0000000..a53ee7b
--- /dev/null
@@ -0,0 +1,3 @@
+-d:SIGNED
+-delaysign
+-keyfile:../reactive.pub
index 6c35868c35dc49d1ea93bcfc2ef6628e73e616dc..1ff5a5fd49cb428eb40fda74cea3bd73fcd325be 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{05BDD718-DDD2-4300-A960-3283290059A0}</ProjectGuid>\r
+    <ProjectGuid>{524097C2-FED2-464A-878B-4A782E51093F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json.Microsoft-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_0.csproj">\r
-      <Project>{56A7FA9E-7F2B-4BCB-8523-FD4EEE876BE0}</Project>\r
+      <Project>{342E1BD0-A935-4D49-B71E-ECDF0B42F90F}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1e29d352a0688eb12cadb5273c94e2b23554422e..865b072da4c19fc7dac8765ec6337ef46126c058 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}</ProjectGuid>\r
+    <ProjectGuid>{A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json.Microsoft-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{94E8FEFF-9695-4F77-A8AB-85370336FE0D}</Project>\r
+      <Project>{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 906b0bf48f178ac8324ae1a357d887ee160d6007..8ef352d0aff71179429d9f44ac3719c974a61537 100644 (file)
@@ -6,8 +6,7 @@ LIBRARY = System.Json.dll
 LIB_MCS_FLAGS = \
                /r:System.dll \
                /r:System.Xml.dll \
-               /r:System.Core.dll \
-               /r:System.ServiceModel.Web.dll
+               /r:System.Core.dll
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
diff --git a/mcs/class/System.Json/System.Json-net_2_0.csproj b/mcs/class/System.Json/System.Json-net_2_0.csproj
new file mode 100644 (file)
index 0000000..f05b5ed
--- /dev/null
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>\r
+<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+  <PropertyGroup>\r
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>\r
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
+    <ProductVersion>9.0.30729</ProductVersion>\r
+    <SchemaVersion>2.0</SchemaVersion>\r
+    <ProjectGuid>{0D85D5CB-96C9-47D3-9738-DF3D729063F4}</ProjectGuid>\r
+    <OutputType>Library</OutputType>\r
+    <NoWarn>1699</NoWarn>\r
+    <OutputPath>bin\Debug\System.Json-net_2_0</OutputPath>\r
+    <NoStdLib>True</NoStdLib>\r
+    <NoConfig>True</NoConfig>\r
+    \r
+    <AppDesignerFolder>Properties</AppDesignerFolder>\r
+    <RootNamespace>\r
+    </RootNamespace>\r
+    <AssemblyName>System.Json</AssemblyName>\r
+    <TargetFrameworkVersion>v2.0</TargetFrameworkVersion>\r
+    <FileAlignment>512</FileAlignment>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
+    <DebugSymbols>true</DebugSymbols>\r
+    <DebugType>full</DebugType>\r
+    <NoWarn>1699</NoWarn>\r
+    <Optimize>false</Optimize>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
+    <DebugType>pdbonly</DebugType>\r
+    <NoWarn>1699</NoWarn>\r
+    <Optimize>true</Optimize>\r
+    <DefineConstants>NET_1_1;NET_2_0</DefineConstants>\r
+    <ErrorReport>prompt</ErrorReport>\r
+    <WarningLevel>4</WarningLevel>\r
+  </PropertyGroup>\r
+  <!-- Set AddAdditionalExplicitAssemblyReferences to false, otherwise if targetting .NET4.0, \r
+  Microsoft.NETFramework.props will force a dependency on the assembly System.Core. This\r
+  is a problem to compile the Mono mscorlib.dll -->\r
+  <PropertyGroup>\r
+    <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>\r
+  </PropertyGroup>\r
+  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
+  <ItemGroup>\r
+    <Compile Include="..\..\build\common\Consts.cs" />\r
+    <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\JavaScriptReader.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="System.Json\JsonArray.cs" />\r
+    <Compile Include="System.Json\JsonObject.cs" />\r
+    <Compile Include="System.Json\JsonPrimitive.cs" />\r
+    <Compile Include="System.Json\JsonType.cs" />\r
+    <Compile Include="System.Json\JsonValue.cs" />\r  </ItemGroup>\r
+  <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
+       Other similar extension points exist, see Microsoft.Common.targets.\r
+  <Target Name="BeforeBuild">\r
+  </Target>\r
+  <Target Name="AfterBuild">\r
+  </Target>\r
+  -->\r
+  <PropertyGroup>\r
+    <PreBuildEvent>\r
+\r
+    </PreBuildEvent>\r
+    <PostBuildEvent>\r
+      xcopy $(TargetName).* $(ProjectDir)..\lib\net_2_0\ /Y /R /D\r
+  </PostBuildEvent>\r
+  </PropertyGroup>\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
+      <Name>corlib\corlib-net_2_0</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
+      <Name>System\System-net_2_0-2</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
+      <Name>System.XML\System.Xml-net_2_0-1</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
+      <Name>System.Core\System.Core-net_2_0</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_2_0.csproj">\r
+      <Project>{C1E98610-9EA1-4973-A48B-E7CE2E790F40}</Project>\r
+      <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_2_0</Name>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
+  <ItemGroup>\r
+    <Folder Include="Properties\" />\r
+  </ItemGroup>\r
+</Project>
index 4d69e0332eb3da1922109f32bb1deb3e88523842..b41628c9a49c483c93ed304682fd77fcd0fd8491 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2EF16F5D-C799-4D6D-B489-3E5F75813927}</ProjectGuid>\r
+    <ProjectGuid>{71477BE9-736B-4E63-87FB-D3BCBA4BB863}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_0.csproj">\r
-      <Project>{2F40A7ED-89D4-414D-B916-6ECB39F15BD2}</Project>\r
+      <Project>{B9CFA1C3-B2EE-40CB-85EC-674A2D1CAC5F}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 57c6923a3690cd180e76ec6e9c299a0fd99570c4..a92505cd37f6cd867d57c695c1de90473c652f07 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DBD6E6AA-45EA-4844-989B-C95A001A0440}</ProjectGuid>\r
+    <ProjectGuid>{EB9696AB-2203-48F1-92B4-86BD28340248}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj">\r
-      <Project>{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}</Project>\r
+      <Project>{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 59647fba93d752a58c42916f39999fc0d877654e..182c6bbcfdf3d32badad7bb33ffbab17dfb6ffb2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7D8F59BB-6E83-4C14-9669-6CAFE72B2EFD}</ProjectGuid>\r
+    <ProjectGuid>{63979AFA-C8E9-4FE6-8033-DE3913BAC11F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Json\System.Json-net_4_0.csproj">\r
-      <Project>{2EF16F5D-C799-4D6D-B489-3E5F75813927}</Project>\r
+      <Project>{71477BE9-736B-4E63-87FB-D3BCBA4BB863}</Project>\r
       <Name>System.Json\System.Json-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_0.csproj">\r
-      <Project>{2F40A7ED-89D4-414D-B916-6ECB39F15BD2}</Project>\r
+      <Project>{B9CFA1C3-B2EE-40CB-85EC-674A2D1CAC5F}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9b32df4258744b2d96cd72603cd37e847524e4bc..343fbd74875f51c4743521a450bf6d6326002a74 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}</ProjectGuid>\r
+    <ProjectGuid>{704ADB45-E58F-432D-955A-69E3B5DDEE77}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Json-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Json\System.Json-net_4_5.csproj">\r
-      <Project>{DBD6E6AA-45EA-4844-989B-C95A001A0440}</Project>\r
+      <Project>{EB9696AB-2203-48F1-92B4-86BD28340248}</Project>\r
       <Name>System.Json\System.Json-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj">\r
-      <Project>{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}</Project>\r
+      <Project>{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5880acb77419fc442857d9303dc8f099ac2a08fa..ae6fe2e1c60823b2f301a71016102db22ea8fbb7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{39FA0360-6014-4819-9619-309FDAD12413}</ProjectGuid>\r
+    <ProjectGuid>{4A7B27F4-8841-4DF0-A062-8F26F2E0924B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Management-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_2_0.csproj">\r
-      <Project>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</Project>\r
+      <Project>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e665b3d6bf01522f1cc5181b160c19d5b85a873d..cb91cfbd8eec485dc5bd500a04a26c8a5a25c55f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{08DC1959-A393-422D-B10D-322F5A702219}</ProjectGuid>\r
+    <ProjectGuid>{3BA8519F-6DBF-48EC-8BBD-2E69F5010E86}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Management-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_0.csproj">\r
-      <Project>{878F802D-3249-41E8-8322-A32C406383C6}</Project>\r
+      <Project>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f34206b03916896263c72c31abae4b2bea17a9a5..31b3b4c8f12ee4b3fdbda29e9efe549dc26232ba 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A99FD368-6E3E-448C-83C5-A7D64762924E}</ProjectGuid>\r
+    <ProjectGuid>{07BD11C9-C562-4EC3-8B7E-26EA909393C0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Management-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</Project>\r
+      <Project>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 30787704c7e2b1bea5799fe788f7b3ae766314ac..5e181368cd4ae5b9bf8d03e40e4266e09ab802f5 100644 (file)
@@ -36,29 +36,43 @@ namespace System.Management
        //[TypeConverter ("")]
        public abstract class ManagementQuery : ICloneable
        {
+               string sQueryLanguage;
+               string sQueryString;
+
                internal ManagementQuery ()
                {
                }
 
+               internal ManagementQuery (string query)
+               {
+                       QueryString = query;
+               }
+
+               internal ManagementQuery (string language, string query)
+               {
+                       QueryLanguage = language;
+                       QueryString = query;
+               }
+
                static ManagementQuery ()
                {
                }
 
                public virtual string QueryLanguage {
                        get {
-                               throw new NotImplementedException ();
+                               return sQueryLanguage;
                        }
                        set {
-                               throw new NotImplementedException ();
+                               sQueryLanguage = value;
                        }
                }
 
                public virtual string QueryString {
                        get {
-                               throw new NotImplementedException ();
+                               return sQueryString;
                        }
                        set {
-                               throw new NotImplementedException ();
+                               sQueryString = value;
                        }
                }
 
index 1dd280223e16aaaace76c4c5ebf49676efa5ce91..da052f4dfab0ce9503138778890aca2bfb7f1b33 100644 (file)
 
 namespace System.Management
 {
-       [MonoTODO ("System.Management is not implemented")]
        public class ObjectQuery : ManagementQuery
        {
                public ObjectQuery ()
                {
-                       throw new NotImplementedException ();
                }
 
-               public ObjectQuery (string query)
+               public ObjectQuery (string query) : base(query)
                {
-                       throw new NotImplementedException ();
                }
 
-               public ObjectQuery (string language, string query)
+               public ObjectQuery (string language, string query) : base(language, query)
                {
-                       throw new NotImplementedException ();
                }
 
                public override object Clone ()
                {
-                       throw new NotImplementedException ();
+                       return new ObjectQuery(this.QueryLanguage, this.QueryString);
                }
        }
 }
index c65ae2f8c9c196c2929250c4880624dcff88391b..feede7a40faad00c5b95796545d041e91d564036 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{02BA7387-C09A-40FB-BE80-39588B822A29}</ProjectGuid>\r
+    <ProjectGuid>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_2_0.csproj">\r
-      <Project>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</Project>\r
+      <Project>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_2_0.csproj">\r
-      <Project>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</Project>\r
+      <Project>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 982ee48959e26bd007af6ba45d8a399cd81fee0e..ecd8faed788096575f71e55def6d078006f93d3e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</ProjectGuid>\r
+    <ProjectGuid>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_0.csproj">\r
-      <Project>{878F802D-3249-41E8-8322-A32C406383C6}</Project>\r
+      <Project>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_0.csproj">\r
-      <Project>{7D27EF3B-540A-4BBD-873C-878ABC927401}</Project>\r
+      <Project>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1657976adc208338cbe7d74daaaf73dc0c8caf1d..c033a41bd3217ab4cc89ea24be2b84f523744fb6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</ProjectGuid>\r
+    <ProjectGuid>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</Project>\r
+      <Project>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</Project>\r
+      <Project>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e8a8c3d331cdaed7f5b71290136bcfdbd4158de8..0dae6d8f1bed0e39ff03cfd5d379f52ecc288947 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{77EAF39A-5236-4980-9B23-C96AEAEC65BA}</ProjectGuid>\r
+    <ProjectGuid>{C6B37C3E-439F-425C-A48D-096CD95CF803}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_2_0.csproj">\r
-      <Project>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</Project>\r
+      <Project>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_2_0.csproj">\r
-      <Project>{6D5EFF77-937D-4425-9DDC-B88F7A4AB456}</Project>\r
+      <Project>{A516A3FA-33AA-46AB-9542-49952ED25A0F}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index 6f049ad6360667922925f8694c9f64eaa880539b..c9ecc7d3171018fc585c1aed7378e671c99b3691 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FF8EE1D0-E929-4217-AA07-060B8ECBD066}</ProjectGuid>\r
+    <ProjectGuid>{FFBBBC97-F827-49CA-A47F-92CF7B74AC2E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_0.csproj">\r
-      <Project>{878F802D-3249-41E8-8322-A32C406383C6}</Project>\r
+      <Project>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_0.csproj">\r
-      <Project>{7D27EF3B-540A-4BBD-873C-878ABC927401}</Project>\r
+      <Project>{CD0A320A-620E-42D0-86CD-2D32F5592E57}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index 0444cad8559c9f66780c89cecf8116d9343ea59e..467944924f56fd86daa523c174694a44b550ad89 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}</ProjectGuid>\r
+    <ProjectGuid>{2A3A7368-D302-4166-820C-8CB18138740C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Messaging-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</Project>\r
+      <Project>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</Project>\r
+      <Project>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Messaging\Mono.Messaging-net_4_5.csproj">\r
-      <Project>{3D737371-B7D6-49E4-AA91-F67EF2E07A45}</Project>\r
+      <Project>{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}</Project>\r
       <Name>Mono.Messaging\Mono.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <Reference Include="nunit.mocks.dll">\r
index bcbdc177df21d2c3266ac28d613dcd10574b657f..57707fbb15d1b466f3cb70ffb0be67161921068a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{23304250-6657-44F1-851B-8EF6C5A9CEF7}</ProjectGuid>\r
+    <ProjectGuid>{9BDDA23D-1ABF-477A-AAA6-CD489033208E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Net.Http.Formatting-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http\System.Net.Http-net_4_5.csproj">\r
-      <Project>{46CFCFD7-D328-4896-86F2-215A6577548C}</Project>\r
+      <Project>{BE71D058-35CB-4623-AA66-631C7EB5F139}</Project>\r
       <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.Net.Http.WebRequest/Assembly/AssemblyInfo.cs b/mcs/class/System.Net.Http.WebRequest/Assembly/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..c74c9c9
--- /dev/null
@@ -0,0 +1,58 @@
+//
+// AssemblyInfo.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Resources;
+using System.Security;
+using System.Security.Permissions;
+using System.Diagnostics;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// Information about this assembly is defined by the following attributes. 
+// Change them to the values specific to your project.
+
+[assembly: AssemblyTitle ("System.Net.Http.WebRequest.dll")]
+[assembly: AssemblyDescription ("System.Net.Http.WebRequest.dll")]
+[assembly: AssemblyDefaultAlias ("System.Net.Http.WebRequest.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: SatelliteContractVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+
+[assembly: NeutralResourcesLanguage ("en-US")]
+[assembly: CLSCompliant (true)]
+[assembly: AssemblyDelaySign (true)]
+
+[assembly: AssemblyKeyFile ("../../msfinal.pub")]
+
+[assembly: ComVisible (false)]
+
diff --git a/mcs/class/System.Net.Http.WebRequest/Makefile b/mcs/class/System.Net.Http.WebRequest/Makefile
new file mode 100644 (file)
index 0000000..2af118a
--- /dev/null
@@ -0,0 +1,11 @@
+thisdir = class/System.Net.Http.WebRequest
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Net.Http.WebRequest.dll
+
+LIB_MCS_FLAGS = -r:System.Net.Http.dll -r:System.dll
+
+TEST_MCS_FLAGS = -r:System.Net.Http.dll
+
+include ../../build/library.make
diff --git a/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest.dll.sources b/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest.dll.sources
new file mode 100644 (file)
index 0000000..ea3f5d0
--- /dev/null
@@ -0,0 +1,4 @@
+../../build/common/Consts.cs
+../../build/common/MonoTODOAttribute.cs
+Assembly/AssemblyInfo.cs
+System.Net.Http.WebRequest/WebRequestHandler.cs
diff --git a/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest/WebRequestHandler.cs b/mcs/class/System.Net.Http.WebRequest/System.Net.Http.WebRequest/WebRequestHandler.cs
new file mode 100644 (file)
index 0000000..b19e6b8
--- /dev/null
@@ -0,0 +1,154 @@
+//
+// WebRequestHandler.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+using System;
+using System.Net.Cache;
+using System.Net.Security;
+using System.Security.Principal;
+using System.Security.Cryptography.X509Certificates;
+
+namespace System.Net.Http
+{
+       public class WebRequestHandler : HttpClientHandler
+       {
+               bool allowPipelining;
+               RequestCachePolicy cachePolicy;
+               AuthenticationLevel authenticationLevel;
+               TimeSpan continueTimeout;
+               TokenImpersonationLevel impersonationLevel;
+               int maxResponseHeadersLength;
+               int readWriteTimeout;
+               RemoteCertificateValidationCallback serverCertificateValidationCallback;
+               bool unsafeAuthenticatedConnectionSharing;
+
+               public WebRequestHandler ()
+               {
+                       allowPipelining = true;
+                       authenticationLevel = AuthenticationLevel.MutualAuthRequested;
+                       cachePolicy = System.Net.WebRequest.DefaultCachePolicy;
+                       continueTimeout = TimeSpan.FromMilliseconds (350);
+                       impersonationLevel = TokenImpersonationLevel.Delegation;
+                       maxResponseHeadersLength = HttpWebRequest.DefaultMaximumResponseHeadersLength;
+                       readWriteTimeout = 300000;
+                       serverCertificateValidationCallback = null;
+                       unsafeAuthenticatedConnectionSharing = false;
+               }
+
+               public bool AllowPipelining {
+                       get { return allowPipelining; }
+                       set {
+                               EnsureModifiability ();
+                               allowPipelining = value;
+                       }
+               }
+
+               public RequestCachePolicy CachePolicy {
+                       get { return cachePolicy; }
+                       set {
+                               EnsureModifiability ();
+                               cachePolicy = value;
+                       }
+               }
+
+               public AuthenticationLevel AuthenticationLevel {
+                       get { return authenticationLevel; }
+                       set {
+                               EnsureModifiability ();
+                               authenticationLevel = value;
+                       }
+               }
+
+               [MonoTODO]
+               public X509CertificateCollection ClientCertificates {
+                       get { throw new NotImplementedException (); }
+               }
+
+               [MonoTODO]
+               public TimeSpan ContinueTimeout {
+                       get { return continueTimeout; }
+                       set {
+                               EnsureModifiability ();
+                               continueTimeout = value;
+                       }
+               }
+
+               public TokenImpersonationLevel ImpersonationLevel {
+                       get { return impersonationLevel; }
+                       set {
+                               EnsureModifiability ();
+                               impersonationLevel = value;
+                       }
+               }
+
+               public int MaxResponseHeadersLength {
+                       get { return maxResponseHeadersLength; }
+                       set {
+                               EnsureModifiability ();
+                               maxResponseHeadersLength = value;
+                       }
+               }
+
+               public int ReadWriteTimeout {
+                       get { return readWriteTimeout; }
+                       set {
+                               EnsureModifiability ();
+                               readWriteTimeout = value;
+                       }
+               }
+
+               [MonoTODO]
+               public RemoteCertificateValidationCallback ServerCertificateValidationCallback {
+                       get { return serverCertificateValidationCallback; }
+                       set {
+                               EnsureModifiability ();
+                               serverCertificateValidationCallback = value;
+                       }
+               }
+
+               public bool UnsafeAuthenticatedConnectionSharing {
+                       get { return unsafeAuthenticatedConnectionSharing; }
+                       set {
+                               EnsureModifiability ();
+                               unsafeAuthenticatedConnectionSharing = value;
+                       }
+               }
+
+               internal override HttpWebRequest CreateWebRequest (HttpRequestMessage request)
+               {
+                       HttpWebRequest wr = base.CreateWebRequest (request);
+
+                       wr.Pipelined = allowPipelining;
+                       wr.AuthenticationLevel = authenticationLevel;
+                       wr.CachePolicy = cachePolicy;
+                       wr.ImpersonationLevel = impersonationLevel;
+                       wr.MaximumResponseHeadersLength = maxResponseHeadersLength;
+                       wr.ReadWriteTimeout = readWriteTimeout;
+                       wr.UnsafeAuthenticatedConnectionSharing = unsafeAuthenticatedConnectionSharing;
+
+                       return wr;
+               }
+       }
+}
+
index 869ab38bc95ef97f051374682be282473a69ef47..8e2d0dfeff3a1fff94f8d6626e08e82d7df944f4 100644 (file)
@@ -57,3 +57,5 @@ using System.Runtime.InteropServices;
 
 [assembly: ComVisible (false)]
 
+[assembly: InternalsVisibleTo ("System.Net.Http.WebRequest, PublicKey=002400000480000094000000060200000024000052534131000400000100010007d1fa57c4aed9f0a32e84aa0faefd0de9e8fd6aec8f87fb03766c834c99921eb23be79ad9d5dcc1dd9ad236132102900b723cf980957fc4e177108fc607774f29e8320e92ea05ece4e821c0a5efe8f1645c4c0c93c1ab99285d622caa652c1dfad63d745d6f2de5f17e5eaf0fc4963d261c8a12436518206dc093344d5ad293")]
+
index 715fa63120bcfc6d2878ed8ec28cb3f35746e2b6..ce2e097fee8ab43e22ff811cb50dd8f081223f1d 100644 (file)
@@ -4,7 +4,7 @@ include ../../build/rules.make
 
 LIBRARY = System.Net.Http.dll
 
-LIB_MCS_FLAGS = -r:System.Core.dll -r:System.dll
+LIB_MCS_FLAGS = -r:System.Core.dll -r:System.dll $(EXTRA_LIB_MCS_FLAGS)
 
 TEST_MCS_FLAGS = -r:System.dll -r:System.Core.dll
 
index e9dafd76e9bb8307d548ee29f65752858e5cd915..448c48377a1017e2c4dd0f27eb860bd781d4c520 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{46CFCFD7-D328-4896-86F2-215A6577548C}</ProjectGuid>\r
+    <ProjectGuid>{BE71D058-35CB-4623-AA66-631C7EB5F139}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Net.Http-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0a6793c965ceb5196d6e6bb460a2582bca640ce1..533032b93bc3f136ca5b44be49a192b6a2b1481a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A99841AC-505D-4E3F-8EC7-17232A175EB9}</ProjectGuid>\r
+    <ProjectGuid>{7F42459F-0D03-42BF-BC81-7EDF54F78C05}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Net.Http-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http\System.Net.Http-net_4_5.csproj">\r
-      <Project>{46CFCFD7-D328-4896-86F2-215A6577548C}</Project>\r
+      <Project>{BE71D058-35CB-4623-AA66-631C7EB5F139}</Project>\r
       <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 98225b9818991dad733f8a84b95010b276e5a385..a4d1ae275b478decfcf16103b66b7d4819a6e461 100644 (file)
@@ -394,7 +394,7 @@ namespace System.Net.Http.Headers
 
                        switch (t.Kind) {
                        case Token.Type.SeparatorSemicolon:
-                               if (!NameValueHeaderValue.ParseParameters (lexer, out parameters))
+                               if (!NameValueHeaderValue.TryParseParameters (lexer, out parameters))
                                        return false;
                                break;
                        case Token.Type.End:
index abbd7464f2ff9c12d1c6d3597f1a414f7c94700e..3772180e52bc0ea9f617d6c522cf4df995bac762 100644 (file)
@@ -50,7 +50,12 @@ namespace System.Net.Http.Headers
                                Debug.Assert (AllowsMany);
 
                                var c = (HttpHeaderValueCollection<U>) collection;
-                               c.Add ((U) value);
+
+                               var list = value as List<U>;
+                               if (list != null)
+                                       c.AddRange (list);
+                               else
+                                       c.Add ((U) value);
                        }
 
                        protected override object CreateCollection (HttpHeaders headers, HeaderInfo headerInfo)
@@ -106,6 +111,13 @@ namespace System.Net.Http.Headers
                        };
                }
 
+               public static HeaderInfo CreateMultiList<T> (string name, TryParseDelegate<List<T>> parser, HttpHeaderKind headerKind) where T : class
+               {
+                       return new HeaderTypeInfo<List<T>, T> (name, parser, headerKind) {
+                               AllowsMany = true,
+                       };
+               }
+
                public object CreateCollection (HttpHeaders headers)
                {
                        return CreateCollection (headers, this);
index e929c599a77cdeffe3dc24daaea2892773e18ba9..fb024ed81b89be2390499ed354e46600abad63bc 100644 (file)
@@ -61,6 +61,11 @@ namespace System.Net.Http.Headers
                        list.Add (item);
                }
 
+               internal void AddRange (List<T> values)
+               {
+                       list.AddRange (values);
+               }
+
                public void Clear ()
                {
                        list.Clear ();
index 55ef3c7fa8bd566e34d3abc513096939f79c0a6c..1dc3affa328f0afd1539881113a9d0b1e1adc6a0 100644 (file)
@@ -117,7 +117,7 @@ namespace System.Net.Http.Headers
                                HeaderInfo.CreateSingle<DateTimeOffset> ("Last-Modified", Parser.DateTime.TryParse, HttpHeaderKind.Content),
                                HeaderInfo.CreateSingle<Uri> ("Location", Parser.Uri.TryParse, HttpHeaderKind.Response),
                                HeaderInfo.CreateSingle<int> ("Max-Forwards", Parser.Int.TryParse, HttpHeaderKind.Request),
-                               HeaderInfo.CreateMulti<NameValueHeaderValue> ("Pragma", NameValueHeaderValue.TryParse, HttpHeaderKind.Request | HttpHeaderKind.Response),
+                               HeaderInfo.CreateMultiList<NameValueHeaderValue> ("Pragma", NameValueHeaderValue.TryParsePragma, HttpHeaderKind.Request | HttpHeaderKind.Response),
                                HeaderInfo.CreateMulti<AuthenticationHeaderValue> ("Proxy-Authenticate", AuthenticationHeaderValue.TryParse, HttpHeaderKind.Response),
                                HeaderInfo.CreateSingle<AuthenticationHeaderValue> ("Proxy-Authorization", AuthenticationHeaderValue.TryParse, HttpHeaderKind.Request),
                                HeaderInfo.CreateSingle<RangeHeaderValue> ("Range", RangeHeaderValue.TryParse, HttpHeaderKind.Request),
@@ -128,7 +128,7 @@ namespace System.Net.Http.Headers
                                HeaderInfo.CreateMulti<string> ("Trailer", Parser.Token.TryParse, HttpHeaderKind.Request | HttpHeaderKind.Response),
                                HeaderInfo.CreateMulti<TransferCodingHeaderValue> ("Transfer-Encoding", TransferCodingHeaderValue.TryParse, HttpHeaderKind.Request | HttpHeaderKind.Response),
                                HeaderInfo.CreateMulti<ProductHeaderValue> ("Upgrade", ProductHeaderValue.TryParse, HttpHeaderKind.Request | HttpHeaderKind.Response),
-                               HeaderInfo.CreateMulti<ProductInfoHeaderValue> ("User-Agent", ProductInfoHeaderValue.TryParse, HttpHeaderKind.Request),
+                               HeaderInfo.CreateMultiList<ProductInfoHeaderValue> ("User-Agent", ProductInfoHeaderValue.TryParse, HttpHeaderKind.Request),
                                HeaderInfo.CreateMulti<string> ("Vary", Parser.Token.TryParse, HttpHeaderKind.Response),
                                HeaderInfo.CreateMulti<ViaHeaderValue> ("Via", ViaHeaderValue.TryParse, HttpHeaderKind.Request | HttpHeaderKind.Response),
                                HeaderInfo.CreateMulti<WarningHeaderValue> ("Warning", WarningHeaderValue.TryParse, HttpHeaderKind.Request | HttpHeaderKind.Response),
index 51950a7a0abedcf152b10ad7a6f85e4b134946c5..0f98be658d16be177454f979f3a570f57d3f1978 100644 (file)
@@ -201,17 +201,26 @@ namespace System.Net.Http.Headers
 
                public bool ScanCommentOptional (out string value)
                {
-                       var t = Scan ();
-                       if (t != Token.Type.OpenParens) {
+                       Token t;
+                       if (ScanCommentOptional (out value, out t))
+                               return true;
+
+                       return t == Token.Type.End;
+               }
+
+               public bool ScanCommentOptional (out string value, out Token readToken)
+               {
+                       readToken = Scan ();
+                       if (readToken != Token.Type.OpenParens) {
                                value = null;
-                               return t == Token.Type.End;
+                               return false;
                        }
 
                        while (pos < s.Length) {
                                var ch = s[pos];
                                if (ch == ')') {
                                        ++pos;
-                                       var start = t.StartPosition;
+                                       var start = readToken.StartPosition;
                                        value = s.Substring (start, pos - start);
                                        return true;
                                }
index f8d351e243f937b88bf6f3e97da9a49c80833a98..5379a6099f19716205de8555eef03b4b1723c293 100644 (file)
@@ -85,7 +85,8 @@ namespace System.Net.Http.Headers
                                        throw new ArgumentNullException ("MediaType");
 
                                string temp;
-                               if (TryParseMediaType (new Lexer (value), out temp) != Token.Type.End)
+                               var token = TryParseMediaType (new Lexer (value), out temp);
+                               if (token == null || token.Value.Kind != Token.Type.End)
                                        throw new FormatException ();
 
                                media_type = temp;
@@ -149,7 +150,7 @@ namespace System.Net.Http.Headers
 
                        switch (token.Value.Kind) {
                        case Token.Type.SeparatorSemicolon:
-                               if (!NameValueHeaderValue.ParseParameters (lexer, out parameters))
+                               if (!NameValueHeaderValue.TryParseParameters (lexer, out parameters))
                                        return false;
                                break;
                        case Token.Type.End:
@@ -180,7 +181,7 @@ namespace System.Net.Http.Headers
 
                        switch (token.Value.Kind) {
                        case Token.Type.SeparatorSemicolon:
-                               if (!NameValueHeaderValue.ParseParameters (lexer, out parameters))
+                               if (!NameValueHeaderValue.TryParseParameters (lexer, out parameters))
                                        return false;
                                break;
                        case Token.Type.End:
index 03bcab48c9dc5b3c0063e219bcbfbac410a96444..906ab3aa657fac2845c31f92c377980b68d8299c 100644 (file)
@@ -121,8 +121,18 @@ namespace System.Net.Http.Headers
                        throw new FormatException (input);
                }
 
-               internal static bool ParseParameters (Lexer lexer, out List<NameValueHeaderValue> result)
+               internal static bool TryParseParameters (Lexer lexer, out List<NameValueHeaderValue> result)
                {
+                       return TryParseCollection (lexer, out result, Token.Type.SeparatorSemicolon);
+               }
+
+               internal static bool TryParsePragma (string input, out List<NameValueHeaderValue> result)
+               {                       
+                       return TryParseCollection (new Lexer (input), out result, Token.Type.SeparatorComma);
+               }
+
+               static bool TryParseCollection (Lexer lexer, out List<NameValueHeaderValue> result, Token.Type separator)
+               {               
                        var list = new List<NameValueHeaderValue> ();
                        result = null;
 
@@ -146,7 +156,7 @@ namespace System.Net.Http.Headers
                                        t = lexer.Scan ();
                                }
 
-                               if (t == Token.Type.SeparatorSemicolon || t == Token.Type.End) {
+                               if (t == separator|| t == Token.Type.End) {
                                        list.Add (new NameValueHeaderValue () {
                                                Name = lexer.GetStringValue (attr),
                                                value = value
@@ -155,7 +165,7 @@ namespace System.Net.Http.Headers
                                        return false;
                                }
 
-                       } while (t == Token.Type.SeparatorSemicolon);
+                       } while (t == separator);
 
                        result = list;
                        return true;
index e9c1e1e1e0cce71eba4ba1e45af4254eb38eccb6..81d7bb089c1317259d51a4bec1992d405a776e0d 100644 (file)
@@ -103,7 +103,7 @@ namespace System.Net.Http.Headers
                public static bool TryParse (string input, out NameValueWithParametersHeaderValue parsedValue)
                {
                        List<NameValueHeaderValue> values;
-                       if (!ParseParameters (new Lexer (input), out values)) {
+                       if (!TryParseParameters (new Lexer (input), out values)) {
                                parsedValue = null;
                                return false;
                        }
index d95ec3ab4125a768a9cf2effcab3d6e80b5a70f4..306c9f228c8679346692e5272c9a141e64de58bd 100644 (file)
@@ -45,12 +45,12 @@ namespace System.Net.Http.Headers
                        Version = version;
                }
 
-               private ProductHeaderValue ()
+               internal ProductHeaderValue ()
                {
                }
 
-               public string Name { get; private set; }
-               public string Version { get; private set; }
+               public string Name { get; internal set; }
+               public string Version { get; internal set; }
 
                object ICloneable.Clone ()
                {
index 0c4d12802a9ad8af0c784220ceb84e65ec01ac24..daf47ac31e89148e21898397a7abb86d59321929 100644 (file)
@@ -26,6 +26,8 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System.Collections.Generic;
+
 namespace System.Net.Http.Headers
 {
        public class ProductInfoHeaderValue : ICloneable
@@ -93,9 +95,44 @@ namespace System.Net.Http.Headers
                        parsedValue = null;
 
                        var lexer = new Lexer (input);
+                       if (!TryParseElement (lexer, out parsedValue) || parsedValue == null)
+                               return false;
+
+                       if (lexer.Scan () != Token.Type.End) {
+                               parsedValue = null;
+                               return false;
+                       }       
+
+                       return true;
+               }
+
+               internal static bool TryParse (string input, out List<ProductInfoHeaderValue> result)
+               {
+                       var list = new List<ProductInfoHeaderValue> ();
+                       var lexer = new Lexer (input);
+                       result = null;
+
+                       while (true) {
+                               ProductInfoHeaderValue element;
+                               if (!TryParseElement (lexer, out element))
+                                       return false;
+
+                               if (element == null) {
+                                       result = list;
+                                       return true;
+                               }
+
+                               list.Add (element);
+                       }
+               }
+
+               static bool TryParseElement (Lexer lexer, out ProductInfoHeaderValue parsedValue)
+               {
                        string comment;
+                       parsedValue = null;
+                       Token t;
 
-                       if (lexer.ScanCommentOptional (out comment)) {
+                       if (lexer.ScanCommentOptional (out comment, out t)) {
                                if (comment == null)
                                        return false;
 
@@ -104,11 +141,25 @@ namespace System.Net.Http.Headers
                                return true;
                        }
 
-                       ProductHeaderValue res;
-                       if (!ProductHeaderValue.TryParse (input, out res))
+                       if (t == Token.Type.End)
+                               return true;
+
+                       if (t != Token.Type.Token)
                                return false;
 
-                       parsedValue = new ProductInfoHeaderValue (res);
+                       var value = new ProductHeaderValue ();
+                       value.Name = lexer.GetStringValue (t);
+
+                       t = lexer.Scan ();
+                       if (t == Token.Type.SeparatorSlash) {
+                               t = lexer.Scan ();
+                               if (t != Token.Type.Token)
+                                       return false;
+
+                               value.Version = lexer.GetStringValue (t);
+                       }
+
+                       parsedValue = new ProductInfoHeaderValue (value);
                        return true;
                }
 
index ef2cd18254584c4e8f0ae16b516e7c56263b8ef5..8f0db592831379f6c38f4bfe07d0f75dec0e8576 100644 (file)
@@ -125,7 +125,7 @@ namespace System.Net.Http.Headers
 
                        // Parameters parsing
                        if (t == Token.Type.SeparatorSemicolon) {
-                               if (!NameValueHeaderValue.ParseParameters (lexer, out result.parameters))
+                               if (!NameValueHeaderValue.TryParseParameters (lexer, out result.parameters))
                                        return false;
                        } else if (t != Token.Type.End) {
                                return false;
index 2714835fee85f637165a8799484d14482ff6c1fa..1e1fcbf1021ffd69ea9e7814a9b69bbffec4c2c5 100644 (file)
@@ -38,7 +38,7 @@ namespace System.Net.Http
                static readonly TimeSpan TimeoutDefault = TimeSpan.FromSeconds (100);
 
                Uri base_address;
-               CancellationTokenSource cancellation_token;
+               CancellationTokenSource cts;
                bool disposed;
                HttpRequestHeaders headers;
                long buffer_size;
@@ -59,6 +59,7 @@ namespace System.Net.Http
                {
                        buffer_size = int.MaxValue;
                        timeout = TimeoutDefault;
+                       cts = new CancellationTokenSource ();
                }
 
                public Uri BaseAddress {
@@ -102,10 +103,9 @@ namespace System.Net.Http
 
                public void CancelPendingRequests ()
                {
-                       if (cancellation_token != null)
-                               cancellation_token.Cancel ();
-
-                       cancellation_token = new CancellationTokenSource ();
+                       // Cancel only any already running requests not any new request after this cancellation
+                       using (var c = Interlocked.Exchange (ref cts, new CancellationTokenSource ()))
+                               c.Cancel ();
                }
 
                protected override void Dispose (bool disposing)
@@ -113,8 +113,7 @@ namespace System.Net.Http
                        if (disposing && !disposed) {
                                disposed = true;
 
-                               if (cancellation_token != null)
-                                       cancellation_token.Dispose ();
+                               cts.Dispose ();
                        }
                        
                        base.Dispose (disposing);
@@ -264,33 +263,25 @@ namespace System.Net.Http
 
                async Task<HttpResponseMessage> SendAsyncWorker (HttpRequestMessage request, HttpCompletionOption completionOption, CancellationToken cancellationToken)
                {
-                       try {
-                               if (cancellation_token == null)
-                                       cancellation_token = new CancellationTokenSource ();
-
-                               using (var cts = CancellationTokenSource.CreateLinkedTokenSource (cancellation_token.Token, cancellationToken)) {
-                                       cts.CancelAfter (timeout);
+                       using (var lcts = CancellationTokenSource.CreateLinkedTokenSource (cts.Token, cancellationToken)) {
+                               lcts.CancelAfter (timeout);
 
-                                       var task = base.SendAsync (request, cts.Token);
-                                       if (task == null)
-                                               throw new InvalidOperationException ("Handler failed to return a value");
+                               var task = base.SendAsync (request, lcts.Token);
+                               if (task == null)
+                                       throw new InvalidOperationException ("Handler failed to return a value");
                                        
-                                       var response = await task.ConfigureAwait (false);
-                                       if (response == null)
-                                               throw new InvalidOperationException ("Handler failed to return a response");
-
-                                       //
-                                       // Read the content when default HttpCompletionOption.ResponseContentRead is set
-                                       //
-                                       if (response.Content != null && (completionOption & HttpCompletionOption.ResponseHeadersRead) == 0) {
-                                               await response.Content.LoadIntoBufferAsync (MaxResponseContentBufferSize).ConfigureAwait (false);
-                                       }
-                                       
-                                       return response;
+                               var response = await task.ConfigureAwait (false);
+                               if (response == null)
+                                       throw new InvalidOperationException ("Handler failed to return a response");
+
+                               //
+                               // Read the content when default HttpCompletionOption.ResponseContentRead is set
+                               //
+                               if (response.Content != null && (completionOption & HttpCompletionOption.ResponseHeadersRead) == 0) {
+                                       await response.Content.LoadIntoBufferAsync (MaxResponseContentBufferSize).ConfigureAwait (false);
                                }
-                       } finally {
-                               cancellation_token.Dispose ();
-                               cancellation_token = null;
+                                       
+                               return response;
                        }
                }
 
index 68004b990133bdb3f1956725e540b8fcc320f63c..354dba96bf74eb5a8297101d76e68c067b95b844 100644 (file)
@@ -58,7 +58,7 @@ namespace System.Net.Http
                        useProxy = true;
                }
 
-               void EnsureModifiability ()
+               internal void EnsureModifiability ()
                {
                        if (sentRequest)
                                throw new InvalidOperationException (
@@ -219,7 +219,7 @@ namespace System.Net.Http
                        base.Dispose (disposing);
                }
 
-               HttpWebRequest CreateWebRequest (HttpRequestMessage request)
+               internal virtual HttpWebRequest CreateWebRequest (HttpRequestMessage request)
                {
                        var wr = new HttpWebRequest (request.RequestUri);
                        wr.ThrowOnError = false;
@@ -247,7 +247,8 @@ namespace System.Net.Http
                        wr.PreAuthenticate = preAuthenticate;
 
                        if (useCookies) {
-                               wr.CookieContainer = cookieContainer;
+                               // It cannot be null or allowAutoRedirect won't work
+                               wr.CookieContainer = CookieContainer;
                        }
 
                        if (useDefaultCredentials) {
@@ -271,12 +272,12 @@ namespace System.Net.Http
                        return wr;
                }
 
-               HttpResponseMessage CreateResponseMessage (HttpWebResponse wr, HttpRequestMessage requestMessage)
+               HttpResponseMessage CreateResponseMessage (HttpWebResponse wr, HttpRequestMessage requestMessage, CancellationToken cancellationToken)
                {
                        var response = new HttpResponseMessage (wr.StatusCode);
                        response.RequestMessage = requestMessage;
                        response.ReasonPhrase = wr.StatusDescription;
-                       response.Content = new StreamContent (wr.GetResponseStream ());
+                       response.Content = new StreamContent (wr.GetResponseStream (), cancellationToken);
 
                        var headers = wr.Headers;
                        for (int i = 0; i < headers.Count; ++i) {
@@ -312,9 +313,23 @@ namespace System.Net.Http
                                await request.Content.CopyToAsync (stream).ConfigureAwait (false);
                        }
 
-                       // FIXME: GetResponseAsync does not accept cancellationToken
-                       var wresponse = (HttpWebResponse) await wrequest.GetResponseAsync ().ConfigureAwait (false);
-                       return CreateResponseMessage (wresponse, request);
+                       HttpWebResponse wresponse = null;
+                       using (cancellationToken.Register (l => ((HttpWebRequest) l).Abort (), wrequest)) {
+                               try {
+                                       wresponse = (HttpWebResponse) await wrequest.GetResponseAsync ().ConfigureAwait (false);
+                               } catch (WebException we) {
+                                       if (we.Status != WebExceptionStatus.RequestCanceled)
+                                               throw;
+                               }
+
+                               if (cancellationToken.IsCancellationRequested) {
+                                       var cancelled = new TaskCompletionSource<HttpResponseMessage> ();
+                                       cancelled.SetCanceled ();
+                                       return await cancelled.Task;
+                               }
+                       }
+                       
+                       return CreateResponseMessage (wresponse, request, cancellationToken);
                }
        }
 }
index 40cbde3a6abf0ecb6a553adca54834b4e94b267d..021f2e9b0d9f8edac15ac185d2ccff6c6091090c 100644 (file)
@@ -119,7 +119,7 @@ namespace System.Net.Http
 
                public Task LoadIntoBufferAsync ()
                {
-                       return LoadIntoBufferAsync (65536);
+                       return LoadIntoBufferAsync (int.MaxValue);
                }
 
                public async Task LoadIntoBufferAsync (long maxBufferSize)
index 9dabf983b67d93639cf7f93934e13da3922013d2..a249aad6f5b44cfd60172918b207a05e6338df27 100644 (file)
@@ -27,6 +27,7 @@
 //
 
 using System.IO;
+using System.Threading;
 using System.Threading.Tasks;
 
 namespace System.Net.Http
@@ -35,6 +36,7 @@ namespace System.Net.Http
        {
                readonly Stream content;
                readonly int bufferSize;
+               readonly CancellationToken cancellationToken;
 
                public StreamContent (Stream content)
                        : this (content, 16 * 1024)
@@ -53,6 +55,18 @@ namespace System.Net.Http
                        this.bufferSize = bufferSize;
                }
 
+               //
+               // Workarounds for poor .NET API
+               // Instead of having SerializeToStreamAsync with CancellationToken as public API. Only LoadIntoBufferAsync
+               // called internally from the send worker can be cancelled and user cannot see/do it
+               //
+               internal StreamContent (Stream content, CancellationToken cancellationToken)
+                       : this (content)
+               {
+                       // We don't own the token so don't worry about disposing it
+                       this.cancellationToken = cancellationToken;
+               }
+
                protected override Task<Stream> CreateContentReadStreamAsync ()
                {
                        return Task.FromResult (content);
@@ -69,7 +83,7 @@ namespace System.Net.Http
 
                protected internal override Task SerializeToStreamAsync (Stream stream, TransportContext context)
                {
-                       return content.CopyToAsync (stream, bufferSize);
+                       return content.CopyToAsync (stream, bufferSize, cancellationToken);
                }
 
                protected internal override bool TryComputeLength (out long length)
index 6651be4a64fac113d36b852cf72cbec8efe32fa4..818a90d855220117589cf4367f7176b64f02d677 100644 (file)
@@ -684,6 +684,16 @@ namespace MonoTests.System.Net.Http
                        Assert.That (client.GetStringAsync ("Computer").Result != null);
                }
 
+               [Test]
+               [Category ("MobileNotWorking")] // Missing encoding
+               public void GetString_Many ()
+               {
+                       var client = new HttpClient ();
+                       var t1 = client.GetStringAsync ("http://www.google.com");
+                       var t2 = client.GetStringAsync ("http://www.google.com");
+                       Assert.IsTrue (Task.WaitAll (new [] { t1, t2 }, WaitTimeout));          
+               }
+
                [Test]
                public void GetByteArray_ServerError ()
                {
index 21692ed3b0daf99c86a11c8f46ae8c09e9e73b9f..b852fdc05fdc9d1476ef6a9f14827fb21afe7801 100644 (file)
@@ -219,6 +219,12 @@ namespace MonoTests.System.Net.Http
                        } catch (FormatException) {
                        }
 
+                       try {
+                               headers.Add ("pragma", "nocache,RequestID=1,g=");
+                               Assert.Fail ("pragma");
+                       } catch (FormatException) {                             
+                       }
+
                        headers.Add ("accept", "audio/y");
                        headers.Add ("accept-charset", "achs");
                        headers.Add ("accept-encoding", "aenc");
@@ -226,7 +232,6 @@ namespace MonoTests.System.Net.Http
                        headers.Add ("expect", "exp");
                        headers.Add ("if-match", "\"v\"");
                        headers.Add ("if-none-match", "\"v2\"");
-                       headers.Add ("pragma", "p");
                        headers.Add ("TE", "0.8");
                        headers.Add ("trailer", "value2");
                        headers.Add ("transfer-encoding", "ttt");
@@ -234,6 +239,7 @@ namespace MonoTests.System.Net.Http
                        headers.Add ("user-agent", "uaua");
                        headers.Add ("via", "prot v");
                        headers.Add ("warning", "4 ww \"t\"");
+                       headers.Add ("pragma", "nocache,R=1,g");
 
                        Assert.IsTrue (headers.Accept.SequenceEqual (
                                new[] {
@@ -296,7 +302,6 @@ namespace MonoTests.System.Net.Http
                        Assert.IsTrue (headers.IfNoneMatch.SequenceEqual (new EntityTagHeaderValue[] { new EntityTagHeaderValue ("\"tag2\"", true), new EntityTagHeaderValue ("\"v2\"", false) }));
                        Assert.AreEqual (new DateTimeOffset (DateTime.Today), headers.IfRange.Date);
                        Assert.AreEqual (headers.MaxForwards, 0x15b3);
-                       Assert.IsTrue (headers.Pragma.SequenceEqual (new NameValueHeaderValue[] { new NameValueHeaderValue ("name", "value"), new NameValueHeaderValue ("p", null) }));
                        Assert.AreEqual ("p", headers.ProxyAuthorization.Parameter);
                        Assert.AreEqual ("s", headers.ProxyAuthorization.Scheme);
                        Assert.AreEqual (5, headers.Range.Ranges.First ().From);
@@ -345,6 +350,37 @@ namespace MonoTests.System.Net.Http
                                }
                        ));
 
+                       Assert.IsTrue (headers.Pragma.SequenceEqual (
+                               new[] {
+                                       new NameValueHeaderValue ("name", "value"),
+                                       new NameValueHeaderValue ("nocache", null),
+                                       new NameValueHeaderValue ("R", "1"),
+                                       new NameValueHeaderValue ("g", null)
+                               }
+                       ));                     
+               }
+
+               [Test]
+               public void Headers_Complex ()
+               {
+                       HttpRequestMessage message = new HttpRequestMessage ();
+                       HttpRequestHeaders headers = message.Headers;
+
+                       headers.Add ("user-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1547.62 Safari/537.36");
+
+
+                       Assert.AreEqual (6, headers.UserAgent.Count);
+
+                       Assert.IsTrue (headers.UserAgent.SequenceEqual (
+                               new[] {
+                                       new ProductInfoHeaderValue ("Mozilla", "5.0"),
+                                       new ProductInfoHeaderValue ("(Macintosh; Intel Mac OS X 10_8_4)"),
+                                       new ProductInfoHeaderValue ("AppleWebKit", "537.36"),
+                                       new ProductInfoHeaderValue ("(KHTML, like Gecko)"),
+                                       new ProductInfoHeaderValue ("Chrome", "29.0.1547.62"),
+                                       new ProductInfoHeaderValue ("Safari", "537.36")
+                               }
+                       ));                     
                }
 
                [Test]
diff --git a/mcs/class/System.Net.Http/monotouch_System.Net.Http.dll.sources b/mcs/class/System.Net.Http/monotouch_System.Net.Http.dll.sources
new file mode 100644 (file)
index 0000000..ccca104
--- /dev/null
@@ -0,0 +1,53 @@
+../../build/common/Consts.cs
+Assembly/AssemblyInfo.cs
+System.Net.Http/ByteArrayContent.cs
+System.Net.Http/ClientCertificateOption.cs
+System.Net.Http/DelegatingHandler.cs
+System.Net.Http/FormUrlEncodedContent.cs
+System.Net.Http/HttpClient.cs
+System.Net.Http/HttpClientHandler.cs
+System.Net.Http/HttpCompletionOption.cs
+System.Net.Http/HttpContent.cs
+System.Net.Http/HttpMessageHandler.cs
+System.Net.Http/HttpMessageInvoker.cs
+System.Net.Http/HttpMethod.cs
+System.Net.Http/HttpRequestException.cs
+System.Net.Http/HttpRequestMessage.cs
+System.Net.Http/HttpResponseMessage.cs
+System.Net.Http/MessageProcessingHandler.cs
+System.Net.Http/MultipartContent.cs
+System.Net.Http/MultipartFormDataContent.cs
+System.Net.Http/StreamContent.cs
+System.Net.Http/StringContent.cs
+System.Net.Http.Headers/AuthenticationHeaderValue.cs
+System.Net.Http.Headers/CacheControlHeaderValue.cs
+System.Net.Http.Headers/CollectionExtensions.cs
+System.Net.Http.Headers/ContentDispositionHeaderValue.cs
+System.Net.Http.Headers/ContentRangeHeaderValue.cs
+System.Net.Http.Headers/EntityTagHeaderValue.cs
+System.Net.Http.Headers/HashCodeCalculator.cs
+System.Net.Http.Headers/HeaderInfo.cs
+System.Net.Http.Headers/HttpContentHeaders.cs
+System.Net.Http.Headers/HttpHeaderKind.cs
+System.Net.Http.Headers/HttpHeaders.cs
+System.Net.Http.Headers/HttpHeaderValueCollection.cs
+System.Net.Http.Headers/HttpRequestHeaders.cs
+System.Net.Http.Headers/HttpResponseHeaders.cs
+System.Net.Http.Headers/Lexer.cs
+System.Net.Http.Headers/MediaTypeHeaderValue.cs
+System.Net.Http.Headers/MediaTypeWithQualityHeaderValue.cs
+System.Net.Http.Headers/NameValueHeaderValue.cs
+System.Net.Http.Headers/NameValueWithParametersHeaderValue.cs
+System.Net.Http.Headers/Parser.cs
+System.Net.Http.Headers/ProductHeaderValue.cs
+System.Net.Http.Headers/ProductInfoHeaderValue.cs
+System.Net.Http.Headers/QualityValue.cs
+System.Net.Http.Headers/RangeConditionHeaderValue.cs
+System.Net.Http.Headers/RangeHeaderValue.cs
+System.Net.Http.Headers/RangeItemHeaderValue.cs
+System.Net.Http.Headers/RetryConditionHeaderValue.cs
+System.Net.Http.Headers/StringWithQualityHeaderValue.cs
+System.Net.Http.Headers/TransferCodingHeaderValue.cs
+System.Net.Http.Headers/TransferCodingWithQualityHeaderValue.cs
+System.Net.Http.Headers/ViaHeaderValue.cs
+System.Net.Http.Headers/WarningHeaderValue.cs
\ No newline at end of file
index 1aeda8cd3f8b1169396cd0ac2bb3a33de7834add..85396e8a834042befd20497011b2d7936817093b 100644 (file)
@@ -59,6 +59,10 @@ using System.Runtime.InteropServices;
        [assembly: InternalsVisibleTo ("System.Windows, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
        [assembly: InternalsVisibleTo ("System.Windows.Browser, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
        [assembly: InternalsVisibleTo ("System.Xml, PublicKey=00240000048000009400000006020000002400005253413100040000010001008D56C76F9E8649383049F383C44BE0EC204181822A6C31CF5EB7EF486944D032188EA1D3920763712CCB12D75FB77E9811149E6148E5D32FBAAB37611C1878DDC19E20EF135D0CB2CFF2BFEC3D115810C3D9069638FE4BE215DBF795861920E5AB6F7DB2E2CEEF136AC23D5DD2BF031700AEC232F6C6B1C785B4305C123B37AB")]
+#elif NET_4_0
+       [assembly: AssemblyKeyFile ("../msfinal.pub")]
+       [assembly: AllowPartiallyTrustedCallers]
+       [assembly: SecurityCritical]
 #else
        [assembly: AssemblyKeyFile ("../ecma.pub")]
        [assembly: AllowPartiallyTrustedCallers]
index 2511171a23a93392781c2bdb4ffbfda39961545a..6dd6ee510dd7b8531f0511785aca1cd9a32dc990 100644 (file)
@@ -24,6 +24,8 @@
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
+#if NET_4_0
+
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.Cookie))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieCollection))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.CookieContainer))]
@@ -45,3 +47,4 @@
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkInformation.NetworkChange))]
 [assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Net.NetworkInformation.NetworkInterface))]
 
+#endif
\ No newline at end of file
index 7da53393fa35b522915d9114a388713189acbc24..aa7b942e2ba28c3dff75dd17db533cca15e580a9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{52BCBA52-95B9-4437-B630-4A7C492BF560}</ProjectGuid>\r
+    <ProjectGuid>{87D4A457-1D00-48A7-8BD6-E786E93CC4CA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Net-net_2_0</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -47,6 +47,7 @@
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.Net\IPEndPointCollection.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 07db29c90bbfec61397c86c076621d8f392c8616..4b15fde41e4696ad55e04caa39be78596b3431c8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{26480A1B-A6B9-4865-8492-C18019094CE4}</ProjectGuid>\r
+    <ProjectGuid>{0653CFE2-4A19-4B91-A51F-793F8D516790}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Net-net_4_0</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -47,6 +47,7 @@
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.Net\IPEndPointCollection.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3e6954e6b0037dcd3bbb01f9da0ee68931a15414..41c2a691ee58e973fc5aa589c512b8928914a96a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{204C086B-F0B0-4570-89F1-50245F0E0491}</ProjectGuid>\r
+    <ProjectGuid>{ADF802C8-DED6-4991-A5AE-34B8F1440EE4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Net-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_2_1;NET_2_0;NET_1_1;NET_3_5</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;NET_3_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -47,6 +47,7 @@
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.Net\IPEndPointCollection.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 696a2834fae4c64e75b1f6f36d7897a05a1ce7ae..c975ca182be9112636c9a370731213f17bc8efb8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D1AE499F-8B3D-44A2-9EB4-A9D336A2866C}</ProjectGuid>\r
+    <ProjectGuid>{9BE7809F-583C-4F8C-B9BB-7BE45B78CC93}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Numerics-net_4_0</OutputPath>\r
@@ -45,6 +45,7 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
+    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="System.Numerics\BigInteger.cs" />\r
     <Compile Include="System.Numerics\Complex.cs" />\r  </ItemGroup>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fe65b1368af7bc14597a307ac00803f5beb9cf9b..d62bc7e48bfced9860a6b6bba0ed85456685d4b0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C807E510-3FB6-4C77-A7CC-6EAC73823C3C}</ProjectGuid>\r
+    <ProjectGuid>{9A7E3AA8-1EB4-4A43-A806-636E6B220A76}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Numerics-net_4_5</OutputPath>\r
@@ -45,6 +45,7 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
+    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="System.Numerics\BigInteger.cs" />\r
     <Compile Include="System.Numerics\Complex.cs" />\r  </ItemGroup>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cba210eaad92cc4808eca35434490e248e989cb1..510a4cac3be73596ea43a288be3de0bfead62828 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{22EE988C-2F34-4538-873F-35DA98075332}</ProjectGuid>\r
+    <ProjectGuid>{6067C2B4-C6BA-4D06-93A6-42365C0DB6EE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Numerics-tests-net_4_0</OutputPath>\r
@@ -44,7 +44,8 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="Test\System.Numerics\BigIntegerTest.cs" />\r  </ItemGroup>\r
+    <Compile Include="Test\System.Numerics\BigIntegerTest.cs" />\r
+    <Compile Include="Test\System.Numerics\ComplexTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Numerics\System.Numerics-net_4_0.csproj">\r
-      <Project>{D1AE499F-8B3D-44A2-9EB4-A9D336A2866C}</Project>\r
+      <Project>{9BE7809F-583C-4F8C-B9BB-7BE45B78CC93}</Project>\r
       <Name>System.Numerics\System.Numerics-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d1429d9435fe69ba29d818b82147c7211c201c6b..e1fa62deab6284060c3404e5bf3adfd1165e256d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0FCF1047-D9AE-48DA-B794-5505284027A9}</ProjectGuid>\r
+    <ProjectGuid>{1A3E2D13-1CE7-43CB-9748-9C7D586A897F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Numerics-tests-net_4_5</OutputPath>\r
@@ -44,7 +44,8 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="Test\System.Numerics\BigIntegerTest.cs" />\r  </ItemGroup>\r
+    <Compile Include="Test\System.Numerics\BigIntegerTest.cs" />\r
+    <Compile Include="Test\System.Numerics\ComplexTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Numerics\System.Numerics-net_4_5.csproj">\r
-      <Project>{C807E510-3FB6-4C77-A7CC-6EAC73823C3C}</Project>\r
+      <Project>{9A7E3AA8-1EB4-4A43-A806-636E6B220A76}</Project>\r
       <Name>System.Numerics\System.Numerics-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 39c80a6bd379b1a8c8f82856e2e39058535a9b44..816ca2ffceeb3a6a250e8b1f682e77919a3f658d 100644 (file)
@@ -324,7 +324,7 @@ namespace System.Numerics {
                }
 
                public bool IsEven {
-                       get { return (data [0] & 0x1) == 0; }
+                       get { return sign == 0 || (data [0] & 0x1) == 0; }
                }               
 
                public bool IsOne {
@@ -384,6 +384,8 @@ namespace System.Numerics {
 
                public static explicit operator int (BigInteger value)
                {
+                       if (value.sign == 0)
+                               return 0;
                        if (value.data.Length > 1)
                                throw new OverflowException ();
                        uint data = value.data [0];
@@ -404,6 +406,8 @@ namespace System.Numerics {
                [CLSCompliantAttribute (false)]
                public static explicit operator uint (BigInteger value)
                {
+                       if (value.sign == 0)
+                               return 0;
                        if (value.data.Length > 1 || value.sign == -1)
                                throw new OverflowException ();
                        return value.data [0];
@@ -478,6 +482,8 @@ namespace System.Numerics {
                [CLSCompliantAttribute (false)]
                public static explicit operator ulong (BigInteger value)
                {
+                       if (value.sign == 0)
+                               return 0;
                        if (value.data.Length > 2 || value.sign == -1)
                                throw new OverflowException ();
 
@@ -741,6 +747,9 @@ namespace System.Numerics {
 
                public static BigInteger operator++ (BigInteger value)
                {
+                       if (value.sign == 0)
+                               return One;
+
                        short sign = value.sign;
                        uint[] data = value.data;
                        if (data.Length == 1) {
@@ -760,6 +769,9 @@ namespace System.Numerics {
 
                public static BigInteger operator-- (BigInteger value)
                {
+                       if (value.sign == 0)
+                               return MinusOne;
+
                        short sign = value.sign;
                        uint[] data = value.data;
                        if (data.Length == 1) {
@@ -1033,11 +1045,18 @@ namespace System.Numerics {
                        int bit_shift = shift & 0x1F;
                        int carry_shift = 32 - bit_shift;
 
-                       for (int i = 0; i < data.Length; ++i) {
-                               uint word = data [i];
-                               res [i + idx_shift] |= word << bit_shift;
-                               if (i + idx_shift + 1 < res.Length)
-                                       res [i + idx_shift + 1] = word >> carry_shift;
+                       if (carry_shift == 32) {
+                               for (int i = 0; i < data.Length; ++i) {
+                                       uint word = data [i];
+                                       res [i + idx_shift] |= word << bit_shift;
+                               }
+                       } else {
+                               for (int i = 0; i < data.Length; ++i) {
+                                       uint word = data [i];
+                                       res [i + idx_shift] |= word << bit_shift;
+                                       if (i + idx_shift + 1 < res.Length)
+                                               res [i + idx_shift + 1] = word >> carry_shift;
+                               }
                        }
 
                        return new BigInteger ((short)sign, res);
@@ -1071,13 +1090,23 @@ namespace System.Numerics {
                        uint[] res = new uint [size];
                        int carry_shift = 32 - bit_shift;
 
-                       for (int i = data.Length - 1; i >= idx_shift; --i) {
-                               uint word = data [i];
+                       if (carry_shift == 32) {
+                               for (int i = data.Length - 1; i >= idx_shift; --i) {
+                                       uint word = data [i];
+
+                                       if (i - idx_shift < res.Length)
+                                               res [i - idx_shift] |= word >> bit_shift;
+                               }
+                       } else {
+                               for (int i = data.Length - 1; i >= idx_shift; --i) {
+                                       uint word = data [i];
+
+                                       if (i - idx_shift < res.Length)
+                                               res [i - idx_shift] |= word >> bit_shift;
+                                       if (i - idx_shift - 1 >= 0)
+                                               res [i - idx_shift - 1] = word << carry_shift;
+                               }
 
-                               if (i - idx_shift < res.Length)
-                                       res [i - idx_shift] |= word >> bit_shift;
-                               if (i - idx_shift - 1 >= 0)
-                                       res [i - idx_shift - 1] = word << carry_shift;
                        }
 
                        //Round down instead of toward zero
@@ -1273,9 +1302,13 @@ namespace System.Numerics {
                {
                        if (sign != other.sign)
                                return false;
-                       if (data.Length != other.data.Length)
+
+                       int alen = data != null ? data.Length : 0;
+                       int blen = other.data != null ? other.data.Length : 0;
+
+                       if (alen != blen)
                                return false;
-                       for (int i = 0; i < data.Length; ++i) {
+                       for (int i = 0; i < alen; ++i) {
                                if (data [i] != other.data [i])
                                        return false;
                        }
@@ -1687,14 +1720,14 @@ namespace System.Numerics {
 
                public static BigInteger GreatestCommonDivisor (BigInteger left, BigInteger right)
                {
-                       if (left.data.Length == 1 && left.data [0] == 1)
+                       if (left.sign != 0 && left.data.Length == 1 && left.data [0] == 1)
                                return new BigInteger (1, ONE);
-                       if (right.data.Length == 1 && right.data [0] == 1)
+                       if (right.sign != 0 && right.data.Length == 1 && right.data [0] == 1)
                                return new BigInteger (1, ONE);
                        if (left.IsZero)
-                               return right;
+                               return Abs(right);
                        if (right.IsZero)
-                               return left;
+                               return Abs(left);
 
                        BigInteger x = new BigInteger (1, left.data);
                        BigInteger y = new BigInteger (1, right.data);
@@ -1801,8 +1834,9 @@ namespace System.Numerics {
                public override int GetHashCode ()
                {
                        uint hash = (uint)(sign * 0x01010101u);
+                       int len = data != null ? data.Length : 0;
 
-                       for (int i = 0; i < data.Length; ++i)
+                       for (int i = 0; i < len; ++i)
                                hash ^= data [i];
                        return (int)hash;
                }
@@ -2168,8 +2202,8 @@ namespace System.Numerics {
 
                static int CoreCompare (uint[] a, uint[] b)
                {
-                       int     al = a.Length;
-                       int bl = b.Length;
+                       int al = a != null ? a.Length : 0;
+                       int bl = b != null ? b.Length : 0;
 
                        if (al > bl)
                                return 1;
index 7871730a242a8fc87af6cc2af273a0ac381e5844..02bc81a4533a275892a918af2d6424a9c9c155a8 100644 (file)
@@ -1,3 +1,13 @@
+2013-06-12 Christoph Ruegg <git@cdrnet.ch>
+
+       * BigInteger.cs: Fix GreatestCommonDivisor to
+       return absolute value if one of the args is zero.
+
+2013-06-09 Christoph Ruegg <git@cdrnet.ch>
+
+       * Complex.cs: Fix IFormattable.ToString to pass custom
+       format strings to double.ToString instead of string.Format.
+
 2010-07-12  Jb Evain  <jbevain@novell.com>
 
        * Complex.cs: implement IFormattable.
index 7f870fce6601c182fe57bc1e3f1ff8c3ec430aa5..6c172751b38ec23c1ae4deb7ede853e274f63733 100644 (file)
@@ -338,12 +338,12 @@ namespace System.Numerics {
 
                public string ToString (string format)
                {
-                       return string.Format ("({0}, {1})", string.Format (format, real), string.Format (format, imaginary));
+                       return string.Format ("({0}, {1})", real.ToString (format), imaginary.ToString (format));
                }
 
                public string ToString (string format, IFormatProvider provider)
                {
-                       return string.Format ("({0}, {1})", string.Format (provider, format, real), string.Format (provider, format, imaginary));
+                       return string.Format ("({0}, {1})", real.ToString (format, provider), imaginary.ToString (format, provider));
                }
        }
 }
index 27223aee50d231fe926ffb63f41e477ae9698405..3511abf825567cc4e5ff77c724ce2016d0f6d5f4 100644 (file)
@@ -1 +1,2 @@
 System.Numerics/BigIntegerTest.cs
+System.Numerics/ComplexTest.cs
index cc20c787370d768ee4be0506bbe8293c09ba9d7f..098c50854b78f1be97ebd61df42710541e7ccbbc 100644 (file)
@@ -150,6 +150,9 @@ namespace MonoTests.System.Numerics
                        Assert.AreEqual (2, (int)BigInteger.GreatestCommonDivisor (-12345678, -8765432), "#14");
 
                        Assert.AreEqual (40, (int)BigInteger.GreatestCommonDivisor (5581 * 40, 6671 * 40), "#15");
+
+                       Assert.AreEqual (5, (int)BigInteger.GreatestCommonDivisor (-5, 0), "#16");
+                       Assert.AreEqual (5, (int)BigInteger.GreatestCommonDivisor (0, -5), "#17");
                }
 
                [Test]
@@ -925,5 +928,222 @@ namespace MonoTests.System.Numerics
                        Assert.AreEqual (-1, b.CompareTo (2000));
                        Assert.AreEqual (-1, b.CompareTo (-2000));
                }
+
+               [Test]
+               public void LeftShitByInt ()
+               {
+                       var v = BigInteger.Parse("230794411440927908251127453634");
+
+                       Assert.AreEqual ("230794411440927908251127453634", (v << 0).ToString (), "#0");
+                       Assert.AreEqual ("461588822881855816502254907268", (v << 1).ToString (), "#1");
+                       Assert.AreEqual ("923177645763711633004509814536", (v << 2).ToString (), "#2");
+                       Assert.AreEqual ("1846355291527423266009019629072", (v << 3).ToString (), "#3");
+                       Assert.AreEqual ("3692710583054846532018039258144", (v << 4).ToString (), "#4");
+                       Assert.AreEqual ("7385421166109693064036078516288", (v << 5).ToString (), "#5");
+                       Assert.AreEqual ("14770842332219386128072157032576", (v << 6).ToString (), "#6");
+                       Assert.AreEqual ("29541684664438772256144314065152", (v << 7).ToString (), "#7");
+                       Assert.AreEqual ("59083369328877544512288628130304", (v << 8).ToString (), "#8");
+                       Assert.AreEqual ("118166738657755089024577256260608", (v << 9).ToString (), "#9");
+                       Assert.AreEqual ("236333477315510178049154512521216", (v << 10).ToString (), "#10");
+                       Assert.AreEqual ("472666954631020356098309025042432", (v << 11).ToString (), "#11");
+                       Assert.AreEqual ("945333909262040712196618050084864", (v << 12).ToString (), "#12");
+                       Assert.AreEqual ("1890667818524081424393236100169728", (v << 13).ToString (), "#13");
+                       Assert.AreEqual ("3781335637048162848786472200339456", (v << 14).ToString (), "#14");
+                       Assert.AreEqual ("7562671274096325697572944400678912", (v << 15).ToString (), "#15");
+                       Assert.AreEqual ("15125342548192651395145888801357824", (v << 16).ToString (), "#16");
+                       Assert.AreEqual ("30250685096385302790291777602715648", (v << 17).ToString (), "#17");
+                       Assert.AreEqual ("60501370192770605580583555205431296", (v << 18).ToString (), "#18");
+                       Assert.AreEqual ("121002740385541211161167110410862592", (v << 19).ToString (), "#19");
+                       Assert.AreEqual ("242005480771082422322334220821725184", (v << 20).ToString (), "#20");
+                       Assert.AreEqual ("484010961542164844644668441643450368", (v << 21).ToString (), "#21");
+                       Assert.AreEqual ("968021923084329689289336883286900736", (v << 22).ToString (), "#22");
+                       Assert.AreEqual ("1936043846168659378578673766573801472", (v << 23).ToString (), "#23");
+                       Assert.AreEqual ("3872087692337318757157347533147602944", (v << 24).ToString (), "#24");
+                       Assert.AreEqual ("7744175384674637514314695066295205888", (v << 25).ToString (), "#25");
+                       Assert.AreEqual ("15488350769349275028629390132590411776", (v << 26).ToString (), "#26");
+                       Assert.AreEqual ("30976701538698550057258780265180823552", (v << 27).ToString (), "#27");
+                       Assert.AreEqual ("61953403077397100114517560530361647104", (v << 28).ToString (), "#28");
+                       Assert.AreEqual ("123906806154794200229035121060723294208", (v << 29).ToString (), "#29");
+                       Assert.AreEqual ("247813612309588400458070242121446588416", (v << 30).ToString (), "#30");
+                       Assert.AreEqual ("495627224619176800916140484242893176832", (v << 31).ToString (), "#31");
+                       Assert.AreEqual ("991254449238353601832280968485786353664", (v << 32).ToString (), "#32");
+                       Assert.AreEqual ("1982508898476707203664561936971572707328", (v << 33).ToString (), "#33");
+                       Assert.AreEqual ("3965017796953414407329123873943145414656", (v << 34).ToString (), "#34");
+                       Assert.AreEqual ("7930035593906828814658247747886290829312", (v << 35).ToString (), "#35");
+                       Assert.AreEqual ("15860071187813657629316495495772581658624", (v << 36).ToString (), "#36");
+                       Assert.AreEqual ("31720142375627315258632990991545163317248", (v << 37).ToString (), "#37");
+                       Assert.AreEqual ("63440284751254630517265981983090326634496", (v << 38).ToString (), "#38");
+                       Assert.AreEqual ("126880569502509261034531963966180653268992", (v << 39).ToString (), "#39");
+                       Assert.AreEqual ("253761139005018522069063927932361306537984", (v << 40).ToString (), "#40");
+                       Assert.AreEqual ("507522278010037044138127855864722613075968", (v << 41).ToString (), "#41");
+                       Assert.AreEqual ("1015044556020074088276255711729445226151936", (v << 42).ToString (), "#42");
+                       Assert.AreEqual ("2030089112040148176552511423458890452303872", (v << 43).ToString (), "#43");
+                       Assert.AreEqual ("4060178224080296353105022846917780904607744", (v << 44).ToString (), "#44");
+                       Assert.AreEqual ("8120356448160592706210045693835561809215488", (v << 45).ToString (), "#45");
+                       Assert.AreEqual ("16240712896321185412420091387671123618430976", (v << 46).ToString (), "#46");
+                       Assert.AreEqual ("32481425792642370824840182775342247236861952", (v << 47).ToString (), "#47");
+                       Assert.AreEqual ("64962851585284741649680365550684494473723904", (v << 48).ToString (), "#48");
+                       Assert.AreEqual ("129925703170569483299360731101368988947447808", (v << 49).ToString (), "#49");
+                       Assert.AreEqual ("259851406341138966598721462202737977894895616", (v << 50).ToString (), "#50");
+                       Assert.AreEqual ("519702812682277933197442924405475955789791232", (v << 51).ToString (), "#51");
+                       Assert.AreEqual ("1039405625364555866394885848810951911579582464", (v << 52).ToString (), "#52");
+                       Assert.AreEqual ("2078811250729111732789771697621903823159164928", (v << 53).ToString (), "#53");
+                       Assert.AreEqual ("4157622501458223465579543395243807646318329856", (v << 54).ToString (), "#54");
+                       Assert.AreEqual ("8315245002916446931159086790487615292636659712", (v << 55).ToString (), "#55");
+                       Assert.AreEqual ("16630490005832893862318173580975230585273319424", (v << 56).ToString (), "#56");
+                       Assert.AreEqual ("33260980011665787724636347161950461170546638848", (v << 57).ToString (), "#57");
+                       Assert.AreEqual ("66521960023331575449272694323900922341093277696", (v << 58).ToString (), "#58");
+                       Assert.AreEqual ("133043920046663150898545388647801844682186555392", (v << 59).ToString (), "#59");
+                       Assert.AreEqual ("266087840093326301797090777295603689364373110784", (v << 60).ToString (), "#60");
+                       Assert.AreEqual ("532175680186652603594181554591207378728746221568", (v << 61).ToString (), "#61");
+                       Assert.AreEqual ("1064351360373305207188363109182414757457492443136", (v << 62).ToString (), "#62");
+                       Assert.AreEqual ("2128702720746610414376726218364829514914984886272", (v << 63).ToString (), "#63");
+                       Assert.AreEqual ("4257405441493220828753452436729659029829969772544", (v << 64).ToString (), "#64");
+                       Assert.AreEqual ("8514810882986441657506904873459318059659939545088", (v << 65).ToString (), "#65");
+                       Assert.AreEqual ("17029621765972883315013809746918636119319879090176", (v << 66).ToString (), "#66");
+                       Assert.AreEqual ("34059243531945766630027619493837272238639758180352", (v << 67).ToString (), "#67");
+                       Assert.AreEqual ("68118487063891533260055238987674544477279516360704", (v << 68).ToString (), "#68");
+                       Assert.AreEqual ("136236974127783066520110477975349088954559032721408", (v << 69).ToString (), "#69");
+               }
+
+
+               [Test]
+               public void RightShitByInt ()
+               {
+                       var v = BigInteger.Parse("230794411440927908251127453634");
+                       v = v * BigInteger.Pow (2, 70);
+
+                       Assert.AreEqual ("272473948255566133040220955950698177909118065442816", (v >> 0).ToString (), "#0");
+                       Assert.AreEqual ("136236974127783066520110477975349088954559032721408", (v >> 1).ToString (), "#1");
+                       Assert.AreEqual ("68118487063891533260055238987674544477279516360704", (v >> 2).ToString (), "#2");
+                       Assert.AreEqual ("34059243531945766630027619493837272238639758180352", (v >> 3).ToString (), "#3");
+                       Assert.AreEqual ("17029621765972883315013809746918636119319879090176", (v >> 4).ToString (), "#4");
+                       Assert.AreEqual ("8514810882986441657506904873459318059659939545088", (v >> 5).ToString (), "#5");
+                       Assert.AreEqual ("4257405441493220828753452436729659029829969772544", (v >> 6).ToString (), "#6");
+                       Assert.AreEqual ("2128702720746610414376726218364829514914984886272", (v >> 7).ToString (), "#7");
+                       Assert.AreEqual ("1064351360373305207188363109182414757457492443136", (v >> 8).ToString (), "#8");
+                       Assert.AreEqual ("532175680186652603594181554591207378728746221568", (v >> 9).ToString (), "#9");
+                       Assert.AreEqual ("266087840093326301797090777295603689364373110784", (v >> 10).ToString (), "#10");
+                       Assert.AreEqual ("133043920046663150898545388647801844682186555392", (v >> 11).ToString (), "#11");
+                       Assert.AreEqual ("66521960023331575449272694323900922341093277696", (v >> 12).ToString (), "#12");
+                       Assert.AreEqual ("33260980011665787724636347161950461170546638848", (v >> 13).ToString (), "#13");
+                       Assert.AreEqual ("16630490005832893862318173580975230585273319424", (v >> 14).ToString (), "#14");
+                       Assert.AreEqual ("8315245002916446931159086790487615292636659712", (v >> 15).ToString (), "#15");
+                       Assert.AreEqual ("4157622501458223465579543395243807646318329856", (v >> 16).ToString (), "#16");
+                       Assert.AreEqual ("2078811250729111732789771697621903823159164928", (v >> 17).ToString (), "#17");
+                       Assert.AreEqual ("1039405625364555866394885848810951911579582464", (v >> 18).ToString (), "#18");
+                       Assert.AreEqual ("519702812682277933197442924405475955789791232", (v >> 19).ToString (), "#19");
+                       Assert.AreEqual ("259851406341138966598721462202737977894895616", (v >> 20).ToString (), "#20");
+                       Assert.AreEqual ("129925703170569483299360731101368988947447808", (v >> 21).ToString (), "#21");
+                       Assert.AreEqual ("64962851585284741649680365550684494473723904", (v >> 22).ToString (), "#22");
+                       Assert.AreEqual ("32481425792642370824840182775342247236861952", (v >> 23).ToString (), "#23");
+                       Assert.AreEqual ("16240712896321185412420091387671123618430976", (v >> 24).ToString (), "#24");
+                       Assert.AreEqual ("8120356448160592706210045693835561809215488", (v >> 25).ToString (), "#25");
+                       Assert.AreEqual ("4060178224080296353105022846917780904607744", (v >> 26).ToString (), "#26");
+                       Assert.AreEqual ("2030089112040148176552511423458890452303872", (v >> 27).ToString (), "#27");
+                       Assert.AreEqual ("1015044556020074088276255711729445226151936", (v >> 28).ToString (), "#28");
+                       Assert.AreEqual ("507522278010037044138127855864722613075968", (v >> 29).ToString (), "#29");
+                       Assert.AreEqual ("253761139005018522069063927932361306537984", (v >> 30).ToString (), "#30");
+                       Assert.AreEqual ("126880569502509261034531963966180653268992", (v >> 31).ToString (), "#31");
+                       Assert.AreEqual ("63440284751254630517265981983090326634496", (v >> 32).ToString (), "#32");
+                       Assert.AreEqual ("31720142375627315258632990991545163317248", (v >> 33).ToString (), "#33");
+                       Assert.AreEqual ("15860071187813657629316495495772581658624", (v >> 34).ToString (), "#34");
+                       Assert.AreEqual ("7930035593906828814658247747886290829312", (v >> 35).ToString (), "#35");
+                       Assert.AreEqual ("3965017796953414407329123873943145414656", (v >> 36).ToString (), "#36");
+                       Assert.AreEqual ("1982508898476707203664561936971572707328", (v >> 37).ToString (), "#37");
+                       Assert.AreEqual ("991254449238353601832280968485786353664", (v >> 38).ToString (), "#38");
+                       Assert.AreEqual ("495627224619176800916140484242893176832", (v >> 39).ToString (), "#39");
+                       Assert.AreEqual ("247813612309588400458070242121446588416", (v >> 40).ToString (), "#40");
+                       Assert.AreEqual ("123906806154794200229035121060723294208", (v >> 41).ToString (), "#41");
+                       Assert.AreEqual ("61953403077397100114517560530361647104", (v >> 42).ToString (), "#42");
+                       Assert.AreEqual ("30976701538698550057258780265180823552", (v >> 43).ToString (), "#43");
+                       Assert.AreEqual ("15488350769349275028629390132590411776", (v >> 44).ToString (), "#44");
+                       Assert.AreEqual ("7744175384674637514314695066295205888", (v >> 45).ToString (), "#45");
+                       Assert.AreEqual ("3872087692337318757157347533147602944", (v >> 46).ToString (), "#46");
+                       Assert.AreEqual ("1936043846168659378578673766573801472", (v >> 47).ToString (), "#47");
+                       Assert.AreEqual ("968021923084329689289336883286900736", (v >> 48).ToString (), "#48");
+                       Assert.AreEqual ("484010961542164844644668441643450368", (v >> 49).ToString (), "#49");
+                       Assert.AreEqual ("242005480771082422322334220821725184", (v >> 50).ToString (), "#50");
+                       Assert.AreEqual ("121002740385541211161167110410862592", (v >> 51).ToString (), "#51");
+                       Assert.AreEqual ("60501370192770605580583555205431296", (v >> 52).ToString (), "#52");
+                       Assert.AreEqual ("30250685096385302790291777602715648", (v >> 53).ToString (), "#53");
+                       Assert.AreEqual ("15125342548192651395145888801357824", (v >> 54).ToString (), "#54");
+                       Assert.AreEqual ("7562671274096325697572944400678912", (v >> 55).ToString (), "#55");
+                       Assert.AreEqual ("3781335637048162848786472200339456", (v >> 56).ToString (), "#56");
+                       Assert.AreEqual ("1890667818524081424393236100169728", (v >> 57).ToString (), "#57");
+                       Assert.AreEqual ("945333909262040712196618050084864", (v >> 58).ToString (), "#58");
+                       Assert.AreEqual ("472666954631020356098309025042432", (v >> 59).ToString (), "#59");
+                       Assert.AreEqual ("236333477315510178049154512521216", (v >> 60).ToString (), "#60");
+                       Assert.AreEqual ("118166738657755089024577256260608", (v >> 61).ToString (), "#61");
+                       Assert.AreEqual ("59083369328877544512288628130304", (v >> 62).ToString (), "#62");
+                       Assert.AreEqual ("29541684664438772256144314065152", (v >> 63).ToString (), "#63");
+                       Assert.AreEqual ("14770842332219386128072157032576", (v >> 64).ToString (), "#64");
+                       Assert.AreEqual ("7385421166109693064036078516288", (v >> 65).ToString (), "#65");
+                       Assert.AreEqual ("3692710583054846532018039258144", (v >> 66).ToString (), "#66");
+                       Assert.AreEqual ("1846355291527423266009019629072", (v >> 67).ToString (), "#67");
+                       Assert.AreEqual ("923177645763711633004509814536", (v >> 68).ToString (), "#68");
+                       Assert.AreEqual ("461588822881855816502254907268", (v >> 69).ToString (), "#69");
+               }
+
+               [Test]
+               public void Bug10887 ()
+               {
+                       BigInteger b = 0;
+                       for(int i = 1; i <= 16; i++)
+                               b = b * 256 + i;
+                       BigInteger p = BigInteger.Pow (2, 32);
+                       Assert.AreEqual ("1339673755198158349044581307228491536", b.ToString (), "#1");
+                       Assert.AreEqual ("1339673755198158349044581307228491536", ((b << 32) / p).ToString (), "#2");
+                       Assert.AreEqual ("1339673755198158349044581307228491536", (b * p >> 32).ToString (), "#3");
+               }
+
+               [Test]
+               public void DefaultCtorWorks ()
+               {
+                       var a = new BigInteger ();
+                       Assert.AreEqual (BigInteger.One, ++a, "#1");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (BigInteger.MinusOne, --a, "#2");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (BigInteger.MinusOne, ~a, "#3");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual ("0", a.ToString (), "#4");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (true, a == a, "#5");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (false, a < a, "#6");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (true, a < 10l, "#7");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (true, a.IsEven, "#8");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (0, (int)a, "#9");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (0, (uint)a, "#10");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (0, (ulong)a, "#11");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (true, a.Equals (a), "#12");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (a, BigInteger.Min (a, a), "#13");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (a, BigInteger.GreatestCommonDivisor (a, a), "#14");
+
+                       a = new BigInteger ();
+                       Assert.AreEqual (BigInteger.Zero.GetHashCode (), a.GetHashCode (), "#15");
+               }
        }
 }
index 45754ed8bdb49db5d1f7e47e0af0ba63eabaf37c..ec7ae1f94b4cf85f9518da5f72c4ce43323a6bc6 100644 (file)
@@ -1,3 +1,13 @@
+2013-06-13 Christoph Ruegg <git@cdrnet.ch>
+
+       * BigIntegerTest.cs: Extended tests for
+       GreatestCommonDivisor to cover zero-args.
+
+2013-06-09 Christoph Ruegg <git@cdrnet.ch>
+
+       * ComplexTest.cs: Created; Tests ToString
+       with special format strings.
+
 2010-03-06 Rodrigo Kumpera  <rkumpera@novell.com>
 
        * BigIntegerTest.cs: Tests for decimal stuff.
diff --git a/mcs/class/System.Numerics/Test/System.Numerics/ComplexTest.cs b/mcs/class/System.Numerics/Test/System.Numerics/ComplexTest.cs
new file mode 100644 (file)
index 0000000..781c2c9
--- /dev/null
@@ -0,0 +1,32 @@
+// ComplexTest.cs
+//
+// Authors:
+//   Christoph Ruegg <git@cdrnet.ch>
+//
+// Copyright (C) 2013 Novell, Inc (http://www.novell.com)
+//
+
+using System;
+using System.Numerics;
+using System.Globalization;
+using NUnit.Framework;
+
+namespace MonoTests.System.Numerics
+{
+       [TestFixture]
+       public class ComplexTest
+       {
+               [Test]
+               public void TestToStringFormats ()
+               {
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString (), "#1");
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString ("G"), "#2");
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString ((string)null), "#3");
+
+                       IFormatProvider provider = CultureInfo.InvariantCulture;
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString (provider), "#4");
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString ("G", provider), "#5");
+                       Assert.AreEqual ("(1, 2)", new Complex (1, 2).ToString ((string)null, provider), "#6");
+               }
+       }
+}
index 0b7c02a36a78e0fbe2f38ade47a982a5697df899..b49f9cd31d8b08539ccde1ea0fb667935aa8ec8c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</ProjectGuid>\r
+    <ProjectGuid>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Core-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\ObservableBase.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\ObserverBase.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Reactive\Unit.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Strings_Core.Generated.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Core\Strings_Core.Generated.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8447a1ca3ae5e88df956d0567d56af66428873c5..4591cafad86b201d57608b2b22cc50392c4e8710 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}</ProjectGuid>\r
+    <ProjectGuid>{68AE2077-862E-4351-A159-D3CD817059CF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Debugger-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -45,7 +45,8 @@
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Debugger\Properties\AssemblyInfo.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Debugger\Reactive\Linq\QueryDebugger.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Debugger\Reactive\Linq\QueryDebugger.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ad476ccc70db085f53fcc1021bde05e6357b2e06..7ddd29f94d381f9e6cd2125bdba2ace6ac6429ab 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}</ProjectGuid>\r
+    <ProjectGuid>{36C5B564-9E57-4DD3-ADA4-4EC79402B02E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Experimental-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -53,7 +53,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\QbservableEx.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\QbservableEx.Generated.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\Linq\QueryLanguageEx.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\ListObservable.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Experimental\Reactive\ListObservable.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e85fa8136ebeb3be200d13e889634e7f308cc3d..6d4b53fe96f9253e1853151c21c1c0b6c3e93c44 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</ProjectGuid>\r
+    <ProjectGuid>{D80FD091-3F53-4879-B0BB-08897139CF97}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Interfaces-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -67,7 +67,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Linq\IQbservableProvider.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\IConnectableObservable.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\ISubject.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\ISubject.Multi.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Interfaces\Reactive\Subjects\ISubject.Multi.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2ff285e58c1a6f5fc79a1020dd73ed6650dd0d4a..ad60e93be367d33ef13f4657e009eaf61b3b6418 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</ProjectGuid>\r
+    <ProjectGuid>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Linq-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Threading\Tasks\TaskObservableExtensions.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\TimeInterval.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Reactive\Timestamped.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Strings_Linq.Generated.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Linq\Strings_Linq.Generated.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 952f753a9123f4516587bdcf57302da36b1d1bf7..13353ce842871a4ae7d28b454e68304541add977 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A01E9CA8-9B09-4D80-923B-67E8B60D2723}</ProjectGuid>\r
+    <ProjectGuid>{6A74098E-D4D5-4D6F-A673-8E95CBF8726E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.PlatformServices-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -62,7 +62,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\PlatformEnlightenmentProvider.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\StopwatchImpl.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Reactive\Internal\Stubs.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Strings_PlatformServices.Generated.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.PlatformServices\Strings_PlatformServices.Generated.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 12b07443ab2aee2b38d0b0ca4732fd5b521e9fd8..2ebe682dded0ffbab408a473d5bbda64714535e2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3EC882EF-A451-467F-BE31-CE6E98A538F0}</ProjectGuid>\r
+    <ProjectGuid>{03DD638D-4D60-42BB-94D6-3C7112C62C20}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Providers-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -55,7 +55,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Linq\Qbservable.Generated.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\Linq\Qbservable.Joins.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Reactive\ObservableQuery.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Strings_Providers.Generated.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Providers\Strings_Providers.Generated.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 83d195e1bb50709f68fc665d1571ee3a60e83f3c..291d1d4a9e6cf1801159ed062d1dbf8d82a99e37 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}</ProjectGuid>\r
+    <ProjectGuid>{5462ACB9-395E-4152-8292-B24612453210}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Runtime.Remoting-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -47,7 +47,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\GlobalSuppressions.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Properties\AssemblyInfo.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Reactive\Linq\Observable.Remoting.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Reactive\Linq\QueryLanguage.Remoting.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Runtime.Remoting\Reactive\Linq\QueryLanguage.Remoting.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2ff80ec35e0fdb8ea4d57568ee84aba4b8b66055..6fa79f1a9215eefe62d8b252690e48d810a906e5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AB071CEE-330F-4AA3-B73C-9154150914C1}</ProjectGuid>\r
+    <ProjectGuid>{A12A96AC-3AAD-417A-90FB-B40573189AC4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Windows.Forms-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -47,7 +47,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\GlobalSuppressions.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Properties\AssemblyInfo.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Reactive\Concurrency\ControlScheduler.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Reactive\Linq\ControlObservable.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Forms\Reactive\Linq\ControlObservable.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 430ec157fae475981de4f175db8c8ed0224a969b..80f691f48b9d65d3dbf3eaef0757c23baaff3eac 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{490E03A7-434E-41D6-B134-BD090A9CE383}</ProjectGuid>\r
+    <ProjectGuid>{6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Reactive.Windows.Threading-net_4_5</OutputPath>\r
@@ -24,7 +24,7 @@
     <DebugType>full</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>false</Optimize>\r
-    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -32,7 +32,7 @@
     <DebugType>pdbonly</DebugType>\r
     <NoWarn>1699</NoWarn>\r
     <Optimize>true</Optimize>\r
-    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;SIGNED</DefineConstants>\r
+    <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5;HAS_EDI;PREFERASYNC;PREFER_ASYNC;HAS_AWAIT;SIGNED</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
     <WarningLevel>4</WarningLevel>\r
   </PropertyGroup>\r
@@ -51,7 +51,8 @@
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Internal\Constants.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Linq\CoreDispatcherObservable.cs" />\r
     <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Reactive\Linq\DispatcherObservable.cs" />\r
-    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Strings_WindowsThreading.Generated.cs" />\r  </ItemGroup>\r
+    <Compile Include="..\..\..\external\rx\Rx\NET\Source\System.Reactive.Windows.Threading\Strings_WindowsThreading.Generated.cs" />\r
+    <Compile Include="Assembly\AssemblyInfo.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj">\r
-      <Project>{1CA793F9-A71D-4534-B684-D77AF04AB96F}</Project>\r
+      <Project>{D80FD091-3F53-4879-B0BB-08897139CF97}</Project>\r
       <Name>System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Core\System.Reactive.Core-net_4_5.csproj">\r
-      <Project>{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}</Project>\r
+      <Project>{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}</Project>\r
       <Name>System.Reactive.Core\System.Reactive.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj">\r
-      <Project>{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}</Project>\r
+      <Project>{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}</Project>\r
       <Name>System.Reactive.Linq\System.Reactive.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_5.csproj">\r
-      <Project>{6D23A57D-01AF-4266-8E58-C16E732FCF81}</Project>\r
+      <Project>{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 965fa031b3962af386ebf54075ddec68e8c7511e..a32346f8dcae945bb7ed6e352a6ce927ef2566a7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{89B24A2B-F179-4270-99AD-37AA03B77E09}</ProjectGuid>\r
+    <ProjectGuid>{B0813837-153F-4D87-8BDC-4224CE7413BA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Caching-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0d99374799c6e7dd0b63b16ff8f6fa07f79b2351..9b319930ba9b94910b7893c55dea3083aaa90973 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8645A982-AA1E-48CB-B996-7FCC4F8703CE}</ProjectGuid>\r
+    <ProjectGuid>{C18ABE89-33D2-4780-93BE-AB89B8187581}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Caching-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2b3b21521f6357f9f54b034d787ba21ede4df5ab..8e8c3796fa0994cab115529144b81a33d1870185 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70ABD0A7-58E3-420D-97F3-24953E2F35AA}</ProjectGuid>\r
+    <ProjectGuid>{0618397F-59F6-4775-AE8F-F7BE2B619841}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Caching-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Caching\System.Runtime.Caching-net_4_0.csproj">\r
-      <Project>{89B24A2B-F179-4270-99AD-37AA03B77E09}</Project>\r
+      <Project>{B0813837-153F-4D87-8BDC-4224CE7413BA}</Project>\r
       <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b9455dea1f76a81a10b9335e28195e8d02001532..db99a265058ca4484574a4314661703084884858 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8AA31784-B653-4727-B8AD-ED2756AF1C3D}</ProjectGuid>\r
+    <ProjectGuid>{CE2E44C6-7B7F-43BB-992D-44749DFA7D71}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Caching-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj">\r
-      <Project>{8645A982-AA1E-48CB-B996-7FCC4F8703CE}</Project>\r
+      <Project>{C18ABE89-33D2-4780-93BE-AB89B8187581}</Project>\r
       <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dceb63bfc593b3b78d1e5cb2d5da82560fdce2be..45b0ace1186f212f3f6349c4f4fcd40bfc8e10f4 100644 (file)
@@ -65,8 +65,12 @@ namespace System.Runtime.Caching
                        }
 
                        if (heapCount >= heapSize) {
-                               heapSize <<= 1;
-                               Array.Resize <MemoryCacheEntry> (ref heap, heapSize);
+                               checked {
+                                       heapSize <<= 1;
+                               }
+
+                               if (heapSize <= Int32.MaxValue)
+                                       Array.Resize <MemoryCacheEntry> (ref heap, heapSize);
                        }
 
                        return heap;
@@ -78,10 +82,14 @@ namespace System.Runtime.Caching
                                return null;
 
                        if (heapSize > HEAP_RESIZE_THRESHOLD) {
-                               int halfTheSize = heapSize >> 1;
-
-                               if (heapCount < halfTheSize)
-                                       Array.Resize <MemoryCacheEntry> (ref heap, halfTheSize + (heapCount / 3));
+                               int halfTheSize, newSize;
+                               checked {
+                                       halfTheSize = heapSize >> 1;
+                                       newSize = halfTheSize + (heapCount / 3);
+                               }
+
+                               if ((heapCount < halfTheSize) && newSize > -1)
+                                       Array.Resize <MemoryCacheEntry> (ref heap, newSize);
                        }
                        
                        return heap;
@@ -99,7 +107,7 @@ namespace System.Runtime.Caching
                                queueLock.EnterWriteLock ();
                                locked = true;
                                heap = GetHeapWithGrow ();
-                               heap [heapCount++] = item;
+                               heap [checked(heapCount++)] = item;
                                BubbleUp (heap);
                        } finally {
                                if (locked)
@@ -122,7 +130,7 @@ namespace System.Runtime.Caching
                                        return null;
 
                                ret = heap [0];
-                               index = --heapCount;
+                               index = checked(--heapCount);
                                heap [0] = heap [index];
                                heap [index] = null;
                                
@@ -164,7 +172,7 @@ namespace System.Runtime.Caching
                        while (selected < heapCount && heap [selected].ExpiresAt < item.ExpiresAt) {
                                heap [index] = heap [selected];
                                index = selected;
-                               left = (index << 1) + 1;
+                               left = checked((index << 1) + 1);
                                right = left + 1;
                                selected = right < heapCount && heap [right].ExpiresAt < heap [left].ExpiresAt ? right : left;
                        }
@@ -179,8 +187,8 @@ namespace System.Runtime.Caching
                        if (heapCount <= 1)
                                return;
                        
-                       index = heapCount - 1;
-                       parentIndex = (index - 1) >> 1;
+                       index = checked(heapCount - 1);
+                       parentIndex = checked((index - 1) >> 1);
 
                        item = heap [index];
                        while (index > 0) {
index f75168716f3f007d92eac1c7992e37b05ce09d97..b12a4c6cb830dc96dfc3e32adbcc1a4ffeb1f72f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3327D147-BA8F-4844-A60B-AF7C5F1267EB}</ProjectGuid>\r
+    <ProjectGuid>{F83A320D-A0B2-4123-AC1D-0AD8B202FD6B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.DurableInstancing-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 80d3baab13a49078c9f81412a123121eac04d948..0f6ac25b722a2977a270219c43a61eb549ab88ca 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C07F9E49-E65C-40C7-A3BD-02F932A33C2A}</ProjectGuid>\r
+    <ProjectGuid>{DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.DurableInstancing-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fcf1beac741e96fc6b7d9f2bcc1781e81f7190cc..d94977c005abf7e06c3c750b48d05fefdce277f8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FBC4BF16-5D2A-4636-8370-FCEB23B6A2F0}</ProjectGuid>\r
+    <ProjectGuid>{B87B8FC2-C5AB-4BCC-B730-1D0C759E1D9E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.DurableInstancing-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_0.csproj">\r
-      <Project>{3327D147-BA8F-4844-A60B-AF7C5F1267EB}</Project>\r
+      <Project>{F83A320D-A0B2-4123-AC1D-0AD8B202FD6B}</Project>\r
       <Name>System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 526ed7c680538d63128cef278b822cb31098aaf9..2b7c8bd6195e61de580e9ea6a6d95d5351b69e53 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}</ProjectGuid>\r
+    <ProjectGuid>{6D34CFEC-13B9-4E34-A253-CE4E46322542}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.DurableInstancing-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_5.csproj">\r
-      <Project>{C07F9E49-E65C-40C7-A3BD-02F932A33C2A}</Project>\r
+      <Project>{DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}</Project>\r
       <Name>System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0493c8a20984f1abdc4b19b5e0aa4551bb2ae6cb..cbd3ee075ed8de66004d946f2c2582efb8d745b7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{926909ED-BEFF-44E4-86E7-627D7F1A7182}</ProjectGuid>\r
+    <ProjectGuid>{6B643779-A807-456A-85CF-53FC62DE8D4A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 311f1983d1fb37cef9688dcebb10572dadca86bf..3c4d083a0e8b8a9b8573cfc1349a774d68b5359c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D139665B-3687-45E1-849E-4B25B434A48D}</ProjectGuid>\r
+    <ProjectGuid>{4EC486E1-0880-46D4-8384-D50EC53E81F6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6cab7dc9776661fbd846c7bf738d5fe466985522..a73b46eb211ebac8f05de38650efb0d4f5a01c67 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}</ProjectGuid>\r
+    <ProjectGuid>{7E62A1A2-DEED-44AD-9FF2-178065ED8A44}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ad7b80288bef755207659a3125305b51f5e7b1c7..f9486469abf77ff4f04989e4a11035528c998f8e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D7FD3F6B-2827-4281-88B0-435C7DEA540D}</ProjectGuid>\r
+    <ProjectGuid>{482313A1-343C-45DB-BE6C-BDD12C56F2C3}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_2_0.csproj">\r
-      <Project>{926909ED-BEFF-44E4-86E7-627D7F1A7182}</Project>\r
+      <Project>{6B643779-A807-456A-85CF-53FC62DE8D4A}</Project>\r
       <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_2_0.csproj">\r
-      <Project>{926909ED-BEFF-44E4-86E7-627D7F1A7182}</Project>\r
+      <Project>{6B643779-A807-456A-85CF-53FC62DE8D4A}</Project>\r
       <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c0a4421aa3b37b9233ba4f1882c242e17102a328..7d74e77fb4c55ea23a0be9d86f951237124d0aa2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{63800585-DE84-42FC-929C-E8F261D6755F}</ProjectGuid>\r
+    <ProjectGuid>{BBF90808-7545-4E6A-A7C6-C5C6E39F7EA6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_4_0.csproj">\r
-      <Project>{D139665B-3687-45E1-849E-4B25B434A48D}</Project>\r
+      <Project>{4EC486E1-0880-46D4-8384-D50EC53E81F6}</Project>\r
       <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_4_0.csproj">\r
-      <Project>{D139665B-3687-45E1-849E-4B25B434A48D}</Project>\r
+      <Project>{4EC486E1-0880-46D4-8384-D50EC53E81F6}</Project>\r
       <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e0d6a090e4a75e3df5f5aaa471be41e53df1348..c513f7760ae63630dd5f978c7d25ab3c43b014e0 100644 (file)
@@ -5,12 +5,13 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}</ProjectGuid>\r
+    <ProjectGuid>{E19661F8-3BCE-48C0-A408-8F712F87A396}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Remoting-tests-net_4_5</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
+    \r
     <AppDesignerFolder>Properties</AppDesignerFolder>\r
     <RootNamespace>\r
     </RootNamespace>\r
@@ -62,8 +63,7 @@
     <Compile Include="Test\ServerObject.cs" />\r
     <Compile Include="Test\SyncCalls.cs" />\r
     <Compile Include="Test\System.Runtime.Remoting.Channels.Tcp\TcpChannelTest.cs" />\r
-    <Compile Include="Test\TcpCalls.cs" />\r
-  </ItemGroup>\r
+    <Compile Include="Test\TcpCalls.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
@@ -73,6 +73,7 @@
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent>\r
+\r
     </PreBuildEvent>\r
     <PostBuildEvent>\r
       xcopy $(TargetName).* $(ProjectDir)..\lib\net_4_5\ /Y /R /D\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_4_5.csproj">\r
-      <Project>{4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}</Project>\r
+      <Project>{7E62A1A2-DEED-44AD-9FF2-178065ED8A44}</Project>\r
       <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\System.Runtime.Remoting\System.Runtime.Remoting-net_4_5.csproj">\r
+      <Project>{7E62A1A2-DEED-44AD-9FF2-178065ED8A44}</Project>\r
+      <Name>System.Runtime.Remoting\System.Runtime.Remoting-net_4_5</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
-</Project>\r
+</Project>
index 9af384c56f97d2a40be8448329807a08a068f8c1..02fe0d5340c571e7ec50f38e0bcda24499b1315d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</ProjectGuid>\r
+    <ProjectGuid>{85526C39-79CA-40DB-940A-3C83DF30DF85}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0e023973d9353827b62f665cc671d41e7f3979be..e439e1d38930ef6d8579b34f14cb143f8ded487d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</ProjectGuid>\r
+    <ProjectGuid>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e77aae20de9b5563f2d1d517e41ac5e1371e99c..3dc62b1e985872c720366a8cea430ceba2db2629 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{E9E47642-19D3-48A0-81C4-D51810976A70}</ProjectGuid>\r
+    <ProjectGuid>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 76bf2b92caf507b1430164ddb2bff76cb1d98b7b..d7a09ea4af4575425ade29c93d055bbd3491dc40 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D03F3879-5F44-4AD2-B695-93C8A6068134}</ProjectGuid>\r
+    <ProjectGuid>{7D65F1E4-3908-4DB1-A750-ADD717FE96BD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fcc0465ea928007249eed03d2ec663b4aec3313a..718b43176466c693081e06ec3a39f85ab4a2e266 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F89529E2-B0EA-45EF-8C09-013B5A094DA2}</ProjectGuid>\r
+    <ProjectGuid>{55ED50A9-7ABD-4856-A395-210BF169ECBB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c48b5accc14680d2dc8775d7322b6fde19fccda1..1b00862f3f94f4d4a853532b580cea773a7448a3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{86595D30-C24E-4A0F-9419-499980DE4B79}</ProjectGuid>\r
+    <ProjectGuid>{287E4CA2-E854-4E18-AFEE-B71E893A30EA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization.Formatters.Soap-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7ca011f4a93e99c6c1495e25474e9ae399a5a20b..8559abaae845b265556fe0586d5e7f816de1c8d9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</ProjectGuid>\r
+    <ProjectGuid>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2d02e1d778878b86ea69331b7bd358d72dd973b5..753ddab437f31c3100f044207c43e621e907fe54 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</ProjectGuid>\r
+    <ProjectGuid>{4F614C6C-A83E-4C3C-859B-0548391F519E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a76f67bade72b1f9eb33ba66ed20bd94ab896859..d6efa31761b653d662def8b99f2aaca8c0ba3c7d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{088AB4AB-1904-4365-A74B-F7557A034945}</ProjectGuid>\r
+    <ProjectGuid>{E90544E8-C031-49EE-BB6F-8688382E8618}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-net_4_5</OutputPath>\r
@@ -48,6 +48,7 @@
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\DataContractJsonSerializer.cs" />\r
+    <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\DataContractJsonSerializerSettings.cs" />\r
     <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\IXmlJsonReaderInitializer.cs" />\r
     <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\IXmlJsonWriterInitializer.cs" />\r
     <Compile Include="..\System.ServiceModel.Web\System.Runtime.Serialization.Json\JsonReader.cs" />\r
     <Compile Include="System.Runtime.Serialization\DataContractAttribute.cs" />\r
     <Compile Include="System.Runtime.Serialization\DataContractResolver.cs" />\r
     <Compile Include="System.Runtime.Serialization\DataContractSerializer.cs" />\r
+    <Compile Include="System.Runtime.Serialization\DataContractSerializerSettings.cs" />\r
     <Compile Include="System.Runtime.Serialization\DataMemberAttribute.cs" />\r
+    <Compile Include="System.Runtime.Serialization\DateTimeFormat.cs" />\r
+    <Compile Include="System.Runtime.Serialization\EmitTypeInformation.cs" />\r
     <Compile Include="System.Runtime.Serialization\EnumMemberAttribute.cs" />\r
     <Compile Include="System.Runtime.Serialization\ExportOptions.cs" />\r
     <Compile Include="System.Runtime.Serialization\ExtensionDataObject.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3dfb175cf3134d10970e8509e815999f132f93cf..31b5991e72a4b0d56243ec88f47a222bcc1eb04e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{30E9DDDA-1C01-437E-9444-78B95197167C}</ProjectGuid>\r
+    <ProjectGuid>{27F5B712-0010-4A46-8C55-4CACA30F4E78}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-tests-net_2_0</OutputPath>\r
@@ -54,6 +54,7 @@
     <Compile Include="Test\System.Runtime.Serialization\CollectionSerialization.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractResolverTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_DuplicateQName.cs" />\r
+    <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_InvalidCharacters.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_NullableWithDictionary.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\KnownTypeAttributeTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\WsdlHelper.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.ServiceModel.dll">\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0cfec1d5a04148fbb6b6e7648b191feecad575b7..04417003e2b1a1f4f1e75bc45b6971ac865f814d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{11013E7D-73BE-4CAF-80D1-1C7CDD85D40A}</ProjectGuid>\r
+    <ProjectGuid>{5E9D8F32-D3F0-4243-AA10-B896ACB084F7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-tests-net_4_0</OutputPath>\r
@@ -54,6 +54,7 @@
     <Compile Include="Test\System.Runtime.Serialization\CollectionSerialization.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractResolverTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_DuplicateQName.cs" />\r
+    <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_InvalidCharacters.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_NullableWithDictionary.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\KnownTypeAttributeTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\WsdlHelper.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6f1755896dc420e99c4c346eb0f5492d356b91b6..513c10228954e41250d0b37525958900dfe26de8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8748B03E-D19A-4A32-B0BC-67DE3F224EDC}</ProjectGuid>\r
+    <ProjectGuid>{DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,168,169,219,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Runtime.Serialization-tests-net_4_5</OutputPath>\r
@@ -54,6 +54,7 @@
     <Compile Include="Test\System.Runtime.Serialization\CollectionSerialization.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractResolverTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_DuplicateQName.cs" />\r
+    <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_InvalidCharacters.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\DataContractSerializerTest_NullableWithDictionary.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\KnownTypeAttributeTest.cs" />\r
     <Compile Include="Test\System.Runtime.Serialization\WsdlHelper.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.Runtime.Serialization/mobile_static_System.Runtime.Serialization.dll.sources b/mcs/class/System.Runtime.Serialization/mobile_static_System.Runtime.Serialization.dll.sources
new file mode 100644 (file)
index 0000000..6caafd4
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.Runtime.Serialization.dll.sources
index 7996abd8c611a97b1664edc3a1215d6f9d7b3228..4c1a589f65a051837047d5bc4dab225f23528ac9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</ProjectGuid>\r
+    <ProjectGuid>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-1.csproj">\r
-      <Project>{980C299E-664F-4905-B01C-19599BBE78FF}</Project>\r
+      <Project>{FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}</Project>\r
       <Name>System\System-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0.csproj">\r
-      <Project>{67A04408-CBEF-4B63-B975-29D827B0DBED}</Project>\r
+      <Project>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</Project>\r
       <Name>System.XML\System.Xml-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b2f29fe6ebdf224dc69b045f592f39008a73a574..d0bb54e2a478cfe9b9b3026ca1425cc88b1d17ba 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</ProjectGuid>\r
+    <ProjectGuid>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-1.csproj">\r
-      <Project>{C57BB644-EEFC-475A-AF6F-43EF29C75933}</Project>\r
+      <Project>{FCBCCC55-006E-41B2-A649-CF9A843E34BD}</Project>\r
       <Name>System\System-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0.csproj">\r
-      <Project>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</Project>\r
+      <Project>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</Project>\r
       <Name>System.XML\System.Xml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d8c3ed42982c5262991f304f989a322b9a2bc110..584a037df7c89d52173888885273e1e7fe167e0d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</ProjectGuid>\r
+    <ProjectGuid>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</Project>\r
+      <Project>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</Project>\r
       <Name>System\System-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c9aa2ff42f20492f5a14727ab77a682a18e6b82f..2c019879d3117239154d55c73386d371df98acd0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F12D783C-73C7-4929-8FA6-76BB06FEF3DE}</ProjectGuid>\r
+    <ProjectGuid>{FB4FDBCF-EC4C-456A-963D-21F345994BF9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414,169,219,1595,168,183,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-1.csproj">\r
-      <Project>{980C299E-664F-4905-B01C-19599BBE78FF}</Project>\r
+      <Project>{FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}</Project>\r
       <Name>System\System-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0.csproj">\r
-      <Project>{67A04408-CBEF-4B63-B975-29D827B0DBED}</Project>\r
+      <Project>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</Project>\r
       <Name>System.XML\System.Xml-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d0dce791766b162c45083086ce3e93e359f923b2..122f7736607b66a36ce81486b84353a23063ebc0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{35CA0215-5507-43AB-BBB1-10B274733076}</ProjectGuid>\r
+    <ProjectGuid>{7CD39108-AA65-4A1D-A185-658C4DFED0F6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414,169,219,1595,168,183,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-1.csproj">\r
-      <Project>{C57BB644-EEFC-475A-AF6F-43EF29C75933}</Project>\r
+      <Project>{FCBCCC55-006E-41B2-A649-CF9A843E34BD}</Project>\r
       <Name>System\System-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0.csproj">\r
-      <Project>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</Project>\r
+      <Project>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</Project>\r
       <Name>System.XML\System.Xml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a6748208b704866832594378238641ac4aee2680..99b0424278187ebf4d357b12f3e63d60a10d189f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5AF47E2F-C295-4410-BB78-F08FE99C0E76}</ProjectGuid>\r
+    <ProjectGuid>{65F07468-96FC-4A71-8565-2CD7A50728CC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,414,169,219,1595,168,183,414</NoWarn>\r
     <OutputPath>bin\Debug\System.Security-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</Project>\r
+      <Project>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</Project>\r
       <Name>System\System-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.ServiceModel.Activation/Assembly/AssemblyInfo.cs b/mcs/class/System.ServiceModel.Activation/Assembly/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..f47e879
--- /dev/null
@@ -0,0 +1,60 @@
+//
+// AssemblyInfo.cs
+//
+// Authors:
+//     Marek Safar (marek.safar@gmail.com)
+//
+// Copyright 2013 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Reflection;
+using System.Resources;
+using System.Security;
+using System.Security.Permissions;
+using System.Diagnostics;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about the assembly
+
+[assembly: AssemblyTitle ("System.ServiceModel.Activation.dll")]
+[assembly: AssemblyDescription ("System.ServiceModel.Activation.dll")]
+[assembly: AssemblyDefaultAlias ("System.ServiceModel.Activation.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: SatelliteContractVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+
+[assembly: NeutralResourcesLanguage ("en-US")]
+[assembly: CLSCompliant (true)]
+[assembly: AssemblyDelaySign (true)]
+
+[assembly: AssemblyKeyFile("../winfx.pub")]
+
+[assembly: ComVisible (false)]
+
+[assembly: InternalsVisibleTo ("System.ServiceModel, PublicKey=00000000000000000400000000000000")]
diff --git a/mcs/class/System.ServiceModel.Activation/Makefile b/mcs/class/System.ServiceModel.Activation/Makefile
new file mode 100644 (file)
index 0000000..a465c75
--- /dev/null
@@ -0,0 +1,11 @@
+thisdir = class/System.ServiceModel.Activation
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.ServiceModel.Activation.dll
+
+LIB_MCS_FLAGS = -r:System.Core.dll -r:System.dll -r:System.ServiceModel.dll
+
+TEST_MCS_FLAGS = -r:System.dll -r:System.Core.dll
+
+include ../../build/library.make
diff --git a/mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation.dll.sources b/mcs/class/System.ServiceModel.Activation/System.ServiceModel.Activation.dll.sources
new file mode 100644 (file)
index 0000000..1d17a9e
--- /dev/null
@@ -0,0 +1,6 @@
+../../build/common/Consts.cs
+../../build/common/MonoTODOAttribute.cs
+Assembly/AssemblyInfo.cs
+
+../System.ServiceModel/System.ServiceModel/ServiceHostingEnvironment.cs
+../System.ServiceModel/System.ServiceModel.Activation/ServiceHostFactory.cs
index 2d6d915f716ec60ede480d2d66cb1dad381d987f..72a06ccc7f37bc5a82dc42066b3978e3da70ed87 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7E650C81-1CCE-4A49-9DC8-011DBBCECD02}</ProjectGuid>\r
+    <ProjectGuid>{C4790F29-45CF-4D74-85FC-95F9F35D6B8E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Discovery-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 18f422faf80d0a58ddd4f57e8310ab0c95a8d43e..68ac0cafcac67aa4b486d89d85bca67b673a4e71 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C06900FB-F604-4640-AFDC-000BF6BB38CC}</ProjectGuid>\r
+    <ProjectGuid>{875503E2-28DA-4301-99D4-9A897BDC06F1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Discovery-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2474fc02927280dba3b90406810f14bfe7b6bee0..577e826e13577b5c0e27b6c749ebb0d2d952edda 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2AD05316-EDB9-49CA-A96C-6951FC6B4A6F}</ProjectGuid>\r
+    <ProjectGuid>{563F4358-F2E3-4067-A4AF-BB3248905DD4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Discovery-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_0.csproj">\r
-      <Project>{7E650C81-1CCE-4A49-9DC8-011DBBCECD02}</Project>\r
+      <Project>{C4790F29-45CF-4D74-85FC-95F9F35D6B8E}</Project>\r
       <Name>System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index efb5d46089cfebb9472e56cf57d5c68634575f93..02f467196309346b74117383355273ec9687c689 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BB7A44E8-2F00-4A87-843D-5387CD8611E3}</ProjectGuid>\r
+    <ProjectGuid>{C776055D-B157-4022-8926-DC1DCE41832F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Discovery-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_5.csproj">\r
-      <Project>{C06900FB-F604-4640-AFDC-000BF6BB38CC}</Project>\r
+      <Project>{875503E2-28DA-4301-99D4-9A897BDC06F1}</Project>\r
       <Name>System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9007006b91a7b629cd485047f11255aab377c069..d04edff196e86df06673451a6bfa29a00f17ceef 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{61C55877-8EA9-4410-98BB-115E98FA6CA1}</ProjectGuid>\r
+    <ProjectGuid>{27FEFDE2-8058-4C92-A095-172994B224B9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Routing-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2c09bb6ee7fdf6b7e6e88afdbc82d1641cdc5f23..ca59f54a2aabcebed4d6b7c3e55c2b6758931c93 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{74243378-7F6B-4B8D-81E3-E61C7AD8B87D}</ProjectGuid>\r
+    <ProjectGuid>{C60066A8-6929-44CD-BD9F-4556AFFC0087}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Routing-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 97c88830976542ee11ec081e577b11c4366d5d9a..4db6ae805b3a07ad81884797fc95a1a147169a55 100644 (file)
@@ -11,6 +11,10 @@ LIB_MCS_FLAGS += -d:NET_3_5 -d:NET_3_0       \
                        -r:System.Web.Extensions.dll
 endif
 
+ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
+LIB_MCS_FLAGS += -r:System.ServiceModel.Activation.dll
+endif
+
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
 
 EXTRA_DISTFILES = $(RESOURCE_FILES) \
index d15a4733fc86bdf4690ac093e06637ac911ea642..45ec6fbd415f89bf52f3b5fb94204a9929e080a9 100644 (file)
@@ -162,7 +162,7 @@ namespace System.Runtime.Serialization.Json
                                                return null;
                                        }
                                        else
-                                               return new Uri (reader.ReadElementContentAsString ());
+                                               return new Uri (reader.ReadElementContentAsString (), UriKind.RelativeOrAbsolute);
                                } else if (type == typeof (XmlQualifiedName)) {
                                        s = reader.ReadElementContentAsString ();
                                        int idx = s.IndexOf (':');
index 67aaf7db84e340a787fe08dac6fcd88c6dc0e0bb..3f1cbb510c987815b781679013b22c6f3b0ef360 100644 (file)
@@ -33,6 +33,7 @@ using System.Globalization;
 using System.IO;
 using System.Linq;
 using System.Reflection;
+using System.Runtime.CompilerServices;
 using System.Runtime.Serialization;
 using System.Text;
 using System.Xml;
@@ -85,7 +86,7 @@ namespace System.Runtime.Serialization.Json
                                if (!fi.IsStatic)
                                        l.Add (new TypeMapField (fi, null));
                        foreach (var pi in type.GetProperties ())
-                               if (pi.CanRead && pi.CanWrite && !pi.GetGetMethod ().IsStatic && pi.GetIndexParameters ().Length == 0)
+                               if (pi.CanRead && pi.CanWrite && !pi.GetGetMethod (true).IsStatic && pi.GetIndexParameters ().Length == 0)
                                        l.Add (new TypeMapProperty (pi, null));
                        l.Sort ((x, y) => x.Order != y.Order ? x.Order - y.Order : String.Compare (x.Name, y.Name, StringComparison.Ordinal));
                        return new TypeMap (type, null, l.ToArray ());
@@ -116,7 +117,9 @@ namespace System.Runtime.Serialization.Json
 
                        List<TypeMapMember> members = new List<TypeMapMember> ();
 
-                       foreach (FieldInfo fi in type.GetFields (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)) {
+                       foreach (FieldInfo fi in type.GetFields (binding_flags)) {
+                               if (fi.GetCustomAttributes (typeof (CompilerGeneratedAttribute), false).Length > 0)
+                                       continue;
                                if (dca != null) {
                                        object [] atts = fi.GetCustomAttributes (typeof (DataMemberAttribute), true);
                                        if (atts.Length == 0)
@@ -131,7 +134,7 @@ namespace System.Runtime.Serialization.Json
                        }
 
                        if (dca != null) {
-                               foreach (PropertyInfo pi in type.GetProperties (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance)) {
+                               foreach (PropertyInfo pi in type.GetProperties (binding_flags)) {
                                        object [] atts = pi.GetCustomAttributes (typeof (DataMemberAttribute), true);
                                        if (atts.Length == 0)
                                                continue;
index 99072bee908b680b1104e639d172a2fc202b3b2c..5cf086e73b8cba9a2d6cd3e2e6bf7828c2b938b1 100644 (file)
@@ -476,7 +476,7 @@ namespace System.ServiceModel.Syndication
                                }
 
                        if (Feed.Description != null)
-                               Feed.Description.WriteTo (writer, "description", AtomNamespace);
+                               Feed.Description.WriteTo (writer, "subtitle", AtomNamespace);
 
                        if (Feed.ImageUrl != null)
                                writer.WriteElementString ("logo", AtomNamespace, Feed.ImageUrl.ToString ());
index 1194e7177db53a1287a058f84630b62152095e8a..f8d772dea15334dabf44159a83adfa3a10d6547d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{54969D84-6764-49E4-A6AF-51ADD6A7CDFA}</ProjectGuid>\r
+    <ProjectGuid>{C1E98610-9EA1-4973-A48B-E7CE2E790F40}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-net_2_0</OutputPath>\r
@@ -48,6 +48,7 @@
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.Runtime.Serialization.Json\DataContractJsonSerializer.cs" />\r
     <Compile Include="System.Runtime.Serialization.Json\IXmlJsonReaderInitializer.cs" />\r
     <Compile Include="System.Runtime.Serialization.Json\IXmlJsonWriterInitializer.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 61fc00a3466a2fe1ec2801f6d7cb0d9576eea217..153bac008e30d3ed28ba39f525b0cc57b39d7168 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2F40A7ED-89D4-414D-B916-6ECB39F15BD2}</ProjectGuid>\r
+    <ProjectGuid>{B9CFA1C3-B2EE-40CB-85EC-674A2D1CAC5F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-net_4_0</OutputPath>\r
@@ -48,6 +48,7 @@
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.ServiceModel.Activation\WebScriptServiceHostFactory.cs" />\r
     <Compile Include="System.ServiceModel.Activation\WebServiceHostFactory.cs" />\r
     <Compile Include="System.ServiceModel.Channels\WebBodyFormatMessageProperty.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 69a941ba9352e585c3d4b570529dd0099d3a8c6b..9f9f3659839ef8655312a2211852f072a7efb74c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}</ProjectGuid>\r
+    <ProjectGuid>{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-net_4_5</OutputPath>\r
@@ -48,6 +48,7 @@
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
+    <Compile Include="Assembly\TypeForwarders.cs" />\r
     <Compile Include="System.ServiceModel.Activation\WebScriptServiceHostFactory.cs" />\r
     <Compile Include="System.ServiceModel.Activation\WebServiceHostFactory.cs" />\r
     <Compile Include="System.ServiceModel.Channels\WebBodyFormatMessageProperty.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ea567074555498a58557577a1ee893646beed862..22e964a2598613766cfdc6296743b3d5cbd922ce 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C7B73985-3AA4-4070-A4F9-893C3EFB2AEC}</ProjectGuid>\r
+    <ProjectGuid>{87C220D2-8B51-4F16-A266-DF2067863135}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_2_0.csproj">\r
-      <Project>{54969D84-6764-49E4-A6AF-51ADD6A7CDFA}</Project>\r
+      <Project>{C1E98610-9EA1-4973-A48B-E7CE2E790F40}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 705f76f23f62dce8b0025afdb8b73c003224693d..fca2c73c1bb7aa1a4869cdc64432e96d3d9cadef 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DB7FC495-2119-4090-8259-FE9AA872D09E}</ProjectGuid>\r
+    <ProjectGuid>{04D60744-2326-4D9C-9CD9-7A64D431F00B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_0.csproj">\r
-      <Project>{2F40A7ED-89D4-414D-B916-6ECB39F15BD2}</Project>\r
+      <Project>{B9CFA1C3-B2EE-40CB-85EC-674A2D1CAC5F}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ab52676931a6a54ab0398314912b8176261f70f1..33f1e381eaf506654550ea8016227bea3a97ee84 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}</ProjectGuid>\r
+    <ProjectGuid>{E8E13C56-208F-44E9-B0F9-F1A4996C595A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel.Web-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj">\r
-      <Project>{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}</Project>\r
+      <Project>{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}</Project>\r
       <Name>System.ServiceModel.Web\System.ServiceModel.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7a37a5b4e7090baae46aa81d967aebd5672f9a28..fbe9250e572d3d2cac86618e3894daf35121e77c 100644 (file)
@@ -1452,6 +1452,40 @@ namespace MonoTests.System.Runtime.Serialization.Json
                        Assert.AreEqual (1, dict.Count, "#2");
                        Assert.AreEqual ("value", dict ["key"], "#3");
                }
+               
+               [Test]
+               public void Bug13485 ()
+               {
+                       const string json = "{ \"Name\" : \"Test\", \"Value\" : \"ValueA\" }";
+
+                       string result = string.Empty;
+                       var serializer = new DataContractJsonSerializer (typeof (Bug13485Type));
+                       Bug13485Type entity;
+                       using (var stream = new MemoryStream (Encoding.UTF8.GetBytes (json)))
+                               entity = (Bug13485Type) serializer.ReadObject (stream);
+
+                       result = entity.GetValue;
+                       Assert.AreEqual ("ValueA", result, "#1");
+               }
+
+               [DataContract(Name = "UriTest")]
+               public class UriTest
+               {
+                       [DataMember(Name = "members")]
+                       public Uri MembersRelativeLink { get; set; }
+               }
+
+               [Test]
+               public void Bug15169 ()
+               {
+                       const string json = "{\"members\":\"foo/bar/members\"}";
+                       var serializer = new DataContractJsonSerializer (typeof (UriTest));
+                       UriTest entity;
+                       using (var stream = new MemoryStream (Encoding.UTF8.GetBytes (json)))
+                               entity = (UriTest) serializer.ReadObject (stream);
+
+                       Assert.AreEqual ("foo/bar/members", entity.MembersRelativeLink.ToString ());
+               }
        }
        
        public class CharTest
@@ -1762,3 +1796,16 @@ public class MyDictionary<K, V> : System.Collections.Generic.IDictionary<K, V>
        }
 }
 
+[DataContract]
+public class Bug13485Type
+{
+       [DataMember]
+       public string Name { get; set; }
+
+       [DataMember (Name = "Value")]
+       private string Value { get; set; }
+
+       public string GetValue { get { return this.Value; } }
+}
+
+
index e0174b9ee83f1cfe3971f679de8f8f2084860762..d5c40ddd4e7a857389cbbdedc034d43c45424e7a 100644 (file)
@@ -1,3 +1,5 @@
+#if !MOBILE
+
 using System;
 using System.ServiceModel;
 using System.ServiceModel.Activation;
@@ -87,3 +89,5 @@ namespace MonoTests.System.ServiceModel.Activation
                }
        }
 }
+
+#endif
\ No newline at end of file
index 3e98dfc0ed17c75cbf563e9764cefa3577032399..d7af674eab67c47ef7444b8b59681aa47ecf6ad5 100644 (file)
@@ -1,3 +1,4 @@
+#if !MOBILE
 using System;
 using System.IO;
 using System.ServiceModel;
@@ -167,3 +168,4 @@ namespace MonoTests.System.ServiceModel
                }
        }
 }
+#endif
\ No newline at end of file
index 45d766be1564c4d28e8bf0f95d67304eb91001f4..1ab1b89b1a5a2788ab6a9ac876affc6f28310f60 100755 (executable)
@@ -1,4 +1,4 @@
-
+#if !MOBILE
 using System;
 using System.ServiceModel.Configuration;
 using NUnit.Framework;
@@ -65,3 +65,4 @@ namespace MonoTests.System.ServiceModel.Configuration
                }
        }
 }
+#endif
\ No newline at end of file
index bba9cb3553db4669e3657c94eb8151d837df22be..84c076d475b7d85541f7e0470646049c2b504617 100644 (file)
@@ -22,7 +22,7 @@ namespace MonoTests.System.ServiceModel.Description
                {
                        return GetRequestClientFormatter (operationDescription, endpoint);
                }
-
+#if !MOBILE
                public IDispatchMessageFormatter DoGetReplyDispatchFormatter (OperationDescription operationDescription, ServiceEndpoint endpoint)
                {
                        return GetReplyDispatchFormatter (operationDescription, endpoint);
@@ -32,7 +32,7 @@ namespace MonoTests.System.ServiceModel.Description
                {
                        return GetRequestDispatchFormatter (operationDescription, endpoint);
                }
-
+#endif
                public event Action<ServiceEndpoint, ClientRuntime> ApplyClientBehaviorInvoked;
 
                public override void ApplyClientBehavior (ServiceEndpoint endpoint, ClientRuntime client)
@@ -76,6 +76,7 @@ namespace MonoTests.System.ServiceModel.Description
                        Assert.AreEqual (0, pl.Count, "#1");
                }
 
+#if !MOBILE
                [Test]
                public void ApplyDispatchBehavior ()
                {
@@ -120,6 +121,7 @@ namespace MonoTests.System.ServiceModel.Description
 
                        Assert.AreEqual (0, ed.DispatchRuntime.Operations.Count, "#4-0"); // hmm... really?
                }
+#endif
 
                [Test]
                public void GetMessageFormatters ()
@@ -129,8 +131,10 @@ namespace MonoTests.System.ServiceModel.Description
                        var b = new WebHttpBehaviorExt ();
                        Assert.IsNotNull (b.DoGetRequestClientFormatter (od, se), "#1");
                        Assert.IsNotNull (b.DoGetReplyClientFormatter (od, se), "#2");
+#if !MOBILE
                        Assert.IsNotNull (b.DoGetRequestDispatchFormatter (od, se), "#3");
                        Assert.IsNotNull (b.DoGetReplyDispatchFormatter (od, se), "#4");
+#endif
                }
 
                [Test]
@@ -153,6 +157,7 @@ namespace MonoTests.System.ServiceModel.Description
                        }
                }
 
+#if !MOBILE
                [Test]
                public void RequestClientFormatter2 ()
                {
@@ -174,6 +179,7 @@ namespace MonoTests.System.ServiceModel.Description
 
                        // TODO: test DeserializeReply too (it is supported unlike above).
                }
+#endif
 
                [ServiceContract]
                public interface IMyService
@@ -189,7 +195,9 @@ namespace MonoTests.System.ServiceModel.Description
 
                public class MyService: IMyService
                {
+#if !MOBILE
                        [OperationBehavior]
+#endif
                        public string Echo (string input)
                        {
                                return input;
@@ -204,6 +212,7 @@ namespace MonoTests.System.ServiceModel.Description
                        Assert.IsTrue (od.Behaviors.Contains (typeof (WebGetAttribute)), "Operation is recognized as WebGet");
                }
 
+#if !MOBILE
                [Test]
                public void MessageFormatterSupportsRaw ()
                {
@@ -247,7 +256,7 @@ namespace MonoTests.System.ServiceModel.Description
                        formatter.DeserializeRequest (msg, pars);
                        Assert.IsTrue (pars [0] is Stream, "ret");
                }
-
+#endif
                [ServiceContract]
                public interface IMultipleParametersGet
                {
index a3a64b516e5680c4d4eac2982ded64da33e02019..401f1a1f20d9b05ed8c26135a6ed7a12f8ec667b 100644 (file)
@@ -1,4 +1,4 @@
-#if NET_4_0
+#if NET_4_0 && !MOBILE
 using System;
 using System.IO;
 using System.Runtime.Serialization;
index 5e7b44557e8a09ccfdcefb3f6e41aabc2ca4ee01..d735c2ebb702ba28999c3cd9a6ee9653856419a9 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Net;
 using System.Runtime.Serialization;
@@ -111,3 +112,4 @@ namespace MonoTests.System.ServiceModel.Description
                }
        }
 }
+#endif
\ No newline at end of file
index 907f37389886b4635a69a08b15cfd968aeaecf26..bb4593ac99e17df7673ff885f44be428c02be00e 100644 (file)
@@ -26,6 +26,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Globalization;
 using System.Runtime.Serialization;
@@ -276,3 +277,4 @@ namespace MonoTests.System.ServiceModel.Dispatcher
                #endregion
        }
 }
+#endif
\ No newline at end of file
index 85d402a1dc58cc4759b586260f9e80682302c768..c15d1ec5825c779a033079072f6da38d5dbf9fdf 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -160,6 +161,7 @@ namespace MonoTests.System.ServiceModel.Syndication
                        SyndicationFeed feed = new SyndicationFeed ();
                        feed.BaseUri = new Uri ("http://mono-project.com");
                        feed.Copyright = new TextSyndicationContent ("No rights reserved");
+                       feed.Description = new TextSyndicationContent ("A sample feed for unit testing");
                        feed.Generator = "mono test generator";
                        // .NET bug: it ignores this value.
                        feed.Id = "urn:myid";
@@ -169,7 +171,7 @@ namespace MonoTests.System.ServiceModel.Syndication
                        StringWriter sw = new StringWriter ();
                        using (XmlWriter w = CreateWriter (sw))
                                new Atom10FeedFormatter (feed).WriteTo (w);
-                       Assert.AreEqual ("<feed xml:base=\"http://mono-project.com/\" xmlns=\"http://www.w3.org/2005/Atom\"><title type=\"text\"></title><id>XXX</id><rights type=\"text\">No rights reserved</rights><updated>2008-01-01T00:00:00Z</updated><logo>http://mono-project.com/images/mono.png</logo><generator>mono test generator</generator></feed>", DummyId (sw.ToString ()));
+                       Assert.AreEqual ("<feed xml:base=\"http://mono-project.com/\" xmlns=\"http://www.w3.org/2005/Atom\"><title type=\"text\"></title><id>XXX</id><rights type=\"text\">No rights reserved</rights><updated>2008-01-01T00:00:00Z</updated><subtitle type=\"text\">A sample feed for unit testing</subtitle><logo>http://mono-project.com/images/mono.png</logo><generator>mono test generator</generator></feed>", DummyId (sw.ToString ()));
                }
 
                [Test]
@@ -384,3 +386,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index 3ed55740c350ec9e0bf034df5d33d2bcdef11869..3930ec5b0b6ace5546370d5184d5380d2f0a65e9 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -374,3 +375,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index b73dd7feb0a8236b18039d73f5dd08f41caf92e0..453895dceb2a0c8e2c512d88d127ce5dc90721b2 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -125,3 +126,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index cfc9dfabc4df70ca808ae710ac599bb4f4e9ba1a..5f303095fa85e336bc5e86722ee6c04454c1a4eb 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -137,3 +138,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index 4a65897670434c7ceb36713d4bf2645011b52e65..6efdc398cca33f57898a38b24902fc3c163f66fb 100644 (file)
@@ -25,6 +25,8 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
+
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -355,3 +357,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index 9fc3a64194213830f55e94318b28eb31458a559b..3b83d230cb4ebfabc7d023a589db06785ef46c7a 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -352,3 +353,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index d6d938089ca83d0f59aa6e6dd5d8a8b6dbadc0ac..b9f43186c08bd22d9d2bb76216b38d785987f76f 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -70,3 +71,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index 1a2898e75311f4095cf6b7e29680003cd23fd419..292335af736f1d9abe556a33dcafb8e6449dc4fa 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -224,3 +225,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index 77950c152172e303bc1b947238f3355324f62e07..4f424fbb54b5351d855c72dd3879bbf70de2cf63 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -102,3 +103,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index c0a67b7b3725fc0a5692e400831d43950e5818ac..2a6b6afe7cd38f889cd8d0d0207a5a46d12a4bc3 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -144,3 +145,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index 55950031ce916638a7f9210d70c230720d2ceb0e..fd537556132235fbb01e85d51afc74f1bbeb9956 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -215,3 +216,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index 6bafef7604c00b24b2d9e67552e8e8312d29424b..c49be5ba36273e89923f8d9a941270d2c2e7073b 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -97,3 +98,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index 4174b4c585112bf23c05402217507e21a677f2cd..cd336072352494246fe30fbed1d5977b9eeaf21b 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -96,3 +97,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index 4e8a1720d94c76b8875e609b264409e8e1e8fdc9..80264bd9dabc4f8e0599cb51f4ec57abcd9b3bfd 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
+#if !MOBILE
 using System;
 using System.Collections.Generic;
 using System.Collections.ObjectModel;
@@ -137,3 +138,4 @@ namespace MonoTests.System.ServiceModel.Syndication
                }
        }
 }
+#endif
\ No newline at end of file
index 69f05ec217a0ca92ecb7c4718e7ea655109ea5ac..d1e8ea5ff58df3d3a1a3336a09c14a23bd31475a 100644 (file)
@@ -31,7 +31,9 @@ using System.Runtime.Serialization;
 using System.ServiceModel;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
+#if !MOBILE
 using System.ServiceModel.Syndication;
+#endif
 using System.ServiceModel.Web;
 using System.Xml;
 using NUnit.Framework;
@@ -46,21 +48,25 @@ namespace MonoTests.System.ServiceModel.Web
                [Test]
                public void Current ()
                {
+#if !MOBILE
                        Assert.IsNull (WebOperationContext.Current, "#1");
+#endif
                        var binding = new WebHttpBinding ();
                        var address = new EndpointAddress ("http://localhost:37564");
                        var ch = (IContextChannel) WebChannelFactory<IHogeService>.CreateChannel (binding, address);
                        using (var ocs = new OperationContextScope (ch)) {
+#if !MOBILE
                                Assert.IsNotNull (WebOperationContext.Current, "#2");
                                Assert.IsNotNull (WebOperationContext.Current.OutgoingRequest, "#3");
                                Assert.IsNotNull (WebOperationContext.Current.IncomingRequest, "#4");
                                Assert.IsNotNull (WebOperationContext.Current.IncomingResponse, "#5");
                                Assert.IsNotNull (WebOperationContext.Current.OutgoingResponse, "#6"); // pointless though.
+#endif
                        }
                        ch.Close ();
                }
 
-#if NET_4_0
+#if NET_4_0 && !MOBILE
                [Test]
                public void CreateAtom10Response ()
                {
@@ -126,7 +132,7 @@ namespace MonoTests.System.ServiceModel.Web
                string TestJson3 (string s1, string s2);
        }
 
-#if NET_4_0
+#if NET_4_0 && !MOBILE
        public class HogeService : IHogeService
        {
                static XmlWriterSettings settings = new XmlWriterSettings () { OmitXmlDeclaration = true };
index 48a0b103b2fb2c36836b5a7eb2427fb64c166948..cf1038dac22e3e1be442878d3d1b5205c5cd0848 100644 (file)
@@ -25,6 +25,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
 //\r
+#if !MOBILE\r
 using System;\r
 using System.Collections.Generic;\r
 using System.Linq;\r
@@ -135,3 +136,4 @@ namespace MonoTests.System.ServiceModel.Web
 \r
        }\r
 }\r
+#endif
\ No newline at end of file
index 37932c14f7ae10ce3e414fb46dae766d0246b5e0..1c0c0077ce8073d0cce0ac4d2406772a11d00c9b 100644 (file)
@@ -16,7 +16,9 @@ namespace MonoTests.System.ServiceModel
                        Assert.AreEqual ("http", b.Scheme, "#1");
                        Assert.AreEqual (Encoding.UTF8, b.WriteEncoding, "#2");
                        Assert.AreEqual (0x10000, b.MaxBufferSize, "#3");
+#if !MOBILE
                        Assert.AreEqual (0x80000, b.MaxBufferPoolSize, "#4");
+#endif
                        Assert.AreEqual (0x10000, b.MaxReceivedMessageSize, "#5");
                        Assert.IsFalse (((IBindingRuntimePreferences) b).ReceiveSynchronously, "#6");
                }
index a41802469eb092bff030f7b736004a7c361e0978..24ec92861d82a1bc9d6f8e4a8202a6f6dd9ec5b0 100644 (file)
@@ -441,7 +441,7 @@ namespace MonoTests.System
                        var t = new UriTemplate ("*");
                        var m = t.Match (new Uri ("http://localhost"), new Uri ("http://localhost/hoge/ppp"));
                        Assert.IsNotNull (m, "#0");
-                       Assert.IsEmpty (m.QueryParameters, "#1.0");
+                       Assert.AreEqual (0, m.QueryParameters.Count, "#1.0");
                        Assert.AreEqual ("hoge", m.WildcardPathSegments [0], "#2");
                        Assert.AreEqual ("ppp", m.WildcardPathSegments [1], "#3");
                }
diff --git a/mcs/class/System.ServiceModel.Web/mobile_static_System.ServiceModel.Web.dll.sources b/mcs/class/System.ServiceModel.Web/mobile_static_System.ServiceModel.Web.dll.sources
new file mode 100644 (file)
index 0000000..cbea0fa
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.ServiceModel.Web.dll.sources
index 923e60cc22dbfcd5576a454ccef06e09784d3e98..daa5ae121d1b65ece1c66920ec84fc3965aaca0d 100644 (file)
@@ -38,7 +38,6 @@ using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 
 // General Information about the System.ServiceModel assembly
-// v3.0 Assembly
 
 [assembly: AssemblyTitle ("System.ServiceModel.dll")]
 [assembly: AssemblyDescription ("System.ServiceModel.dll")]
@@ -76,3 +75,11 @@ using System.Runtime.InteropServices;
 [assembly: InternalsVisibleTo ("System.ServiceModel.Discovery, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")] // AnnouncementChannelEndpointElementCollection requires it.
 #endif
 
+#if NET_4_0 && HAS_ACTIVATION
+
+[assembly: TypeForwardedTo (typeof (System.ServiceModel.ServiceHostingEnvironment))]
+[assembly: TypeForwardedTo (typeof (System.ServiceModel.Activation.ServiceHostFactory))]
+
+#endif
+
+
index 1aaf90fae44cf7210f605f6816acee19aeaa6187..fd9d297b95acc80c5e237d74ce71e7335c54caa4 100755 (executable)
@@ -7,6 +7,8 @@ RESOURCE_FILES = \
        resources/ws-addr.xsd
 
 LIBRARY = System.ServiceModel.dll
+LIBRARY_USE_INTERMEDIATE_FILE = yes
+
 LIB_MCS_FLAGS = \
                /nowarn:414,169,67,3005,436,219,618 \
                /unsafe \
@@ -31,12 +33,31 @@ LIB_MCS_FLAGS += /d:NET_3_0         \
                        /r:Mono.Security.dll
 endif
 
-ifeq (moonlight_raw, $(PROFILE))
-LIB_MCS_FLAGS += /r:System.Net
+ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
+
+ACTIVATION_DEP := System.ServiceModel.Activation.dll
+ACTIVATION_DEP_FILE := $(wildcard ../lib/$(PROFILE)/$(ACTIVATION_DEP))
+CYCLIC_DEPS += $(ACTIVATION_DEP)
+CYCLIC_DEP_FILES += $(ACTIVATION_DEP_FILE)
+
+ifdef ACTIVATION_DEP_FILE
+LIB_MCS_FLAGS += -define:HAS_ACTIVATION -r:$(ACTIVATION_DEP)
 endif
 
-ifeq (4, $(FRAMEWORK_VERSION_MAJOR))
 LIB_MCS_FLAGS += /r:System.Web.ApplicationServices.dll
+
+ifneq ($(CYCLIC_DEPS:%=../lib/$(PROFILE)/%), $(CYCLIC_DEP_FILES))
+NO_SIGN_ASSEMBLY = yes
+NO_INSTALL = yes
+all-local: echo-warning
+.PHONY: echo-warning
+
+ifeq   (, $(strip $(CYCLIC_DEP_FILES)))
+echo-warning:
+       @echo "** Warning: System.ServiceModel.dll built without parts that depend on: $(CYCLIC_DEPS)"
+endif
+endif
+
 endif
 
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)
@@ -64,6 +85,8 @@ NO_SIGN_ASSEMBLY = yes
 NO_TEST = yes
 endif
 
-
-
 include ../../build/library.make
+
+ifdef ACTIVATION_DEP_FILE
+$(build_lib): $(CYCLIC_DEP_FILES)
+endif
index 128c5b9712c03058ed57dbb798915160e384a299..283389d59b1e1b2384ef8e9754f6f1460c82dcb1 100644 (file)
@@ -22,7 +22,7 @@
 //
 
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index c06d2478b6ee1f2703c416e576e876a2576f930e..e2eea5cfa38c289ee7a61fafd2d4824f8533449e 100644 (file)
@@ -1,6 +1,6 @@
 // created on 28/08/2004 at 17:07
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index d25686496588d416adb9a377a7ddfbb313e1092a..4bfcdec9d91efb470ed9b75d340bf818eecd9dec 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 92ddb5e954e19350cd489f2813e833f239d63b43..dac3d4efcb5e951f6525f69ad290a51966e1660c 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index b521345a869f08720fcf5f435917fc5f116fbe51..7ef31fb03e1c85a7202668031dc94ffdfadee503 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 489004e3c01318ab5fe6ec27a3835d866541a67d..2b3fdd7c2c5f59577ebd2960ce9b07ed2e265519 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 49dcb1173245b883ebad5f3f96b7791bd11f4635..be22efc420f802c281e126f69bf17cf762ae07ed 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index c60f58afe179bd4287ea451d18a126b6eb854ecd..60ad69d629837061939ffce7a9231b3d0594aae1 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index dc6d5ef364e149e7754f603024436c6216d29ef8..3cd60037c82670dda741e6142910bc94aa8a0b35 100644 (file)
@@ -1,6 +1,6 @@
 // created on 28/08/2004 at 17:30
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 4dfa1d0e4cae438879b9ad34003169dcfe954d7b..47f0dd18445393d77a9393ad04e17218d892f7ca 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Collections;
 using System.Reflection;
index 58de364d19fc25ce3ee377783538e8f86e0eaab6..7c4456c6d6bbbdb008a06c28a09c7eaa1fb5f51e 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.IO;
 using System.Collections;
index 4610f4b008f85f8045c72e1d956be84708ee3073..7370b3b033e168a2e6bb9679dceab43edac26007 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 1327d5c2c7e39e517bddfb13be0dec632687ec2c..e34884a9b5608bcff6c8f0b964db56e850244480 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.IO;
 using System.Collections;
index b2c0519f4ad20f03014369c81792ba22b07d3397..f75bc8be193a3a5542cd0633e8385b6064263109 100644 (file)
@@ -18,7 +18,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.IO;
 using System.Collections;
index d7f488b91044a7907614e535981a4830b308e44a..eddce1600b912efc54347ea1559013ed40028db1 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index b9ea6dd694545b2005a9664659c33b26cbbb8869..41410e83717ca083f50ca0795732a809f0ad08f0 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 066b27930d43de95f0e9adb89a95e0b4995632d6..b090c4f1f5823c542f8261ea398ab9a72b192700 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 7beeffe455da32436543578790ef175aa29cb194..84f01b87cbba98a51b2ce47f186dcd391dc97a6b 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 123e556db631286f3511d32064f0e866d63714c1..c871b5bb518ea5eb9a04a0ee2534de9e6a317d0d 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 8f7f6bfdef6da8391170eae5a7be775cb63449ad..5d7baa343c1d45315fa9a130882056ee2a2c5cdc 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Collections;
 using System.Reflection;
index d0defd95dc8848195262e6fbae20bc31ebe7a99b..d753a6666882df96b2ec10d898b09b6b8daf36c1 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Collections;
 using System.Reflection.Emit;
index e860fd8620dcd4ebb307af2a2bc56764ce1d4de6..7355c5a94f629d7addfe0ef08fbe99fa6182369a 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 5967954dca511a28f73ce69b27f6797b5b65f72c..e2863463e53a647ff541472c388e5166fe1ca79b 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index c8f682b4e6db63e4f21dd12d5c7e91478c88f28e..356b35ba45971e94be38ca5d95d1a0245fbd7631 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 6e2586cc2ff727e11ac673edf3577a51f4406b89..f6808840d95beefc3714fbe26c0a2720fb09cdaf 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 152d7f8b9f64b1719495d87bef9416ec2099a887..90c46fe6de72316152faf2c3b024329c5f82aa19 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Globalization;
 using System.Reflection;
index 2bde317409836a89ec7d5d67af69de2d4ce52a0f..68f477ff01bb318abd44128f202b776b1d080647 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Collections;
 using System.IO;
index fc882c4c1552facbd9510d378ef2f4ee00d25daa..aa378d766d5254fa8510894f036bab7dce600cc3 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index bf9b4bd3b60c169561186fae444ac612ca862760..ff8251f18158475d04de5c4707eb0a6fa5a389de 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.IO;
 using System.Collections;
index 2e97c843f663a54f3bf0084731034ed007e7d51b..8c5a860586e09c24ac18cfe0aeacd03443ac3634 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index a7dd963c8da6e597723ce6cde0560c40f39cc225..618d0ffcc2c3e42a05537db1993e61c2ad3b5df9 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index dcf9b3d03060650ff653af9470e341725bfae669..16dc05e3f870353a68a48f15686a98d7cff35095 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 32b0ce2fb498a146ddbfe34389ab0a45090f2654..bdce56d6e9ec252911d452d259cc82551671cf4d 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 0e79378a5ce84eb72415a0c9c4716d2f64370aaa..338e37038d5823290b8f54027c7500036b294c0f 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Collections;
 using System.IO;
index b268e835c492dfa979fa342433540162ee944521..b496749e3f38be75052d5eebf5cdc6d8cff34953 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index ca9ecb3f4cf5f441470bdcb54fc8f675ed34fa9c..c2c5e8480fc19bfdb839ae0a594924e1f261e894 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index ea83af5d6f9c75bef802f33caa53a42f5e36e017..dfb268174b4d6b10c78676320272784e6f02be13 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Collections;
 using System.Reflection;
index 90dd7010d8b058cbc90934acdd22bffa1a2d59ae..082fbabfbb168575fbed464a54c99919a48cfe2f 100644 (file)
@@ -1,6 +1,6 @@
 // created on 28/08/2004 at 17:30
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index b917e14fde5f080ad2c68eae14b30d97ea8ca78a..c2330c4249941307760a1d44894775e680b3d5f9 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) 2009 Novell, Inc
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Collections;
 #if NET_2_0
index b66493a558941235c7f4003e97f988bbf936eeb2..413131b2f6fc00318dae2419f4588a1512de2266 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 52dd50b496e1798096e9ca0fd2a33dcdd32b2e43..6cb27ea36d35072dac00f04def3b24153c446eab 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 93f8394b1a95f16b5089f29d580898ee47ad4cb0..fb270b24ad773d557f38f770f1ab39c1cefdd401 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index af682fb2b92144dc592daaf28ec14eefb57cf48c..5fb248e4630f63c0c88ba6921614d14e757af91f 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index 41fa2b1fe5f737d7337984209bc0468c97f4b31e..3ae85a3be360dc003e1a53b72219e618e1fac2a6 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index d691cfef73903f84b46d3b24f319aeadf724efaf..ffd90b45d3bbf258e21f8145a96b7babbdadf6ab 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index ee9ff61616a4564e9f11c1ba997b18a2e6b35517..b34341d90488450dae181d9b263f1ad1ff1b735a 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.IO;
 
index e67107ad89490f8ab2197106d3148f11f84411ff..a01f4f21a1f3e8255e0cbe8f71e1b5953ee4dbb6 100644 (file)
@@ -21,7 +21,7 @@
 // Copyright (C) Lluis Sanchez Gual, 2004
 //
 
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
index d55c6ce183c85b3febcfc304c819dc7715571a75..3361cfe8e0788339df794a2f5c6ef573c547a70c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</ProjectGuid>\r
+    <ProjectGuid>{28B2271C-CC55-4812-B732-A67317405AA9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_2_0.csproj">\r
-      <Project>{F2FA985C-3E81-483E-BB6E-E814706D57AE}</Project>\r
+      <Project>{FB6EBCB1-9EAF-4671-A9CB-505DC2FEC8A0}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_2_0.csproj">\r
-      <Project>{33F1FAD8-42DA-489B-BEEE-E7E4EFE3891F}</Project>\r
+      <Project>{5A185DDB-82E9-4241-8216-82988647755A}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ecb58b1578bc45ce555224c3a02d5c459c31a00e..db6d3a06a4cb6124c35ae38a8b20701f7e145650 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{93532CB9-2FFB-4458-820F-BA280A6E6796}</ProjectGuid>\r
+    <ProjectGuid>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-net_4_0</OutputPath>\r
     <Compile Include="System.ServiceModel.Channels\HostedTransportConfiguration.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HtmlizedException.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpChannelFactory.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\HttpCookieContainerBindingElement.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpRequestChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpRequestMessageProperty.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpResponseMessageProperty.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexSession.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexSessionChannel.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\IHttpCookieContainer.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputSession.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputSessionChannel.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_0.csproj">\r
-      <Project>{4326E85E-00B2-47F8-9A54-A8E15021CBA3}</Project>\r
+      <Project>{F3D909C0-D548-4FBC-BA04-BC8A445954EA}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0.csproj">\r
-      <Project>{DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}</Project>\r
+      <Project>{45FB5242-B51C-43BC-A7B5-75E5E17C4E95}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bab26002734c48c59c3b6ee654b24d392186ca7b..db6d6320b92ffb4759d3a7f1003193add17043b2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</ProjectGuid>\r
+    <ProjectGuid>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-net_4_5</OutputPath>\r
     <Compile Include="System.ServiceModel.Channels\HostedTransportConfiguration.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HtmlizedException.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpChannelFactory.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\HttpCookieContainerBindingElement.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpRequestChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpRequestMessageProperty.cs" />\r
     <Compile Include="System.ServiceModel.Channels\HttpResponseMessageProperty.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexSession.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IDuplexSessionChannel.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\IHttpCookieContainer.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputSession.cs" />\r
     <Compile Include="System.ServiceModel.Channels\IInputSessionChannel.cs" />\r
     <Compile Include="System.ServiceModel.Channels\TransportSecurityBindingElement.cs" />\r
     <Compile Include="System.ServiceModel.Channels\UnderstoodHeaders.cs" />\r
     <Compile Include="System.ServiceModel.Channels\UseManagedPresentationBindingElement.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\WebSocketTransportSettings.cs" />\r
+    <Compile Include="System.ServiceModel.Channels\WebSocketTransportUsage.cs" />\r
     <Compile Include="System.ServiceModel.Channels\WindowsStreamSecurityBindingElement.cs" />\r
     <Compile Include="System.ServiceModel.Channels\XmlObjectSerializerBodyWriter.cs" />\r
     <Compile Include="System.ServiceModel.Channels\XmlReaderBodyWriter.cs" />\r
     <Compile Include="System.ServiceModel\MsmqPoisonMessageException.cs" />\r
     <Compile Include="System.ServiceModel\MsmqTransportSecurity.cs" />\r
     <Compile Include="System.ServiceModel\NamedPipeTransportSecurity.cs" />\r
+    <Compile Include="System.ServiceModel\NetHttpBinding.cs" />\r
+    <Compile Include="System.ServiceModel\NetHttpMessageEncoding.cs" />\r
     <Compile Include="System.ServiceModel\NetMsmqBinding.cs" />\r
     <Compile Include="System.ServiceModel\NetMsmqSecurity.cs" />\r
     <Compile Include="System.ServiceModel\NetNamedPipeBinding.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</Project>\r
+      <Project>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5.csproj">\r
-      <Project>{C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}</Project>\r
+      <Project>{5889C0B9-25DF-4405-A240-AC0615F4B3EB}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</Project>\r
+      <Project>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9d962e9d23fe4a2e505c12c6c56ee344ad24827e..44cce0a48e47bdada6cfe2a90113c737a1b9a8b0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3483A463-CDF1-44C2-B179-93FED99F1AD5}</ProjectGuid>\r
+    <ProjectGuid>{4EF40B67-F851-4296-8C07-5AD7CCBBA66F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_2_0.csproj">\r
-      <Project>{44AAFF44-CBA6-4B20-B883-5D2BA76E1386}</Project>\r
+      <Project>{FBE202BB-4389-49E8-A81F-155E92BF1B0B}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_2_0.csproj">\r
-      <Project>{C596FD9E-2AC3-48E2-9661-F6F40C84F044}</Project>\r
+      <Project>{1A468E0B-8690-4595-BBD7-D9A5002DFF26}</Project>\r
       <Name>System.Security\System.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_2_0.csproj">\r
-      <Project>{F2FA985C-3E81-483E-BB6E-E814706D57AE}</Project>\r
+      <Project>{FB6EBCB1-9EAF-4671-A9CB-505DC2FEC8A0}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_2_0.csproj">\r
-      <Project>{33F1FAD8-42DA-489B-BEEE-E7E4EFE3891F}</Project>\r
+      <Project>{5A185DDB-82E9-4241-8216-82988647755A}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_2_0.csproj">\r
-      <Project>{02BA7387-C09A-40FB-BE80-39588B822A29}</Project>\r
+      <Project>{858BC3D5-8B2D-4B24-8BD9-BDC36A1DAFE4}</Project>\r
       <Name>System.Messaging\System.Messaging-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d20e3d92a76f5d44604a60bdcf3b46622dc46aeb..63126dd1492993ac0f0904d00e620ac4aff135a7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C900AF96-95E8-43ED-89F7-F39ED49EFC7E}</ProjectGuid>\r
+    <ProjectGuid>{C5659E3B-71A0-4528-A6DF-9303DAD0EE4E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj">\r
-      <Project>{B3C699B6-74B4-4B41-901E-32E57D0909AC}</Project>\r
+      <Project>{4F614C6C-A83E-4C3C-859B-0548391F519E}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_0.csproj">\r
-      <Project>{BC281223-A7A5-415D-B4AA-59417DBFFBBB}</Project>\r
+      <Project>{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}</Project>\r
       <Name>System.Security\System.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_0.csproj">\r
-      <Project>{4326E85E-00B2-47F8-9A54-A8E15021CBA3}</Project>\r
+      <Project>{F3D909C0-D548-4FBC-BA04-BC8A445954EA}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0.csproj">\r
-      <Project>{DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}</Project>\r
+      <Project>{45FB5242-B51C-43BC-A7B5-75E5E17C4E95}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_0.csproj">\r
-      <Project>{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}</Project>\r
+      <Project>{443D0D78-0A65-4288-80C2-B58011E3A5D1}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1114d7140ea814f305a3403e30f29425a97dbc45..4e60879747b1220e3e53c2372dc642c9f747fd26 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D1B6CD53-1030-468E-AAF4-4D2253086D25}</ProjectGuid>\r
+    <ProjectGuid>{5F59D153-79FB-4348-B615-419F2DA69166}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,414,169,67,3005,436,219,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceModel-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Security\System.Security-net_4_5.csproj">\r
-      <Project>{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}</Project>\r
+      <Project>{C7510E1F-66A4-4076-B87B-889E219AAB3F}</Project>\r
       <Name>System.Security\System.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</Project>\r
+      <Project>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5.csproj">\r
-      <Project>{C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}</Project>\r
+      <Project>{5889C0B9-25DF-4405-A240-AC0615F4B3EB}</Project>\r
       <Name>System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Messaging\System.Messaging-net_4_5.csproj">\r
-      <Project>{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}</Project>\r
+      <Project>{A8B93174-06DF-4FC7-8E3E-45F395A943EB}</Project>\r
       <Name>System.Messaging\System.Messaging-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Activation/IServiceHostFactory.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Activation/IServiceHostFactory.cs
deleted file mode 100644 (file)
index e16bc10..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// IServiceHostFactory.cs
-//
-// Author: Atsushi Enomoto (atsushi@ximian.com)
-//
-// Copyright (C) 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.ServiceModel.Channels;
-
-namespace System.ServiceModel.Activation
-{
-       public interface IServiceHostFactory
-       {
-               ServiceHostBase CreateServiceHost (string constructorString,
-                       Uri [] baseAddresses);
-       }
-}
index b14abe885b46e5c57f2d40c04c4a44e05f0a48e4..126221fc4a166fff89c6f09f36b6d5251e1bd9c8 100644 (file)
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-using System;
-using System.ServiceModel;
+
+#if !HAS_ACTIVATION
 
 namespace System.ServiceModel.Activation
 {
+#if NET_4_0
+       [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblySystemServiceModel_3_0)]
+#endif
        public class ServiceHostFactory : ServiceHostFactoryBase
        {
                [MonoTODO]
@@ -47,3 +50,5 @@ namespace System.ServiceModel.Activation
                }
        }
 }
+
+#endif
\ No newline at end of file
index 5ab5d92ee0bb032129f4fd98a2467495cee3bedd..5f4081bda7cde91a1fa88265379c61e9ee04ac20 100644 (file)
@@ -82,6 +82,9 @@ namespace System.ServiceModel.Channels
 
                public XmlDictionaryReaderQuotas ReaderQuotas {
                        get { return quotas; }
+#if NET_4_0
+                       set { quotas = value; }
+#endif
                }
 
                public override IChannelFactory<TChannel> BuildChannelFactory<TChannel> (
@@ -152,5 +155,13 @@ namespace System.ServiceModel.Channels
                        assertions.Add (doc.CreateElement ("msb", "BinaryEncoding", "http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1"));
                }
 #endif
+
+#if NET_4_5
+               [MonoTODO]
+               public CompressionFormat CompressionFormat {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+#endif
        }
 }
diff --git a/mcs/class/System.ServiceModel/System.ServiceModel.Channels/CompressionFormat.cs b/mcs/class/System.ServiceModel/System.ServiceModel.Channels/CompressionFormat.cs
new file mode 100644 (file)
index 0000000..4dd76a3
--- /dev/null
@@ -0,0 +1,34 @@
+//
+// CompressionFormat.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+namespace System.ServiceModel.Channels
+{
+       public enum CompressionFormat {
+               None,
+               GZip,
+               Deflate
+       }
+}
index 3a4b415fb9e81863829db6dfe1054a528eb6f7f4..864fd8c4e25e72e245f97d8ffd9652e9748e40a4 100644 (file)
@@ -94,6 +94,24 @@ namespace System.ServiceModel.Channels
                        Close ();
                }
 
+#if NET_4_5
+               public T GetBody<T> ()
+               {
+                       return OnGetBody<T> (GetReaderAtBodyContents ());
+               }
+
+               public T GetBody<T> (XmlObjectSerializer xmlFormatter)
+               {
+                       // FIXME: Somehow use OnGetBody() here as well?
+                       return (T)xmlFormatter.ReadObject (GetReaderAtBodyContents ());
+               }
+
+               protected virtual T OnGetBody<T> (XmlDictionaryReader reader)
+               {
+                       var xmlFormatter = new DataContractSerializer (typeof (T));
+                       return (T)xmlFormatter.ReadObject (reader);
+               }
+#else
                public T GetBody<T> ()
                {
                        return GetBody<T> (new DataContractSerializer (typeof (T)));
@@ -103,6 +121,7 @@ namespace System.ServiceModel.Channels
                {
                        return (T) xmlFormatter.ReadObject (GetReaderAtBodyContents ());
                }
+#endif
 
                public string GetBodyAttribute (string localName, string ns)
                {
index f75b96cf34195db348c47fb0db1c9086b112b810..008bcea3e84221084a8a72513e1fdc8bc465350f 100644 (file)
@@ -88,6 +88,9 @@ namespace System.ServiceModel.Channels
 
                public XmlDictionaryReaderQuotas ReaderQuotas {
                        get { return quotas; }
+#if NET_4_0
+                       set { quotas = value; }
+#endif
                }
 
                public Encoding WriteEncoding {
index f6339fca57e2c9ea9fc7fb4a6c289869fa615141..fd19d6a764da67f84f433f7154f05aedbcd6b676 100644 (file)
@@ -35,10 +35,10 @@ namespace System.ServiceModel.Channels {
                }
                
                public const string BinaryEncoderTransferModeHeader = null;
-               public const string BinaryMessageReceivedAction = null;
+               public const string BinaryMessageReceivedAction = "http://schemas.microsoft.com/2011/02/websockets/onbinarymessage";
                public const string ConnectionOpenedAction = null;
                public const string SoapContentTypeHeader = null;
-               public const string TextMessageReceivedAction = null;
+               public const string TextMessageReceivedAction = "http://schemas.microsoft.com/2011/02/websockets/ontextmessage";
 
                public bool CreateNotificationOnConnection { get; set; }
                public bool DisablePayloadMasking { get; set; }
index fbc6a39dd6beb926fdce6c1104cf46ff2f48ed53..6c0c3366f756a4cd524c4ec0d81d16dee8939b5a 100644 (file)
@@ -122,6 +122,13 @@ namespace System.ServiceModel.Description
                        get { return behaviors; }
                }
 
+#if NET_4_5
+               [MonoTODO]
+               public KeyedCollection<Type,IContractBehavior> ContractBehaviors {
+                       get { throw new NotImplementedException (); }
+               }
+#endif
+
                public Type CallbackContractType {
                        get { return callback_contract_type; }
                        set { callback_contract_type = value; }
index 7e4823f1819676a446ac81f466e4b8a5b9c81fc2..929a450d22be5df1083bdfb0cc77f5210478985f 100644 (file)
@@ -263,7 +263,7 @@ namespace System.ServiceModel.Description
                {
                        var l = new List<MethodInfo> ();
                        foreach (var t in GetAllInterfaceTypes (type)) {
-#if MONOTOUCH
+#if FULL_AOT_RUNTIME
                                // The MethodBase[] from t.GetMethods () is cast to a IEnumerable <MethodInfo>
                                // when passed to List<MethodInfo>.AddRange, which in turn casts it to 
                                // ICollection <MethodInfo>.  The full-aot compiler has no idea of this, so
index df694c8c9ebe4f10ca95e37d13657460f3b9e2cd..caf9ddbeaf854393e2ef71cd212004e86c86a073 100644 (file)
@@ -74,6 +74,19 @@ namespace System.ServiceModel.Description
                        get { return behaviors; }
                }
 
+#if NET_4_5
+               [MonoTODO]
+               public KeyedCollection<Type,IOperationBehavior> OperationBehaviors {
+                       get { throw new NotImplementedException (); }
+               }
+
+               [MonoTODO]
+               public MethodInfo TaskMethod {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+#endif
+
                public ContractDescription DeclaringContract {
                        get { return contract; }
                        set { contract = value; }
index 9850f3c39516763d4651f8c159cdf9fbb40e2b47..259670f53cdd50f95f8f8ec545fe132ad8779826 100644 (file)
@@ -27,6 +27,9 @@
 //
 using System;
 using System.Collections.Generic;
+#if NET_4_5
+using System.Collections.ObjectModel;
+#endif
 using System.Diagnostics;
 using System.ServiceModel;
 using System.ServiceModel.Channels;
@@ -67,6 +70,13 @@ namespace System.ServiceModel.Description
                        get { return behaviors; }
                }
 
+#if NET_4_5
+               [MonoTODO]
+               public KeyedCollection<Type,IEndpointBehavior> EndpointBehaviors {
+                       get { throw new NotImplementedException (); }
+               }
+#endif
+
                public ContractDescription Contract {
                        get { return contract; }
 #if NET_4_0
index ddb4bd6a537224d8080bd6df6b29d3c415b9dec3..6d99d5b16d7d6d0bf8108992dad47a51da20aee1 100644 (file)
@@ -185,6 +185,25 @@ namespace System.ServiceModel.Dispatcher
                        }
                        throw new InvalidOperationException ("Cannot change this property after the service host is opened");
                }
+
+#if NET_4_5
+               [MonoTODO]
+               public ICollection<IParameterInspector> ClientParameterInspectors {
+                       get { throw new NotImplementedException (); }
+               }
+
+               [MonoTODO]
+               public MethodInfo TaskMethod {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+
+               [MonoTODO]
+               public Type TaskTResult {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+#endif
                
        }
 }
index 92549c81802c5cb383578e2932e837a1d0de72a4..3f215925e6fd0818ff4e11ac3cde65243a632c94 100644 (file)
@@ -98,6 +98,18 @@ namespace System.ServiceModel.Dispatcher
                }
 #endif
 
+#if NET_4_5
+               [MonoTODO]
+               public ICollection<ClientOperation> ClientOperations {
+                       get { throw new NotImplementedException (); }
+               }
+
+               [MonoTODO]
+               public ICollection<IClientMessageInspector> ClientMessageInspectors {
+                       get { throw new NotImplementedException (); }
+               }
+#endif
+
                public bool ManualAddressing {
                        get { return manual_addressing; }
                        set { manual_addressing = value; }
index 8baeb0a5ecd78d93bf64076f6ee7b9a560535503..7a5148018b5d18f43ae88a5626ee978f0caa5b6b 100644 (file)
@@ -130,7 +130,6 @@ System.Collections.Generic/SynchronizedKeyedCollection.cs
 System.Collections.Generic/SynchronizedReadOnlyCollection.cs
 System.IO/PipeException.cs
 System.ServiceModel.Activation/AspNetIntegrationRequirementsAttribute.cs
-System.ServiceModel.Activation/IServiceHostFactory.cs
 System.ServiceModel.Activation/ServiceHostFactory.cs
 System.ServiceModel.Activation/ServiceHostFactoryBase.cs
 System.ServiceModel.Activation/VirtualPathExtension.cs
index 5beb4fe90223553420f17a6a5ef72fa17d7835d8..e4d1f452feab590f0cdb6b830612219b633839b2 100644 (file)
@@ -241,6 +241,9 @@ namespace System.ServiceModel // used to be S.SM.Ch
                Ntlm,
                Windows,
                Certificate,
+#if NET_4_5
+               InheritedFromHost
+#endif
        }
 
        public enum HttpProxyCredentialType
index 81529cb5fd255a2bdb640364d98afd290547a304..1af7625027ecea7470b966e0a0c214edbdb31571 100644 (file)
@@ -137,7 +137,7 @@ namespace System.ServiceModel
 
                public virtual TChannel CreateChannel (EndpointAddress address, Uri via)
                {
-#if MONOTOUCH
+#if FULL_AOT_RUNTIME
                        throw new InvalidOperationException ("MonoTouch does not support dynamic proxy code generation. Override this method or its caller to return specific client proxy instance");
 #else
                        var existing = Endpoint.Address;
index 576e4a8a877abd40447f2d771897e2b30eae9ce6..a7b5587abf84f9809a24c4dae57b31ee730ae139 100644 (file)
@@ -26,7 +26,7 @@
 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Collections.Generic;
 using System.Reflection;
index 7c647a77dc8c860a0dc2e76e9682754f1df2757e..b656c1d1d2ef2209906f827f56bc75c5d8c4ea0b 100644 (file)
@@ -37,7 +37,7 @@ namespace System.ServiceModel
        {
                TDetail detail;
 
-#if MONOTOUCH
+#if FULL_AOT_RUNTIME
                // WCF creates FaultExceptions using reflection, so unless we reference
                // the corresponding ctor, it will not be possible to use FaultExceptions
                // in MonoTouch. This ctor reference will work as long as TDetail
index ed999db7713124a2e361b5d73ee6c31d8f7b576d..f9e112d1d4b79a9b28a9c2d45a4a7c4fc893e2fe 100644 (file)
@@ -26,6 +26,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 using System;
+using System.Threading;
 using System.Collections.Generic;
 using System.ServiceModel.Channels;
 using System.ServiceModel.Dispatcher;
@@ -235,5 +236,13 @@ namespace System.ServiceModel
                protected override void OnClose (TimeSpan timeout)
                {
                }
+
+#if NET_4_0
+               [MonoTODO]
+               public SynchronizationContext SynchronizationContext {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+#endif
        }
 }
index 223faff637c7585e11ba417098edc929b3350c57..9e7970fc021ab569ca094642d06bc7c475827b0c 100644 (file)
@@ -32,6 +32,9 @@ using System.ServiceModel.Channels;
 using System.ServiceModel.Description;
 using System.ServiceModel.Security;
 using System.ServiceModel.Security.Tokens;
+#if NET_4_0
+using System.ServiceModel.Configuration;
+#endif
 using System.Text;
 using System.Xml;
 
@@ -64,6 +67,16 @@ namespace System.ServiceModel
                        transport = new TcpTransportBindingElement ();
                }
 
+#if NET_4_0
+               public NetTcpBinding (string configurationName)
+                       : this ()
+               {
+                       var bindingsSection = ConfigUtil.BindingsSection;
+                       var el = bindingsSection.NetTcpBinding.Bindings [configurationName];
+                       el.ApplyConfiguration (this);
+               }
+#endif
+
                internal NetTcpBinding (TcpTransportBindingElement transport,
                                        NetTcpSecurity security,
                                        bool reliableSessionEnabled)
@@ -120,6 +133,9 @@ namespace System.ServiceModel
 
                public NetTcpSecurity Security {
                        get { return security; }
+#if NET_4_0
+                       set { security = value; }
+#endif
                }
 
                public EnvelopeVersion EnvelopeVersion {
index 4481328814a72c77da9f8a8e19ccd47f4bdb45b2..54c4ac9eb8d7d9451e3473fde6fd64f909c9a67e 100644 (file)
@@ -53,6 +53,9 @@ namespace System.ServiceModel
 
                public MessageSecurityOverTcp Message {
                        get { return message; }
+#if NET_4_0
+                       set { message = value; }
+#endif
                }
 
                public SecurityMode Mode {
@@ -62,6 +65,9 @@ namespace System.ServiceModel
 
                public TcpTransportSecurity Transport {
                        get { return transport; }
+#if NET_4_0
+                       set { transport = value; }
+#endif
                }
        }
 }
index c0082788b29e1ed67367d4b2edceef95a988852c..e22e9a7c708789074f7f181fb838f065b50fad01 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+#if !HAS_ACTIVATION
+
 namespace System.ServiceModel {
 
+#if NET_4_0
+       [System.Runtime.CompilerServices.TypeForwardedFrom (Consts.AssemblySystemServiceModel_3_0)]
+#endif
        public static class ServiceHostingEnvironment
        {
                internal static bool InAspNet { get; set; }
@@ -39,3 +44,5 @@ namespace System.ServiceModel {
                }
        }
 }
+
+#endif
\ No newline at end of file
index cd19e90d741b1846a26c7fbfa171c0b47947af0e..2964e9f1a2e920b98592ffb7d952ba12d8366ae0 100644 (file)
@@ -46,5 +46,13 @@ namespace System.ServiceModel
                        : this (Claim.CreateSpnClaim (spn))
                {
                }
+
+#if NET_4_0
+               [MonoTODO]
+               public static TimeSpan SpnLookupTime {
+                       get { throw new NotImplementedException (); }
+                       set { throw new NotImplementedException (); }
+               }
+#endif
        }
 }
index f0de435d755381d056c6342af5bc4043b65864af..1b83c9e468e3dcf353b7c59bab5da5ee28079337 100644 (file)
@@ -71,6 +71,7 @@ System.ServiceModel.Channels/ChannelFactoryBase.cs
 System.ServiceModel.Channels/ChannelManagerBase.cs
 System.ServiceModel.Channels/ChannelParameterCollection.cs
 System.ServiceModel.Channels/ChannelPoolSettings.cs
+System.ServiceModel.Channels/CompressionFormat.cs
 System.ServiceModel.Channels/CommunicationObject.cs
 System.ServiceModel.Channels/ContentType.cs
 System.ServiceModel.Channels/CustomBinding.cs
diff --git a/mcs/class/System.ServiceModel/mobile_static_System.ServiceModel.dll.sources b/mcs/class/System.ServiceModel/mobile_static_System.ServiceModel.dll.sources
new file mode 100644 (file)
index 0000000..22ece5c
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.ServiceModel.dll.sources
index 0be4c6b793ec07546ecb3715d167417e6923a124..5f1bdb65307e08d990fc1def2f90827dc4475fdc 100644 (file)
@@ -5,6 +5,7 @@ System.ServiceModel/BasicHttpsBinding.cs
 System.ServiceModel/BasicHttpsSecurity.cs
 System.ServiceModel/NetHttpBinding.cs
 System.ServiceModel/NetHttpMessageEncoding.cs
+System.ServiceModel.Channels/CompressionFormat.cs
 System.ServiceModel.Channels/WebSocketTransportSettings.cs
 System.ServiceModel.Channels/WebSocketTransportUsage.cs
 System.ServiceModel.Configuration/BasicHttpBindingElement_4_5.cs
index dd32b4161fe25820df1cecf5e9c51cab404770dc..a85a054c230c703cff3988a97882a6a613e0e87b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{28D81FF5-DF27-4A4A-BBFB-D922FD2CCCF5}</ProjectGuid>\r
+    <ProjectGuid>{523116C5-1B31-443C-B431-F716517CD061}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_2_0.csproj">\r
-      <Project>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</Project>\r
+      <Project>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fbaccc8f087068b2fbd57024ba4ae045b8e65c40..f6c95d21934705f013357edc0c926e8aa55a3165 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5BA1F558-FD7C-4F85-9BB2-8568EDBC0353}</ProjectGuid>\r
+    <ProjectGuid>{700F95F4-78BE-41D5-9F7C-259592FBB267}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_0.csproj">\r
-      <Project>{878F802D-3249-41E8-8322-A32C406383C6}</Project>\r
+      <Project>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 22222526ccce9a682dc750e2b094ffe4b8cfb8ba..71e450eb3e82a99b89ca5975198b16238ed4fdcb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}</ProjectGuid>\r
+    <ProjectGuid>{99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</Project>\r
+      <Project>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 989a3308c7709918aa76d980ae07ac73ff42054c..3a894d8d132cdb5bf85ea1e55918e2321a46615f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{60F97E73-B32C-4602-9BBA-33F09F3EB6F1}</ProjectGuid>\r
+    <ProjectGuid>{1785BCAA-5ECE-4080-A741-64A0A021AEE0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-tests-net_2_0</OutputPath>\r
@@ -44,6 +44,7 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
+    <Compile Include="Test\System.ServiceProcess\ServiceBaseTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionAttributeTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerTest.cs" />\r  </ItemGroup>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceProcess\System.ServiceProcess-net_2_0.csproj">\r
-      <Project>{28D81FF5-DF27-4A4A-BBFB-D922FD2CCCF5}</Project>\r
+      <Project>{523116C5-1B31-443C-B431-F716517CD061}</Project>\r
       <Name>System.ServiceProcess\System.ServiceProcess-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_2_0.csproj">\r
-      <Project>{33DED2E2-4FCD-4070-BE3A-026D4F80D3C8}</Project>\r
+      <Project>{5CE6E3F2-E63D-4C2B-9CCE-6446021A1AF5}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cfe1158e3ec359fefc8505b85423edbe14b89d9a..c191887f765b4968908815bcaffa9efd7d177d38 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{592D71D4-B8BF-44C0-80B1-F191EC2D86F2}</ProjectGuid>\r
+    <ProjectGuid>{23D08061-44FC-4D15-9FB2-FDBC43B84D37}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-tests-net_4_0</OutputPath>\r
@@ -44,6 +44,7 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
+    <Compile Include="Test\System.ServiceProcess\ServiceBaseTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionAttributeTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerTest.cs" />\r  </ItemGroup>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceProcess\System.ServiceProcess-net_4_0.csproj">\r
-      <Project>{5BA1F558-FD7C-4F85-9BB2-8568EDBC0353}</Project>\r
+      <Project>{700F95F4-78BE-41D5-9F7C-259592FBB267}</Project>\r
       <Name>System.ServiceProcess\System.ServiceProcess-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_0.csproj">\r
-      <Project>{878F802D-3249-41E8-8322-A32C406383C6}</Project>\r
+      <Project>{3C248397-71FD-4A63-B4A5-9F2A28C4D983}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6ad9ed70fd626681a0b57b5281f8cb7157d264aa..8d74f16e8a857c2c71d99f3931d87839ac0100dd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F8218843-5463-4D1D-BD93-4E1A507FFAF9}</ProjectGuid>\r
+    <ProjectGuid>{D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System.ServiceProcess-tests-net_4_5</OutputPath>\r
@@ -44,6 +44,7 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
+    <Compile Include="Test\System.ServiceProcess\ServiceBaseTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionAttributeTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerPermissionTest.cs" />\r
     <Compile Include="Test\System.ServiceProcess\ServiceControllerTest.cs" />\r  </ItemGroup>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceProcess\System.ServiceProcess-net_4_5.csproj">\r
-      <Project>{4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}</Project>\r
+      <Project>{99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}</Project>\r
       <Name>System.ServiceProcess\System.ServiceProcess-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration.Install\System.Configuration.Install-net_4_5.csproj">\r
-      <Project>{348A36EC-8291-460B-9CC2-8CA8AD1759A2}</Project>\r
+      <Project>{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}</Project>\r
       <Name>System.Configuration.Install\System.Configuration.Install-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b77c15936377432f348c9199e02aa72a7851f269..22a97f3d47e106de8769680e81bca145d754686f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}</ProjectGuid>\r
+    <ProjectGuid>{82B719BA-7803-4832-B837-42928A0E1CEB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Threading.Tasks.Dataflow-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 3443c94eeba7dec5142bfda22fb74d626177aaa2..bf953e2b1a6d41f984e2264e6b2529d56665f983 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F87B162C-A83C-45FD-8FED-FFFB1E4C002C}</ProjectGuid>\r
+    <ProjectGuid>{8A83591A-6906-48BF-BB8E-1515D264B2D7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Threading.Tasks.Dataflow-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-net_4_5.csproj">\r
-      <Project>{D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}</Project>\r
+      <Project>{82B719BA-7803-4832-B837-42928A0E1CEB}</Project>\r
       <Name>System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 034604af33bed82559ecfb90958423b47c9120e1..6955048fe34abb22773962d2cbb42ab27907ac86 100644 (file)
@@ -230,10 +230,17 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        scheduler.ExecuteAll ();
                        Assert.IsTrue (target.HasPostponed);
 
-                       ((IDataflowBlock)source).Fault (new Exception ());
+                       var exception = new Exception ();
+                       ((IDataflowBlock)source).Fault (exception);
 
                        scheduler.ExecuteAll ();
-                       Thread.Sleep (100);
+
+                       try {
+                               source.Completion.Wait (1000);
+                               Assert.Fail ("Task must be faulted");
+                       } catch (AggregateException ex) {
+                               Assert.AreEqual (exception, ex.InnerException, "#9");
+                       }
 
                        Assert.IsTrue (source.Completion.IsFaulted);
                        int value;
@@ -254,27 +261,33 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        var target = new TestTargetBlock<int> { Postpone = true };
                        Assert.IsNotNull (source.LinkTo (target));
 
-                       Assert.IsTrue (source.Post (1));
-                       Assert.IsTrue (source.Post (2));
-                       Assert.IsTrue (source.Post (3));
-                       Thread.Sleep (500);
-                       Assert.IsTrue (target.HasPostponed);
+                       Assert.IsTrue (source.Post (1), "#1");
+                       Assert.IsTrue (source.Post (2), "#2");
+                       Assert.IsTrue (source.Post (3), "#3");
+                       target.PostponedEvent.Wait (1000);
+                       Assert.IsTrue (target.HasPostponed, "#4");
 
-                       ((IDataflowBlock)source).Fault (new Exception ());
+                       var exception = new Exception ();
+                       ((IDataflowBlock)source).Fault (exception);
 
-                       Thread.Sleep (100);
+                       source.Completion.Wait (1000);
 
-                       Assert.IsFalse (source.Completion.IsFaulted);
+                       Assert.IsFalse (source.Completion.IsFaulted, "#5");
                        int value;
-                       Assert.IsTrue (target.RetryPostponed (out value));
-                       Assert.AreEqual (1, value);
+                       Assert.IsTrue (target.RetryPostponed (out value), "#6");
+                       Assert.AreEqual (1, value, "#7");
 
                        evt.Set ();
 
-                       Thread.Sleep (100);
+                       try {
+                               source.Completion.Wait (1000);
+                               Assert.Fail ("Task must be faulted");
+                       } catch (AggregateException ex) {
+                               Assert.AreEqual (exception, ex.InnerException, "#9");
+                       }
 
-                       Assert.IsTrue (source.Completion.IsFaulted);
-                       Assert.IsFalse (target.RetryPostponed (out value));
+                       Assert.IsTrue (source.Completion.IsFaulted, "#10");
+                       Assert.IsFalse (target.RetryPostponed (out value), "#11");
                }
 
                [Test]
@@ -382,6 +395,8 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                public T DirectlyAccepted { get; private set; }
 
+               public ManualResetEventSlim PostponedEvent = new ManualResetEventSlim ();
+
                public DataflowMessageStatus OfferMessage (
                        DataflowMessageHeader messageHeader, T messageValue, ISourceBlock<T> source,
                        bool consumeToAccept)
@@ -391,6 +406,7 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
 
                        if (Postpone) {
                                postponed = Tuple.Create (source, messageHeader);
+                               PostponedEvent.Set ();
                                return DataflowMessageStatus.Postponed;
                        }
 
index 1a0adfb45ab0f5e6ade87a496643d170239ef591..9d6ece4f8fcf12fa3d986eb5233e029068aab79c 100644 (file)
@@ -85,11 +85,11 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        var action = new ActionBlock<int> (i => received = true);
                        transformMany.LinkTo (action);
 
-                       Assert.IsTrue (transformMany.Post (1));
+                       Assert.IsTrue (transformMany.Post (1), "#1");
 
                        transformMany.Complete ();
-                       Assert.IsTrue (transformMany.Completion.Wait (100));
-                       Assert.IsFalse (received);
+                       Assert.IsTrue (transformMany.Completion.Wait (100), "#2");
+                       Assert.IsFalse (received, "#3");
                }
 
                [Test]
index 1d59b64bd611ac5982589b05176bef0d17380084..320df00fb9b56e06a8e6b6554b593d4c12af82e3 100644 (file)
@@ -55,13 +55,13 @@ namespace MonoTests.System.Threading.Tasks.Dataflow {
                        block.LinkTo (action1);
                        block.LinkTo (action2);
 
-                       Assert.IsTrue (block.Post (42));
-                       Assert.IsFalse (block.Post (43));
+                       Assert.IsTrue (block.Post (42), "#1");
+                       Assert.IsFalse (block.Post (43), "#2");
 
-                       Assert.IsTrue (evt.Wait (100));
+                       Assert.IsTrue (evt.Wait (100), "#3");
 
-                       Assert.IsTrue (act1);
-                       Assert.IsTrue (act2);
+                       Assert.IsTrue (act1, "#4");
+                       Assert.IsTrue (act2, "#5");
                }
 
                [Test]
index e65451c85ed94ea59f8008399abcc88c26a9e127..a89f1d4c83fda4af45556e48f0ba1f1b86412a45 100644 (file)
@@ -2,7 +2,7 @@ thisdir = class/System.Transactions
 SUBDIRS = 
 include ../../build/rules.make
 
-MOBILE_PROFILE := $(filter monotouch monodroid mobile, $(PROFILE))
+MOBILE_PROFILE := $(filter monotouch monodroid mobile mobile_static, $(PROFILE))
 
 LIBRARY = System.Transactions.dll
 ifdef MOBILE_PROFILE
index f5a5ce34dd3aa0992e0dbcd21cdd8c862279884e..2c65e830bb8fd24f7e25c3a65543aad571b9aad2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</ProjectGuid>\r
+    <ProjectGuid>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f763b185c79bdc16b7e38629a9308a6531a94503..27d7170910a27b0bd9346b84abe8d167f3ab672d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{46371E88-F274-4BE7-8587-444F4E6F7247}</ProjectGuid>\r
+    <ProjectGuid>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ff899736da4c7a517b461ffaf77f52a13271e784..8f198bc8d08a10361c25d2007ba8f88801ee532a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</ProjectGuid>\r
+    <ProjectGuid>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index cf714cdae21a31c361937f5278eaf7df1942780d..4f5c4c113fa6b09080102c472cccf99431b07e98 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5AB33E94-8744-4B43-B981-C346A8157E26}</ProjectGuid>\r
+    <ProjectGuid>{49F6C0AF-5470-43A2-BDE3-5E4D3065C4E9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_2_0.csproj">\r
-      <Project>{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}</Project>\r
+      <Project>{DD1B3195-5FEA-46A2-99B5-9839CA60485C}</Project>\r
       <Name>System.Transactions\System.Transactions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 617c8afb8cff0613c67b64224cd3ed939a4542ae..1f3d341e9d3fed2681764bb32c1b3e214bf5de72 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{93E62493-63D7-4FF7-A69D-E52DE804F35A}</ProjectGuid>\r
+    <ProjectGuid>{70637A21-BC09-43D1-ADC1-03D8B21BEE51}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_0.csproj">\r
-      <Project>{46371E88-F274-4BE7-8587-444F4E6F7247}</Project>\r
+      <Project>{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ec094c2d2feb3a1e2c51d3b14a17a13675a98324..2de71b81fe8dad9369dd41992e0f8701e192dac0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{801B7F88-6DE4-48B9-A830-450BF14DBBA1}</ProjectGuid>\r
+    <ProjectGuid>{D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1595</NoWarn>\r
     <OutputPath>bin\Debug\System.Transactions-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Transactions\System.Transactions-net_4_5.csproj">\r
-      <Project>{BED431C4-56B5-4990-A8E6-DCD02A331BC9}</Project>\r
+      <Project>{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}</Project>\r
       <Name>System.Transactions\System.Transactions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f2424177a0c7eb5dadb02aa10c34803e42f745dc..eb781cd73ad3384faf0f257486c865a5a7c931cc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</ProjectGuid>\r
+    <ProjectGuid>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7e905a23476df918963e53dc659e0a0ccf346eac..73a727fb16e598cfb31a643e2bf48fa7d767e74f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</ProjectGuid>\r
+    <ProjectGuid>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 22e3f7883a1e1f39e1613c4a2c48e5fc2531b5d9..cadb9c4ab45654eb884e1dd61a06d1c836af5da8 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</ProjectGuid>\r
+    <ProjectGuid>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index e44c31bb0f5ba0f415f226613a27853888084246..0ed3646a10c18a2d69812900fccadcc53dd5a3da 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C7BB118D-5D06-4408-BF49-559823082741}</ProjectGuid>\r
+    <ProjectGuid>{FFD6E740-A675-44BA-9875-746959238825}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 277346a38b3f2b257449d000e35255fd30c25673..492b35d4b8bb3c23673e65cbd42170b8ca5bc8fd 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B237BAE8-A3C5-4EEF-A192-D35D400871F5}</ProjectGuid>\r
+    <ProjectGuid>{49024E6C-B034-4657-B7CD-D67CAA1D4D49}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 08ace55044c090b553cd3e97f29fef95f238e5f4..8b84fc6cbddb4bcc2d127ef9411e29d6303b6b68 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}</ProjectGuid>\r
+    <ProjectGuid>{3AD60A26-BA14-4B61-9293-D98C1BF9552C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Abstractions-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf1fae0873731a0a680cb94bda7b87fe1743856e..dc5a565c17e531d935c6edede1fc7b8677c99e50 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{472CD7DA-4C6E-4CA6-A165-FF8C753C3420}</ProjectGuid>\r
+    <ProjectGuid>{E5B3EB0A-A257-4230-AA90-25B2D7922126}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.ApplicationServices-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1a13a794c65ab1d687b2befe4f18ed212021ef66..1c3f0d2c40da4aa58c3be09c81134eb3bdc1c9fc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5D580843-B172-4BF3-AABD-116A64020C1C}</ProjectGuid>\r
+    <ProjectGuid>{8EF189A4-B862-4825-9938-00658C43B534}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.ApplicationServices-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 33052f977f551115d331610117b44946a09d90a7..aa46cb9bb2280519019dd7bc87ba22bbabc52981 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD80D595-2812-412E-9F06-2A91C7283A48}</ProjectGuid>\r
+    <ProjectGuid>{394BAC94-3126-4DAE-8C55-5547372BAB46}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.ApplicationServices-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ed2ad87b71124708038f2d329e0bf96f3db881b7..11038b205c2c7e8e26406593d986b0a4128d448e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{182889E2-07DF-4792-94DF-8187BCD725BE}</ProjectGuid>\r
+    <ProjectGuid>{6881658B-5F01-49C2-8DB8-DF577EA525CE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0.csproj">\r
-      <Project>{B38D3949-9075-4450-8101-0D26C6B2CC4D}</Project>\r
+      <Project>{E3E1BF16-7D12-4CCD-85D0-B542F0AC3442}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_2_0.csproj">\r
-      <Project>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</Project>\r
+      <Project>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5d043c3f15f827f34119a6b103c4640d378f294e..088d1dfb50d5261f88619d4a55ee6369268e2623 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B869C99D-EFFB-4820-BB03-D034C810DF76}</ProjectGuid>\r
+    <ProjectGuid>{6837587B-79E1-4EE1-938C-DE756B097444}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0.csproj">\r
-      <Project>{420D9BE2-8DD3-41E6-A115-6BFFA4B6EB04}</Project>\r
+      <Project>{F74623F8-5517-4015-8F3A-EB04E926E720}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_0.csproj">\r
-      <Project>{77AEBAA7-06AF-46E4-9BAB-E6AF85D20A8E}</Project>\r
+      <Project>{3DD9CA2F-A471-4BBB-867C-BE15EF24420F}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 156c331d06e3ffa08694c0309bf2970ae72b7942..4d1911f17517be8c94ba28fbebef2ddd9066e52f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FCB921CD-F90B-453A-A546-F47CCC019EF3}</ProjectGuid>\r
+    <ProjectGuid>{02E0DC5C-2182-45D8-95E3-FF5ED16C318E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</Project>\r
+      <Project>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 755d1e599c1e2fb8b9526ed0a5b6048f4f88f3f8..5ab8354730030c87400974ecaac6fa76a1a65e2b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{24CBC4DB-11EB-4BAF-B7DC-13E1FCA9400E}</ProjectGuid>\r
+    <ProjectGuid>{91028A81-C26E-4906-AC77-078271157C13}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.DynamicData\System.Web.DynamicData-net_2_0.csproj">\r
-      <Project>{182889E2-07DF-4792-94DF-8187BCD725BE}</Project>\r
+      <Project>{6881658B-5F01-49C2-8DB8-DF577EA525CE}</Project>\r
       <Name>System.Web.DynamicData\System.Web.DynamicData-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0.csproj">\r
-      <Project>{B38D3949-9075-4450-8101-0D26C6B2CC4D}</Project>\r
+      <Project>{E3E1BF16-7D12-4CCD-85D0-B542F0AC3442}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_2_0.csproj">\r
-      <Project>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</Project>\r
+      <Project>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_2_0.csproj">\r
-      <Project>{FA446F0C-75D2-439A-9C1D-81CB6EDB8953}</Project>\r
+      <Project>{C13E6BD8-A2FC-41C2-B21B-9BF414BB4DA0}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 50dda90fd8ebcefec1383d5e7fdb17f32bc973e4..a035f141ad677dfe9479b772aa4f7e296e8ccf02 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{344BE71C-2CC7-4549-A7E0-BEEAB8EF58A2}</ProjectGuid>\r
+    <ProjectGuid>{79B0B763-8F67-43AC-83A1-F3C83BE07C15}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.DynamicData\System.Web.DynamicData-net_4_0.csproj">\r
-      <Project>{B869C99D-EFFB-4820-BB03-D034C810DF76}</Project>\r
+      <Project>{6837587B-79E1-4EE1-938C-DE756B097444}</Project>\r
       <Name>System.Web.DynamicData\System.Web.DynamicData-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0.csproj">\r
-      <Project>{420D9BE2-8DD3-41E6-A115-6BFFA4B6EB04}</Project>\r
+      <Project>{F74623F8-5517-4015-8F3A-EB04E926E720}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_0.csproj">\r
-      <Project>{77AEBAA7-06AF-46E4-9BAB-E6AF85D20A8E}</Project>\r
+      <Project>{3DD9CA2F-A471-4BBB-867C-BE15EF24420F}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_0.csproj">\r
-      <Project>{2CA35670-6F91-4423-A36A-12560A182E0D}</Project>\r
+      <Project>{08486D58-12AA-4B53-82F7-1B2C62EAE9D5}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1c5d9dc28b89fe17a51120a9e09293d9e679cc60..707e32dbe1e35f31a965ede1f2be6473adb37056 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{8178EA24-D36C-43EC-8783-6325059CBA5E}</ProjectGuid>\r
+    <ProjectGuid>{1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.DynamicData-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.DynamicData\System.Web.DynamicData-net_4_5.csproj">\r
-      <Project>{FCB921CD-F90B-453A-A546-F47CCC019EF3}</Project>\r
+      <Project>{02E0DC5C-2182-45D8-95E3-FF5ED16C318E}</Project>\r
       <Name>System.Web.DynamicData\System.Web.DynamicData-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</Project>\r
+      <Project>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_5.csproj">\r
-      <Project>{AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}</Project>\r
+      <Project>{3D24376B-ECC8-4E7B-9433-C77CC67880AA}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1399637d7a644dfd65c8c41723ea65d70ca9a666..4073d07429f6f41bee4b3c92c51aaaaf9f8009d2 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DFB67D8B-86E5-4164-8D94-E8E98F18EEB7}</ProjectGuid>\r
+    <ProjectGuid>{94DBDE83-D7A4-4E3D-93CD-C73013D28E48}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions.Design-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_2_0-1.csproj">\r
-      <Project>{D75106C3-9D48-4054-82FF-DB9E7BAF216D}</Project>\r
+      <Project>{7BD57C92-6B92-45F0-8050-A0AEE810BC8D}</Project>\r
       <Name>System.Design\System.Design-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index aee87f9fce1354970dcd46ebf8493689f69da5a3..9ba0406bc405508579dcaa1e0cf090dfc17649e0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{1167DB40-44BA-45A3-AFD9-08C8EEC5BD9B}</ProjectGuid>\r
+    <ProjectGuid>{4ED85265-D05C-4F8E-9A95-31BF0D524B71}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions.Design-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_4_0-1.csproj">\r
-      <Project>{6E8873F5-E704-4256-994D-5E4D9EE8EA1D}</Project>\r
+      <Project>{C8576BC8-9511-494F-B50E-C2219D151B4A}</Project>\r
       <Name>System.Design\System.Design-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ba6e9ffd7e993cd99e4899972d69d44618b115d3..15748f07385db4fda03e762d2c3598c2e56d0a87 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}</ProjectGuid>\r
+    <ProjectGuid>{9F8B1088-2610-4E4D-A6E4-EDF2771104D9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions.Design-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_4_5-1.csproj">\r
-      <Project>{2414C54A-9454-4B25-932C-0724CF003A6D}</Project>\r
+      <Project>{54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}</Project>\r
       <Name>System.Design\System.Design-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 30f6474f27d91f741f72fe77a0f360148850038a..9c103b3d418a70511d8a96917d70141332305e0a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D5DD9106-80E8-4EDB-B897-67F350DEE28E}</ProjectGuid>\r
+    <ProjectGuid>{BE605E88-3670-4349-9A9A-2FEEDEAB2DB6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions.Design_1.0-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Design\System.Design-net_2_0-1.csproj">\r
-      <Project>{D75106C3-9D48-4054-82FF-DB9E7BAF216D}</Project>\r
+      <Project>{7BD57C92-6B92-45F0-8050-A0AEE810BC8D}</Project>\r
       <Name>System.Design\System.Design-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_2_0.csproj">\r
-      <Project>{4F08F704-E8AE-4C02-9A8F-6E9225D8ACE2}</Project>\r
+      <Project>{19413C30-6E39-4AAC-B9D1-FC88082E74C8}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index db5273a157d80410dab3625e5cb9819e8f1625c2..5740ce24073ded5e76b0be577b4362ad24cafe05 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</ProjectGuid>\r
+    <ProjectGuid>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ab8013a794e560fddfab09215a2dcda05479d98d..e0bcbc5e5f99a5101b4d2c0f03b7045a742c75ab 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</ProjectGuid>\r
+    <ProjectGuid>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c3e0682013d863a98e9aa6e7119844dce4912294..6a55639c983d99a9247c26255316d7499174c693 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{88F3463D-A057-4531-AEE8-802F5B6342E9}</ProjectGuid>\r
+    <ProjectGuid>{74E571CD-0506-4A52-B780-FDA9445675FB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 50083d9ebef991234f2634cea2ecacab97e81e13..d90774ec6551cc19a6fed6e399de4d4b6e21ce3d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9F2FE51F-DC60-4F62-9BA6-77DFEA8F118B}</ProjectGuid>\r
+    <ProjectGuid>{2C6D48E2-460F-4415-9D66-47A09FAEFBC7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,169,1591</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_2_0.csproj">\r
-      <Project>{77DBD5F4-13EC-45EC-A6BD-3C5543D42B90}</Project>\r
+      <Project>{28B2271C-CC55-4812-B732-A67317405AA9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_2_0.csproj">\r
-      <Project>{FA446F0C-75D2-439A-9C1D-81CB6EDB8953}</Project>\r
+      <Project>{C13E6BD8-A2FC-41C2-B21B-9BF414BB4DA0}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 46b5db312ff99c095f888be655fb90a11d5f4c68..b8ea84c13bd190a173b7fb923770f137535c8e3f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FBB90247-A135-4A81-B18E-EB1156344F0A}</ProjectGuid>\r
+    <ProjectGuid>{D474E879-9410-4998-806C-E9BFFD8290EF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,169,1591</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_0.csproj">\r
-      <Project>{93532CB9-2FFB-4458-820F-BA280A6E6796}</Project>\r
+      <Project>{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_0.csproj">\r
-      <Project>{2CA35670-6F91-4423-A36A-12560A182E0D}</Project>\r
+      <Project>{08486D58-12AA-4B53-82F7-1B2C62EAE9D5}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f5704dd130277b9f3754eb5b08bca28504c767cd..8602d284b8fee813ae34a78eb520efaf5f4f02d6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{496386B9-294B-4D76-A15F-2C25E7E6A941}</ProjectGuid>\r
+    <ProjectGuid>{F70BF1C1-23E0-449D-966D-0A0657F0AB02}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,219,169,1591</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_5.csproj">\r
-      <Project>{AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}</Project>\r
+      <Project>{3D24376B-ECC8-4E7B-9433-C77CC67880AA}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0b331555ce56bd8c6432900103678fa45e0e1af5..e695f880bf4a54e8258402e6b3110335f618b620 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B12E9FE0-4ED0-4424-ABE4-E9CDC77B0EED}</ProjectGuid>\r
+    <ProjectGuid>{37C7D569-AAFD-4B6B-A881-9D7EA940E46F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Extensions_1.0-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 06d8fa9355d5dc9054a833566a4c126377a5162e..69a35dfb329bcde40179d6bc8cfc8c3ac5fed31a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{53C6EE8D-8590-4805-B016-FD9C8E360A21}</ProjectGuid>\r
+    <ProjectGuid>{00562AD9-16A9-4A82-8236-9FFCC0FC9B26}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Http.SelfHost-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http\System.Net.Http-net_4_5.csproj">\r
-      <Project>{46CFCFD7-D328-4896-86F2-215A6577548C}</Project>\r
+      <Project>{BE71D058-35CB-4623-AA66-631C7EB5F139}</Project>\r
       <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ServiceModel\System.ServiceModel-net_4_5.csproj">\r
-      <Project>{CF2A0D90-EB73-49B1-900B-BCE40990B404}</Project>\r
+      <Project>{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}</Project>\r
       <Name>System.ServiceModel\System.ServiceModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.IdentityModel\System.IdentityModel-net_4_5.csproj">\r
-      <Project>{1B9AFE07-4230-4DE0-8A9F-C277179098FF}</Project>\r
+      <Project>{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}</Project>\r
       <Name>System.IdentityModel\System.IdentityModel-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Http\System.Web.Http-net_4_5.csproj">\r
-      <Project>{0410DC95-B046-49E0-954A-A2CDA3368100}</Project>\r
+      <Project>{9E5FB1DD-0691-445E-8048-C90981B6948D}</Project>\r
       <Name>System.Web.Http\System.Web.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5.csproj">\r
-      <Project>{23304250-6657-44F1-851B-8EF6C5A9CEF7}</Project>\r
+      <Project>{9BDDA23D-1ABF-477A-AAA6-CD489033208E}</Project>\r
       <Name>System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 73c06cf52ff1d4404f930bcb352e9f04234a2067..e816c780f6e425b73b668410a103468ae9bf5a8d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0410DC95-B046-49E0-954A-A2CDA3368100}</ProjectGuid>\r
+    <ProjectGuid>{9E5FB1DD-0691-445E-8048-C90981B6948D}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Http-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http\System.Net.Http-net_4_5.csproj">\r
-      <Project>{46CFCFD7-D328-4896-86F2-215A6577548C}</Project>\r
+      <Project>{BE71D058-35CB-4623-AA66-631C7EB5F139}</Project>\r
       <Name>System.Net.Http\System.Net.Http-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5.csproj">\r
-      <Project>{23304250-6657-44F1-851B-8EF6C5A9CEF7}</Project>\r
+      <Project>{9BDDA23D-1ABF-477A-AAA6-CD489033208E}</Project>\r
       <Name>System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj">\r
-      <Project>{8645A982-AA1E-48CB-B996-7FCC4F8703CE}</Project>\r
+      <Project>{C18ABE89-33D2-4780-93BE-AB89B8187581}</Project>\r
       <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj">\r
-      <Project>{088AB4AB-1904-4365-A74B-F7557A034945}</Project>\r
+      <Project>{E90544E8-C031-49EE-BB6F-8688382E8618}</Project>\r
       <Name>System.Runtime.Serialization\System.Runtime.Serialization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 27545adb94bcc3b8ed8a28aa47dd1de810cbeb2b..e19687971cac2c3b40bab5ad589f1ff39889cec6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{CAEA3F98-8317-4C90-B410-8725DD165431}</ProjectGuid>\r
+    <ProjectGuid>{0C7AD733-5388-4160-821B-D9817B39AEF3}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Mvc-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_2_0.csproj">\r
-      <Project>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</Project>\r
+      <Project>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions_1.0\System.Web.Extensions_1.0-net_2_0.csproj">\r
-      <Project>{B12E9FE0-4ED0-4424-ABE4-E9CDC77B0EED}</Project>\r
+      <Project>{37C7D569-AAFD-4B6B-A881-9D7EA940E46F}</Project>\r
       <Name>System.Web.Extensions_1.0\System.Web.Extensions_1.0-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c137b8a1626dad0db21d10910cbbbcdf4cf32616..70438dd397211dab6bb3fd39d4adbd5a3c556fc5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0C35DE8D-4460-4327-B345-0E9789CEF27F}</ProjectGuid>\r
+    <ProjectGuid>{BA2241DF-BD0E-470F-BF2A-AFD61A5798A6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Mvc2-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_2_0.csproj">\r
-      <Project>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</Project>\r
+      <Project>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_2_0.csproj">\r
-      <Project>{F0188B31-4CA0-41B2-8554-42C84D351D5E}</Project>\r
+      <Project>{2081F80F-9D8D-4D22-AF56-367D7BAC61D6}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0.csproj">\r
-      <Project>{B38D3949-9075-4450-8101-0D26C6B2CC4D}</Project>\r
+      <Project>{E3E1BF16-7D12-4CCD-85D0-B542F0AC3442}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_2_0.csproj">\r
-      <Project>{8D8EF41B-C5E7-4905-9D89-08EEA9DA7C05}</Project>\r
+      <Project>{CBDA8DA6-4A33-419C-9150-98EA5B3BE543}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 681e457127f8facb883d0c7598336127d6ac1d8c..5afda5b830978ad1ab5e7772a5a88b466e692fbf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F657C9E0-BBA5-437A-AAF9-206F26BE487F}</ProjectGuid>\r
+    <ProjectGuid>{68C09E47-FC3E-4337-89B7-25E5A7320852}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Mvc2-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_0.csproj">\r
-      <Project>{77AEBAA7-06AF-46E4-9BAB-E6AF85D20A8E}</Project>\r
+      <Project>{3DD9CA2F-A471-4BBB-867C-BE15EF24420F}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_0.csproj">\r
-      <Project>{70CE3BCD-3BFA-42A9-AC82-C2F3B2CAC59B}</Project>\r
+      <Project>{B98941D0-3811-41A0-B07B-E48D4A7765DF}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0.csproj">\r
-      <Project>{420D9BE2-8DD3-41E6-A115-6BFFA4B6EB04}</Project>\r
+      <Project>{F74623F8-5517-4015-8F3A-EB04E926E720}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_0.csproj">\r
-      <Project>{1ED806F6-FADE-43A4-B5FA-D3AD8281B326}</Project>\r
+      <Project>{1935FCB6-165D-4043-B048-BCEDD04F86B8}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7c5f98d34c67d8195dfb4915ed5814cde4f5a685..a7e70816442045ec7c404d1c68a83d28ecd1b23b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5CC8078D-0307-481D-AAAE-EE62ED123A61}</ProjectGuid>\r
+    <ProjectGuid>{C4643395-6B5B-47D9-BD50-9F6804478AFD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Mvc2-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</Project>\r
+      <Project>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 18bb1819870888e2c3bb52a5f71a21bc92ce247d..fbc391b07e9eaa19ba21ce23725b98fc78797d8e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5797142C-571A-4B83-B837-0821D077236A}</ProjectGuid>\r
+    <ProjectGuid>{3DB9B990-AE64-4B64-8A75-3797970AF64A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Mvc3-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5.csproj">\r
-      <Project>{ADFD4824-AEDB-445C-9B52-D0E0A9318B87}</Project>\r
+      <Project>{4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}</Project>\r
       <Name>Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</Project>\r
+      <Project>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Extensions\System.Web.Extensions-net_4_5.csproj">\r
-      <Project>{88F3463D-A057-4531-AEE8-802F5B6342E9}</Project>\r
+      <Project>{74E571CD-0506-4A52-B780-FDA9445675FB}</Project>\r
       <Name>System.Web.Extensions\System.Web.Extensions-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj">\r
-      <Project>{8645A982-AA1E-48CB-B996-7FCC4F8703CE}</Project>\r
+      <Project>{C18ABE89-33D2-4780-93BE-AB89B8187581}</Project>\r
       <Name>System.Runtime.Caching\System.Runtime.Caching-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Razor\System.Web.Razor-net_4_5.csproj">\r
-      <Project>{2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}</Project>\r
+      <Project>{030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}</Project>\r
       <Name>System.Web.Razor\System.Web.Razor-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.WebPages.Razor\System.Web.WebPages.Razor-net_4_5.csproj">\r
-      <Project>{D8E8B136-69B6-461F-872A-9C0F12272D53}</Project>\r
+      <Project>{7A8432CA-9024-4496-A751-18AEFC8932E7}</Project>\r
       <Name>System.Web.WebPages.Razor\System.Web.WebPages.Razor-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.WebPages\System.Web.WebPages-net_4_5.csproj">\r
-      <Project>{4A2FA66A-594D-4A7B-9943-B7956C46D856}</Project>\r
+      <Project>{E9421151-F425-415F-8D32-5F28974E3C72}</Project>\r
       <Name>System.Web.WebPages\System.Web.WebPages-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fa37c610b689f93901c3853f9a98eb71020d91e2..375ba6d363416e9b8d0c09e25aa0abb3a4d738bc 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}</ProjectGuid>\r
+    <ProjectGuid>{030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Razor-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 31ae94f94ff73dc0d89ff3f4e173d0a54e33e268..e930e3dd78afb33878b2ac34bd7461165dd52c67 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</ProjectGuid>\r
+    <ProjectGuid>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ac742ec83eb06c35af5b88ae55198fa9c82e6f3c..8adf86dcf1a91901228cf9a0b52f13f2073a3603 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{77AEBAA7-06AF-46E4-9BAB-E6AF85D20A8E}</ProjectGuid>\r
+    <ProjectGuid>{3DD9CA2F-A471-4BBB-867C-BE15EF24420F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2cdfe60ff5906ae848ae9c01202f96f80d0bfcc8..451460f6f034fce437c25ccc707f475444d45609 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</ProjectGuid>\r
+    <ProjectGuid>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 87821a135ee6ff8bd1a93d6810932551b93e05fb..001e200a2bd2368270a25da0d04410e0f61aa8c0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7929EF81-CB30-43E8-9FA4-6CA6E47D9CA3}</ProjectGuid>\r
+    <ProjectGuid>{F7B47B0F-E690-4BFD-BBD2-5305157D99F8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_2_0.csproj">\r
-      <Project>{99262D2F-6F5C-4BB4-A309-741AB0AE9C41}</Project>\r
+      <Project>{20D4E13A-7CC1-431F-BE4F-BB4BABB657E9}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-2.csproj">\r
-      <Project>{713A0503-B460-40C0-BD91-DE6CDBB45671}</Project>\r
+      <Project>{4F179720-1E19-46E8-A55E-010C20701EFF}</Project>\r
       <Name>System.Web\System.Web-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_2_0.csproj">\r
-      <Project>{1A9DDBFB-B69E-4E9E-A4C1-8E5CAEC48925}</Project>\r
+      <Project>{34AE4A66-1C6E-41EB-BCD7-7541A021FA19}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d658cb97b27f87b90963076bac6306b2743e2525..c9600ea5ee70121820ad644dafcbc017bbba1c97 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9028D9D6-3F54-4B5A-8A1F-AF25E365F443}</ProjectGuid>\r
+    <ProjectGuid>{0819E4EF-4AE1-4FDC-AFB2-50F6857B89CE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_0.csproj">\r
-      <Project>{77AEBAA7-06AF-46E4-9BAB-E6AF85D20A8E}</Project>\r
+      <Project>{3DD9CA2F-A471-4BBB-867C-BE15EF24420F}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-2.csproj">\r
-      <Project>{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}</Project>\r
+      <Project>{C410B7A1-AC09-4CBB-9F20-AC9473811B40}</Project>\r
       <Name>System.Web\System.Web-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_0.csproj">\r
-      <Project>{4C775D7D-F2B3-4A1F-B74B-CEFDB72959A5}</Project>\r
+      <Project>{3ED0B5B2-9897-4427-9510-BBC309B60C35}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1d58a45132008cf851238e1b7581db312d124939..8ffd07dbf5dfe3e69225023c6bb2e6ad2c2c1422 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0A2B6514-DC20-4DC3-A976-622FEA39D4EB}</ProjectGuid>\r
+    <ProjectGuid>{8E750A9D-7421-408C-B859-62A8C92D3FE2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Routing-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Routing\System.Web.Routing-net_4_5.csproj">\r
-      <Project>{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}</Project>\r
+      <Project>{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}</Project>\r
       <Name>System.Web.Routing\System.Web.Routing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj">\r
-      <Project>{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}</Project>\r
+      <Project>{C035D4D2-D112-49A6-87B8-E47469BBDA4F}</Project>\r
       <Name>System.Web.Abstractions\System.Web.Abstractions-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5c8b07a135861a8c880cad3610128f2af3408336..ea321dc46924c4bc5e52cc85df1d70b91cc6e94a 100644 (file)
@@ -32,8 +32,11 @@ using System;
 using System.Collections.Generic;
 using System.Security.Permissions;
 using System.Text;
+using System.Text.RegularExpressions;
 using System.Web;
 using System.Web.Util;
+using System.Diagnostics;
+using System.Globalization;
 
 namespace System.Web.Routing
 {
@@ -207,6 +210,61 @@ namespace System.Web.Routing
                        return dict;
                }
 
+               static bool ParametersAreEqual (object a, object b)
+               {
+                       if (a is string && b is string) {
+                               return String.Equals (a as string, b as string, StringComparison.OrdinalIgnoreCase);
+                       } else {
+                               // Parameter may be a boxed value type, need to use .Equals() for comparison
+                               return object.Equals (a, b);
+                       }
+               }
+
+               static bool ParameterIsNonEmpty (object param)
+               {
+                       if (param is string)
+                               return !string.IsNullOrEmpty (param as string);
+
+                       return param != null;
+               }
+
+               bool IsParameterRequired (string parameterName, RouteValueDictionary defaultValues, out object defaultValue)
+               {
+                       foreach (var token in tokens) {
+                               if (token == null)
+                                       continue;
+
+                               if (string.Equals (token.Name, parameterName, StringComparison.OrdinalIgnoreCase)) {
+                                       if (token.Type == PatternTokenType.CatchAll) {
+                                               defaultValue = null;
+                                               return false;
+                                       }
+                               }
+                       }
+
+                       if (defaultValues == null)
+                               throw new ArgumentNullException ("defaultValues is null?!");
+
+                       return !defaultValues.TryGetValue (parameterName, out defaultValue);
+               }
+
+               static string EscapeReservedCharacters (Match m)
+               {
+                       if (m == null)
+                               throw new ArgumentNullException("m");
+
+                       return Uri.HexEscape (m.Value[0]);
+               }
+
+               static string UriEncode (string str)
+               {
+                       if (string.IsNullOrEmpty (str))
+                               return str;
+
+                       string escape = Uri.EscapeUriString (str);
+                       return Regex.Replace (escape, "([#?])", new MatchEvaluator (EscapeReservedCharacters));
+               }
+
                bool MatchSegment (int segIndex, int argsCount, string[] argSegs, List <PatternToken> tokens, RouteValueDictionary ret)
                {
                        string pathSegment = argSegs [segIndex];
@@ -373,180 +431,290 @@ namespace System.Web.Routing
                                return null;
 
                        RouteData routeData = requestContext.RouteData;
-                       RouteValueDictionary defaultValues = route != null ? route.Defaults : null;
-                       RouteValueDictionary ambientValues = routeData.Values;
-
-                       if (defaultValues != null && defaultValues.Count == 0)
-                               defaultValues = null;
-                       if (ambientValues != null && ambientValues.Count == 0)
-                               ambientValues = null;
-                       if (userValues != null && userValues.Count == 0)
-                               userValues = null;
-
-                       // Check URL parameters
-                       // It is allowed to take ambient values for required parameters if:
-                       //
-                       //   - there are no default values provided
-                       //   - the default values dictionary contains at least one required
-                       //     parameter value
-                       //
-                       bool canTakeFromAmbient;
-                       if (defaultValues == null)
-                               canTakeFromAmbient = true;
-                       else {
-                               canTakeFromAmbient = false;
-                               foreach (KeyValuePair <string, bool> de in parameterNames) {
-                                       if (defaultValues.ContainsKey (de.Key)) {
-                                               canTakeFromAmbient = true;
+                       var currentValues = routeData.Values ?? new RouteValueDictionary ();
+                       var values = userValues ?? new RouteValueDictionary ();
+                       var defaultValues = (route != null ? route.Defaults : null) ?? new RouteValueDictionary ();
+
+                       // The set of values we should be using when generating the URL in this route
+                       var acceptedValues = new RouteValueDictionary ();
+
+                       // Keep track of which new values have been used
+                       HashSet<string> unusedNewValues = new HashSet<string> (values.Keys, StringComparer.OrdinalIgnoreCase);
+
+                       // This route building logic is based on System.Web.Http's Routing code (which is Apache Licensed by MS)
+                       // and which can be found at mono's external/aspnetwebstack/src/System.Web.Http/Routing/HttpParsedRoute.cs
+                       // Hopefully this will ensure a much higher compatiblity with MS.NET's System.Web.Routing logic. (pruiz)
+
+                       #region Step 1: Get the list of values we're going to use to match and generate this URL
+                       // Find out which entries in the URL are valid for the URL we want to generate.
+                       // If the URL had ordered parameters a="1", b="2", c="3" and the new values
+                       // specified that b="9", then we need to invalidate everything after it. The new
+                       // values should then be a="1", b="9", c=<no value>.
+                       foreach (var item in parameterNames) {
+                               var parameterName = item.Key;
+
+                               object newParameterValue;
+                               bool hasNewParameterValue = values.TryGetValue (parameterName, out newParameterValue);
+                               if (hasNewParameterValue) {
+                                       unusedNewValues.Remove(parameterName);
+                               }
+
+                               object currentParameterValue;
+                               bool hasCurrentParameterValue = currentValues.TryGetValue (parameterName, out currentParameterValue);
+
+                               if (hasNewParameterValue && hasCurrentParameterValue) {
+                                       if (!ParametersAreEqual (currentParameterValue, newParameterValue)) {
+                                               // Stop copying current values when we find one that doesn't match
                                                break;
                                        }
                                }
-                       }
-                       
-                       bool allMustBeInUserValues = false;
-                       foreach (KeyValuePair <string, bool> de in parameterNames) {
-                               string parameterName = de.Key;
-                               // Is the parameter required?
-                               if (defaultValues == null || !defaultValues.ContainsKey (parameterName)) {
-                                       // Yes, it is required (no value in defaults)
-                                       // Has the user provided value for it?
-                                       if (userValues == null || !userValues.ContainsKey (parameterName)) {
-                                               if (allMustBeInUserValues)
-                                                       return null; // partial override => no match
-                                               
-                                               if (!canTakeFromAmbient || ambientValues == null || !ambientValues.ContainsKey (parameterName))
-                                                       return null; // no value provided => no match
-                                       } else if (canTakeFromAmbient)
-                                               allMustBeInUserValues = true;
+
+                               // If the parameter is a match, add it to the list of values we will use for URL generation
+                               if (hasNewParameterValue) {
+                                       if (ParameterIsNonEmpty (newParameterValue)) {
+                                               acceptedValues.Add (parameterName, newParameterValue);
+                                       }
+                               }
+                               else {
+                                       if (hasCurrentParameterValue) {
+                                               acceptedValues.Add (parameterName, currentParameterValue);
+                                       }
                                }
                        }
 
-                       // Check for non-url parameters
-                       if (defaultValues != null) {
-                               foreach (var de in defaultValues) {
-                                       string parameterName = de.Key;
-                                       
-                                       if (parameterNames.ContainsKey (parameterName))
-                                               continue;
-
-                                       object parameterValue = null;
-                                       // Has the user specified value for this parameter and, if
-                                       // yes, is it the same as the one in defaults?
-                                       if (userValues != null && userValues.TryGetValue (parameterName, out parameterValue)) {
-                                               object defaultValue = de.Value;
-                                               if (defaultValue is string && parameterValue is string) {
-                                                       if (String.Compare ((string)defaultValue, (string)parameterValue, StringComparison.OrdinalIgnoreCase) != 0)
-                                                               return null; // different value => no match
-                                               // Parameter may be a boxed value type, need to use .Equals() for comparison
-                                               } else if (!object.Equals (parameterValue, defaultValue))
-                                                       return null; // different value => no match
-                                       }
+                       // Add all remaining new values to the list of values we will use for URL generation
+                       foreach (var newValue in values) {
+                               if (ParameterIsNonEmpty (newValue.Value) && !acceptedValues.ContainsKey (newValue.Key)) {
+                                       acceptedValues.Add (newValue.Key, newValue.Value);
                                }
                        }
 
-                       // We're a match, generate the URL
-                       var ret = new StringBuilder ();
-                       usedValues = new RouteValueDictionary ();
-                       bool canTrim = true;
-                       
-                       // Going in reverse order, so that we can trim without much ado
-                       int tokensCount = tokens.Length - 1;
-                       for (int i = tokensCount; i >= 0; i--) {
-                               PatternToken token = tokens [i];
-                               if (token == null) {
-                                       if (i < tokensCount && ret.Length > 0 && ret [0] != '/')
-                                               ret.Insert (0, '/');
-                                       continue;
+                       // Add all current values that aren't in the URL at all
+                       foreach (var currentValue in currentValues) {
+                               if (!acceptedValues.ContainsKey (currentValue.Key) && !parameterNames.ContainsKey (currentValue.Key)) {
+                                       acceptedValues.Add (currentValue.Key, currentValue.Value);
                                }
-                               
-                               if (token.Type == PatternTokenType.Literal) {
-                                       ret.Insert (0, token.Name);
-                                       continue;
+                       }
+
+                       // Add all remaining default values from the route to the list of values we will use for URL generation
+                       foreach (var item in parameterNames) {
+                               object defaultValue;
+                               if (!acceptedValues.ContainsKey (item.Key) && !IsParameterRequired (item.Key, defaultValues, out defaultValue)) {
+                                       // Add the default value only if there isn't already a new value for it and
+                                       // only if it actually has a default value, which we determine based on whether
+                                       // the parameter value is required.
+                                       acceptedValues.Add (item.Key, defaultValue);
                                }
+                       }
 
-                               string parameterName = token.Name;
-                               object tokenValue;
+                       // All required parameters in this URL must have values from somewhere (i.e. the accepted values)
+                       foreach (var item in parameterNames) {
+                               object defaultValue;
+                               if (IsParameterRequired (item.Key, defaultValues, out defaultValue) && !acceptedValues.ContainsKey (item.Key)) {
+                                       // If the route parameter value is required that means there's
+                                       // no default value, so if there wasn't a new value for it
+                                       // either, this route won't match.
+                                       return null;
+                               }
+                       }
 
-#if SYSTEMCORE_DEP
-                               if (userValues.GetValue (parameterName, out tokenValue)) {
-                                       if (tokenValue != null)
-                                               usedValues.Add (parameterName, tokenValue.ToString ());
+                       // All other default values must match if they are explicitly defined in the new values
+                       var otherDefaultValues = new RouteValueDictionary (defaultValues);
+                       foreach (var item in parameterNames) {
+                               otherDefaultValues.Remove (item.Key);
+                       }
 
-                                       if (!defaultValues.Has (parameterName, tokenValue)) {
-                                               canTrim = false;
-                                               if (tokenValue != null)
-                                                       ret.Insert (0, tokenValue.ToString ());
-                                               continue;
+                       foreach (var defaultValue in otherDefaultValues) {
+                               object value;
+                               if (values.TryGetValue (defaultValue.Key, out value)) {
+                                       unusedNewValues.Remove (defaultValue.Key);
+                                       if (!ParametersAreEqual (value, defaultValue.Value)) {
+                                               // If there is a non-parameterized value in the route and there is a
+                                               // new value for it and it doesn't match, this route won't match.
+                                               return null;
                                        }
-
-                                       if (!canTrim && tokenValue != null)
-                                               ret.Insert (0, tokenValue.ToString ());
-
-                                       continue;
                                }
+                       }
+                       #endregion
 
-                               if (defaultValues.GetValue (parameterName, out tokenValue)) {
-                                       object ambientTokenValue;
-                                       if (ambientValues.GetValue (parameterName, out ambientTokenValue))
-                                               tokenValue = ambientTokenValue;
+                       #region Step 2: If the route is a match generate the appropriate URL
 
-                                       if (!canTrim && tokenValue != null)
-                                               ret.Insert (0, tokenValue.ToString ());
+                       var uri = new StringBuilder ();
+                       var pendingParts = new StringBuilder ();
+                       var pendingPartsAreAllSafe = false;
+                       bool blockAllUriAppends = false;
+                       var allSegments = new List<PatternSegment?> ();
 
-                                       usedValues.Add (parameterName, tokenValue.ToString ());
-                                       continue;
-                               }
+                       // Build a list of segments plus separators we can use as template.
+                       foreach (var segment in segments) {
+                               if (allSegments.Count > 0)
+                                       allSegments.Add (null); // separator exposed as null.
+                               allSegments.Add (segment);
+                       }
 
-                               canTrim = false;
-                               if (ambientValues.GetValue (parameterName, out tokenValue)) {
-                                       if (tokenValue != null)
-                                       {
-                                               ret.Insert (0, tokenValue.ToString ());
-                                               usedValues.Add (parameterName, tokenValue.ToString ());
+                       // Finally loop thru al segment-templates building the actual uri.
+                       foreach (var item in allSegments) {
+                               var segment = item.GetValueOrDefault ();
+
+                               // If segment is a separator..
+                               if (item == null) {
+                                       if (pendingPartsAreAllSafe) {
+                                               // Accept
+                                               if (pendingParts.Length > 0) {
+                                                       if (blockAllUriAppends)
+                                                               return null;
+
+                                                       // Append any pending literals to the URL
+                                                       uri.Append (pendingParts.ToString ());
+                                                       pendingParts.Length = 0;
+                                               }
                                        }
-                                       continue;
-                               }
+                                       pendingPartsAreAllSafe = false;
+
+                                       // Guard against appending multiple separators for empty segments
+                                       if (pendingParts.Length > 0 && pendingParts[pendingParts.Length - 1] == '/') {
+                                               // Dev10 676725: Route should not be matched if that causes mismatched tokens
+                                               // Dev11 86819: We will allow empty matches if all subsequent segments are null
+                                               if (blockAllUriAppends)
+                                                       return null;
+
+                                               // Append any pending literals to the URI (without the trailing slash) and prevent any future appends
+                                               uri.Append(pendingParts.ToString (0, pendingParts.Length - 1));
+                                               pendingParts.Length = 0;
+                                       } else {
+                                               pendingParts.Append ("/");
+                                       }
+#if false
+                               } else if (segment.AllLiteral) {
+                                       // Spezial (optimized) case: all elements of segment are literals.
+                                       pendingPartsAreAllSafe = true;
+                                       foreach (var tk in segment.Tokens)
+                                               pendingParts.Append (tk.Name);
 #endif
-                       }
+                               } else {
+                                       // Segments are treated as all-or-none. We should never output a partial segment.
+                                       // If we add any subsegment of this segment to the generated URL, we have to add
+                                       // the complete match. For example, if the subsegment is "{p1}-{p2}.xml" and we
+                                       // used a value for {p1}, we have to output the entire segment up to the next "/".
+                                       // Otherwise we could end up with the partial segment "v1" instead of the entire
+                                       // segment "v1-v2.xml".
+                                       bool addedAnySubsegments = false;
+
+                                       foreach (var token in segment.Tokens) {
+                                               if (token.Type == PatternTokenType.Literal) {
+                                                       // If it's a literal we hold on to it until we are sure we need to add it
+                                                       pendingPartsAreAllSafe = true;
+                                                       pendingParts.Append (token.Name);
+                                               } else {
+                                                       if (token.Type == PatternTokenType.Standard) {
+                                                               if (pendingPartsAreAllSafe) {
+                                                                       // Accept
+                                                                       if (pendingParts.Length > 0) {
+                                                                               if (blockAllUriAppends)
+                                                                                       return null;
+
+                                                                               // Append any pending literals to the URL
+                                                                               uri.Append (pendingParts.ToString ());
+                                                                               pendingParts.Length = 0;
+
+                                                                               addedAnySubsegments = true;
+                                                                       }
+                                                               }
+                                                               pendingPartsAreAllSafe = false;
+
+                                                               // If it's a parameter, get its value
+                                                               object acceptedParameterValue;
+                                                               bool hasAcceptedParameterValue = acceptedValues.TryGetValue (token.Name, out acceptedParameterValue);
+                                                               if (hasAcceptedParameterValue)
+                                                                       unusedNewValues.Remove (token.Name);
+
+                                                               object defaultParameterValue;
+                                                               defaultValues.TryGetValue (token.Name, out defaultParameterValue);
+
+                                                               if (ParametersAreEqual (acceptedParameterValue, defaultParameterValue)) {
+                                                                       // If the accepted value is the same as the default value, mark it as pending since
+                                                                       // we won't necessarily add it to the URL we generate.
+                                                                       pendingParts.Append (Convert.ToString (acceptedParameterValue, CultureInfo.InvariantCulture));
+                                                               } else {
+                                                                       if (blockAllUriAppends)
+                                                                               return null;
+
+                                                                       // Add the new part to the URL as well as any pending parts
+                                                                       if (pendingParts.Length > 0) {
+                                                                               // Append any pending literals to the URL
+                                                                               uri.Append (pendingParts.ToString ());
+                                                                               pendingParts.Length = 0;
+                                                                       }
+                                                                       uri.Append (Convert.ToString (acceptedParameterValue, CultureInfo.InvariantCulture));
+
+                                                                       addedAnySubsegments = true;
+                                                               }
+                                                       } else {
+                                                               Debug.Fail ("Invalid path subsegment type");
+                                                       }
+                                               }
+                                       }
 
-                       // All the values specified in userValues that aren't part of the original
-                       // URL, the constraints or defaults collections are treated as overflow
-                       // values - they are appended as query parameters to the URL
-                       if (userValues != null) {
-                               bool first = true;
-                               foreach (var de in userValues) {
-                                       string parameterName = de.Key;
+                                       if (addedAnySubsegments) {
+                                               // See comment above about why we add the pending parts
+                                               if (pendingParts.Length > 0) {
+                                                       if (blockAllUriAppends)
+                                                               return null;
 
-#if SYSTEMCORE_DEP
-                                       if (parameterNames.ContainsKey (parameterName) || defaultValues.Has (parameterName) || constraints.Has (parameterName))
-                                               continue;
-#endif
+                                                       // Append any pending literals to the URL
+                                                       uri.Append (pendingParts.ToString ());
+                                                       pendingParts.Length = 0;
+                                               }
+                                       }
+                               }
+                       }
 
-                                       object parameterValue = de.Value;
-                                       if (parameterValue == null)
-                                               continue;
+                       if (pendingPartsAreAllSafe) {
+                               // Accept
+                               if (pendingParts.Length > 0) {
+                                       if (blockAllUriAppends)
+                                               return null;
 
-                                       var parameterValueAsString = parameterValue as string;
-                                       if (parameterValueAsString != null && parameterValueAsString.Length == 0)
-                                               continue;
-                                       
-                                       if (first) {
-                                               ret.Append ('?');
-                                               first = false;
-                                       } else
-                                               ret.Append ('&');
+                                       // Append any pending literals to the URI
+                                       uri.Append (pendingParts.ToString ());
+                               }
+                       }
 
-                                       
-                                       ret.Append (Uri.EscapeDataString (parameterName));
-                                       ret.Append ('=');
-                                       if (parameterValue != null)
-                                               ret.Append (Uri.EscapeDataString (de.Value.ToString ()));
+                       // Process constraints keys
+                       if (constraints != null) {
+                               // If there are any constraints, mark all the keys as being used so that we don't
+                               // generate query string items for custom constraints that don't appear as parameters
+                               // in the URI format.
+                               foreach (var constraintsItem in constraints) {
+                                       unusedNewValues.Remove (constraintsItem.Key);
+                               }
+                       }
 
-                                       usedValues.Add (parameterName, de.Value.ToString ());
+                       // Encode the URI before we append the query string, otherwise we would double encode the query string
+                       var encodedUri = new StringBuilder ();
+                       encodedUri.Append (UriEncode (uri.ToString ()));
+                       uri = encodedUri;
+
+                       // Add remaining new values as query string parameters to the URI
+                       if (unusedNewValues.Count > 0) {
+                               // Generate the query string
+                               bool firstParam = true;
+                               foreach (string unusedNewValue in unusedNewValues) {
+                                       object value;
+                                       if (acceptedValues.TryGetValue (unusedNewValue, out value)) {
+                                               uri.Append (firstParam ? '?' : '&');
+                                               firstParam = false;
+                                               uri.Append (Uri.EscapeDataString (unusedNewValue));
+                                               uri.Append ('=');
+                                               uri.Append (Uri.EscapeDataString (Convert.ToString (value, CultureInfo.InvariantCulture)));
+                                       }
                                }
                        }
-                       
-                       return ret.ToString ();
+
+                       #endregion
+
+                       usedValues = acceptedValues;
+                       return uri.ToString();
                }
        }
 }
index 32b0ba9705a080ee98cf0a91f65e00a1e024543d..aeb02c319b2e0a68a9215c39e016182769fcf419 100644 (file)
@@ -32,6 +32,7 @@ using System.Runtime.CompilerServices;
 using System.Security.Permissions;
 using System.Text.RegularExpressions;
 using System.Web;
+using System.Globalization;
 
 namespace System.Web.Routing
 {
@@ -163,13 +164,15 @@ namespace System.Web.Routing
 
                        string s = constraint as string;
                        if (s != null) {
-                               string v;
+                               string v = null;
                                object o;
 
+                               // NOTE: If constraint was not an IRouteConstraint, is is asumed
+                               // to be an object 'convertible' to string, or at least this is how
+                               // ASP.NET seems to work by the tests i've done latelly. (pruiz)
+
                                if (values != null && values.TryGetValue (parameterName, out o))
-                                       v = o as string;
-                               else
-                                       v = null;
+                                       v = Convert.ToString (o, CultureInfo.InvariantCulture);
 
                                if (!String.IsNullOrEmpty (v))
                                        return MatchConstraintRegex (v, s);
@@ -184,7 +187,7 @@ namespace System.Web.Routing
                                        if (!rdValues.TryGetValue (parameterName, out o))
                                                return false;
 
-                                       v = o as string;
+                                       v = Convert.ToString (o, CultureInfo.InvariantCulture);
                                        if (String.IsNullOrEmpty (v))
                                                return false;
 
index 27328c67bec253bfde54ac62e8c122c4ab5607e7..e43117793c09901c16a3154e2aacde485204f269 100644 (file)
@@ -1116,6 +1116,53 @@ namespace MonoTests.System.Web.Routing
                        Assert.IsNull (vp);
                }
 
+               [Test]
+               public void GetVirtualPath4_2 ()
+               {
+                       var r = new MyRoute("{foo}/{bar}", new MyRouteHandler());
+                       var hc = new HttpContextStub2("~/x/y", String.Empty);
+                       var rd = r.GetRouteData(hc);
+
+                       // override a value incompletely
+                       var values = new RouteValueDictionary();
+                       values["bar"] = "A";
+
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+                       Assert.IsNotNull(vp);
+                       Assert.AreEqual("x/A", vp.VirtualPath);
+               }
+
+               [Test]
+               public void GetVirtualPath4Bis ()
+               {
+                       var r = new MyRoute("part/{foo}/{bar}", new MyRouteHandler());
+                       var hc = new HttpContextStub2("~/part/x/y", String.Empty);
+                       var rd = r.GetRouteData(hc);
+
+                       // override a value incompletely
+                       var values = new RouteValueDictionary();
+                       values["foo"] = "A";
+
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+                       Assert.IsNull(vp);
+               }
+
+               [Test]
+               public void GetVirtualPath4_2Bis ()
+               {
+                       var r = new MyRoute("part/{foo}/{bar}", new MyRouteHandler());
+                       var hc = new HttpContextStub2("~/part/x/y", String.Empty);
+                       var rd = r.GetRouteData(hc);
+
+                       // override a value incompletely
+                       var values = new RouteValueDictionary();
+                       values["bar"] = "A";
+
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+                       Assert.IsNotNull(vp);
+                       Assert.AreEqual("part/x/A", vp.VirtualPath);
+               }
+
                [Test]
                public void GetVirtualPath5 ()
                {
@@ -1491,6 +1538,191 @@ namespace MonoTests.System.Web.Routing
                        Assert.AreEqual ("HelloWorld", uppercase.VirtualPath, "#A6");
                }
 
+               [Test]
+               public void GetVirtualPath20 ()
+               {
+                       var r = new MyRoute("summary/{controller}/{id}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary(new { action = "Index" })
+                       };
+                       var hc = new HttpContextStub2("~/summary/kind/1/test", String.Empty);
+                       var rd = r.GetRouteData(hc);
+                       Assert.IsNotNull(rd, "#1");
+
+                       var values = new RouteValueDictionary(new { id = "2", action = "save" });
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#2");
+                       Assert.AreEqual("summary/kind/2/save", vp.VirtualPath, "#2-1");
+                       Assert.AreEqual(r, vp.Route, "#2-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#2-3");
+
+                       values = new RouteValueDictionary(new { id = "3", action = "save", extra = "stuff" });
+                       vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#3");
+                       Assert.AreEqual("summary/kind/3/save?extra=stuff", vp.VirtualPath, "#3-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#3-3");
+               }
+
+               [Test]
+               public void GetVirtualPath21 ()
+               {
+                       var r = new MyRoute("summary/{controller}/{id}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary(new { action = "Index" })
+                       };
+                       var hc = new HttpContextStub2("~/summary/kind/1/test", String.Empty);
+                       var rd = r.GetRouteData(hc);
+                       Assert.IsNotNull(rd, "#1");
+                       Assert.AreEqual("1", rd.Values["id"]);
+
+                       var values = new RouteValueDictionary(new { action = "save" });
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#2");
+                       Assert.AreEqual("summary/kind/1/save", vp.VirtualPath, "#2-1");
+                       Assert.AreEqual(r, vp.Route, "#2-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#2-3");
+
+                       values = new RouteValueDictionary(new { action = "save", extra = "stuff" });
+                       vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#3");
+                       Assert.AreEqual("summary/kind/1/save?extra=stuff", vp.VirtualPath, "#3-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#3-3");
+               }
+
+               [Test]
+               public void GetVirtualPath22 ()
+               {
+                       var r = new MyRoute("summary/{controller}/{id}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary(new { action = "Index" })
+                       };
+                       var hc = new HttpContextStub2("~/summary/kind/90941a4f-daf3-4c89-a6dc-83e8de4e3db5/test", String.Empty);
+                       var rd = r.GetRouteData(hc);
+                       Assert.IsNotNull(rd, "#0");
+                       Assert.AreEqual("90941a4f-daf3-4c89-a6dc-83e8de4e3db5", rd.Values["id"]);
+
+                       var values = new RouteValueDictionary(new { action = "Index" });
+                       var vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#1");
+                       Assert.AreEqual("summary/kind/90941a4f-daf3-4c89-a6dc-83e8de4e3db5", vp.VirtualPath, "#1-1");
+                       Assert.AreEqual(r, vp.Route, "#1-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#1-3");
+
+                       values = new RouteValueDictionary(new { action = "save" });
+                       vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#2");
+                       Assert.AreEqual("summary/kind/90941a4f-daf3-4c89-a6dc-83e8de4e3db5/save", vp.VirtualPath, "#2-1");
+                       Assert.AreEqual(r, vp.Route, "#2-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#2-3");
+
+                       values = new RouteValueDictionary(new { action = "save", extra = "stuff" });
+                       vp = r.GetVirtualPath(new RequestContext(hc, rd), values);
+
+                       Assert.IsNotNull(vp, "#3");
+                       Assert.AreEqual("summary/kind/90941a4f-daf3-4c89-a6dc-83e8de4e3db5/save?extra=stuff", vp.VirtualPath, "#3-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#3-3");
+               }
+
+               [Test]
+               public void GetVirtualPath23 ()
+               {
+                       var r0 = new MyRoute ("summary/{id}", new MyRouteHandler());
+                       var r1 = new MyRoute ("summary/{controller}/{id}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary (new { action = "Index" })
+                       };
+                       var hc = new HttpContextStub2 ("~/summary/90941a4f-daf3-4c89-a6dc-83e8de4e3db5", String.Empty);
+                       var rd = r0.GetRouteData (hc);
+                       Assert.IsNotNull (rd, "#0");
+                       Assert.AreEqual ("90941a4f-daf3-4c89-a6dc-83e8de4e3db5", rd.Values["id"]);
+
+                       var values = new RouteValueDictionary ()
+                       {
+                               { "controller", "SomeThing" },
+                               { "action", "Index" }
+                       };
+                       var vp = r1.GetVirtualPath (new RequestContext (hc, rd), values);
+
+                       Assert.IsNotNull (vp, "#1");
+                       Assert.AreEqual ("summary/SomeThing/90941a4f-daf3-4c89-a6dc-83e8de4e3db5", vp.VirtualPath, "#1-1");
+                       Assert.AreEqual (r1, vp.Route, "#1-2");
+                       Assert.AreEqual (0, vp.DataTokens.Count, "#1-3");
+               }
+
+               [Test]
+               public void GetVirtualPath24 ()
+               {
+                       var r = new MyRoute ("{controller}/{country}-{locale}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary (new { action = "Index", country = "us", locale = "en" })
+                       };
+                       var hc = new HttpContextStub2 ("~/login", String.Empty);
+                       var rd = r.GetRouteData (hc);
+                       Assert.IsNull (rd, "#0");
+
+                       var values = new RouteValueDictionary ()
+                       {
+                               { "controller", "SomeThing" },
+                               { "action", "Index" },
+                               { "country", "es" }
+                       };
+                       var vp = r.GetVirtualPath (new RequestContext (hc, new RouteData()), values);
+
+                       Assert.IsNotNull (vp, "#1");
+                       Assert.AreEqual ("SomeThing/es-en", vp.VirtualPath, "#1-1");
+                       Assert.AreEqual (r, vp.Route, "#1-2");
+                       Assert.AreEqual (0, vp.DataTokens.Count, "#1-3");
+
+                       // Case #2: pass no country, but locale as user value.
+                       values.Remove("country");
+                       values.Add("locale", "xx");
+                       vp = r.GetVirtualPath(new RequestContext(hc, new RouteData()), values);
+
+                       Assert.IsNotNull(vp, "#2");
+                       Assert.AreEqual("SomeThing/us-xx", vp.VirtualPath, "#2-1");
+                       Assert.AreEqual(r, vp.Route, "#2-2");
+                       Assert.AreEqual(0, vp.DataTokens.Count, "#2-3");
+
+                       // Case #3: make contry required.
+                       r = new MyRoute("{controller}/{country}-{locale}/{action}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary(new { action = "Index", locale = "en" })
+                       };
+                       vp = r.GetVirtualPath(new RequestContext(hc, new RouteData()), values);
+
+                       Assert.IsNull(vp, "#3");
+               }
+
+               [Test (Description="Xamarin Bug #13708")]
+               public void GetVirtualPath25()
+               {
+                       var r = new MyRoute("{year}/{month}/{slug}", new MyRouteHandler())
+                       {
+                               Defaults = new RouteValueDictionary(new { controller = "Blog", action = "View" }),
+                               Constraints = new RouteValueDictionary(new { year = @"\d{4}", month = @"\d{2}" }),
+                       };
+                       var hc = new HttpContextStub2("~/", String.Empty);
+                       var values = new RouteValueDictionary()
+                       {
+                               { "area", string.Empty },
+                               { "controller", "Blog" },
+                               { "action", "View" },
+                               { "year", 2013 }, // Year as an int, not a string
+                               { "month", "08" },
+                               { "slug", "hello-world" },
+                       };
+                       var vp = r.GetVirtualPath(new RequestContext(hc, new RouteData()), values);
+
+                       Assert.IsNotNull(vp, "#1");
+                       Assert.AreEqual("2013/08/hello-world", vp.VirtualPath, "#2");
+               }
+
                // Bug #500739
                [Test]
                public void RouteGetRequiredStringWithDefaults ()
index 5a13d8ec0214e6d50ecf03b2ca9d6455e0a08bb6..9a4d1cfed1fb46646aabccb6626032881d8d53f6 100644 (file)
@@ -3,7 +3,7 @@ SUBDIRS =
 include ../../build/rules.make
 
 LIBRARY = System.Web.Services.dll
-MOBILE := $(filter monotouch monodroid mobile, $(PROFILE))
+MOBILE := $(filter monotouch monodroid mobile mobile_static, $(PROFILE))
 ifdef MOBILE
 LIB_MCS_FLAGS = \
        -nowarn:649 -nowarn:169                 \
index 991baae611f5cb69e801976db890fb839a56d500..a2d9734f53af07208c9fae7363b73ce036ef4e4b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</ProjectGuid>\r
+    <ProjectGuid>{71444193-6B64-4C1B-A87D-580CCB548952}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0.csproj">\r
-      <Project>{F30781EC-D410-4A00-BD91-0971E37DE140}</Project>\r
+      <Project>{4796A339-E32F-476E-9D7D-69C771CD618C}</Project>\r
       <Name>System.Web\System.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 67fd635f98b2b100a222717884e6249c4e1c9e1c..cc4d99a28a3489c60688b68f6e35fe12bf5ac399 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</ProjectGuid>\r
+    <ProjectGuid>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0.csproj">\r
-      <Project>{39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}</Project>\r
+      <Project>{BAC369E3-E94E-4E5A-97FF-0CF696D07814}</Project>\r
       <Name>System.Web\System.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 431f96bb40fb687284a577d289515ad01d9a3500..4329f20fd4a140cefcc3386daecc23de1856f81c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</ProjectGuid>\r
+    <ProjectGuid>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5.csproj">\r
-      <Project>{3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}</Project>\r
+      <Project>{0B03F192-EC11-49E5-A7F6-E97C0D559E51}</Project>\r
       <Name>System.Web\System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 587754b104decba79d543c03669ad37c4b2eeb02..8f6f11db744a7ddd567893b3c7164002dd8120ff 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{973CA341-1810-47B6-9D02-E82306853252}</ProjectGuid>\r
+    <ProjectGuid>{16AAB3B7-6DB2-4531-961B-F995C2F2A852}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0.csproj">\r
-      <Project>{F30781EC-D410-4A00-BD91-0971E37DE140}</Project>\r
+      <Project>{4796A339-E32F-476E-9D7D-69C771CD618C}</Project>\r
       <Name>System.Web\System.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d53aa7a25b470bc0611a3f8cef3a9e6bb39fa8a5..537657a0faddb144133f6a9973ef3dbf2d607539 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3D61D05D-1D14-446E-AE72-E568B9812179}</ProjectGuid>\r
+    <ProjectGuid>{A24EEFB1-AEB7-450C-87AC-254A039DB5FF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0.csproj">\r
-      <Project>{39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}</Project>\r
+      <Project>{BAC369E3-E94E-4E5A-97FF-0CF696D07814}</Project>\r
       <Name>System.Web\System.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index dcbc4f25ff0ffbfcfa579d6c67490dab2f02b632..d1930135fa193dc5429c99b865cf11491c775f1f 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{10182EEF-2616-46BB-894E-6820BFA07D45}</ProjectGuid>\r
+    <ProjectGuid>{7DA0BC53-8555-4547-BAE6-BD72EF93B109}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,649,169,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.Services-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5.csproj">\r
-      <Project>{3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}</Project>\r
+      <Project>{0B03F192-EC11-49E5-A7F6-E97C0D559E51}</Project>\r
       <Name>System.Web\System.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 355da201604e9c78849f5e11c1dd1f2d57aca850..1b4e9e835606aafed90b7a22b9cb04a82177e12e 100644 (file)
@@ -53,7 +53,12 @@ namespace System.Web.Services.Description {
                }
 
                public Message this [string name] {
-                       get { return this [IndexOf ((Message) Table [name])]; }
+                       get {
+                               int index = IndexOf ((Message) Table [name]);
+                               if (index >= 0)
+                                       return this [index];
+                               return null;
+                       }
                }
 
                #endregion // Properties
diff --git a/mcs/class/System.Web.Services/mobile_static_System.Web.Services.dll.sources b/mcs/class/System.Web.Services/mobile_static_System.Web.Services.dll.sources
new file mode 100644 (file)
index 0000000..9e39dcc
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.Web.Services.dll.sources
index 460a6c2156c7184025078fb43469430f1749189d..daa1ea3a323e6dab789260d7e5540ff874009904 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{20363524-CE98-4FCB-8477-AF79DDC1A909}</ProjectGuid>\r
+    <ProjectGuid>{0089F43D-5A83-46A4-9299-A98B0A86A70A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.WebPages.Deployment-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5.csproj">\r
-      <Project>{ADFD4824-AEDB-445C-9B52-D0E0A9318B87}</Project>\r
+      <Project>{4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}</Project>\r
       <Name>Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index db92940653abe4a346d08c5e36cb5f2598cf2f77..58497ced78d481ad165afb4c316e7b1a0498c95e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{D8E8B136-69B6-461F-872A-9C0F12272D53}</ProjectGuid>\r
+    <ProjectGuid>{7A8432CA-9024-4496-A751-18AEFC8932E7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.WebPages.Razor-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.WebPages\System.Web.WebPages-net_4_5.csproj">\r
-      <Project>{4A2FA66A-594D-4A7B-9943-B7956C46D856}</Project>\r
+      <Project>{E9421151-F425-415F-8D32-5F28974E3C72}</Project>\r
       <Name>System.Web.WebPages\System.Web.WebPages-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Razor\System.Web.Razor-net_4_5.csproj">\r
-      <Project>{2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}</Project>\r
+      <Project>{030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}</Project>\r
       <Name>System.Web.Razor\System.Web.Razor-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index c273919519c7ee209d80cde98c3ce7abaef9d0ec..618f58a07e15ccec43234d520d26ce715c23f5a3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4A2FA66A-594D-4A7B-9943-B7956C46D856}</ProjectGuid>\r
+    <ProjectGuid>{E9421151-F425-415F-8D32-5F28974E3C72}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Web.WebPages-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{94E8FEFF-9695-4F77-A8AB-85370336FE0D}</Project>\r
+      <Project>{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5.csproj">\r
-      <Project>{ADFD4824-AEDB-445C-9B52-D0E0A9318B87}</Project>\r
+      <Project>{4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}</Project>\r
       <Name>Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj">\r
-      <Project>{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}</Project>\r
+      <Project>{64E625C0-AA4E-44DC-98F4-352D552F2EF8}</Project>\r
       <Name>System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data.Linq\System.Data.Linq-net_4_5.csproj">\r
-      <Project>{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}</Project>\r
+      <Project>{D5F1C909-8875-4D37-8CC1-30851258C594}</Project>\r
       <Name>System.Data.Linq\System.Data.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.WebPages.Deployment\System.Web.WebPages.Deployment-net_4_5.csproj">\r
-      <Project>{20363524-CE98-4FCB-8477-AF79DDC1A909}</Project>\r
+      <Project>{0089F43D-5A83-46A4-9299-A98B0A86A70A}</Project>\r
       <Name>System.Web.WebPages.Deployment\System.Web.WebPages.Deployment-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Razor\System.Web.Razor-net_4_5.csproj">\r
-      <Project>{2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}</Project>\r
+      <Project>{030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}</Project>\r
       <Name>System.Web.Razor\System.Web.Razor-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index bf2f8ad2cd409e3fc377c6d8eedb0a13bb2f1efd..365fb9cbe1faa91e0ea08b1d92ce3918b6a506fb 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F30781EC-D410-4A00-BD91-0971E37DE140}</ProjectGuid>\r
+    <ProjectGuid>{4796A339-E32F-476E-9D7D-69C771CD618C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-net_2_0</OutputPath>\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
+    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyValidation.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj">\r
-      <Project>{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}</Project>\r
+      <Project>{92E7A483-839B-4EFA-A77D-16C68F051941}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj">\r
-      <Project>{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}</Project>\r
+      <Project>{85526C39-79CA-40DB-940A-3C83DF30DF85}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0.csproj">\r
-      <Project>{60E307F3-5E95-42FF-9B41-3FB8AD664AB6}</Project>\r
+      <Project>{991C45A8-3B22-45BB-B688-DBF8BA835992}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Web.Services.dll">\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1a6861ddef2bcaf78979d8a5360dbc793b25c454..a8860030f32960ebdedf8e7219508166d248a7ee 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}</ProjectGuid>\r
+    <ProjectGuid>{BAC369E3-E94E-4E5A-97FF-0CF696D07814}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-net_4_0</OutputPath>\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
+    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj">\r
-      <Project>{801DF65A-F6B4-4D66-B415-9E8832E66F48}</Project>\r
+      <Project>{31465E05-7B4F-4209-8B9B-5F596A032D27}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj">\r
-      <Project>{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}</Project>\r
+      <Project>{562FC450-E53A-4CF5-AE5A-91973EBE5A28}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj">\r
-      <Project>{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}</Project>\r
+      <Project>{F26434C1-BA3D-41FB-B560-C009CB72B1B6}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj">\r
-      <Project>{5D580843-B172-4BF3-AABD-116A64020C1C}</Project>\r
+      <Project>{8EF189A4-B862-4825-9938-00658C43B534}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_2_0.csproj">\r
-      <Project>{517B1616-9AF6-4C66-9BB9-73369E8A4222}</Project>\r
+      <Project>{71444193-6B64-4C1B-A87D-580CCB548952}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Web\Mono.Web-net_2_0.csproj">\r
-      <Project>{4E0AB773-6BB3-4866-881F-B362A573C8DD}</Project>\r
+      <Project>{D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}</Project>\r
       <Name>Mono.Web\Mono.Web-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 96db60cdfbbff9a7fe92816281184e7254b9b153..40f005749997268690bc59bf6e9736e8f69cc140 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A945645C-6DF3-414E-B5F1-25DC35C95136}</ProjectGuid>\r
+    <ProjectGuid>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-net_4_5-1</OutputPath>\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
+    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
     <Compile Include="System.Web\InputFilterStream.cs" />\r
     <Compile Include="System.Web\IntPtrStream.cs" />\r
     <Compile Include="System.Web\IPartitionResolver.cs" />\r
+    <Compile Include="System.Web\MimeMapping.cs" />\r
     <Compile Include="System.Web\MimeTypes.cs" />\r
     <Compile Include="System.Web\NoParamsInvoker.cs" />\r
     <Compile Include="System.Web\OutputFilterStream.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Web\Mono.Web-net_4_5.csproj">\r
-      <Project>{ABD934FF-6F3A-40CB-85DB-98316F708226}</Project>\r
+      <Project>{82BD591A-1377-41BD-9B2C-1037574BB935}</Project>\r
       <Name>Mono.Web\Mono.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index d755c33488b9b0894a1bb1412874ebfb1c6da4f2..aa170c5e481c1a9fb0aaae9f9b69bb9544c9e5bf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</ProjectGuid>\r
+    <ProjectGuid>{93406A57-422B-4A7E-886A-B37F2E97DB78}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-net_4_5-2</OutputPath>\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
+    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
     <Compile Include="System.Web\InputFilterStream.cs" />\r
     <Compile Include="System.Web\IntPtrStream.cs" />\r
     <Compile Include="System.Web\IPartitionResolver.cs" />\r
+    <Compile Include="System.Web\MimeMapping.cs" />\r
     <Compile Include="System.Web\MimeTypes.cs" />\r
     <Compile Include="System.Web\NoParamsInvoker.cs" />\r
     <Compile Include="System.Web\OutputFilterStream.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Web\Mono.Web-net_4_5.csproj">\r
-      <Project>{ABD934FF-6F3A-40CB-85DB-98316F708226}</Project>\r
+      <Project>{82BD591A-1377-41BD-9B2C-1037574BB935}</Project>\r
       <Name>Mono.Web\Mono.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 175f925d94ce38272bb8c39b9d97d8caf1698297..b9c954aabc911735ae80b3eb10800091529c0a39 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}</ProjectGuid>\r
+    <ProjectGuid>{0B03F192-EC11-49E5-A7F6-E97C0D559E51}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-net_4_5</OutputPath>\r
     <Compile Include="System.Web.Configuration_2.0\IdentitySection.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\IRemoteWebConfigurationHostServer.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\LowerCaseStringConverter.cs" />\r
+    <Compile Include="System.Web.Configuration_2.0\LruCache.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyCompatibilityMode.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeyRegistryStorage.cs" />\r
     <Compile Include="System.Web.Configuration_2.0\MachineKeySection.cs" />\r
     <Compile Include="System.Web\InputFilterStream.cs" />\r
     <Compile Include="System.Web\IntPtrStream.cs" />\r
     <Compile Include="System.Web\IPartitionResolver.cs" />\r
+    <Compile Include="System.Web\MimeMapping.cs" />\r
     <Compile Include="System.Web\MimeTypes.cs" />\r
     <Compile Include="System.Web\NoParamsInvoker.cs" />\r
     <Compile Include="System.Web\OutputFilterStream.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_0.csproj">\r
-      <Project>{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}</Project>\r
+      <Project>{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Web\Mono.Web-net_4_0.csproj">\r
-      <Project>{2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}</Project>\r
+      <Project>{AA8CFAB1-B81C-434E-AA60-C2373B27EB56}</Project>\r
       <Name>Mono.Web\Mono.Web-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 418011d2c5c7c59b146118ea92512b6e01581f18..8818fcc2a59e56f1ed9c782be50ef8db77bd5614 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{640C4A33-1B69-422D-BB17-42E3A4BB0CFC}</ProjectGuid>\r
+    <ProjectGuid>{A3AE69CF-C19A-4ADE-831A-829687ECB0C1}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,612,618,618,219,169,1591</NoWarn>\r
     <OutputPath>bin\Debug\System.Web-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-2.csproj">\r
-      <Project>{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}</Project>\r
+      <Project>{93406A57-422B-4A7E-886A-B37F2E97DB78}</Project>\r
       <Name>System.Web\System.Web-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj">\r
-      <Project>{2B2808F7-930A-4416-A060-57D9F8DC879C}</Project>\r
+      <Project>{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}</Project>\r
       <Name>System.EnterpriseServices\System.EnterpriseServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj">\r
-      <Project>{E9E47642-19D3-48A0-81C4-D51810976A70}</Project>\r
+      <Project>{95593889-8509-4FFC-8EDE-C673FDA39FC8}</Project>\r
       <Name>System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj">\r
-      <Project>{AD80D595-2812-412E-9F06-2A91C7283A48}</Project>\r
+      <Project>{394BAC94-3126-4DAE-8C55-5547372BAB46}</Project>\r
       <Name>System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web.Services\System.Web.Services-net_4_5.csproj">\r
-      <Project>{5A9673B6-FC36-4B40-92F6-A9586B75EC57}</Project>\r
+      <Project>{1CD96FCF-0288-4FA4-9451-47B0C2206186}</Project>\r
       <Name>System.Web.Services\System.Web.Services-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Web\Mono.Web-net_4_5.csproj">\r
-      <Project>{ABD934FF-6F3A-40CB-85DB-98316F708226}</Project>\r
+      <Project>{82BD591A-1377-41BD-9B2C-1037574BB935}</Project>\r
       <Name>Mono.Web\Mono.Web-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\SystemWebTestShim\SystemWebTestShim-net_4_5.csproj">\r
-      <Project>{AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}</Project>\r
+      <Project>{3D24376B-ECC8-4E7B-9433-C77CC67880AA}</Project>\r
       <Name>SystemWebTestShim\SystemWebTestShim-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 99486acfd2b04f4b96dea4e95995d9c6e459ecdd..d37fa87d923f65f8eadab43ebb3ff797975ead2f 100644 (file)
@@ -247,9 +247,17 @@ namespace System.Web.Configuration
                        }
                }
 
-               public IDictionary Capabilities {
+               public IDictionary Capabilities
+               {
                        get { return capabilities; }
-                       set { capabilities = new Hashtable(value, StringComparer.OrdinalIgnoreCase); }
+                       set {
+                               //value comes with duplicated keys, so we filter them out
+                               capabilities = new Hashtable (value.Keys.Count, StringComparer.OrdinalIgnoreCase);
+                               foreach (object key in value.Keys) {
+                                       if (!capabilities.Contains (key))
+                                               capabilities.Add (key, value [key]);
+                               }
+                       }
                }
 
                int defaultSubmitButtonLimit;
index 46c8b0a44d55a165ed7743543955839f3c005d11..308560a45f2a0da5f6d341d1a86b826d9c1c7287 100644 (file)
@@ -64,6 +64,9 @@ namespace System.Web.Configuration
                static ConfigurationProperty maxUrlLengthProp;
                static ConfigurationProperty encoderTypeProp;
                static ConfigurationProperty relaxedUrlToFileSystemMappingProp;
+#endif
+#if NET_4_5
+               static ConfigurationProperty targetFrameworkProp;
 #endif
                static ConfigurationPropertyCollection properties;
 
@@ -141,6 +144,12 @@ namespace System.Web.Configuration
                                                                     ConfigurationPropertyOptions.None);
                        relaxedUrlToFileSystemMappingProp = new ConfigurationProperty ("relaxedUrlToFileSystemMapping", typeof (bool), false);
 #endif
+#if NET_4_5
+                       targetFrameworkProp = new ConfigurationProperty ("targetFramework", typeof (Version), new Version (4, 0),
+                                                                               PropertyHelper.VersionConverter,
+                                                                               PropertyHelper.DefaultValidator,
+                                                                               ConfigurationPropertyOptions.None);
+#endif
                        
                        properties = new ConfigurationPropertyCollection();
                        properties.Add (apartmentThreadingProp);
@@ -169,6 +178,9 @@ namespace System.Web.Configuration
                        properties.Add (maxUrlLengthProp);
                        properties.Add (encoderTypeProp);
                        properties.Add (relaxedUrlToFileSystemMappingProp);
+#endif
+#if NET_4_5
+                       properties.Add (targetFrameworkProp);
 #endif
                }
 
@@ -342,6 +354,14 @@ namespace System.Web.Configuration
                        get { return (bool) base [relaxedUrlToFileSystemMappingProp]; }
                        set { base [relaxedUrlToFileSystemMappingProp] = value; }
                }
+#endif
+#if NET_4_5
+               [ConfigurationProperty ("targetFramework", DefaultValue = "4.0")]
+               [TypeConverter ("System.Web.Configuration.VersionConverter")]
+               public Version TargetFramework {
+                       get { return (Version) base [targetFrameworkProp]; }
+                       set { base [targetFrameworkProp] = value; }
+               }
 #endif
                protected internal override ConfigurationPropertyCollection Properties {
                        get { return properties; }
diff --git a/mcs/class/System.Web/System.Web.Configuration_2.0/LruCache.cs b/mcs/class/System.Web/System.Web.Configuration_2.0/LruCache.cs
new file mode 100644 (file)
index 0000000..3bd9599
--- /dev/null
@@ -0,0 +1,144 @@
+//
+// A simple LRU cache
+//
+// Authors:
+//   Miguel de Icaza (miguel@gnome.org)
+//   Andres G. Aragoneses (andres@7digital.com)
+//
+// Copyright 2010 Miguel de Icaza
+// Copyright 2013 7digital Media Ltd.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+
+namespace System.Web.Configuration {
+
+       class LruCache<TKey, TValue> {
+               Dictionary<TKey, LinkedListNode <TValue>> dict;
+               Dictionary<LinkedListNode<TValue>, TKey> revdict;
+               LinkedList<TValue> list;
+               int entry_limit;
+
+               bool eviction_warning_shown;
+               int evictions;
+               bool size_overriden;
+
+               internal string EvictionWarning { set; private get; }
+
+               public LruCache (int entryLimit)
+               {
+                       entry_limit = entryLimit;
+                       dict = new Dictionary<TKey, LinkedListNode<TValue>> ();
+                       revdict = new Dictionary<LinkedListNode<TValue>, TKey> ();
+                       list = new LinkedList<TValue> ();
+               }
+
+               //for debugging: public int Count { get { return dict.Count; } }
+
+               void Evict ()
+               {
+                       var last = list.Last;
+                       if (last == null)
+                               return;
+
+                       var key = revdict [last];
+
+                       dict.Remove (key);
+                       revdict.Remove (last);
+                       list.RemoveLast ();
+                       DisposeValue (last.Value);
+                       evictions++;
+
+                       if (!String.IsNullOrEmpty (EvictionWarning) && !eviction_warning_shown && (evictions >= entry_limit)) {
+                               Console.Error.WriteLine ("WARNING: " + EvictionWarning);
+                               eviction_warning_shown = true;
+                       }
+               }
+
+               public void Clear ()
+               {
+                       foreach (var element in list) {
+                               DisposeValue (element);
+                       }
+
+                       dict.Clear ();
+                       revdict.Clear ();
+                       list.Clear ();
+                       eviction_warning_shown = false;
+                       evictions = 0;
+               }
+
+               void DisposeValue (TValue value)
+               {
+                       if (value is IDisposable) {
+                               ((IDisposable)value).Dispose ();
+                       }
+               }
+
+               public bool TryGetValue (TKey key, out TValue value)
+               {
+                       LinkedListNode<TValue> node;
+
+                       if (dict.TryGetValue (key, out node)){
+                               list.Remove (node);
+                               list.AddFirst (node);
+
+                               value = node.Value;
+                               return true;
+                       }
+                       value = default (TValue);
+                       return false;
+               }
+
+               public void Add (TKey key, TValue value)
+               {
+                       LinkedListNode<TValue> node;
+
+                       if (dict.TryGetValue (key, out node)){
+
+                               // If we already have a key, move it to the front
+                               list.Remove (node);
+                               list.AddFirst (node);
+
+                               // Remove the old value
+                               DisposeValue (node.Value);
+
+                               node.Value = value;
+                               return;
+                       }
+
+                       if (dict.Count >= entry_limit)
+                               Evict ();
+
+                       // Adding new node
+                       node = new LinkedListNode<TValue> (value);
+                       list.AddFirst (node);
+                       dict [key] = node;
+                       revdict [node] = key;
+               }
+
+               public override string ToString ()
+               {
+                       return "LRUCache dict={0} revdict={1} list={2}";
+               }
+       }
+}
index 9c7b8524e48114c8ae935e909c22188d42058ad9..63cca69d6e643b3d3ca11c9190d6861ed01976be 100644 (file)
@@ -72,11 +72,10 @@ namespace System.Web.Configuration {
                
                // See comment for the cacheLock field at top of System.Web.Caching/Cache.cs
                static readonly ReaderWriterLockSlim sectionCacheLock;
-               
+
 #if !TARGET_J2EE
                static IInternalConfigConfigurationFactory configFactory;
                static Hashtable configurations = Hashtable.Synchronized (new Hashtable ());
-               static Dictionary <int, object> sectionCache = new Dictionary <int, object> ();
                static Hashtable configPaths = Hashtable.Synchronized (new Hashtable ());
                static bool suppressAppReload;
 #else
@@ -188,9 +187,28 @@ namespace System.Web.Configuration {
                                }
                        }
                }
+
+               const int DEFAULT_SECTION_CACHE_SIZE = 100;
+               const string CACHE_SIZE_OVERRIDING_KEY = "MONO_ASPNET_WEBCONFIG_CACHESIZE";
+               static LruCache<int, object> sectionCache;
                
                static WebConfigurationManager ()
                {
+                       var section_cache_size = DEFAULT_SECTION_CACHE_SIZE;
+                       int section_cache_size_override;
+                       bool size_overriden = false;
+                       if (int.TryParse (Environment.GetEnvironmentVariable (CACHE_SIZE_OVERRIDING_KEY), out section_cache_size_override)) {
+                               section_cache_size = section_cache_size_override;
+                               size_overriden = true;
+                               Console.WriteLine ("WebConfigurationManager's LRUcache Size overriden to: {0} (via {1})", section_cache_size_override, CACHE_SIZE_OVERRIDING_KEY);
+                       }
+                       sectionCache = new LruCache<int, object> (section_cache_size);
+                       string eviction_warning = "WebConfigurationManager's LRUcache evictions count reached its max size";
+                       if (!size_overriden)
+                               eviction_warning += String.Format ("{0}Cache Size: {1} (overridable via {2})",
+                                                                  Environment.NewLine, section_cache_size, CACHE_SIZE_OVERRIDING_KEY);
+                       sectionCache.EvictionWarning = eviction_warning;
+
                        configFactory = ConfigurationManager.ConfigurationFactory;
                        _Configuration.SaveStart += ConfigurationSaveHandler;
                        _Configuration.SaveEnd += ConfigurationSaveHandler;
@@ -452,7 +470,7 @@ namespace System.Web.Configuration {
                                baseCacheKey ^= configPath.GetHashCode ();
                        
                        try {
-                               sectionCacheLock.EnterReadLock ();
+                               sectionCacheLock.EnterWriteLock ();
                                
                                object o;
                                if (pathPresent) {
@@ -468,7 +486,7 @@ namespace System.Web.Configuration {
                                if (sectionCache.TryGetValue (baseCacheKey, out o))
                                        return o;
                        } finally {
-                               sectionCacheLock.ExitReadLock ();
+                               sectionCacheLock.ExitWriteLock ();
                        }
 
                        string cachePath = null;
@@ -693,29 +711,19 @@ namespace System.Web.Configuration {
                {
                        object cachedSection;
 
+                       bool locked = false;
                        try {
-                               if (!sectionCacheLock.TryEnterUpgradeableReadLock (SECTION_CACHE_LOCK_TIMEOUT))
+                               if (!sectionCacheLock.TryEnterWriteLock (SECTION_CACHE_LOCK_TIMEOUT))
                                        return;
-                                       
+                               locked = true;
+
                                if (sectionCache.TryGetValue (key, out cachedSection) && cachedSection != null)
                                        return;
 
-                               try {
-                                       if (!sectionCacheLock.TryEnterWriteLock (SECTION_CACHE_LOCK_TIMEOUT))
-                                               return;
-                                       sectionCache.Add (key, section);
-                               } finally {
-                                       try {
-                                               sectionCacheLock.ExitWriteLock ();
-                                       } catch (SynchronizationLockException) {
-                                               // we can ignore it here
-                                       }
-                               }
+                               sectionCache.Add (key, section);
                        } finally {
-                               try {
-                                       sectionCacheLock.ExitUpgradeableReadLock ();
-                               } catch (SynchronizationLockException) {
-                                       // we can ignore it here
+                               if (locked) {
+                                       sectionCacheLock.ExitWriteLock ();
                                }
                        }
                }
index ddda8757888cd472296fa40f7c1e3ed562796f38..68da3951f2f300b88f8d48a82759c91f6131d0f1 100644 (file)
@@ -138,10 +138,9 @@ namespace System.Web.Util
                static string EncodeHeaderString (string input)
                {
                        StringBuilder sb = null;
-                       char ch;
                        
                        for (int i = 0; i < input.Length; i++) {
-                               ch = input [i];
+                               char ch = input [i];
 
                                if ((ch < 32 && ch != 9) || ch == 127)
                                        StringBuilderAppend (String.Format ("%{0:x2}", (int)ch), ref sb);
@@ -276,11 +275,11 @@ namespace System.Web.Util
                                return s;
 
                        StringBuilder output = new StringBuilder ();
-                       char ch;
                        int len = s.Length;
                        
                        for (int i = 0; i < len; i++) {
-                               switch (s [i]) {
+                               char ch = s [i];
+                               switch (ch) {
                                        case '&' :
                                                output.Append ("&amp;");
                                                break;
@@ -307,7 +306,6 @@ namespace System.Web.Util
                                                break;
                                                
                                        default:
-                                               ch = s [i];
                                                if (ch > 159 && ch < 256) {
                                                        output.Append ("&#");
                                                        output.Append (((int) ch).ToString (Helpers.InvariantCulture));
@@ -351,27 +349,30 @@ namespace System.Web.Util
 
                        StringBuilder output = new StringBuilder ();
                        int len = s.Length;
-                       for (int i = 0; i < len; i++)
-                               switch (s [i]) {
-                               case '&' : 
-                                       output.Append ("&amp;");
-                                       break;
-                               case '"' :
-                                       output.Append ("&quot;");
-                                       break;
-                               case '<':
-                                       output.Append ("&lt;");
-                                       break;
+
+                       for (int i = 0; i < len; i++) {
+                               char ch = s [i];
+                               switch (ch) {
+                                       case '&' : 
+                                               output.Append ("&amp;");
+                                               break;
+                                       case '"' :
+                                               output.Append ("&quot;");
+                                               break;
+                                       case '<':
+                                               output.Append ("&lt;");
+                                               break;
 #if NET_4_0
-                               case '\'':
-                                       output.Append ("&#39;");
-                                       break;
+                                       case '\'':
+                                               output.Append ("&#39;");
+                                               break;
 #endif
-                               default:
-                                       output.Append (s [i]);
-                                       break;
+                                       default:
+                                               output.Append (ch);
+                                               break;
                                }
-       
+                       }
+
                        return output.ToString();
                }
                
index 377652f2aef91f01fc32b0b9658ce489580311dc..449b02e34be98f536b35dc7a3f49cc7b3dbb789b 100644 (file)
@@ -191,6 +191,7 @@ System.Web.Configuration_2.0/IConfigMapPath.cs
 System.Web.Configuration_2.0/IConfigMapPathFactory.cs
 System.Web.Configuration_2.0/IRemoteWebConfigurationHostServer.cs
 System.Web.Configuration_2.0/LowerCaseStringConverter.cs
+System.Web.Configuration_2.0/LruCache.cs
 System.Web.Configuration_2.0/MachineKeyRegistryStorage.cs
 System.Web.Configuration_2.0/MachineKeySection.cs
 System.Web.Configuration_2.0/MachineKeyValidation.cs
index 6a310ecc874a9bcefd63aecf9fe2c1dfb02bb7ac..ac432ab3da3b51044b1fe2f3ce0f4561c102d5e8 100644 (file)
@@ -127,8 +127,13 @@ namespace System.Web
                        this.context = context;
 
 #if !TARGET_J2EE
-                       if (worker_request != null)
-                               use_chunked = (worker_request.GetHttpVersion () == "HTTP/1.1");
+                       if (worker_request != null && worker_request.GetHttpVersion () == "HTTP/1.1") {
+                               string gi = worker_request.GetServerVariable ("GATEWAY_INTERFACE");
+                               use_chunked = (String.IsNullOrEmpty (gi) ||
+                                       !gi.StartsWith ("cgi", StringComparison.OrdinalIgnoreCase));
+                       } else {
+                               use_chunked = false;
+                       }
 #endif
                        writer = new HttpWriter (this);
                }
index cbb1746bdb06cab76b2daa6ff1321c2c2985677d..2e68a21a852dfd90b51c9520f2d8890f0362cb51 100644 (file)
@@ -329,6 +329,21 @@ namespace System.Web
                internal static HttpRuntimeSection Section { get { return runtime_section; } }
 
                public static bool UsingIntegratedPipeline { get { return false; } }
+
+#if NET_4_5
+               public static Version IISVersion {
+                       get {
+                               // Null means not hosted by IIS
+                               return null;
+                       }
+               }
+               
+               public static Version TargetFramework {
+                       get {
+                               return runtime_section.TargetFramework;
+                       }
+               }
+#endif
                
                [SecurityPermission (SecurityAction.Demand, UnmanagedCode = true)]
                public static void Close ()
index ee7207ac3acc06404b4666da21090ec833262642..b92554ec98aaad28d2464d75ed0e31a9b8b22ae0 100644 (file)
@@ -57,7 +57,17 @@ namespace MonoTests.System.Web.Util {
                        // changing last byte (padding)
                        byte be = encdata [encdata.Length - 1];
                        encdata [encdata.Length - 1] = ChangeByte (be);
-                       Assert.IsNull (MachineKeySectionUtils.Decrypt (section, encdata), "bad padding");
+                       byte[] result = MachineKeySectionUtils.Decrypt (section, encdata);
+                       // this will return null if a bad padding is detected - OTOH since we're using a random key and we
+                       // encrypt a random IV it's possible the decrypted stuff will randomly have a "valid" padding (there's
+                       // only so much possible values and the bots runs those tests pretty often and give false positive)
+                       // To avoid this we fallback to ensure the data is invalid (if should be empty)
+                       int total = 0;
+                       if (result != null) {
+                               for (int i=0; i < result.Length; i++)
+                                       total += result [i];
+                       }
+                       Assert.IsTrue (result == null || total != 0, "bad padding");
                }
 
                [Test]
index 3561780ff112ca5d6140a1051ca4cafd88dba942..6d02c725aa8dd454f0ad9575698f1f5b9057ea7d 100644 (file)
@@ -40,7 +40,9 @@ using System.Threading;
 namespace MonoTests.System.Web
 {
        [TestFixture]
-       [Ignore ("Pending fix for bug 351878")]
+#if NET_3_0
+       [Ignore ("adapters.browser depends on System.Web_test_net_2_0.dll")]
+#endif
        public class AppBrowsersTest
        {
                [TestFixtureSetUp]
index b076ebdfa1fa20a8908c4364f32fba02e7c9be3b..b871fd3acf492e66369d2b5d35fb58abfcef4eed 100644 (file)
@@ -3,7 +3,7 @@ SUBDIRS =
 include ../../build/rules.make\r
 \r
 LIBRARY = System.Windows.Forms.DataVisualization.dll\r
-LIB_MCS_FLAGS = -r:System -r:System.Drawing -r:System.Windows.Forms -r:System.Core\r
+LIB_MCS_FLAGS = -r:System -r:System.Drawing -r:System.Windows.Forms -r:System.Core -r:System.Data -r:System.Xml\r
 TEST_MCS_FLAGS = $(LIB_MCS_FLAGS)\r
 \r
 EXTRA_DISTFILES =\r
index fa24d6baacacc0dcfe3ad5337636c5459c05d263..5467f61b17b2f53a09dbf21c0667fb0d269785c0 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B0EAE2CB-9823-4687-8119-43BA5386A28A}</ProjectGuid>\r
+    <ProjectGuid>{10DC3D0E-7781-4258-9344-B5808425D92E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms.DataVisualization-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 230bba6fd62079dafbef2967d35ab7370506c7ec..7087fbc0b6c76e5cf22017c0f4e3dea8878069f9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6CE40A14-711E-46EE-BAB4-AD83134C373E}</ProjectGuid>\r
+    <ProjectGuid>{47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms.DataVisualization-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 06d49033d76b4a8a70b199b7a9c11bc4b61a3a95..e2ff116d02ade1414e6f627f92adf54e7552f1ef 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4F29000A-D37F-4375-AF1D-9A81DB9D25AE}</ProjectGuid>\r
+    <ProjectGuid>{81C3AAD3-36A7-4615-B269-65200E84F433}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms.DataVisualization-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_0.csproj">\r
-      <Project>{B0EAE2CB-9823-4687-8119-43BA5386A28A}</Project>\r
+      <Project>{10DC3D0E-7781-4258-9344-B5808425D92E}</Project>\r
       <Name>System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj">\r
-      <Project>{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}</Project>\r
+      <Project>{41B3B369-328C-45B8-9F14-224641427A35}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 02295c14ed2d435e3c70b654c71056dd5c1c87b9..61cbb94c1c033bc71b4249e1a7260f790e292d12 100644 (file)
@@ -5,12 +5,13 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{05F331B4-99A2-4DCA-9283-EA1589BCDF39}</ProjectGuid>\r
+    <ProjectGuid>{B1643A3E-B53E-4264-8CA3-27533EF662CB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Windows.Forms.DataVisualization-tests-net_4_5</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
+    \r
     <AppDesignerFolder>Properties</AppDesignerFolder>\r
     <RootNamespace>\r
     </RootNamespace>\r
@@ -48,7 +49,7 @@
     <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\ArrowAnnotationTest.cs" />\r
     <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\AxisScaleBreakStyleTest.cs" />\r
     <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\ChartElementTest.cs" />\r
-  </ItemGroup>\r
+    <Compile Include="Test\System.Windows.Forms.DataVisualization.Charting\ChartElementTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
@@ -58,6 +59,7 @@
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent>\r
+\r
     </PreBuildEvent>\r
     <PostBuildEvent>\r
       xcopy $(TargetName).* $(ProjectDir)..\lib\net_4_5\ /Y /R /D\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_5.csproj">\r
-      <Project>{6CE40A14-711E-46EE-BAB4-AD83134C373E}</Project>\r
+      <Project>{47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}</Project>\r
       <Name>System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_5.csproj">\r
-      <Project>{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}</Project>\r
+      <Project>{945A4FD5-2184-44CC-9519-13AFC37ED81A}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj">\r
-      <Project>{ABF6A466-1744-4C43-8B68-C89EA10FBB67}</Project>\r
+      <Project>{409FF748-B765-4AB3-BCB1-72199B9E341C}</Project>\r
       <Name>Managed.Windows.Forms\System.Windows.Forms-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
-</Project>\r
+</Project>
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnchorStyle.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnchorStyle.cs
deleted file mode 100644 (file)
index b050463..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// Authors:
-// Jonathan Pobst (monkey@jpobst.com)
-//
-// Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-using System;
-
-namespace System.Windows.Forms.DataVisualization.Charting
-{
-       public enum MarkerStyle
-       {
-               Simple = 0,
-               DoubleArrow = 1,
-               Tailed = 2
-       }
-}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Annotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Annotation.cs
new file mode 100644 (file)
index 0000000..45c4a9e
--- /dev/null
@@ -0,0 +1,125 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE./
+
+using System;
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public abstract class Annotation : ChartNamedElement
+       {
+               protected Annotation ()
+               {
+               }
+
+               public virtual ContentAlignment Alignment { get; set; }
+               public virtual bool AllowAnchorMoving { get; set; }
+               public virtual bool AllowMoving { get; set; }
+               public virtual bool AllowPathEditing { get; set; }
+               public virtual bool AllowResizing { get; set; }
+               public virtual bool AllowSelecting { get; set; }
+               public virtual bool AllowTextEditing { get; set; }
+               public virtual ContentAlignment AnchorAlignment { get; set; }
+               public virtual DataPoint AnchorDataPoint { get; set; }
+               public virtual string AnchorDataPointName { get; set; }
+               public virtual double AnchorOffsetX { get; set; }
+               public virtual double AnchorOffsetY { get; set; }
+               public virtual double AnchorX { get; set; }
+               public virtual double AnchorY { get; set; }
+               public AnnotationGroup AnnotationGroup { get; private set; }
+               public abstract string AnnotationType { get; } 
+               public virtual Axis AxisX { get; set; }
+               public virtual string AxisXName { get; set; }
+               public virtual Axis AxisY { get; set; }
+               public virtual string AxisYName { get; set; }
+               public virtual Color BackColor { get; set; }
+               public virtual GradientStyle BackGradientStyle { get; set; }
+               public virtual ChartHatchStyle BackHatchStyle { get; set; }
+               public virtual Color BackSecondaryColor { get; set; }
+               public virtual double Bottom { get; set; }
+               public virtual string ClipToChartArea { get; set; }
+               public virtual Font Font { get; set; }
+               public virtual Color ForeColor { get; set; }
+               public virtual double Height { get; set; }
+               public virtual bool IsSelected { get; set; }
+               public virtual bool IsSizeAlwaysRelative { get; set; }
+               public virtual Color LineColor { get; set; }
+               public virtual ChartDashStyle LineDashStyle { get; set; }
+               public virtual int LineWidth { get; set; }
+               public override string Name { get; set; }
+               public virtual double Right { get; set; }
+               public virtual Color ShadowColor { get; set; }
+               public virtual int ShadowOffset { get; set; }
+               public AnnotationSmartLabelStyle SmartLabelStyle { get; set; }
+               public virtual TextStyle TextStyle { get; set; }
+               public virtual string ToolTip { get; set; }
+               public virtual bool Visible { get; set; }
+               public virtual double Width { get; set; }
+               public virtual double X { get; set; }
+               public virtual double Y { get; set; }
+               public virtual string YAxisName { get; set; }
+
+               [MonoTODO]
+               public virtual void BeginPlacement ()
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public virtual void BringToFront ()
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               protected override void Dispose (bool disposing)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public virtual void EndPlacement ()
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public virtual void ResizeToContent ()
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public virtual void SendToBack ()
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void SetAnchor (DataPoint dataPoint)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void SetAnchor (DataPoint dataPoint1, DataPoint dataPoint2)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
+
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationCollection.cs
new file mode 100644 (file)
index 0000000..1bcae8c
--- /dev/null
@@ -0,0 +1,35 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class AnnotationCollection : ChartNamedElementCollection<Annotation>
+       {
+               [MonoTODO]
+               public override Annotation FindByName (string name) {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationGroup.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationGroup.cs
new file mode 100644 (file)
index 0000000..4534cdf
--- /dev/null
@@ -0,0 +1,61 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class AnnotationGroup : Annotation
+       {
+               public AnnotationGroup ()
+               {
+                       Annotations = new AnnotationCollection ();
+               }
+
+               public override ContentAlignment Alignment { get; set; }
+               public override bool AllowAnchorMoving { get; set; }
+               public override bool AllowMoving { get; set; }
+               public override bool AllowPathEditing { get; set; }
+               public override bool AllowResizing { get; set; }
+               public override bool AllowSelecting { get; set; }
+               public override bool AllowTextEditing { get; set; }
+               public AnnotationCollection Annotations { get; private set; }
+               public override string AnnotationType { get { throw new NotImplementedException (); } } //FIXME - find out what MS implementation returns here
+               public override Color BackColor { get; set; }
+               public override GradientStyle BackGradientStyle { get; set; }
+               public override ChartHatchStyle BackHatchStyle { get; set; }
+               public override Color BackSecondaryColor { get; set; }
+               public override string ClipToChartArea { get; set; }
+               public override Font Font { get; set; }
+               public override Color ForeColor { get; set; }
+               public override bool IsSelected { get; set; }
+               public override bool IsSizeAlwaysRelative { get; set; }
+               public override Color LineColor { get; set; }
+               public override ChartDashStyle LineDashStyle { get; set; }
+               public override int LineWidth { get; set; }
+               public override Color ShadowColor { get; set; }
+               public override int ShadowOffset { get; set; }
+               public override TextStyle TextStyle { get; set; }
+               public override bool Visible { get; set; }
+       }
+}
index 3bd7261b652ce3a63e327af9ef0581cd3a7f6e3d..2cd6fc966830935d9bfcf3da141548f58b656f85 100644 (file)
@@ -46,6 +46,8 @@ namespace System.Windows.Forms.DataVisualization.Charting
                #endregion
 
                #region Public Properties
+               public string Name { get; private set; }
+               public byte PointType { get; set; }
                public float X { get; set; }
                public float Y { get; set; }
                #endregion
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationPositionChangingEventArgs.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationPositionChangingEventArgs.cs
new file mode 100644 (file)
index 0000000..9f49098
--- /dev/null
@@ -0,0 +1,91 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System;
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class AnnotationPositionChangingEventArgs : EventArgs
+       {
+               public AnnotationPositionChangingEventArgs ()
+               {
+               }
+
+               public Annotation Annotation { get; set; }
+
+               public PointF NewAnchorLocation { get; set; }
+               public double NewAnchorLocationX { 
+                       get { return this.NewAnchorLocation.X; } 
+                       set { 
+                               PointF nal = this.NewAnchorLocation; 
+                               nal.X = (float)value;
+                               this.NewAnchorLocation = nal; 
+                       } 
+               }
+               public double NewAnchorLocationY { 
+                       get { return this.NewAnchorLocation.Y; } 
+                       set { 
+                               PointF nal = this.NewAnchorLocation; 
+                               nal.Y = (float)value;
+                               this.NewAnchorLocation = nal; 
+                       } 
+               }
+
+               public RectangleF NewPosition { get; set; }
+
+               public double NewLocationX { 
+                       get { return this.NewPosition.X; } 
+                       set { 
+                               RectangleF np = this.NewPosition; 
+                               np.X = (float)value;
+                               this.NewPosition = np;
+                       }
+               }
+               public double NewLocationY { 
+                       get { return this.NewPosition.Y; } 
+                       set { 
+                               RectangleF np = this.NewPosition; 
+                               np.Y = (float)value; 
+                               this.NewPosition = np;
+                       } 
+               }
+               public double NewSizeWidth { 
+                       get { return this.NewPosition.Width; } 
+                       set { 
+                               RectangleF np = this.NewPosition; 
+                               np.Width = (float)value; 
+                               this.NewPosition = np;
+                       }
+               }
+               public double NewSizeHeight { 
+                       get { return this.NewPosition.Height; } 
+                       set { 
+                               RectangleF np = this.NewPosition; 
+                               np.Height = (float)value; 
+                               this.NewPosition = np;
+                       }
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationSmartLabelStyle.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AnnotationSmartLabelStyle.cs
new file mode 100644 (file)
index 0000000..647d80e
--- /dev/null
@@ -0,0 +1,30 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class AnnotationSmartLabelStyle : SmartLabelStyle
+       {
+       }
+}
index 31ad4944dea927048886c159ab0b4a040fde8c7c..36fb4ea302b82e6e8a63d1f25c4ca10c1777d426 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.Drawing;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
-       public class ArrowAnnotation
+       public class ArrowAnnotation : Annotation
        {
                private int arrow_size = 5;
 
@@ -38,6 +40,8 @@ namespace System.Windows.Forms.DataVisualization.Charting
                #endregion
 
                #region Public Properties
+               public override ContentAlignment AnchorAlignment { get; set; }
+               public override string AnnotationType { get { throw new NotImplementedException (); } } //FIXME - find out what MS implementation returns here
                public virtual int ArrowSize {
                        get { return arrow_size; }
                        set {
index 5c2730265914e162ac40b596f91cde7133bcc40a..345fc70f725b69c158ed57a855edb6ffe75b1d72 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
@@ -33,6 +34,8 @@ namespace System.Windows.Forms.DataVisualization.Charting
                #region Constructors
                public Axis (ChartArea chartArea, AxisName axisTypeName)
                {
+                       this.ChartArea = chartArea;
+                       this.AxisName = axisTypeName;
                }
 
                public Axis ()
@@ -42,9 +45,9 @@ namespace System.Windows.Forms.DataVisualization.Charting
 
                #region Public Properties
                public AxisArrowStyle ArrowStyle { get; set; }
-               public virtual AxisName AxisName { get; }
+               public virtual AxisName AxisName { get; private set; }
                public virtual double Crossing { get; set; }
-               public CustomLabelCollection CustomLabels { get; }
+               public CustomLabelCollection CustomLabels { get; private set; }
                public AxisEnabled Enabled { get; set; }
                public Color InterlacedColor { get; set; }
                public double Interval { get; set; }
@@ -83,7 +86,7 @@ namespace System.Windows.Forms.DataVisualization.Charting
                public virtual AxisScaleBreakStyle ScaleBreakStyle { get; set; }
                public AxisScaleView ScaleView { get; set; }
                public AxisScrollBar ScrollBar { get; set; }
-               public StripLinesCollection StripLines { get; }
+               public StripLinesCollection StripLines { get; private set; }
                public TextOrientation TextOrientation { get; set; }
                public string Title { get; set; }
                public StringAlignment TitleAlignment { get; set; }
@@ -92,32 +95,40 @@ namespace System.Windows.Forms.DataVisualization.Charting
                public string ToolTip { get; set; }
                #endregion
 
+               private ChartArea ChartArea; 
+
                #region Public Methods
+               [MonoTODO]
                public double GetPosition (double axisValue)
                {
                        throw new NotImplementedException ();
                }
 
+               [MonoTODO]
                public double PixelPositionToValue (double position)
                {
                        throw new NotImplementedException ();
                }
 
+               [MonoTODO]
                public double PositionToValue (double position)
                {
                        throw new NotImplementedException ();
                }
 
+               [MonoTODO]
                public void RoundAxisValues ()
                {
                        throw new NotImplementedException ();
                }
 
+               [MonoTODO]
                public double ValueToPixelPosition (double axisValue)
                {
                        throw new NotImplementedException ();
                }
 
+               [MonoTODO]
                public double ValueToPosition (double axisValue)
                {
                        throw new NotImplementedException ();
index 57a0dcadd717c28040452d32dd477ce307c9e0cc..8d0cb4bedc578d6845515f178880bb770ec1cd45 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
@@ -30,5 +31,63 @@ namespace System.Windows.Forms.DataVisualization.Charting
 {
        public class AxisScaleView
        {
+               public bool IsZoomed { get; private set;}
+               public double MinSize { get; set; }
+               public DateTimeIntervalType MinSizeType { get; set; }
+               public double Position { get; set; }
+               public double Size { get; set; }
+               public DateTimeIntervalType SizeType { get; set; }
+               public double SmallScrollMinSize { get; set; }
+               public DateTimeIntervalType SmallScrollMinSizeType { get; set; }
+               public double SmallScrollSize { get; set; }
+               public DateTimeIntervalType SmallScrollSizeType { get; set; }
+               public double ViewMaximum { get; private set; }
+               public double ViewMinimum { get; private set;}
+               public bool Zoomable { get; set; }
+
+
+               [MonoTODO]
+               public void Scroll (DateTime newPosition)
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               public void Scroll (double newPosition)
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               public void Scroll (ScrollType scrollType)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public void Zoom (double viewStart,double viewEnd)
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               public void Zoom (double viewPosition, double viewSize, DateTimeIntervalType viewSizeType)
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               public void Zoom (double viewPosition, double viewSize, DateTimeIntervalType viewSizeType, bool saveState)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public void ZoomReset ()
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public void ZoomReset (int numberOfViews)
+               {
+                       throw new NotImplementedException();
+               }
        }
 }
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AxisScrollBar.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/AxisScrollBar.cs
new file mode 100644 (file)
index 0000000..16b3f9a
--- /dev/null
@@ -0,0 +1,55 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class AxisScrollBar : IDisposable
+       {
+               public Axis Axis { get; private set; }
+               public Color BackColor { get; set; }
+               public Color ButtonColor { get; set; }
+               public ScrollBarButtonStyles ButtonStyle { get; set; }
+               public ChartArea ChartArea { get; private set; } 
+               public bool Enabled { get; set; }
+               public bool IsPositionedInside { get; set; }
+               public bool IsVisible { get; private set; } 
+               public Color LineColor { get; set; }
+               public double Size { get; set; }
+
+               [MonoTODO]
+               public void Dispose ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               protected virtual void Dispose (bool disposing )
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
+
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Border3DAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Border3DAnnotation.cs
new file mode 100644 (file)
index 0000000..0770324
--- /dev/null
@@ -0,0 +1,32 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class Border3DAnnotation : RectangleAnnotation
+       {
+               public override string AnnotationType { get { throw new NotImplementedException (); } } //FIXME - find out what MS implementation returns here
+               public BorderSkin BorderSkin { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/BorderSkin.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/BorderSkin.cs
new file mode 100644 (file)
index 0000000..f607234
--- /dev/null
@@ -0,0 +1,45 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class BorderSkin : ChartElement
+       {
+               public Color BackColor { get; set; }
+               public GradientStyle BackGradientStyle { get; set; }
+               public ChartHatchStyle BackHatchStyle { get; set; }
+               public string BackImage { get; set; }
+               public ChartImageAlignmentStyle BackImageAlignment { get; set; }
+               public Color BackImageTransparentColor { get; set; }
+               public ChartImageWrapMode BackImageWrapMode { get; set; }
+               public Color BackSecondaryColor { get; set; }
+               public Color BorderColor { get; set; }
+               public ChartDashStyle BorderDashStyle { get; set; }
+               public int BorderWidth { get; set; }
+               public Color PageColor { get; set; }
+               public BorderSkinStyle SkinStyle { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CalloutAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CalloutAnnotation.cs
new file mode 100644 (file)
index 0000000..8409267
--- /dev/null
@@ -0,0 +1,45 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class CalloutAnnotation : TextAnnotation
+       {
+               public override ContentAlignment AnchorAlignment { get; set; }
+               public override double AnchorOffsetX { get; set; }
+               public override double AnchorOffsetY { get; set; }
+               public override string AnnotationType { get { throw new NotImplementedException (); } } //FIXME - find out what MS implementation returns here
+               public override Color BackColor { get; set; }
+               public override GradientStyle BackGradientStyle { get; set; }
+               public override ChartHatchStyle BackHatchStyle { get; set; }
+               public override Color BackSecondaryColor { get; set; }
+               public virtual LineAnchorCapStyle CalloutAnchorCap { get; set; }
+               public virtual CalloutStyle CalloutStyle { get; set; }
+               public override Color LineColor { get; set; }
+               public override ChartDashStyle LineDashStyle { get; set; }
+               public override int LineWidth { get; set; }
+       }
+}
index 0e394c0a505b70de4e66676b724b9901973a1ae8..af2c3471f71f4329d52d0a8c90c64de2eb6637f2 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
-using System.Collections.Generic;
 using System.Drawing;
+using System.Drawing.Imaging;
+using System.IO;
+using System.ComponentModel;
+using System.Data.Common;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
-       public class Chart : Control
+       public class Chart : Control, ISupportInitialize, IDisposable
        {
                public Chart ()
                {
@@ -37,9 +41,45 @@ namespace System.Windows.Forms.DataVisualization.Charting
                        ChartAreas = new ChartAreaCollection ();
                        Series = new SeriesCollection ();
                }
-
+               public AnnotationCollection Annotations { get; private set;}
+               public AntiAliasingStyles AntiAliasing { get; set; }
+               public override Color BackColor { get; set; }
+               public GradientStyle BackGradientStyle { get; set; }
+               public override Image BackgroundImage { get; set; }
+               public ChartHatchStyle BackHatchStyle { get; set; }
+               public string BackImage { get; set; }
+               public ChartImageAlignmentStyle BackImageAlignment { get; set; }
+               public Color BackImageTransparentColor { get; set; }
+               public ChartImageWrapMode BackImageWrapMode { get; set; }
+               public Color BackSecondaryColor { get; set; }
+               public Color BorderColor { get; set; }
+               public ChartDashStyle BorderDashStyle { get; set; }
+               public Color BorderlineColor { get; set; }
+               public ChartDashStyle BorderlineDashStyle { get; set; }
+               public int BorderlineWidth { get; set; }
+               public BorderSkin BorderSkin { get; set; }
+               public int BorderWidth { get; set; }
+               public string BuildNumber { get; private set;}
                public ChartAreaCollection ChartAreas { get; private set; }
+               public DataManipulator DataManipulator { get; private set;}
+               public Object DataSource { get; set; }
+               protected override Size DefaultSize { get { return DefaultSize; } }//FIXME
+               public Font Font { get; set; }
+               public override Color ForeColor { get; set; }
+               public NamedImagesCollection Images { get; private set;}
+               public bool IsSoftShadows { get; set; }
+               public LegendCollection Legends { get; private set; }
+               public ChartColorPalette Palette { get; set; }
+               public Color[] PaletteCustomColors { get; set; }
+               public PrintingManager Printing { get; private set;}
+               public double RenderingDpiX { get; set; }
+               public double RenderingDpiY { get; set; }
+               public ChartSerializer Serializer { get; private set; }
                public SeriesCollection Series { get; private set; }
+               public Size Size { get; set; }
+               public bool SuppressExceptions { get; set; }
+               public TextAntiAliasingQuality TextAntiAliasingQuality { get; set; }
+               public TitleCollection Titles { get; private set;}
 
                #region Protected Properties
                protected override void OnPaint (PaintEventArgs e)
@@ -71,6 +111,171 @@ namespace System.Windows.Forms.DataVisualization.Charting
                }
                #endregion
 
+
+
+               public event EventHandler AnnotationPlaced;
+               public event EventHandler AnnotationPositionChanged;
+               public event EventHandler<AnnotationPositionChangingEventArgs> AnnotationPositionChanging;
+               public event EventHandler AnnotationSelectionChanged;
+               public event EventHandler AnnotationTextChanged;
+               public event EventHandler<ScrollBarEventArgs> AxisScrollBarClicked;
+               public event EventHandler<ViewEventArgs> AxisViewChanged;
+               public event EventHandler<ViewEventArgs> AxisViewChanging;
+               public event EventHandler<CursorEventArgs> CursorPositionChanged;
+               public event EventHandler<CursorEventArgs> CursorPositionChanging;
+               public event EventHandler Customize;
+               public event EventHandler<CustomizeLegendEventArgs> CustomizeLegend;
+               public event EventHandler<FormatNumberEventArgs> FormatNumber;
+               public event EventHandler<ToolTipEventArgs> GetToolTipText;
+               public event EventHandler<ChartPaintEventArgs> PostPaint;
+               public event EventHandler<ChartPaintEventArgs> PrePaint;
+               public event EventHandler<CursorEventArgs> SelectionRangeChanged;
+               public event EventHandler<CursorEventArgs> SelectionRangeChanging;
+
+
+               #region Public Methods
+
+               [MonoTODO]
+               public void AlignDataPointsByAxisLabel ()
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void AlignDataPointsByAxisLabel (PointSortOrder sortingOrder)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void AlignDataPointsByAxisLabel(string series)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void AlignDataPointsByAxisLabel (string series, PointSortOrder sortingOrder)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void ApplyPaletteColors ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void BeginInit ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void DataBind ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void DataBindCrossTable (System.Collections.IEnumerable dataSource, string seriesGroupByField, string xField, string yFields, string otherFields)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void DataBindCrossTable (System.Collections.IEnumerable dataSource, string seriesGroupByField, string xField, string yFields, string otherFields, PointSortOrder sortingOrder)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void DataBindTable (System.Collections.IEnumerable dataSource)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void DataBindTable (System.Collections.IEnumerable dataSource, string xField)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void EndInit ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public HitTestResult HitTest (int x, int y)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public HitTestResult HitTest (int x, int y, bool ignoreTransparent)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public HitTestResult HitTest (int x, int y, ChartElementType requestedElement)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public HitTestResult[] HitTest (int x, int y, bool ignoreTransparent, params ChartElementType[] requestedElement)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void LoadTemplate (Stream stream)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void LoadTemplate (string name)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void ResetAutoValues ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void SaveImage (Stream imageStream, ImageFormat format)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void SaveImage (Stream imageStream, ChartImageFormat format)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void SaveImage (string imageFileName, ImageFormat format)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void SaveImage (string imageFileName, ChartImageFormat format)
+               {
+                       throw new NotImplementedException ();
+               }
+               #endregion
+
+               #region Protected Methods
+
+
+               protected override void Dispose (bool disposing)
+               {
+               }
+
+
+
+               #endregion
+
                #region Private Methods
                private void PaintElement (ChartGraphics g, object element, ElementPosition position)
                {
@@ -81,4 +286,4 @@ namespace System.Windows.Forms.DataVisualization.Charting
                }
                #endregion
        }
-}
\ No newline at end of file
+}
index 0d8a4c1c8f49d36be912008feb7f2a36e4f313a5..1a8ed82aec90fe7ffec5c807c5268e18ccb323aa 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.Drawing;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
        public class ChartArea : ChartNamedElement
        {
+               public ChartArea() {}
+               public ChartArea( string name ){
+                       Name = name;
+               }
+
+               public AreaAlignmentOrientations AlignmentOrientation { get; set; }
+               public AreaAlignmentStyles AlignmentStyle { get; set; }
+               public string AlignWithChartArea { get; set; }
+               public ChartArea3DStyle Area3DStyle { get; set; }
+               public Axis[] Axes { get; set; }
+               public Axis AxisX { get; set; }
+               public Axis AxisX2 { get; set; }
+               public Axis AxisY { get; set; }
+               public Axis AxisY2 { get; set; }
+               public Color BackColor { get; set; }
+               public GradientStyle BackGradientStyle { get; set; }
+               public ChartHatchStyle BackHatchStyle { get; set; }
+               public string BackImage { get; set; }
+               public ChartImageAlignmentStyle BackImageAlignment { get; set; }
+               public Color BackImageTransparentColor { get; set; }
+               public ChartImageWrapMode BackImageWrapMode { get; set; }
+               public Color BackSecondaryColor { get; set; }
+               public Color BorderColor { get; set; }
+               public ChartDashStyle BorderDashStyle { get; set; }
+               public int BorderWidth { get; set; }
+               public Cursor CursorX { get; set; }
+               public Cursor CursorY { get; set; }
+               public ElementPosition InnerPlotPosition { get; set; }
+               public bool IsSameFontSizeForAllAxes { get; set; }
                public override string Name { get; set; }
+               public ElementPosition Position { get; set; }
+               public Color ShadowColor { get; set; }
+               public int ShadowOffset { get; set; }
+               public virtual bool Visible { get; set; }
+
+
+               [MonoTODO]
+               protected override void Dispose (bool disposing)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public float GetSeriesDepth (Series series )
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               public float GetSeriesZPosition (Series series)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void RecalculateAxesScale ()
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               public void TransformPoints (Point3D[] points)
+               {
+                       throw new NotImplementedException ();
+               }
        }
 }
index 20dbaf0ac69b38d4e73b7f198409a947ace0b0f7..4c3a73965525242c9b16579751cafbcc1201a844 100644 (file)
@@ -65,6 +65,7 @@ namespace System.Windows.Forms.DataVisualization.Charting
                }
                #endregion
 
+
                #region Protected Methods
                protected virtual void Dispose (bool disposing)
                {
index 7e3429b832195e3bc349a74db0ada41279378f0b..e16b4375a2d9c9849b0322a0a33eed87c3f15b48 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
@@ -41,5 +42,53 @@ namespace System.Windows.Forms.DataVisualization.Charting
                #region Public Properties
                public Graphics Graphics { get; set; }
                #endregion
+
+               [MonoTODO]
+               protected override void Dispose (bool disposing)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public PointF GetAbsolutePoint (PointF point)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public RectangleF GetAbsoluteRectangle (RectangleF rectangle)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public SizeF GetAbsoluteSize (SizeF size)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double GetPositionFromAxis (string chartAreaName, AxisName axis, double axisValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public PointF GetRelativePoint (PointF point)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public RectangleF GetRelativeRectangle (RectangleF rectangle)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public SizeF GetRelativeSize (SizeF size)
+               {
+                       throw new NotImplementedException ();
+               }
        }
 }
index 69bcba62dedb5237d4a5a9504c7cf6c427b1ad0a..8c783d1d6e89b52aa11ba430a59609ee99255b09 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.Collections.Generic;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
        public class ChartNamedElementCollection<T> : ChartElementCollection<T> where T : ChartNamedElement
        {
+               public T this[string name] { //FIXME this should probably be indexed
+                       get{ 
+                               foreach (T el in this) {
+                                       if (el.Name == name) {
+                                               return el;
+                                       }
+                               }
+                               throw new KeyNotFoundException (); //FIXME check what actual behaviour is in MS implementation
+                       }
+
+                       set{
+                               for(int i = 0; i<this.Count; i++) 
+                               {
+                                       T el = this[i];
+                                       if (el.Name == name) {
+                                               this.SetItem (i, value);
+                                               return;
+                                       }
+                               }
+                               throw new KeyNotFoundException (); //FIXME check what actual behaviour is in MS implementation
+                       }
+               }
+
+               protected virtual string NamePrefix { get; private set;}
+
+               
+               [MonoTODO]
+               public virtual T FindByName (string name)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public int IndexOf (string name)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               protected override void InsertItem (int index,T item)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public virtual bool IsUniqueName (string name)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public virtual string NextUniqueName ()
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               protected override void RemoveItem (int index)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               protected override void SetItem (int index,T item)
+               {
+                       throw new NotImplementedException();
+               }
        }
 }
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartSerializer.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ChartSerializer.cs
new file mode 100644 (file)
index 0000000..681ec04
--- /dev/null
@@ -0,0 +1,100 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.IO;
+using System.Xml;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class ChartSerializer
+       {
+               public SerializationContents Content { get; set; }
+               public SerializationFormat Format { get; set; }
+               public bool IsResetWhenLoading { get; set; }
+               public bool IsTemplateMode { get; set; }
+               public bool IsUnknownAttributeIgnored { get; set; }
+               public string NonSerializableContent { get; set; }
+               public string SerializableContent { get; set; }
+
+
+               [MonoTODO]
+               protected string GetContentString (SerializationContents content, bool serializable)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Load (Stream stream)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Load (string fileName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Load (TextReader reader)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Load (XmlReader reader)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Reset ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Save (Stream stream)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void Save (string fileName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Save (TextWriter writer)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Save (XmlWriter writer)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Cursor.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Cursor.cs
new file mode 100644 (file)
index 0000000..d4801da
--- /dev/null
@@ -0,0 +1,83 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class Cursor : IDisposable
+       {
+               public Cursor ()
+               {
+               }
+
+               public bool AutoScroll { get; set; }
+               public AxisType AxisType { get; set; }
+               public double Interval { get; set; }
+               public double IntervalOffset { get; set; }
+               public DateTimeIntervalType IntervalOffsetType { get; set; }
+               public DateTimeIntervalType IntervalType { get; set; }
+               public bool IsUserEnabled { get; set; }
+               public bool IsUserSelectionEnabled { get; set; }
+               public Color LineColor { get; set; }
+               public ChartDashStyle LineDashStyle { get; set; }
+               public int LineWidth { get; set; }
+               public double Position { get; set; }
+               public Color SelectionColor { get; set; }
+               public double SelectionEnd { get; set; }
+               public double SelectionStart { get; set; }
+
+
+               [MonoTODO]
+               public void Dispose ()
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               protected virtual void Dispose (bool disposing)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void SetCursorPixelPosition (PointF point,bool roundToBoundary)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void SetCursorPosition (double newPosition)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void SetSelectionPixelPosition (PointF startPoint, PointF endPoint, bool roundToBoundary)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void SetSelectionPosition (double newStart, double newEnd)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CursorEventArgs.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CursorEventArgs.cs
new file mode 100644 (file)
index 0000000..274192e
--- /dev/null
@@ -0,0 +1,54 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class CursorEventArgs : EventArgs
+       {
+               public CursorEventArgs( ChartArea chartArea, Axis axis, double newPosition)
+               {
+                       this.ChartArea = chartArea;
+                       this.Axis = axis;
+                       this.NewPosition = newPosition;
+               }
+
+               public CursorEventArgs(ChartArea chartArea, Axis axis, double newSelectionStart, double newSelectionEnd)
+               {
+                       this.ChartArea = chartArea;
+                       this.Axis = axis;
+                       this.NewSelectionStart = newSelectionStart;
+                       this.NewSelectionEnd = newSelectionEnd;
+               }
+
+               public Axis Axis { get; private set; }
+
+               public ChartArea ChartArea { get; private set; }
+
+               public double NewPosition { get; set; }
+
+               public double NewSelectionStart { get; set; }
+
+               public double NewSelectionEnd { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomLabel.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomLabel.cs
new file mode 100644 (file)
index 0000000..d5de054
--- /dev/null
@@ -0,0 +1,71 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class CustomLabel : ChartNamedElement
+       {
+               public CustomLabel ()
+               {
+               }
+               public CustomLabel (double fromPosition, double toPosition, string text, int labelRow, LabelMarkStyle markStyle)
+               {
+                       FromPosition = fromPosition;
+                       ToPosition = toPosition;
+                       Text = text;
+                       RowIndex = labelRow;
+                       LabelMark = markStyle;
+               }
+               public CustomLabel (double fromPosition, double toPosition, string text, int labelRow, LabelMarkStyle markStyle, GridTickTypes gridTick)
+               {
+                       FromPosition = fromPosition;
+                       ToPosition = toPosition;
+                       Text = text;
+                       RowIndex = labelRow;
+                       LabelMark = markStyle;
+                       GridTicks = gridTick;
+               }
+
+               public Axis Axis { get; private set; } 
+               public Color ForeColor { get; set; }
+               public double FromPosition { get; set; }
+               public GridTickTypes GridTicks { get; set; }
+               public string Image { get; set; }
+               public Color ImageTransparentColor { get; set; }
+               public LabelMarkStyle LabelMark { get; set; }
+               public Color MarkColor { get; set; }
+               public override string Name { get; set; }
+               public int RowIndex { get; set; }
+               public string Text { get; set; }
+               public string ToolTip { get; set; }
+               public double ToPosition { get; set; }
+
+               [MonoTODO]
+               public CustomLabel Clone ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomLabelCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomLabelCollection.cs
new file mode 100644 (file)
index 0000000..31bf30a
--- /dev/null
@@ -0,0 +1,66 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class CustomLabelCollection : ChartElementCollection<CustomLabel>
+       {
+               [MonoTODO]
+               public void Add (double labelsStep, DateTimeIntervalType intervalType)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public CustomLabel Add (double fromPosition, double toPosition, string text)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void Add (double labelsStep, DateTimeIntervalType intervalType, string format)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public CustomLabel Add (double fromPosition, double toPosition, string text, int rowIndex, LabelMarkStyle markStyle)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void Add (double labelsStep, DateTimeIntervalType intervalType, string format, int rowIndex, LabelMarkStyle markStyle)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public CustomLabel Add (double fromPosition, double toPosition, string text, int rowIndex, LabelMarkStyle markStyle, GridTickTypes gridTick)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void Add ( double labelsStep, DateTimeIntervalType intervalType, double min, double max, string format, int rowIndex, LabelMarkStyle markStyle)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomProperties.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomProperties.cs
new file mode 100644 (file)
index 0000000..62e28af
--- /dev/null
@@ -0,0 +1,30 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class CustomProperties
+       {
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomizeLegendEventArgs.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/CustomizeLegendEventArgs.cs
new file mode 100644 (file)
index 0000000..cffaf95
--- /dev/null
@@ -0,0 +1,32 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class CustomizeLegendEventArgs : EventArgs
+       {
+               public LegendItemsCollection LegendItems { get; private set; }
+               public string LegendName { get; private set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/DataFormula.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/DataFormula.cs
new file mode 100644 (file)
index 0000000..4072490
--- /dev/null
@@ -0,0 +1,75 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class DataFormula
+       {
+               public bool IsEmptyPointIgnored { get; set; }
+               public bool IsStartFromFirst { get; set; }
+               public StatisticFormula Statistics { get; private set;}
+
+               [MonoTODO]
+               public void CopySeriesValues (string inputSeries,string outputSeries)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public void FinancialFormula (FinancialFormula formulaName,string inputSeries)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public void FinancialFormula (FinancialFormula formulaName,Series inputSeries)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public void FinancialFormula (FinancialFormula formulaName, string inputSeries, string outputSeries) 
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public void FinancialFormula(FinancialFormula formulaName, Series inputSeries, Series outputSeries)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public void FinancialFormula(FinancialFormula formulaName, string parameters, string inputSeries, string outputSeries)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public void FinancialFormula(FinancialFormula formulaName, string parameters, Series inputSeries, Series outputSeries)
+               {
+                       throw new NotImplementedException();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/DataManipulator.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/DataManipulator.cs
new file mode 100644 (file)
index 0000000..8d15d40
--- /dev/null
@@ -0,0 +1,329 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Data;
+using System.Collections.Generic;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class DataManipulator : DataFormula
+       {
+               public bool FilterMatchedPoints { get; set; }
+               public bool FilterSetEmptyPoints { get; set; }
+
+               [MonoTODO]
+               public DataSet ExportSeriesValues ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public DataSet ExportSeriesValues (Series series)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public DataSet ExportSeriesValues (string seriesNames)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (IDataPointFilter filterInterface, string inputSeriesNames)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (IDataPointFilter filterInterface, Series inputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (CompareMethod compareMethod, double compareValue, string inputSeriesNames)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (CompareMethod compareMethod, double compareValue, Series inputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (DateRangeType dateRange, string rangeElements, string inputSeriesNames)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (DateRangeType dateRange, string rangeElements, Series inputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (IDataPointFilter filterInterface, string inputSeriesNames, string outputSeriesNames)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (IDataPointFilter filterInterface, Series inputSeries, Series outputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (CompareMethod compareMethod, double compareValue, string inputSeriesNames, string outputSeriesNames)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (CompareMethod compareMethod, double compareValue, Series inputSeries, Series outputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (DateRangeType dateRange, string rangeElements, string inputSeriesNames, string outputSeriesNames)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (DateRangeType dateRange, string rangeElements, Series inputSeries, Series outputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (CompareMethod compareMethod, double compareValue, string inputSeriesNames, string outputSeriesNames, string usingValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Filter (CompareMethod compareMethod, double compareValue, Series inputSeries, Series outputSeries, string usingValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void FilterTopN (int pointCount, string inputSeriesNames)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void FilterTopN (int pointCount, Series inputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void FilterTopN (int pointCount, string inputSeriesNames, string outputSeriesNames)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void FilterTopN (int pointCount, Series inputSeries, Series outputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void FilterTopN (int pointCount, string inputSeriesNames, string outputSeriesNames, string usingValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void FilterTopN (int pointCount, Series inputSeries, Series outputSeries, string usingValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void FilterTopN (int pointCount, string inputSeriesNames, string outputSeriesNames, string usingValue, bool getTopValues)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void FilterTopN (int pointCount, Series inputSeries, Series outputSeries, string usingValue, bool getTopValues)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Group (string formula, double interval, IntervalType intervalType, string inputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Group (string formula, double interval, IntervalType intervalType, Series inputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Group (string formula, double interval, IntervalType intervalType, string inputSeriesName, string outputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Group (string formula, double interval, IntervalType intervalType, Series inputSeries, Series outputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Group (string formula, double interval, IntervalType intervalType, double intervalOffset, IntervalType intervalOffsetType, string inputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Group (string formula, double interval, IntervalType intervalType, double intervalOffset, IntervalType intervalOffsetType, Series inputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Group (string formula, double interval, IntervalType intervalType, double intervalOffset, IntervalType intervalOffsetType, string inputSeriesName, string outputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Group (string formula, double interval, IntervalType intervalType, double intervalOffset, IntervalType intervalOffsetType, Series inputSeries, Series outputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void GroupByAxisLabel (string formula, string inputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void GroupByAxisLabel (string formula, Series inputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void GroupByAxisLabel (string formula, string inputSeriesName, string outputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void GroupByAxisLabel (string formula, Series inputSeries, Series outputSeries)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void InsertEmptyPoints (double interval, IntervalType intervalType, string seriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void InsertEmptyPoints (double interval, IntervalType intervalType, Series series)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void InsertEmptyPoints (double interval, IntervalType intervalType, double intervalOffset, IntervalType intervalOffsetType, string seriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void InsertEmptyPoints (double interval, IntervalType intervalType, double intervalOffset, IntervalType intervalOffsetType, Series series)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void InsertEmptyPoints (double interval, IntervalType intervalType, double intervalOffset, IntervalType intervalOffsetType, double fromXValue, double toXValue, string seriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void InsertEmptyPoints (double interval, IntervalType intervalType, double intervalOffset, IntervalType intervalOffsetType, double fromXValue, double toXValue, Series series)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Sort (IComparer<DataPoint> comparer, string seriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Sort (IComparer<DataPoint> comparer, Series series)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Sort (PointSortOrder pointSortOrder, string seriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Sort (PointSortOrder pointSortOrder, Series series)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Sort (PointSortOrder pointSortOrder, string sortBy, string seriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Sort (PointSortOrder pointSortOrder, string sortBy, Series series)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
index 587cbdd938d8115c78c692b2d7f7d50272136035..76a4a03438df6bd7f44812ec4ad64bfb13cd1273 100644 (file)
@@ -28,8 +28,7 @@ using System.Linq;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
-       [MonoTODO ("Base class should be DataPointCustomProperties")]
-       public class DataPoint : ChartNamedElement
+       public class DataPoint : DataPointCustomProperties
        {
                #region Constructors
                public DataPoint ()
@@ -39,32 +38,38 @@ namespace System.Windows.Forms.DataVisualization.Charting
                public DataPoint (double xValue, double yValue)
                {
                        XValue = xValue;
-                       YValue = new double[] { yValue };
+                       YValues = new double[] { yValue };
                }
 
                public DataPoint (double xValue, double[] yValues)
                {
                        XValue = xValue;
-                       YValue = yValues;
+                       YValues = yValues;
                }
 
                [MonoTODO ()]
                public DataPoint (Series series)
                {
                }
+
+               [MonoTODO ()]
+               public DataPoint(double xValue, string yValues)
+               {
+               }
+
                #endregion
 
                #region Public Properties
                public bool IsEmpty { get; set; }
                public override string Name { get; set; }
                public double XValue { get; set; }
-               public double[] YValue { get; set; }
+               public double[] YValues { get; set; }
                #endregion
 
                #region Public Methods
                public DataPoint Clone ()
                {
-                       DataPoint clone = new DataPoint (XValue, YValue);
+                       DataPoint clone = new DataPoint (XValue, YValues);
                        clone.IsEmpty = IsEmpty;
                        clone.Name = Name;
 
@@ -83,17 +88,17 @@ namespace System.Windows.Forms.DataVisualization.Charting
 
                        if (valueName.StartsWith ("y")) {
                                if (valueName.Length == 1)
-                                       return YValue[0];
+                                       return YValues[0];
 
                                int index = 0;
 
                                if (int.TryParse (valueName.Substring (1), out index)) {
-                                       if (index > YValue.Length)
+                                       if (index > YValues.Length)
                                                throw new ArgumentException ("Y index greater than number of YValues");
                                        if (index == 0)
                                                throw new ArgumentException ("Y index must be greater than zero");
 
-                                       return YValue[index - 1];
+                                       return YValues[index - 1];
                                }
                        }
 
@@ -103,12 +108,12 @@ namespace System.Windows.Forms.DataVisualization.Charting
                public void SetValueXY (object xValue, params object[] yValue)
                {
                        XValue = (double)xValue;
-                       YValue = yValue.Cast<double> ().ToArray ();
+                       YValues = yValue.Cast<double> ().ToArray ();
                }
 
                public void SetValueY (params object[] yValue)
                {
-                       YValue = yValue.Cast<double> ().ToArray ();
+                       YValues = yValue.Cast<double> ().ToArray ();
                }
                #endregion
        }
index 0d2cc6ae10350ad472a320faafc5d8ef024698d5..6dc57ab3d591a06907fa7abeb1f13ce48a4111da 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
@@ -29,5 +30,154 @@ namespace System.Windows.Forms.DataVisualization.Charting
 {
        public class DataPointCollection : ChartElementCollection<DataPoint>
        {
+               [MonoTODO]
+               public DataPoint Add (params double[] y)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public int AddXY (double xValue, double yValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public int AddXY (Object xValue, params Object[] yValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public int AddY (double yValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public int AddY (params Object[] yValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               protected override void ClearItems ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void DataBind (System.Collections.IEnumerable dataSource, string xField, string yFields, string otherFields)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void DataBindXY (System.Collections.IEnumerable xValue, params System.Collections.IEnumerable[] yValues)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void DataBindXY (System.Collections.IEnumerable xValue, string xField, System.Collections.IEnumerable yValue, string yFields)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void DataBindY (params System.Collections.IEnumerable[] yValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void DataBindY (System.Collections.IEnumerable yValue, string yFields)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public System.Collections.Generic.IEnumerable<DataPoint> FindAllByValue (double valueToFind)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public System.Collections.Generic.IEnumerable<DataPoint> FindAllByValue (double valueToFind, string useValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public System.Collections.Generic.IEnumerable<DataPoint> FindAllByValue (double valueToFind, string useValue, int startIndex)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public DataPoint FindByValue (double valueToFind)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public DataPoint FindByValue (double valueToFind, string useValue)
+               {
+                       return FindByValue( valueToFind, useValue, 0);
+               }
+
+               [MonoTODO]
+               public DataPoint FindByValue (double valueToFind, string useValue, int startIndex)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public DataPoint FindMaxByValue () 
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public DataPoint FindMaxByValue (string useValue)
+               {
+                       return FindMaxByValue (useValue, 0);
+               }
+
+               [MonoTODO]
+               public DataPoint FindMaxByValue (string useValue, int startIndex)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public DataPoint FindMinByValue ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public DataPoint FindMinByValue (string useValue)
+               {
+                       return FindMinByValue (useValue, 0);
+               }
+
+               [MonoTODO]
+               public DataPoint FindMinByValue (string useValue, int startIndex)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void InsertXY (int index, Object xValue, params Object[] yValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void InsertY (int index, params Object[] yValue)
+               {
+                       throw new NotImplementedException ();
+               }
        }
 }
index 18a2acabd1d5d8b484fc88a5723eb47523809be7..4a185f574f231e6a3629fb0bda3f0aac030e3ccc 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.Drawing;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
        public class DataPointCustomProperties : ChartNamedElement
        {
+               public virtual string AxisLabel { get; set; }
+               public GradientStyle BackGradientStyle { get; set; }
+               public ChartHatchStyle BackHatchStyle { get; set; }
+               public string BackImage { get; set; }
+               public ChartImageAlignmentStyle BackImageAlignment { get; set; }
+               public Color BackImageTransparentColor { get; set; }
+               public ChartImageWrapMode BackImageWrapMode { get; set; }
+               public Color BackSecondaryColor { get; set; }
+               public Color BorderColor { get; set; }
+               public ChartDashStyle BorderDashStyle { get; set; }
+               public int BorderWidth { get; set; }
+               public Color Color { get; set; }
+               public string CustomProperties { get; set; }
+               public CustomProperties CustomPropertiesExtended { get; set; }
+               public Font Font { get; set; }
+               public bool IsValueShownAsLabel { get; set; }
+               public bool IsVisibleInLegend { get; set; }
+               
+               [MonoTODO]
+               public string this[int idx] {
+                       get { 
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+               [MonoTODO]
+               public string this[string propName] {
+                       get { 
+                               throw new NotImplementedException ();
+                       }
+                       set {
+                               throw new NotImplementedException ();
+                       }
+               }
+
+               public virtual string Label { get; set; }
+               public int LabelAngle { get; set; }
+               public Color LabelBackColor { get; set; }
+               public Color LabelBorderColor { get; set; }
+               public ChartDashStyle LabelBorderDashStyle { get; set; }
+               public int LabelBorderWidth { get; set; }
+               public Color LabelForeColor { get; set; }
+               public string LabelFormat { get; set; }
+               public string LabelToolTip { get; set; }
+               public string LegendText { get; set; }
+               public string LegendToolTip { get; set; }
+               public Color MarkerBorderColor { get; set; }
+               public int MarkerBorderWidth { get; set; }
+               public Color MarkerColor { get; set; }
+               public string MarkerImage { get; set; }
+               public Color MarkerImageTransparentColor { get; set; }
+               public int MarkerSize { get; set; }
+               public MarkerStyle MarkerStyle { get; set; }
+               public string ToolTip { get; set; }
+
+               #region Public methods
+               [MonoTODO]
+               public virtual void DeleteCustomProperty (string name)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public virtual string GetCustomProperty(string name)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public virtual bool IsCustomPropertySet(string name)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void ResetIsValueShownAsLabel ()
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void ResetIsVisibleInLegend ()
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public virtual void SetCustomProperty (string name,string propertyValue)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public virtual void SetDefault (bool clearAll)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               #endregion
        }
 }
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/EllipseAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/EllipseAnnotation.cs
new file mode 100644 (file)
index 0000000..1ae20f2
--- /dev/null
@@ -0,0 +1,30 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class EllipseAnnotation : RectangleAnnotation
+       {
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/FTestResult.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/FTestResult.cs
new file mode 100644 (file)
index 0000000..be200a7
--- /dev/null
@@ -0,0 +1,37 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class FTestResult
+       {
+               public double FCriticalValueOneTail { get; private set;}
+               public double FirstSeriesMean { get; private set;}
+               public double FirstSeriesVariance { get; private set;}
+               public double FValue { get; private set;}
+               public double ProbabilityFOneTail { get; private set;}
+               public double SecondSeriesMean { get; private set;}
+               public double SecondSeriesVariance { get; private set;}
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/HitTestResult.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/HitTestResult.cs
new file mode 100644 (file)
index 0000000..41d685a
--- /dev/null
@@ -0,0 +1,40 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class HitTestResult
+       {
+               public Axis Axis { get; set; }
+               public ChartArea ChartArea { get; set; }
+               public ChartElementType ChartElementType { get; set; }
+               public int PointIndex { get; set; }
+               public Series Series { get; set; }
+               public Object Object { get; set; }
+               public Object SubObject { get; set; }
+       }
+}
+       
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/HorizontalLineAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/HorizontalLineAnnotation.cs
new file mode 100644 (file)
index 0000000..38519c8
--- /dev/null
@@ -0,0 +1,30 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class HorizontalLineAnnotation : LineAnnotation
+       {
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ImageAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ImageAnnotation.cs
new file mode 100644 (file)
index 0000000..a2b8869
--- /dev/null
@@ -0,0 +1,47 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class ImageAnnotation : Annotation
+       {
+               public override ContentAlignment Alignment { get; set; }
+               public override string AnnotationType { get { throw new NotImplementedException (); } } //FIXME - find out what MS implementation returns here
+               public override Color BackColor { get; set; }
+               public override GradientStyle BackGradientStyle { get; set; }
+               public override ChartHatchStyle BackHatchStyle { get; set; }
+               public override Color BackSecondaryColor { get; set; }
+               public override Font Font { get; set; }
+               public override Color ForeColor { get; set; }
+               public virtual string Image { get; set; }
+               public Color ImageTransparentColor { get; set; }
+               public ChartImageWrapMode ImageWrapMode { get; set; }
+               public override Color LineColor { get; set; }
+               public override ChartDashStyle LineDashStyle { get; set; }
+               public override int LineWidth { get; set; }
+               public override TextStyle TextStyle { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LabelStyle.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LabelStyle.cs
new file mode 100644 (file)
index 0000000..2e81737
--- /dev/null
@@ -0,0 +1,44 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class LabelStyle : ChartElement
+       {
+               public int Angle { get; set; }
+               public bool Enabled { get; set; }
+               public Font Font { get; set; }
+               public Color ForeColor { get; set; }
+               public string Format { get; set; }
+               public double Interval { get; set; }
+               public DateTimeIntervalType IntervalType { get; set; }
+               public double IntervalOffset { get; set; }
+               public DateTimeIntervalType IntervalOffsetType { get; set; }
+               public bool IsEndLabelVisible { get; set; }
+               public bool IsStaggered { get; set; }
+               public bool TruncatedLabels { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Legend.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Legend.cs
new file mode 100644 (file)
index 0000000..024ae65
--- /dev/null
@@ -0,0 +1,92 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class Legend : ChartNamedElement
+       {
+               public Legend ()
+               {
+               }
+               public Legend (string name)
+               {
+                       Name = name;
+               }
+
+               public StringAlignment Alignment { get; set; }
+               public int AutoFitMinFontSize { get; set; }
+               public Color BackColor { get; set; }
+               public GradientStyle BackGradientStyle { get; set; }
+               public ChartHatchStyle BackHatchStyle { get; set; }
+               public string BackImage { get; set; }
+               public ChartImageAlignmentStyle BackImageAlignment { get; set; }
+               public Color BackImageTransparentColor { get; set; }
+               public ChartImageWrapMode BackImageWrapMode { get; set; }
+               public Color BackSecondaryColor { get; set; }
+               public Color BorderColor { get; set; }
+               public ChartDashStyle BorderDashStyle { get; set; }
+               public int BorderWidth { get; set; }
+               public LegendCellColumnCollection CellColumns { get; private set; }
+               public LegendItemsCollection CustomItems { get; private set; }
+               public string DockedToChartArea { get; set; }
+               public Docking Docking { get; set; }
+               public bool Enabled { get; set; }
+               public Font Font { get; set; }
+               public Color ForeColor { get; set; }
+               public LegendSeparatorStyle HeaderSeparator { get; set; }
+               public Color HeaderSeparatorColor { get; set; }
+               public string InsideChartArea { get; set; }
+               public bool InterlacedRows { get; set; }
+               public Color InterlacedRowsColor { get; set; }
+               public bool IsDockedInsideChartArea { get; set; }
+               public bool IsEquallySpacedItems { get; set; }
+               public bool IsTextAutoFit { get; set; }
+               public LegendSeparatorStyle ItemColumnSeparator { get; set; }
+               public Color ItemColumnSeparatorColor { get; set; }
+               public int ItemColumnSpacing { get; set; }
+               public LegendItemOrder LegendItemOrder { get; set; }
+               public LegendStyle LegendStyle { get; set; }
+               public float MaximumAutoSize { get; set; }
+               public override string Name { get; set; }
+               public ElementPosition Position { get; set; }
+               public Color ShadowColor { get; set; }
+               public int ShadowOffset { get; set; }
+               public LegendTableStyle TableStyle { get; set; }
+               public int TextWrapThreshold { get; set; }
+               public string Title { get; set; }
+               public StringAlignment TitleAlignment { get; set; }
+               public Color TitleBackColor { get; set; }
+               public Font TitleFont { get; set; }
+               public Color TitleForeColor { get; set; }
+               public LegendSeparatorStyle TitleSeparator { get; set; }
+               public Color TitleSeparatorColor { get; set; }
+
+               [MonoTODO]
+               protected override void Dispose(bool disposing){
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCell.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCell.cs
new file mode 100644 (file)
index 0000000..1abb421
--- /dev/null
@@ -0,0 +1,61 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class LegendCell : ChartNamedElement
+       {
+               public LegendCell ()
+               {
+               }
+               public LegendCell (string text)
+               {
+               }
+               public LegendCell (LegendCellType cellType, string text)
+               {
+               }
+               public LegendCell (LegendCellType cellType, string text, ContentAlignment alignment)
+               {
+               }
+
+               public virtual ContentAlignment Alignment { get; set; }
+               public virtual Color BackColor { get; set; }
+               public virtual int CellSpan { get; set; }
+               public virtual LegendCellType CellType { get; set; }
+               public virtual Font Font { get; set; }
+               public virtual Color ForeColor { get; set; }
+               public virtual string Image { get; set; }
+               public virtual Size ImageSize { get; set; }
+               public virtual Color ImageTransparentColor { get; set; }
+               public virtual Legend Legend { get; private set;}
+               public virtual LegendItem LegendItem { get; private set;}
+               public virtual Margins Margins { get; set; }
+               public override string Name { get; set; }
+               public virtual Size SeriesSymbolSize { get; set; }
+               public virtual string Text { get; set; }
+               public virtual string ToolTip { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCellCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCellCollection.cs
new file mode 100644 (file)
index 0000000..8eeb51b
--- /dev/null
@@ -0,0 +1,43 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class LegendCellCollection : ChartNamedElementCollection<LegendCell>
+       {
+               [MonoTODO]
+               public int Add (LegendCellType cellType, string text, ContentAlignment alignment)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public void Insert (int index, LegendCellType cellType, string text, ContentAlignment alignment)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCellColumn.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCellColumn.cs
new file mode 100644 (file)
index 0000000..4a8d880
--- /dev/null
@@ -0,0 +1,50 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class LegendCellColumn : ChartNamedElement
+       {
+               public virtual ContentAlignment Alignment { get; set; }
+               public virtual Color BackColor { get; set; }
+               public virtual LegendCellColumnType ColumnType { get; set; }
+               public virtual Font Font { get; set; }
+               public virtual Color ForeColor { get; set; }
+               public StringAlignment HeaderAlignment { get; set; }
+               public virtual Color HeaderBackColor { get; set; }
+               public virtual Font HeaderFont { get; set; }
+               public virtual Color HeaderForeColor { get; set; }
+               public virtual string HeaderText { get; set; }
+               public virtual Legend Legend { get; private set;}
+               public virtual Margins Margins { get; set; }
+               public virtual int MaximumWidth { get; set; }
+               public virtual int MinimumWidth { get; set; }
+               public override string Name { get; set; }
+               public virtual Size SeriesSymbolSize { get; set; }
+               public virtual string Text { get; set; }
+               public virtual string ToolTip { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCellColumnCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCellColumnCollection.cs
new file mode 100644 (file)
index 0000000..5063f9e
--- /dev/null
@@ -0,0 +1,39 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class LegendCellColumnCollection : ChartNamedElementCollection<LegendCellColumn>
+       {
+
+               [MonoTODO]
+               protected override void Dispose (bool disposing)
+               {
+                       throw new NotImplementedException();
+               }
+
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendCollection.cs
new file mode 100644 (file)
index 0000000..ee1a44e
--- /dev/null
@@ -0,0 +1,30 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class LegendCollection : ChartNamedElementCollection<Legend>
+       {
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendItem.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendItem.cs
new file mode 100644 (file)
index 0000000..89d99ec
--- /dev/null
@@ -0,0 +1,72 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class LegendItem : ChartNamedElement
+       {
+               public LegendItem ()
+               {
+                       Cells = new LegendCellCollection ();
+               }
+               public LegendItem (string name,Color color,string image)
+               {
+                       this.Name = name;
+                       this.Color = color;
+                       this.Image = image;
+                       Cells = new LegendCellCollection ();
+               }
+
+               public GradientStyle BackGradientStyle { get; set; }
+               public ChartHatchStyle BackHatchStyle { get; set; }
+               public Color BackImageTransparentColor { get; set; }
+               public Color BackSecondaryColor { get; set; }
+               public Color BorderColor { get; set; }
+               public ChartDashStyle BorderDashStyle { get; set; }
+               public int BorderWidth { get; set; }
+               public LegendCellCollection Cells { get; private set; }
+               public Color Color { get; set; }
+               public bool Enabled { get; set; }
+               public string Image { get; set; }
+               public LegendImageStyle ImageStyle { get; set; }
+               public Legend Legend { get; private set;}
+               public Color MarkerBorderColor { get; set; }
+               public int MarkerBorderWidth { get; set; }
+               public Color MarkerColor { get; set; }
+               public string MarkerImage { get; set; }
+               public Color MarkerImageTransparentColor { get; set; }
+               public int MarkerSize { get; set; }
+               public MarkerStyle MarkerStyle { get; set; }
+               public override string Name { get; set; }
+               public Color SeparatorColor { get; set; }
+               public LegendSeparatorStyle SeparatorType { get; set; }
+               public string SeriesName { get; set; }
+               public int SeriesPointIndex { get; set; }
+               public Color ShadowColor { get; set; }
+               public int ShadowOffset { get; set; }
+               public string ToolTip { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendItemsCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LegendItemsCollection.cs
new file mode 100644 (file)
index 0000000..09a5d45
--- /dev/null
@@ -0,0 +1,57 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class LegendItemsCollection : ChartElementCollection<LegendItem>
+       {
+               [MonoTODO]
+               public int Add (Color color, string text)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public int Add (string image, string text)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void Insert (int index, Color color, string text)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void Insert (int index, string image, string text)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void Reverse()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LineAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/LineAnnotation.cs
new file mode 100644 (file)
index 0000000..803f9aa
--- /dev/null
@@ -0,0 +1,46 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class LineAnnotation : Annotation
+       {
+               public override ContentAlignment Alignment { get; set; }
+               public override ContentAlignment AnchorAlignment { get; set; }
+               public override string AnnotationType { get { throw new NotImplementedException (); } } //FIXME - find out what MS implementation returns here
+               public override Color BackColor { get; set; }
+               public override GradientStyle BackGradientStyle { get; set; }
+               public override ChartHatchStyle BackHatchStyle { get; set; }
+               public override Color BackSecondaryColor { get; set; }
+               public virtual LineAnchorCapStyle EndCap { get; set; }
+               public override Font Font { get; set; }
+               public override Color ForeColor { get; set; }
+               public virtual bool IsInfinitive { get; set; }
+               public override bool IsSizeAlwaysRelative { get; set; }
+               public virtual LineAnchorCapStyle StartCap { get; set; }
+               public override TextStyle TextStyle { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/PolygonAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/PolygonAnnotation.cs
new file mode 100644 (file)
index 0000000..21c2c17
--- /dev/null
@@ -0,0 +1,30 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class PolygonAnnotation : PolylineAnnotation
+       {
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/PolylineAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/PolylineAnnotation.cs
new file mode 100644 (file)
index 0000000..691695b
--- /dev/null
@@ -0,0 +1,51 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+using System.Drawing.Drawing2D;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class PolylineAnnotation : Annotation
+       {
+               public PolylineAnnotation ()
+               {
+                       GraphicsPathPoints = new AnnotationPathPointCollection ();
+               }
+               public override ContentAlignment Alignment { get; set; }
+               public override string AnnotationType { get { throw new NotImplementedException (); } } //FIXME - find out what MS implementation returns here
+               public override Color BackColor { get; set; }
+               public override GradientStyle BackGradientStyle { get; set; }
+               public override ChartHatchStyle BackHatchStyle { get; set; }
+               public override Color BackSecondaryColor { get; set; }
+               public virtual LineAnchorCapStyle EndCap { get; set; }
+               public override Font Font { get; set; }
+               public override Color ForeColor { get; set; }
+               public virtual GraphicsPath GraphicsPath { get; set; }
+               public AnnotationPathPointCollection GraphicsPathPoints { get; private set; }
+               public virtual bool IsFreeDrawPlacement { get; set; }
+               public virtual LineAnchorCapStyle StartCap { get; set; }
+               public override TextStyle TextStyle { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/PrintingManager.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/PrintingManager.cs
new file mode 100644 (file)
index 0000000..a9e7397
--- /dev/null
@@ -0,0 +1,65 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+using System.Drawing.Printing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class PrintingManager : IDisposable
+       {
+               public PrintDocument PrintDocument { get; set; }
+
+               [MonoTODO]
+               public void Dispose ()
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               protected virtual void Dispose (bool disposing)
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               public void PageSetup ()
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               public void Print (bool showPrintDialog)
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               public void PrintPaint (Graphics graphics,Rectangle position)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void PrintPreview ()
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/RectangleAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/RectangleAnnotation.cs
new file mode 100644 (file)
index 0000000..0fe95b7
--- /dev/null
@@ -0,0 +1,33 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class RectangleAnnotation : TextAnnotation
+       {
+               public override string AnnotationType { get { throw new NotImplementedException (); } } //FIXME - find out what MS implementation returns here
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ScrollBarEventArgs.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ScrollBarEventArgs.cs
new file mode 100644 (file)
index 0000000..a62650d
--- /dev/null
@@ -0,0 +1,38 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class ScrollBarEventArgs : EventArgs
+       {
+               public Axis Axis { get; private set; }
+               public ScrollBarButtonType ButtonType { get; private set;}
+               public ChartArea ChartArea { get; private set;}
+               public bool IsHandled { get; set; }
+               public int MousePositionX { get; private set; }
+               public int MousePositionY { get; private set; }
+       }
+}
index 856bd4f213e54b95269a458df7fd362bb6e546c2..4c64b0c72ff471f3d5f8a117a64ebbee362a01f8 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
@@ -24,6 +25,8 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 using System;
+using System.Drawing;
+using System.Collections.Generic;
 
 namespace System.Windows.Forms.DataVisualization.Charting
 {
@@ -33,9 +36,61 @@ namespace System.Windows.Forms.DataVisualization.Charting
                {
                        Points = new DataPointCollection ();
                }
+               public Series (string name)
+               {
+                       Name = name;
+               }
+               public Series (string name,int yValues)
+               {
+                       Name = name;
+                       YValuesPerPoint = yValues;
+               }
 
+               public override string AxisLabel { get; set; }
                public string ChartArea { get; set; }
+               public SeriesChartType ChartType { get; set; }
+               public string ChartTypeName { get; set; }
+               public DataPointCustomProperties EmptyPointStyle { get; set; }
+               public bool Enabled { get; set; }
+               public bool IsXValueIndexed { get; set; }
+               public string Legend { get; set; }
+               public int MarkerStep { get; set; }
                public override string Name { get; set; }
+               public ChartColorPalette Palette { get; set; }
                public DataPointCollection Points { get; private set; }
+               public Color ShadowColor { get; set; }
+               public int ShadowOffset { get; set; }
+               public SmartLabelStyle SmartLabelStyle { get; set; }
+               public AxisType XAxisType { get; set; }
+               public string XValueMember { get; set; }
+               public ChartValueType XValueType { get; set; }
+               public AxisType YAxisType { get; set; }
+               public string YValueMembers { get; set; }
+               public ChartValueType YValueType { get; set; }
+
+               public int YValuesPerPoint { get; set; }
+
+
+               [MonoTODO]
+               protected override void Dispose (bool disposing)
+               {
+                       throw new NotImplementedException();
+               }
+
+               [MonoTODO]
+               public void Sort (IComparer<DataPoint> comparer)
+               {
+                       throw new NotImplementedException();
+               }
+               [MonoTODO]
+               public void Sort (PointSortOrder pointSortOrder)
+               {
+                       throw new NotImplementedException ();
+               }
+               [MonoTODO]
+               public void Sort (PointSortOrder pointSortOrder,string sortBy)
+               {
+                       throw new NotImplementedException();
+               }
        }
 }
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/SmartLabelStyle.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/SmartLabelStyle.cs
new file mode 100644 (file)
index 0000000..282f428
--- /dev/null
@@ -0,0 +1,45 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class SmartLabelStyle
+       {
+               public virtual LabelOutsidePlotAreaStyle AllowOutsidePlotArea { get; set; }
+               public virtual Color CalloutBackColor { get; set; }
+               public virtual LineAnchorCapStyle CalloutLineAnchorCapStyle { get; set; }
+               public virtual Color CalloutLineColor { get; set; }
+               public virtual ChartDashStyle CalloutLineDashStyle { get; set; }
+               public virtual int CalloutLineWidth { get; set; }
+               public virtual LabelCalloutStyle CalloutStyle { get; set; }
+               public virtual bool Enabled { get; set; }
+               public virtual bool IsMarkerOverlappingAllowed { get; set; }
+               public virtual bool IsOverlappedHidden { get; set; }
+               public virtual double MaxMovingDistance { get; set; }
+               public virtual double MinMovingDistance { get; set; }
+               public virtual LabelAlignmentStyles MovingDirection { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/StatisticFormula.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/StatisticFormula.cs
new file mode 100644 (file)
index 0000000..ad7607d
--- /dev/null
@@ -0,0 +1,147 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class StatisticFormula
+       {
+               [MonoTODO]
+               public AnovaResult Anova (double probability, string inputSeriesNames)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double BetaFunction (double m, double n)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double Correlation (string firstInputSeriesName, string secondInputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double Covariance (string firstInputSeriesName, string secondInputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double FDistribution (double value, int firstDegreeOfFreedom, int secondDegreeOfFreedom)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public FTestResult FTest (double probability, string firstInputSeriesName, string secondInputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double GammaFunction (double value)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double InverseFDistribution (double probability, int firstDegreeOfFreedom, int secondDegreeOfFreedom){
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double InverseNormalDistribution (double probability)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double InverseTDistribution (double probability, int degreeOfFreedom)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double Mean (string inputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double Median (string inputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double NormalDistribution (double zValue)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double TDistribution (double value, int degreeOfFreedom, bool oneTail)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public TTestResult TTestEqualVariances (double hypothesizedMeanDifference, double probability, 
+                                                               string firstInputSeriesName, string secondInputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public TTestResult TTestPaired (double hypothesizedMeanDifference, double probability, 
+                                                       string firstInputSeriesName, string secondInputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public TTestResult TTestUnequalVariances (double hypothesizedMeanDifference, double probability, 
+                                                               string firstInputSeriesName, string secondInputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public double Variance (string inputSeriesName, bool sampleVariance)
+               {
+                       throw new NotImplementedException ();
+               }
+
+               [MonoTODO]
+               public ZTestResult ZTest (double hypothesizedMeanDifference, double varianceFirstGroup, 
+                                               double varianceSecondGroup, double probability, 
+                                               string firstInputSeriesName, string secondInputSeriesName)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/StripLine.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/StripLine.cs
new file mode 100644 (file)
index 0000000..1ee8101
--- /dev/null
@@ -0,0 +1,57 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class StripLine : ChartElement
+       {
+               public Color BackColor { get; set; }
+               public GradientStyle BackGradientStyle { get; set; }
+               public ChartHatchStyle BackHatchStyle { get; set; }
+               public string BackImage { get; set; }
+               public ChartImageAlignmentStyle BackImageAlignment { get; set; }
+               public Color BackImageTransparentColor { get; set; }
+               public ChartImageWrapMode BackImageWrapMode { get; set; }
+               public Color BackSecondaryColor { get; set; }
+               public Color BorderColor { get; set; }
+               public ChartDashStyle BorderDashStyle { get; set; }
+               public int BorderWidth { get; set; }
+               public Font Font { get; set; }
+               public Color ForeColor { get; set; }
+               public double Interval { get; set; }
+               public double IntervalOffset { get; set; }
+               public DateTimeIntervalType IntervalOffsetType { get; set; }
+               public DateTimeIntervalType IntervalType { get; set; }
+               public string Name { get; private set; }
+               public double StripWidth { get; set; }
+               public DateTimeIntervalType StripWidthType { get; set; }
+               public string Text { get; set; }
+               public StringAlignment TextAlignment { get; set; }
+               public StringAlignment TextLineAlignment { get; set; }
+               public TextOrientation TextOrientation { get; set; }
+               public string ToolTip { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/StripLinesCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/StripLinesCollection.cs
new file mode 100644 (file)
index 0000000..b9a98a8
--- /dev/null
@@ -0,0 +1,31 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+
+       public class StripLinesCollection : ChartElementCollection<StripLine>
+       {
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/TTestResult.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/TTestResult.cs
new file mode 100644 (file)
index 0000000..312d254
--- /dev/null
@@ -0,0 +1,40 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class TTestResult
+       {
+               public double DegreeOfFreedom { get; private set;}
+               public double FirstSeriesMean { get; private set;}
+               public double FirstSeriesVariance { get; private set;}
+               public double ProbabilityTOneTail { get; private set;}
+               public double ProbabilityTTwoTail { get; private set;}
+               public double SecondSeriesMean { get; private set;}
+               public double SecondSeriesVariance { get; private set;}
+               public double TCriticalValueOneTail { get; private set;}
+               public double TCriticalValueTwoTail { get; private set;}
+               public double TValue { get; private set;}
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/TextAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/TextAnnotation.cs
new file mode 100644 (file)
index 0000000..9bbc074
--- /dev/null
@@ -0,0 +1,43 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class TextAnnotation : Annotation
+       {
+               public override string AnnotationType { get { throw new NotImplementedException (); } } //FIXME - find out what MS implementation returns here
+               public override Color BackColor { get; set; }
+               public override GradientStyle BackGradientStyle { get; set; }
+               public override ChartHatchStyle BackHatchStyle { get; set; }
+               public override Color BackSecondaryColor { get; set; }
+               public override Font Font { get; set; }
+               public virtual bool IsMultiline { get; set; }
+               public override Color LineColor { get; set; }
+               public override ChartDashStyle LineDashStyle { get; set; }
+               public override int LineWidth { get; set; }
+               public virtual string Text { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Title.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/Title.cs
new file mode 100644 (file)
index 0000000..ea6a19b
--- /dev/null
@@ -0,0 +1,88 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class Title : ChartNamedElement, IDisposable
+       {
+               public Title ()
+               {
+               }
+               public Title (string text)
+               { 
+                       this.Text = text; 
+               }
+               public Title (string text, Docking docking)
+               {
+                       this.Text = text;
+                       this.Docking = docking;
+               }
+               public Title (string text,
+                               Docking docking,
+                               Font font,
+                               Color color)
+               {
+                       this.Text = text;
+                       this.Docking = docking;
+                       this.Font = font;
+                       this.ForeColor = color;
+               }
+
+               public ContentAlignment Alignment { get; set; }
+               public Color BackColor { get; set; }
+               public GradientStyle BackGradientStyle { get; set; }
+               public ChartHatchStyle BackHatchStyle { get; set; }
+               public string BackImage { get; set; }
+               public ChartImageAlignmentStyle BackImageAlignment { get; set; }
+               public Color BackImageTransparentColor { get; set; }
+               public ChartImageWrapMode BackImageWrapMode { get; set; }
+               public Color BackSecondaryColor { get; set; }
+               public Color BorderColor { get; set; }
+               public ChartDashStyle BorderDashStyle { get; set; }
+               public int BorderWidth { get; set; }
+               public string DockedToChartArea { get; set; }
+               public Docking Docking { get; set; }
+               public int DockingOffset { get; set; }
+               public Font Font { get; set; }
+               public Color ForeColor { get; set; }
+               public bool IsDockedInsideChartArea { get; set; }
+               public override string Name { get; set; }
+               public ElementPosition Position { get; set; }
+               public Color ShadowColor { get; set; }
+               public int ShadowOffset { get; set; }
+               public string Text { get; set; }
+               public TextOrientation TextOrientation { get; set; }
+               public TextStyle TextStyle { get; set; }
+               public string ToolTip { get; set; }
+               public virtual bool Visible { get; set; }
+
+               [MonoTODO]
+               protected override void Dispose (bool disposing)
+               {
+                       throw new NotImplementedException ();
+               }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/TitleCollection.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/TitleCollection.cs
new file mode 100644 (file)
index 0000000..31c884a
--- /dev/null
@@ -0,0 +1,30 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class TitleCollection : ChartNamedElementCollection<Title>
+       {
+       }
+}
index 0dff392b8251458acf10d61a34bd6768eb4a31e5..7828e88c6bd034704e119d20fd2ffe5b146efa66 100644 (file)
@@ -1,6 +1,7 @@
 ï»¿//
 // Authors:
 // Jonathan Pobst (monkey@jpobst.com)
+// Francis Fisher (frankie@terrorise.me.uk)
 //
 // Copyright (C) 2009 Novell, Inc (http://www.novell.com) 
 //
@@ -31,9 +32,18 @@ namespace System.Windows.Forms.DataVisualization.Charting
        public class ToolTipEventArgs : EventArgs
        {
                #region Constructors
-               //public ToolTipEventArgs (int x, int y, string text, HitTestResult result)
-               //{
-               //}
+               public ToolTipEventArgs (int x, int y, string text, HitTestResult result)
+               {
+                       X = x;
+                       Y = y;
+                       Text = text;
+                       HitTestResult = result;
+               }
                #endregion
+
+               public HitTestResult HitTestResult { get; private set;}
+               public string Text { get; set; }
+               public int X { get; private set; }
+               public int Y { get; private set;}
        }
 }
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/VerticalLineAnnotation.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/VerticalLineAnnotation.cs
new file mode 100644 (file)
index 0000000..5181204
--- /dev/null
@@ -0,0 +1,30 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class VerticalLineAnnotation : LineAnnotation
+       {
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ViewEventArgs.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ViewEventArgs.cs
new file mode 100644 (file)
index 0000000..9731608
--- /dev/null
@@ -0,0 +1,37 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+using System.Drawing;
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class ViewEventArgs : EventArgs
+       {
+               public Axis Axis { get; private set;}
+               public ChartArea ChartArea { get; private set;}
+               public double NewPosition { get; set; }
+               public double NewSize { get; set; }
+               public DateTimeIntervalType NewSizeType { get; set; }
+       }
+}
diff --git a/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ZTestResult.cs b/mcs/class/System.Windows.Forms.DataVisualization/System.Windows.Forms.DataVisualization.Charting/ZTestResult.cs
new file mode 100644 (file)
index 0000000..5cde52e
--- /dev/null
@@ -0,0 +1,39 @@
+// Authors:
+// Francis Fisher (frankie@terrorise.me.uk)
+//
+// (C) Francis Fisher 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+namespace System.Windows.Forms.DataVisualization.Charting
+{
+       public class ZTestResult
+       {
+               public double FirstSeriesMean { get; private set; }
+               public double FirstSeriesVariance { get; private set; }
+               public double ProbabilityZOneTail { get; private set; }
+               public double ProbabilityZTwoTail { get; private set; }
+               public double SecondSeriesMean { get; private set; }
+               public double SecondSeriesVariance { get; private set; }
+               public double ZCriticalValueOneTail { get; private set; }
+               public double ZCriticalValueTwoTail { get; private set; }
+               public double ZValue { get; private set; }
+       }
+}
index 6eda3b58e66d00d12c00469eee8c381e1724a5df..e041b9ef8130ed81bdbf6c5db24c8522a9c98c37 100644 (file)
@@ -35,7 +35,6 @@
       <EmbedInteropTypes>True</EmbedInteropTypes>\r
     </Reference>\r
     <Reference Include="System" />\r
-    <Reference Include="System.configuration" />\r
     <Reference Include="System.Core" />\r
     <Reference Include="System.Drawing" />\r
     <Reference Include="System.Windows.Forms" />\r
     <Reference Include="Microsoft.CSharp" />\r
     <Reference Include="System.Data" />\r
     <Reference Include="System.Xml" />\r
+    <Reference Include="System.Configuration" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
-    <Compile Include="common\MonoTODOAttribute.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\Axis.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\AxisScaleView.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartArea3DStyle.cs" />\r
@@ -59,6 +58,8 @@
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\MarkerStyle.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationPathPoint.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationPathPointCollection.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Annotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationPositionChangingEventArgs.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnovaResult.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\AreaAlignmentOrientations.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\AreaAlignmentStyles.cs" />\r
@@ -92,6 +93,9 @@
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartNamedElement.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartNamedElementCollection.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartValueType.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CursorEventArgs.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CustomLabel.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CustomLabelCollection.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\CompareMethod.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\DataPoint.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\DataPointCollection.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\TickMark.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\TickMarkStyle.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\ToolTipEventArgs.cs" />\r
+    <Compile Include="..\..\build\common\Consts.cs">\r
+      <Link>Consts.cs</Link>\r
+    </Compile>\r
+    <Compile Include="..\..\build\common\MonoTODOAttribute.cs">\r
+      <Link>MonoTODOAttribute.cs</Link>\r
+    </Compile>\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LabelStyle.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AxisScrollBar.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\StripLine.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\StripLinesCollection.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Legend.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCellColumn.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ScrollBarEventArgs.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ViewEventArgs.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\HitTestResult.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendItem.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\SmartLabelStyle.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CustomProperties.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Title.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationCollection.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartSerializer.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\DataManipulator.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCollection.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\PrintingManager.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TitleCollection.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\DataFormula.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\BorderSkin.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCellColumnCollection.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendItemsCollection.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCell.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LegendCellCollection.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CalloutAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TextAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\LineAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\RectangleAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationGroup.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnnotationSmartLabelStyle.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Cursor.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\CustomizeLegendEventArgs.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\PolylineAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\Border3DAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\EllipseAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\HorizontalLineAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ImageAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\PolygonAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\VerticalLineAnnotation.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\StatisticFormula.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\FTestResult.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TTestResult.cs" />\r
+    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ZTestResult.cs" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Compile Include="common\Consts.cs" />\r
+    <Folder Include="common\" />\r
   </ItemGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
   <Target Name="AfterBuild">\r
   </Target>\r
   -->\r
-</Project>
\ No newline at end of file
+</Project>\r
index 873a00f08dc7b3b0840d07a40bd2019dd76837a8..222e657e6df7de8d3898bec2bccf4c63d3b010f3 100644 (file)
@@ -3,22 +3,34 @@
 Assembly/AssemblyInfo.cs\r
 System.Windows.Forms.DataVisualization.Charting/AnnotationPathPoint.cs\r
 System.Windows.Forms.DataVisualization.Charting/AnnotationPathPointCollection.cs\r
+System.Windows.Forms.DataVisualization.Charting/Annotation.cs\r
+System.Windows.Forms.DataVisualization.Charting/AnnotationCollection.cs\r
+System.Windows.Forms.DataVisualization.Charting/AnnotationGroup.cs\r
+System.Windows.Forms.DataVisualization.Charting/AnnotationPositionChangingEventArgs.cs\r
+System.Windows.Forms.DataVisualization.Charting/AnnotationSmartLabelStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/AnovaResult.cs\r
 System.Windows.Forms.DataVisualization.Charting/AntiAliasingStyles.cs\r
 System.Windows.Forms.DataVisualization.Charting/AreaAlignmentOrientations.cs\r
 System.Windows.Forms.DataVisualization.Charting/AreaAlignmentStyles.cs\r
 System.Windows.Forms.DataVisualization.Charting/ArrowAnnotation.cs\r
 System.Windows.Forms.DataVisualization.Charting/ArrowStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/Axis.cs\r
 System.Windows.Forms.DataVisualization.Charting/AxisArrowStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/AxisEnabled.cs\r
 System.Windows.Forms.DataVisualization.Charting/AxisName.cs\r
 System.Windows.Forms.DataVisualization.Charting/AxisScaleBreakStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/AxisScaleView.cs\r
+System.Windows.Forms.DataVisualization.Charting/AxisScrollBar.cs\r
 System.Windows.Forms.DataVisualization.Charting/AxisType.cs\r
+System.Windows.Forms.DataVisualization.Charting/Border3DAnnotation.cs\r
+System.Windows.Forms.DataVisualization.Charting/BorderSkin.cs\r
 System.Windows.Forms.DataVisualization.Charting/BorderSkinStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/BreakLineStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/CalloutAnnotation.cs\r
 System.Windows.Forms.DataVisualization.Charting/CalloutStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/Chart.cs\r
 System.Windows.Forms.DataVisualization.Charting/ChartArea.cs\r
+System.Windows.Forms.DataVisualization.Charting/ChartArea3DStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/ChartAreaCollection.cs\r
 System.Windows.Forms.DataVisualization.Charting/ChartColorPalette.cs\r
 System.Windows.Forms.DataVisualization.Charting/ChartDashStyle.cs\r
@@ -33,8 +45,17 @@ System.Windows.Forms.DataVisualization.Charting/ChartImageWrapMode.cs
 System.Windows.Forms.DataVisualization.Charting/ChartNamedElement.cs\r
 System.Windows.Forms.DataVisualization.Charting/ChartNamedElementCollection.cs\r
 System.Windows.Forms.DataVisualization.Charting/ChartPaintEventArgs.cs\r
+System.Windows.Forms.DataVisualization.Charting/ChartSerializer.cs\r
 System.Windows.Forms.DataVisualization.Charting/ChartValueType.cs\r
+System.Windows.Forms.DataVisualization.Charting/Cursor.cs\r
+System.Windows.Forms.DataVisualization.Charting/CursorEventArgs.cs\r
+System.Windows.Forms.DataVisualization.Charting/CustomizeLegendEventArgs.cs\r
+System.Windows.Forms.DataVisualization.Charting/CustomLabel.cs\r
+System.Windows.Forms.DataVisualization.Charting/CustomLabelCollection.cs\r
+System.Windows.Forms.DataVisualization.Charting/CustomProperties.cs\r
 System.Windows.Forms.DataVisualization.Charting/CompareMethod.cs\r
+System.Windows.Forms.DataVisualization.Charting/DataFormula.cs\r
+System.Windows.Forms.DataVisualization.Charting/DataManipulator.cs\r
 System.Windows.Forms.DataVisualization.Charting/DataPoint.cs\r
 System.Windows.Forms.DataVisualization.Charting/DataPointCollection.cs\r
 System.Windows.Forms.DataVisualization.Charting/DataPointCustomProperties.cs\r
@@ -42,11 +63,17 @@ System.Windows.Forms.DataVisualization.Charting/DateRangeType.cs
 System.Windows.Forms.DataVisualization.Charting/DateTimeIntervalType.cs\r
 System.Windows.Forms.DataVisualization.Charting/Docking.cs\r
 System.Windows.Forms.DataVisualization.Charting/ElementPosition.cs\r
+System.Windows.Forms.DataVisualization.Charting/EllipseAnnotation.cs\r
 System.Windows.Forms.DataVisualization.Charting/FinancialFormula.cs\r
+System.Windows.Forms.DataVisualization.Charting/FTestResult.cs\r
 System.Windows.Forms.DataVisualization.Charting/FormatNumberEventArgs.cs\r
 System.Windows.Forms.DataVisualization.Charting/GradientStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/Grid.cs\r
 System.Windows.Forms.DataVisualization.Charting/GridTickTypes.cs\r
+System.Windows.Forms.DataVisualization.Charting/HitTestResult.cs\r
+System.Windows.Forms.DataVisualization.Charting/HorizontalLineAnnotation.cs\r
 System.Windows.Forms.DataVisualization.Charting/IDataPointFilter.cs\r
+System.Windows.Forms.DataVisualization.Charting/ImageAnnotation.cs\r
 System.Windows.Forms.DataVisualization.Charting/IntervalAutoMode.cs\r
 System.Windows.Forms.DataVisualization.Charting/IntervalType.cs\r
 System.Windows.Forms.DataVisualization.Charting/LabelAlignmentStyles.cs\r
@@ -54,14 +81,24 @@ System.Windows.Forms.DataVisualization.Charting/LabelAutoFitStyles.cs
 System.Windows.Forms.DataVisualization.Charting/LabelCalloutStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/LabelMarkStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/LabelOutsidePlotAreaStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/LabelStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/Legend.cs\r
+System.Windows.Forms.DataVisualization.Charting/LegendCell.cs\r
+System.Windows.Forms.DataVisualization.Charting/LegendCellCollection.cs\r
+System.Windows.Forms.DataVisualization.Charting/LegendCellColumn.cs\r
+System.Windows.Forms.DataVisualization.Charting/LegendCellColumnCollection.cs\r
 System.Windows.Forms.DataVisualization.Charting/LegendCellColumnType.cs\r
 System.Windows.Forms.DataVisualization.Charting/LegendCellType.cs\r
+System.Windows.Forms.DataVisualization.Charting/LegendCollection.cs\r
 System.Windows.Forms.DataVisualization.Charting/LegendImageStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/LegendItem.cs\r
 System.Windows.Forms.DataVisualization.Charting/LegendItemOrder.cs\r
+System.Windows.Forms.DataVisualization.Charting/LegendItemsCollection.cs\r
 System.Windows.Forms.DataVisualization.Charting/LegendSeparatorStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/LegendStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/LegendTableStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/LightStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/LineAnnotation.cs\r
 System.Windows.Forms.DataVisualization.Charting/LineAnchorCapStyle.cs\r
 System.Windows.Forms.DataVisualization.Charting/Margins.cs\r
 System.Windows.Forms.DataVisualization.Charting/MarkerStyle.cs\r
@@ -69,16 +106,34 @@ System.Windows.Forms.DataVisualization.Charting/NamedImage.cs
 System.Windows.Forms.DataVisualization.Charting/NamedImagesCollection.cs\r
 System.Windows.Forms.DataVisualization.Charting/PointSortOrder.cs\r
 System.Windows.Forms.DataVisualization.Charting/Point3D.cs\r
+System.Windows.Forms.DataVisualization.Charting/PolygonAnnotation.cs\r
+System.Windows.Forms.DataVisualization.Charting/PolylineAnnotation.cs\r
+System.Windows.Forms.DataVisualization.Charting/PrintingManager.cs\r
+System.Windows.Forms.DataVisualization.Charting/RectangleAnnotation.cs\r
 System.Windows.Forms.DataVisualization.Charting/ScrollBarButtonStyles.cs\r
 System.Windows.Forms.DataVisualization.Charting/ScrollBarButtonType.cs\r
+System.Windows.Forms.DataVisualization.Charting/ScrollBarEventArgs.cs\r
 System.Windows.Forms.DataVisualization.Charting/ScrollType.cs\r
 System.Windows.Forms.DataVisualization.Charting/SerializationContents.cs\r
 System.Windows.Forms.DataVisualization.Charting/SerializationFormat.cs\r
 System.Windows.Forms.DataVisualization.Charting/Series.cs\r
 System.Windows.Forms.DataVisualization.Charting/SeriesChartType.cs\r
 System.Windows.Forms.DataVisualization.Charting/SeriesCollection.cs\r
+System.Windows.Forms.DataVisualization.Charting/SmartLabelStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/StatisticFormula.cs\r
+System.Windows.Forms.DataVisualization.Charting/StripLine.cs\r
+System.Windows.Forms.DataVisualization.Charting/StripLinesCollection.cs\r
 System.Windows.Forms.DataVisualization.Charting/StartFromZero.cs\r
+System.Windows.Forms.DataVisualization.Charting/TextAnnotation.cs\r
 System.Windows.Forms.DataVisualization.Charting/TextAntiAliasingQuality.cs\r
 System.Windows.Forms.DataVisualization.Charting/TextOrientation.cs\r
 System.Windows.Forms.DataVisualization.Charting/TextStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/TickMark.cs\r
 System.Windows.Forms.DataVisualization.Charting/TickMarkStyle.cs\r
+System.Windows.Forms.DataVisualization.Charting/Title.cs\r
+System.Windows.Forms.DataVisualization.Charting/TitleCollection.cs\r
+System.Windows.Forms.DataVisualization.Charting/ToolTipEventArgs.cs\r
+System.Windows.Forms.DataVisualization.Charting/TTestResult.cs\r
+System.Windows.Forms.DataVisualization.Charting/VerticalLineAnnotation.cs\r
+System.Windows.Forms.DataVisualization.Charting/ViewEventArgs.cs\r
+System.Windows.Forms.DataVisualization.Charting/ZTestResult.cs\r
index d2583d7cd19ac9bda7cfec0309290877606097bc..bdb8077f3d2dceaf948b436b69492a8aa8adf9e1 100644 (file)
@@ -34,6 +34,7 @@
     <Reference Include="nunit.framework, Version=2.5.2.9222, Culture=neutral, PublicKeyToken=96d09a1eb7f44a77, processorArchitecture=MSIL">\r
       <SpecificVersion>False</SpecificVersion>\r
       <HintPath>..\..\..\..\..\..\..\Program Files (x86)\NUnit 2.5.2\bin\net-2.0\framework\nunit.framework.dll</HintPath>\r
+      <Package>nunit</Package>\r
     </Reference>\r
     <Reference Include="System" />\r
     <Reference Include="System.Core" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\AnovaResultTest.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\ArrowAnnotationTest.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\AxisScaleBreakStyleTest.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartElementCollectionTest.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartElementTest.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\ChartNamedElementCollectionTest.cs" />\r
     <Compile Include="System.Windows.Forms.DataVisualization.Charting\DataPointTest.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\GridTest.cs" />\r
-    <Compile Include="System.Windows.Forms.DataVisualization.Charting\TickMarkTest.cs" />\r
   </ItemGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
diff --git a/mcs/class/System.Windows/AssemblyInfo.cs b/mcs/class/System.Windows/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..9c9952d
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Windows.dll")]
+[assembly: AssemblyDescription ("System.Windows.dll")]
+[assembly: AssemblyDefaultAlias ("System.Windows.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../msfinal.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/System.Windows/Makefile b/mcs/class/System.Windows/Makefile
new file mode 100644 (file)
index 0000000..ebbccad
--- /dev/null
@@ -0,0 +1,12 @@
+thisdir = class/System.Windows
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Windows.dll
+LIB_MCS_FLAGS = /r:System
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../build/library.make
diff --git a/mcs/class/System.Windows/System.Windows.dll.sources b/mcs/class/System.Windows/System.Windows.dll.sources
new file mode 100644 (file)
index 0000000..d75b28a
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../build/common/Consts.cs
diff --git a/mcs/class/System.Windows/TypeForwarders.cs b/mcs/class/System.Windows/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..18ab654
--- /dev/null
@@ -0,0 +1,36 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.INotifyCollectionChanged))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.ObjectModel.ReadOnlyObservableCollection<>))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedAction))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventArgs))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Collections.Specialized.NotifyCollectionChangedEventHandler))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Windows.Input.ICommand))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.INotifyDataErrorInfo))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ComponentModel.DataErrorsChangedEventArgs))]
+
old mode 100644 (file)
new mode 100755 (executable)
index 43f0a75..c6a85fb
@@ -125,7 +125,7 @@ namespace Mono.Xml.Schema
                                schemas,
                                nsResolver,
                                options);
-                       if (reader.BaseURI != String.Empty)
+                       if (reader.BaseURI != String.Empty && Uri.IsWellFormedUriString(reader.BaseURI, UriKind.Absolute))
                                v.SourceUri = new Uri (reader.BaseURI);
 
                        readerLineInfo = reader as IXmlLineInfo;
index 7f19ce58d3d06ab83ab969b2642b2647bfb3f6f6..f6b56c6b3c6e6d7ed71f16884b69f40bc912ff21 100644 (file)
@@ -473,7 +473,7 @@ namespace Mono.Xml.Schema
 
                private void ValidateEndElementParticle ()
                {
-                       if (Context.State != null) {
+                       if (xsiNilDepth < 0 && Context.State != null) {
                                if (!Context.EvaluateEndElement ()) {
                                        HandleError ("Invalid end element: " + reader.Name);
                                }
index 31a488b7b81a9d9a8568af36db7f1bd74113302a..1e67574de496307d559936d98d03ab5ca3bc1581 100644 (file)
@@ -376,6 +376,8 @@ namespace Mono.Xml.Xsl {
                                return; // Already done.
 
                        c.PushInputDocument (included);
+                       included.MoveToRoot ();
+                       included.MoveToFirstChild ();
 
                        while (c.Input.NodeType != XPathNodeType.Element)
                                if (!c.Input.MoveToNext ())
@@ -387,8 +389,9 @@ namespace Mono.Xml.Xsl {
                                templates.Add (new XslTemplate (c));
                        }
                        else {
+                               c.Input.MoveToFirstChild ();
                                do {
-                                       if (c.Input.NodeType != XPathNodeType.Element)
+                                       if (c.Input.NodeType != XPathNodeType.Element || c.Input.LocalName == "import" && c.Input.NamespaceURI == XsltNamespace)
                                                continue;
                                        Debug.EnterNavigator (c);
                                        HandleTopLevelElement (c);
@@ -417,6 +420,8 @@ namespace Mono.Xml.Xsl {
                        case XsltNamespace:
                                switch (n.LocalName)
                                {
+                               case "import":
+                                       throw new XsltCompileException ("Invalid occurence of import element after other top-level content", null, c.Input);
                                case "include":
                                        HandleInclude (c);
                                        break;
index 189e7729f270f5ab4a80e23fc65ee67ed68ce308..4a001a046fa8cd91f80fe2bde7534ad294ecae6a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A2433930-2BB3-4818-97D2-45A907CB7B3B}</ProjectGuid>\r
+    <ProjectGuid>{D513888C-71DC-4A65-B753-668FF8FB2CAA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-build</OutputPath>\r
@@ -458,11 +458,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-build.csproj">\r
-      <Project>{4C8FFAF4-4FE9-4377-821B-AFD255791495}</Project>\r
+      <Project>{DC4EE47D-CEB6-4592-994A-92C6B1D746FA}</Project>\r
       <Name>System\System-build</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2f225bfdff79415593c939577ec13e0a3672afb5..289b195693fe304f5394a233524bfab2dea8c6b5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{67A04408-CBEF-4B63-B975-29D827B0DBED}</ProjectGuid>\r
+    <ProjectGuid>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-net_2_0</OutputPath>\r
@@ -458,11 +458,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0.csproj">\r
-      <Project>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</Project>\r
+      <Project>{245C754C-D6DE-4434-BA78-37A93E196236}</Project>\r
       <Name>System\System-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Configuration.dll">\r
index ddfcc385193f32abd0848885fc86309cc2c9a112..25f0e5358634131d5f413091099af8762d8b2231 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</ProjectGuid>\r
+    <ProjectGuid>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-net_4_0</OutputPath>\r
@@ -458,11 +458,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0.csproj">\r
-      <Project>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</Project>\r
+      <Project>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</Project>\r
       <Name>System\System-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a03ab92a33c90986a852c85029b5368b9de0159f..64a019a21708e214541e2820d4a3544b0a65f3f4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</ProjectGuid>\r
+    <ProjectGuid>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-net_4_5-1</OutputPath>\r
@@ -458,11 +458,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 6fd5d52bf725aee8995af1abe985b2eb0cff74e5..45d0d1cb016d8800f28dfac81b386df0bc936c93 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</ProjectGuid>\r
+    <ProjectGuid>{F96F7491-66DB-4291-8803-F2F165B33B55}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-net_4_5</OutputPath>\r
@@ -458,11 +458,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 7c906066dcf59a22d98f6d00c0c95f15019d1c56..8950655893e47d67b8bd8256db4cf29761f28060 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2BE2BA3F-EBD9-4A13-B035-7AD4D348022B}</ProjectGuid>\r
+    <ProjectGuid>{CE970A1F-125E-4459-ABF6-7EF40D30E5AF}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-tests-net_2_0</OutputPath>\r
@@ -184,19 +184,19 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Data.dll">\r
@@ -205,11 +205,11 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f8501ef065375270264280c9746be1c34df272fc..ab441d1bc1c3a4cca8b6d8c7d883edcb6f8aa357 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{511A45CE-918A-45B7-8D92-B64BDD8CE89E}</ProjectGuid>\r
+    <ProjectGuid>{4583C8A1-BC71-4A65-A936-238ADDC3E076}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-tests-net_4_0</OutputPath>\r
@@ -184,23 +184,23 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 230846342595c52bbd8b1a71752a34ba8d05408a..5417666e93fab2c3c4359748cbdde7ea1fc04860 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7FC476D7-BD8A-4AB5-969E-58A8D56D063C}</ProjectGuid>\r
+    <ProjectGuid>{A7538AE3-4C91-4482-B564-468B8753FD20}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618,612,642,618,219,169</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml-tests-net_4_5</OutputPath>\r
@@ -184,23 +184,23 @@ type $(ProjectDir)\System.Xml.XPath\Tokenizer.cs >> $(ProjectDir)\Mono.Xml.Xsl\P
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b082221ed071ed83feefff2c671aef974ac85790..72d8cf3e4eaf9a5c2723fdf11ea8ce8f54f398b1 100644 (file)
@@ -2263,7 +2263,8 @@ namespace Mono.Xml.Schema
 
                internal override ValueType ParseValueType (string s, XmlNameTable nameTable, NSResolver nsmgr) 
                {
-                       return DateTime.ParseExact (Normalize(s), "--MM--", null);
+                       DateTime ret;
+                       return DateTime.TryParseExact (Normalize(s), "--MM", null, DateTimeStyles.RoundtripKind, out ret) ? ret : DateTime.ParseExact (Normalize(s), "--MM--", null);
                }
                
                internal override XsdOrdering Compare(object x, object y) {
index 87f576c00110ccc7d4f422165847ce72cb3fd744..ccb62f048e589cdc77d52a8883d579eea5179f1e 100644 (file)
@@ -45,8 +45,10 @@ namespace System.Xml.Schema
                double doubleValue;
                int intValue;
                long longValue;
+               ulong ulongValue;
                object objectValue;
                float floatValue;
+               byte [] bytesValue;
                string stringValue;
                XmlSchemaType schemaType;
                XmlTypeCode xmlTypeCode;
@@ -68,6 +70,20 @@ namespace System.Xml.Schema
                        schemaType = xmlType;
                }
 
+               internal XmlAtomicValue (byte [] value, XmlSchemaType xmlType)
+               {
+                       Init (value, xmlType);
+               }
+               
+               private void Init (byte [] value, XmlSchemaType xmlType)
+               {
+                       if (xmlType == null)
+                               throw new ArgumentNullException ("xmlType");
+                       xmlTypeCode = XmlTypeCode.Base64Binary;
+                       this.bytesValue = value;
+                       schemaType = xmlType;
+               }
+
                internal XmlAtomicValue (DateTime value, XmlSchemaType xmlType)
                {
                        Init (value, xmlType);
@@ -138,6 +154,20 @@ namespace System.Xml.Schema
                        schemaType = xmlType;
                }
 
+               internal XmlAtomicValue (ulong value, XmlSchemaType xmlType)
+               {
+                       Init (value, xmlType);
+               }
+               
+               private void Init (ulong value, XmlSchemaType xmlType)
+               {
+                       if (xmlType == null)
+                               throw new ArgumentNullException ("xmlType");
+                       xmlTypeCode = XmlTypeCode.UnsignedLong;
+                       this.ulongValue = value;
+                       schemaType = xmlType;
+               }
+
                internal XmlAtomicValue (float value, XmlSchemaType xmlType)
                {
                        Init (value, xmlType);
@@ -182,6 +212,12 @@ namespace System.Xml.Schema
                                throw new ArgumentNullException ("xmlType");
 
                        switch (Type.GetTypeCode (value.GetType ())) {
+                       case TypeCode.Byte:
+                               Init ((byte) value, xmlType);
+                               return;
+                       case TypeCode.SByte:
+                               Init ((sbyte) value, xmlType);
+                               return;
                        case TypeCode.Int16:
                                Init ((short) value, xmlType);
                                return;
@@ -206,6 +242,9 @@ namespace System.Xml.Schema
                        case TypeCode.UInt32:
                                Init ((uint) value, xmlType);
                                return;
+                       case TypeCode.UInt64:
+                               Init ((ulong) value, xmlType);
+                               return;
                        case TypeCode.String:
                                Init ((string) value, xmlType);
                                return;
@@ -216,6 +255,10 @@ namespace System.Xml.Schema
                                Init ((bool) value, xmlType);
                                return;
                        }
+                       if (value is byte []) {
+                               Init ((byte []) value, xmlType);
+                               return;
+                       }
 
                        ICollection col = value as ICollection;
                        if (col != null && col.Count == 1) {
@@ -254,6 +297,9 @@ namespace System.Xml.Schema
                                case XmlTypeCode.Long:
                                        Init (another.longValue, xmlType);
                                        return;
+                               case XmlTypeCode.UnsignedLong:
+                                       Init (another.ulongValue, xmlType);
+                                       return;
                                case XmlTypeCode.Float:
                                        Init (another.floatValue, xmlType);
                                        return;
@@ -309,6 +355,11 @@ namespace System.Xml.Schema
                                return TypedValue;
                        case XmlTypeCode.QName:
                                return XmlQualifiedName.Parse (Value, nsResolver, true);
+                       case XmlTypeCode.Base64Binary:
+                       case XmlTypeCode.HexBinary:
+                               if (bytesValue != null)
+                                       return bytesValue;
+                               break;
                        }
                        throw new NotImplementedException ();
                }
@@ -376,11 +427,31 @@ namespace System.Xml.Schema
                                case XmlTypeCode.DateTime:
                                        stringValue = XQueryConvert.DateTimeToString (ValueAsDateTime);
                                        break;
+                               case XmlTypeCode.Duration:
+                                       stringValue = XQueryConvert.DayTimeDurationToString (TimeSpan.FromMilliseconds (doubleValue));
+                                       break;
+                               case XmlTypeCode.GYear:
+                                       stringValue = XQueryConvert.GYearToString (ValueAsDateTime);
+                                       break;
+                               case XmlTypeCode.GYearMonth:
+                                       stringValue = XQueryConvert.GYearMonthToString (ValueAsDateTime);
+                                       break;
+                               case XmlTypeCode.GMonth:
+                                       stringValue = XQueryConvert.GMonthToString (ValueAsDateTime);
+                                       break;
+                               case XmlTypeCode.GMonthDay:
+                                       stringValue = XQueryConvert.GMonthDayToString (ValueAsDateTime);
+                                       break;
+                               case XmlTypeCode.GDay:
+                                       stringValue = XQueryConvert.GDayToString (ValueAsDateTime);
+                                       break;
                                case XmlTypeCode.Float:
                                case XmlTypeCode.Double:
                                        stringValue = XQueryConvert.DoubleToString (ValueAsDouble);
                                        break;
                                case XmlTypeCode.Integer:
+                               case XmlTypeCode.UnsignedInt:
+                               case XmlTypeCode.UnsignedLong:
                                case XmlTypeCode.Decimal:
                                        stringValue = XQueryConvert.DecimalToString (ValueAsDecimal);
                                        break;
@@ -388,18 +459,24 @@ namespace System.Xml.Schema
                                case XmlTypeCode.NonNegativeInteger:
                                case XmlTypeCode.NegativeInteger:
                                case XmlTypeCode.Long:
-                               case XmlTypeCode.UnsignedLong:
                                case XmlTypeCode.PositiveInteger:
                                        stringValue = XQueryConvert.IntegerToString (ValueAsLong);
                                        break;
                                case XmlTypeCode.Int:
                                case XmlTypeCode.Short:
                                case XmlTypeCode.Byte:
-                               case XmlTypeCode.UnsignedInt:
                                case XmlTypeCode.UnsignedShort:
                                case XmlTypeCode.UnsignedByte:
                                        stringValue = XQueryConvert.IntToString (ValueAsInt);
                                        break;
+                               case XmlTypeCode.Base64Binary:
+                                       stringValue = XQueryConvert.Base64BinaryToString (bytesValue);
+                                       break;
+                               case XmlTypeCode.HexBinary:
+                                       stringValue = XQueryConvert.HexBinaryToString (bytesValue);
+                                       break;
+                               case XmlTypeCode.QName:
+                               case XmlTypeCode.AnyUri:
                                case XmlTypeCode.String:
                                        return stringValue;
 
@@ -419,6 +496,9 @@ namespace System.Xml.Schema
                                        case XmlTypeCode.DateTime:
                                                stringValue = XQueryConvert.DateTimeToString ((DateTime) objectValue);
                                                break;
+                                       case XmlTypeCode.Duration:
+                                               stringValue = XQueryConvert.DayTimeDurationToString (TimeSpan.FromMilliseconds ((double) objectValue));
+                                               break;
                                        case XmlTypeCode.Boolean:
                                                stringValue = XQueryConvert.BooleanToString ((bool) objectValue);
                                                break;
@@ -438,6 +518,12 @@ namespace System.Xml.Schema
                                        case XmlTypeCode.Int:
                                                stringValue = XQueryConvert.IntToString ((int) objectValue);
                                                break;
+                                       case XmlTypeCode.Base64Binary:
+                                               stringValue = XQueryConvert.Base64BinaryToString ((byte []) objectValue);
+                                               break;
+                                       case XmlTypeCode.HexBinary:
+                                               stringValue = XQueryConvert.HexBinaryToString ((byte []) objectValue);
+                                               break;
                                        }
                                        break;
                                }
@@ -445,7 +531,7 @@ namespace System.Xml.Schema
                                        return stringValue;
 
                                if (objectValue != null)
-                                       throw new InvalidCastException (String.Format ("Conversion from runtime type {0} to {1} is not supported", objectValue.GetType (), XmlTypeCode.String));
+                                       throw new InvalidCastException (String.Format ("Conversion from runtime type {0}, resolved as type code {1}, to {2} is not supported", objectValue.GetType (), ResolvedTypeCode, XmlTypeCode.String));
                                else
                                        throw new InvalidCastException (String.Format ("Conversion from schema type {0} (type code {1}, resolved type code {2}) to {3} is not supported.", schemaType.QualifiedName, xmlTypeCode, ResolvedTypeCode, XmlTypeCode.String));
                        }
@@ -489,6 +575,16 @@ namespace System.Xml.Schema
                                        return dateTimeValue;
                                case XmlTypeCode.String:
                                        return XQueryConvert.StringToDateTime (stringValue);
+                               case XmlTypeCode.GYear:
+                                       return XQueryConvert.StringToGYear (stringValue);
+                               case XmlTypeCode.GYearMonth:
+                                       return XQueryConvert.StringToGYearMonth (stringValue);
+                               case XmlTypeCode.GMonth:
+                                       return XQueryConvert.StringToGMonth (stringValue);
+                               case XmlTypeCode.GMonthDay:
+                                       return XQueryConvert.StringToGMonthDay (stringValue);
+                               case XmlTypeCode.GDay:
+                                       return XQueryConvert.StringToGDay (stringValue);
                                case XmlTypeCode.None:
                                case XmlTypeCode.Item:
                                case XmlTypeCode.AnyAtomicType:
@@ -515,6 +611,8 @@ namespace System.Xml.Schema
                                        return XQueryConvert.DoubleToDecimal (doubleValue);
                                case XmlTypeCode.Long:
                                        return XQueryConvert.IntegerToDecimal (longValue);
+                               case XmlTypeCode.UnsignedLong:
+                                       return XQueryConvert.IntegerToDecimal (ulongValue);
                                case XmlTypeCode.Int:
                                        return XQueryConvert.IntToDecimal (intValue);
                                case XmlTypeCode.Float:
@@ -660,6 +758,9 @@ namespace System.Xml.Schema
                                return typeof (DateTime);
                        case XmlTypeCode.Boolean:
                                return typeof (bool);
+                       case XmlTypeCode.Base64Binary:
+                       case XmlTypeCode.HexBinary:
+                               return typeof (byte []);
                        case XmlTypeCode.Item:
                                return typeof (object);
                        }
@@ -692,7 +793,10 @@ namespace System.Xml.Schema
                        case TypeCode.Boolean:
                                return XmlTypeCode.Boolean;
                        case TypeCode.Object:
-                               return XmlTypeCode.Item;
+                               if (cliType == typeof (byte []))
+                                       return XmlTypeCode.Base64Binary;
+                               else
+                                       return XmlTypeCode.Item;
                        }
                        if (raiseError)
                                throw new NotSupportedException (String.Format ("XQuery internal error: Cannot infer XmlTypeCode from Runtime Type {0}", cliType));
index 11ad6b3a4a21834566a5dd414240210688a61394..6b9e8deb64e990da5ea5eb99fcad6c6e330d781b 100644 (file)
@@ -130,14 +130,10 @@ namespace System.Xml.Schema
 
                public XmlSchema Add (string targetNamespace, string schemaUri)
                {
-                       XmlTextReader r = null;
-                       try {
-                               r = new XmlTextReader (schemaUri, nameTable);
-                               return Add (targetNamespace, r);
-                       } finally {
-                               if (r != null)
-                                       r.Close ();
-                       }
+                       var uri = xmlResolver.ResolveUri (null, schemaUri);
+                       using (var stream = (Stream) xmlResolver.GetEntity (uri, null, typeof (Stream)))
+                               using (var r = XmlReader.Create (stream, new XmlReaderSettings () { XmlResolver = xmlResolver, NameTable = nameTable}, uri.ToString ()))
+                                       return Add (targetNamespace, r);
                }
 
                public XmlSchema Add (string targetNamespace, XmlReader schemaDocument)
index 92274b2e15758ccd09a72d3b692b9aebfa4da923..286963d3056ebe5029a59002baa6fa75cccd6852 100644 (file)
@@ -539,10 +539,10 @@ namespace System.Xml.Schema
 
                                if (skipValidationDepth < 0 || depth <= skipValidationDepth)
                                        AssessCloseStartElementSchemaValidity (schemaInfo);
-                               depth++;
                        } finally {
                                current_info = null;
                                occuredAtts.Clear ();
+                               depth++;
                        }
                }
 
@@ -976,7 +976,7 @@ namespace System.Xml.Schema
 
                private void ValidateEndElementParticle ()
                {
-                       if (Context.State != null) {
+                       if (xsiNilDepth < 0 && Context.State != null) {
                                if (!Context.EvaluateEndElement ()) {
                                        HandleError ("Invalid end element. There are still required content items.");
                                }
@@ -1588,7 +1588,8 @@ namespace System.Xml.Schema
                        if (value == "true") {
                                if (element.ValidatedFixedValue != null)
                                        HandleError ("Schema instance nil was specified, where the element declaration for " + element.QualifiedName + "has fixed value constraints.");
-                               xsiNilDepth = depth;
+                               if (xsiNilDepth < 0)
+                                       xsiNilDepth = depth;
                                if (info != null)
                                        info.IsNil = true;
                        }
index ed06d61a688c2b69519d4711906a76231e6a0ace..9f754c727b7fe4f7a8d924c563def3982b95d861 100644 (file)
@@ -691,6 +691,7 @@ namespace System.Xml.Serialization {
                        }
                        else
                        {
+                               defaultValue = defaultValue is decimal ? (object) ('"' + ((decimal) defaultValue).ToString (CultureInfo.InvariantCulture) + '"') : defaultValue;
                                AddCustomAttribute (externalField, "System.ComponentModel.DefaultValue", GetArg (defaultValue));
                                //internalField.InitExpression = new CodePrimitiveExpression (defaultValue);
                        }
index fdcbc0e186f44a95ca625a146b6ae0603a5c01e3..0ea81302af1d48dce0db137b2d0eedd89862ad58 100644 (file)
@@ -35,6 +35,7 @@ using System.CodeDom.Compiler;
 #endif
 using System.Xml.Schema;
 using System.Collections;
+using System.Collections.Generic;
 #if NET_2_0 && CONFIGURATION_DEP
 using System.Configuration;
 using System.Xml.Serialization.Configuration;
@@ -744,6 +745,25 @@ namespace System.Xml.Serialization
                                }
                        }
                }
+               
+               IEnumerable<XmlSchemaAttribute> EnumerateAttributes (XmlSchemaObjectCollection col, List<XmlSchemaAttributeGroup> recurse)
+               {
+                       foreach (var o in col) {
+                               if (o is XmlSchemaAttributeGroupRef) {
+                                       var gr = (XmlSchemaAttributeGroupRef) o;
+                                       var g = FindRefAttributeGroup (gr.RefName);
+                                       if (recurse.Contains (g))
+                                               continue;
+                                       recurse.Add (g);
+                                       if (g == null)
+                                               throw new InvalidOperationException (string.Format ("Referenced AttributeGroup '{0}' was not found.", gr.RefName));
+                                       foreach (var a in EnumerateAttributes (g.Attributes, recurse))
+                                               yield return a;
+                               }
+                               else
+                                       yield return (XmlSchemaAttribute) o;
+                       }
+               }
 
                // Attributes might be redefined, so there is an existing attribute for the same name, skip it.
                // FIXME: this is nothing more than just a hack.
@@ -753,7 +773,7 @@ namespace System.Xml.Serialization
                        XmlSchemaObjectCollection src, ClassMap map)
                {
                        XmlSchemaObjectCollection atts = new XmlSchemaObjectCollection ();
-                       foreach (XmlSchemaAttribute a in src)
+                       foreach (var a in EnumerateAttributes (src, new List<XmlSchemaAttributeGroup> ()))
                                if (map.GetAttribute (a.QualifiedName.Name, a.QualifiedName.Namespace) == null)
                                        atts.Add (a);
                        return atts;
index 178cb53dbcb22ee397b9923d34ab3d9c82c96187..941b9e9103691c4e682811a80e8213e0c1ed9f3f 100644 (file)
@@ -342,17 +342,17 @@ namespace System.Xml
 
                public static string GMonthToString (DateTime value)
                {
-                       return XmlConvert.ToString (new TimeSpan (0, value.Month, 0));
+                       return XmlConvert.ToString (new TimeSpan (0, value.Month, 1));
                }
 
                public static string GYearMonthToString (DateTime value)
                {
-                       return XmlConvert.ToString (new TimeSpan (value.Year, value.Month, 0));
+                       return XmlConvert.ToString (new TimeSpan (value.Year, value.Month, 1));
                }
 
                public static string GYearToString (DateTime value)
                {
-                       return XmlConvert.ToString (new TimeSpan (new DateTime (value.Year, 0, 0).Ticks));
+                       return XmlConvert.ToString (new TimeSpan (new DateTime (value.Year, 1, 1).Ticks));
                }
 
                public static string HexBinaryToString (byte [] data)
@@ -376,6 +376,11 @@ namespace System.Xml
                        return (decimal) value;
                }
 
+               public static decimal IntegerToDecimal (ulong value)
+               {
+                       return (decimal) value;
+               }
+
                public static double IntegerToDouble (long value)
                {
                        return Convert.ToDouble (value);
index c00965d425ae1db99c4af7fd156802037035d0a2..8497c85eee976921b10874da195e7708956aa4d6 100644 (file)
@@ -928,47 +928,60 @@ namespace System.Xml {
 #if NET_4_0
                public static bool IsNCNameChar (char ch)
                {
-                       throw new NotImplementedException ();
+                       return XmlChar.IsNCNameChar (ch);
                }
 
                public static bool IsPublicIdChar (char ch)
                {
-                       throw new NotImplementedException ();
+                       return XmlChar.IsPubidChar (ch);
                }
 
                public static bool IsStartNCNameChar (char ch)
                {
-                       throw new NotImplementedException ();
+                       return XmlChar.IsFirstNameChar (ch);
                }
 
                public static bool IsWhitespaceChar (char ch)
                {
-                       throw new NotImplementedException ();
+                       return XmlChar.IsWhitespace (ch);
                }
 
                public static bool IsXmlChar (char ch)
                {
-                       throw new NotImplementedException ();
+                       return XmlChar.IsValid (ch);
                }
 
                public static bool IsXmlSurrogatePair (char lowChar, char highChar)
                {
-                       throw new NotImplementedException ();
+                       return 0xD800 <= lowChar && lowChar <= 0xDBFF && 0xDC00 <= highChar && highChar <= 0xDFFF;
                }
                
                public static string VerifyPublicId (string publicId)
                {
-                       throw new NotImplementedException ();
+                       if (publicId == null)
+                               throw new ArgumentNullException ("publicId");
+                       if (XmlChar.IsPubid (publicId))
+                               return publicId;
+                       throw new XmlException (string.Format ("'{0}' is not a valid PUBLIC ID", publicId));
                }
 
                public static string VerifyWhitespace (string content)
                {
-                       throw new NotImplementedException ();
+                       if (content == null)
+                               throw new ArgumentNullException ("content");
+                       if (XmlChar.IsWhitespace (content))
+                               return content;
+                       throw new XmlException (string.Format ("'{0}' is not whitespace", content));
                }
 
                public static string VerifyXmlChars (string content)
                {
-                       throw new NotImplementedException ();
+                       if (content == null)
+                               throw new ArgumentNullException ("content");
+                       var idx = XmlChar.IndexOfInvalid (content, true);
+                       if (idx < 0)
+                               return content;
+                       throw new XmlException (string.Format ("Invalid XML character was found in the content, at index {0}.", idx));
                }
 #endif
        }
index bfbd80e9a0d847b1736b1ba7d1c19eab4737fb2c..0d417787a492b61624e062aaf3077fdcc9f56b7d 100644 (file)
@@ -321,5 +321,144 @@ namespace MonoTests.System.Xml
 
                        datatype.ChangeType(300, typeof (int));
                }
+               
+               [Test]
+               public void Bug12469 ()
+               {
+                       Dictionary<string, string> validValues = new Dictionary<string, string> {
+                               {"string", "abc"},
+
+                               {"normalizedString", "abc"},
+                               {"token", "abc"},
+                               {"language", "en"},
+                               {"Name", "abc"},
+                               {"NCName", "abc"},
+                               {"ID", "abc"},
+                               {"ENTITY", "abc"},
+                               {"NMTOKEN", "abc"},
+
+                               {"boolean", "true"},
+                               {"decimal", "1"},
+                               {"integer", "1"},
+                               {"nonPositiveInteger", "0"},
+                               {"negativeInteger", "-1"},
+                               {"long", "9223372036854775807"},
+                               {"int", "2147483647"},
+                               {"short", "32767"},
+                               {"byte", "127"},
+                               {"nonNegativeInteger", "0"},
+                               {"unsignedLong", "18446744073709551615"},
+                               {"unsignedInt", "4294967295"},
+                               {"unsignedShort", "65535"},
+                               {"unsignedByte", "255"},
+                               {"positiveInteger", "1"},
+                               {"float", "1.1"},
+                               {"double", "1.1"},
+                               {"time", "00:00:00"},
+                               {"date", "1999-12-31"},
+                               {"dateTime", "1999-12-31T00:00:00.000"},
+                               {"duration", "P1Y2M3DT10H30M"},
+                               {"gYearMonth", "1999-01"},
+                               {"gYear", "1999"},
+                               {"gMonthDay", "--12-31"},
+                               {"gMonth", "--12"},
+                               {"gDay", "---31"},
+
+                               {"base64Binary", "AbCd eFgH IjKl 019+"},
+                               {"hexBinary", "0123456789ABCDEF"},
+
+                               {"anyURI", "https://www.server.com"},
+                               {"QName", "xml:abc"},
+                               };
+
+                       // FIXME: implement validation
+                       Dictionary<string, string> invalidValues = new Dictionary<string, string> {
+                               {"Name", "***"},
+                               {"NCName", "a::"},
+                               {"ID", "123"},
+                               {"ENTITY", "***"},
+                               {"NMTOKEN", "***"},
+
+                               {"boolean", "ABC"},
+                               {"decimal", "1A"},
+                               {"integer", "1.5"},
+                               {"nonPositiveInteger", "5"},
+                               {"negativeInteger", "10"},
+                               {"long", "999999999999999999999999999999999999999"},
+                               {"int", "999999999999999999999999999999999999999"},
+                               {"short", "32768"},
+                               {"byte", "128"},
+                               {"nonNegativeInteger", "-1"},
+                               {"unsignedLong", "-1"},
+                               {"unsignedInt", "-1"},
+                               {"unsignedShort", "-1"},
+                               {"unsignedByte", "-1"},
+                               {"positiveInteger", "0"},
+                               {"float", "1.1x"},
+                               {"double", "1.1x"},
+                               {"time", "0"},
+                               {"date", "1"},
+                               {"dateTime", "2"},
+                               {"duration", "P1"},
+                               {"gYearMonth", "1999"},
+                               {"gYear", "-1"},
+                               {"gMonthDay", "-12-31"},
+                               {"gMonth", "-12"},
+                               {"gDay", "--31"},
+
+                               {"base64Binary", "####"},
+                               {"hexBinary", "G"},
+
+                               // anyURI passes everything (as long as I observed)
+                               {"QName", "::"},
+                               };
+
+                       const string schemaTemplate = @"
+                               <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' elementFormDefault='qualified'> 
+                                       <xs:element name='EL'>
+                                               <xs:complexType>
+                                                       <xs:attribute name='attr' type='xs:{0}' use='required' />
+                                               </xs:complexType>
+                                       </xs:element>
+                               </xs:schema>";
+
+                       const string documentTemplate = @"<EL attr='{0}' />";
+
+                       foreach (var type in validValues.Keys) {
+                               try {
+                                       var schema = string.Format (schemaTemplate, type);
+                                       var document = string.Format (documentTemplate, validValues[type]);
+
+                                       var schemaSet = new XmlSchemaSet ();
+                                       using (var reader = new StringReader (schema))
+                                               schemaSet.Add (XmlSchema.Read (reader, null));
+                                       schemaSet.Compile ();
+                                       var doc = new XmlDocument ();
+                                       using (var reader = new StringReader (document))
+                                               doc.Load (reader);
+                                       doc.Schemas = schemaSet;
+                                       doc.Validate (null);
+
+                                       // FIXME: implement validation
+                                       /*
+                                       if (!invalidValues.ContainsKey (type))
+                                               continue;
+                                       try {
+                                               doc = new XmlDocument ();
+                                               document = string.Format (documentTemplate, invalidValues [type]);
+                                               using (var reader = new StringReader (document))
+                                                       doc.Load (reader);
+                                               doc.Schemas = schemaSet;
+                                               doc.Validate (null);
+                                               Assert.Fail (string.Format ("Failed to invalidate {0} for {1}", document, type));
+                                       } catch (XmlSchemaException) {
+                                       }
+                                       */
+                               } catch (Exception) {
+                                       Console.Error.WriteLine (type);
+                                       throw;
+                               }
+                       }
+               }
        }
 }
index 6a8a7a49d8accf2b444cc3efc26ae861e332e194..127a21aea4eb04c899518fb5958e4c1df2825b25 100644 (file)
@@ -11,6 +11,7 @@
 using System;
 using System.Collections;
 using System.IO;
+using System.Text;
 using System.Xml;
 using System.Xml.Schema;
 using NUnit.Framework;
@@ -279,6 +280,40 @@ type=""xsd:string"" use=""required""/>
                        xss.Compile ();
                        Assert.IsNotNull (xss.GlobalElements [new XmlQualifiedName ("GetSystemDateAndTimeResponse", "http://www.onvif.org/ver10/device/wsdl")], "#1");
                }
+               
+               [Test] // bug #13716
+               public void ResolveSchemaUriUsingXmlResolver ()
+               {
+                       var resolver = new Bug13716XmlResolver ();
+                       string xml = "<people xmlns='testschema'><person name='Ian'><books><book>Clean Code</book></books></person></people>";
+                       string ns = "testschema";
+                       string xsdPath = "my.xsd";
+
+                       var readerSettings = new XmlReaderSettings ();
+
+                       //readerSettings.XmlResolver = resolver;
+                       readerSettings.Schemas.XmlResolver = resolver;
+                       readerSettings.Schemas.Add (ns, xsdPath);
+                       readerSettings.ValidationType = ValidationType.Schema;
+
+                       using (var xr = XmlReader.Create (new StringReader (xml), readerSettings))
+                       {
+                               while (!xr.EOF)
+                                       xr.Read ();
+                       }
+               }
+               
+               public class Bug13716XmlResolver : XmlUrlResolver
+               {
+                       public override object GetEntity(Uri absoluteUri, string role, Type typeOfObjectToReturn)
+                       {
+                               string xsd = @"
+               <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' targetNamespace='testschema'>
+                 <xs:element name='people' />
+               </xs:schema>";
+                               return new MemoryStream (Encoding.UTF8.GetBytes (xsd));
+                       }
+               }
        }
 }
 #endif
old mode 100644 (file)
new mode 100755 (executable)
index bf258f6..081f2c7
@@ -397,6 +397,60 @@ namespace MonoTests.System.Xml
                                i++;
                        Assert.AreEqual (2, i, "#2");
                }
+               
+               [Test]
+               public void Bug12035 ()
+               {
+                       string xml = @"<UserSettings
+  xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'
+  xmlns:xsd='http://www.w3.org/2001/XMLSchema'
+  xmlns='http://schema/test'><Enabled>false</Enabled><Time xsi:nil='true' /></UserSettings>";
+                       string xsd = @"<?xml version='1.0' encoding='utf-8'?>
+<xs:schema
+  targetNamespace='http://schema/test'
+  xmlns='http://schema/test'
+  xmlns:xs='http://www.w3.org/2001/XMLSchema'
+  elementFormDefault='qualified'>
+  <xs:element name='UserSettings'>
+    <xs:complexType>
+      <xs:sequence>
+        <xs:element name='Enabled' type='xs:boolean' />
+        <xs:element name='Time' type='CoarseTime' nillable='true' />
+      </xs:sequence>
+    </xs:complexType>
+  </xs:element>
+
+  <xs:complexType name='CoarseTime'>
+    <xs:sequence>
+      <xs:element name='Hours' type='xs:int' />
+    </xs:sequence>
+  </xs:complexType>
+</xs:schema>";
+                       var schema = XmlSchema.Read (new StringReader (xsd), null);
+                       var schemaSet = new XmlSchemaSet ();
+                       schemaSet.Add (schema);
+                       var xmlReaderSettings = new XmlReaderSettings { ValidationType = ValidationType.Schema };
+                       xmlReaderSettings.ValidationFlags |= XmlSchemaValidationFlags.ReportValidationWarnings;
+                       xmlReaderSettings.Schemas.Add (schemaSet);
+                       
+                       using (var configStream = new StringReader (xml)) {
+                               using (var validatingReader = XmlReader.Create (configStream, xmlReaderSettings)) {
+                                       // Read the XML, throwing an exception if a validation error occurs
+                                       while (validatingReader.Read()) {
+                                       }
+                               }
+                       }
+               }
+               
+               [Test]
+               public void IgnoresInvalidBaseUri ()
+               {
+                       var source = new StringReader (@"<?xml version='1.0' encoding='utf-8'?><Test></Test>");
+                       var readerSettings = new XmlReaderSettings { ValidationType = ValidationType.Schema };
+                       var reader = XmlReader.Create (source, readerSettings, "invalidBaseUri");
+
+                       Assert.IsNotNull (reader);
+               }
        }
 }
 
index b276342806c1743a75280bfd13d3a79a0eedb38a..41973b0aa5527c89e8988e9feaebd2db7877b0a4 100644 (file)
@@ -2226,7 +2226,6 @@ NO
                        Assert.IsTrue (sw.ToString ().IndexOf ("NO") > 0);
                }
 
-#if NET_2_0
                [Test] // bug #349375
                public void PreserveWhitespace ()
                {
@@ -2416,6 +2415,37 @@ NO
                }
 
                private bool valueHasBeenSet;
-#endif
+               
+               [Test] // bug #4434
+               public void IncludeProcessStylesheet ()
+               {
+                       string includedXsl = @"<?xml version='1.0' ?>
+<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:doc='http://nwalsh.com/xsl/documentation/1.0' exclude-result-prefixes='doc' version='1.0'>
+       <doc:template name='foo' />
+       <xsl:template name='foo'>
+               <foo />
+       </xsl:template>
+</xsl:stylesheet>";
+                       string file = Path.Combine (Path.GetTempPath (), "include.xsl");
+                       StreamWriter includedWriter = new StreamWriter (file);
+                       includedWriter.WriteLine (includedXsl);
+                       includedWriter.Close ();
+                       XslCompiledTransform transform = new XslCompiledTransform ();
+                       string xsl = @"<?xml version='1.0' ?>
+<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
+       <xsl:include href='include.xsl' />
+       <xsl:template match='/'>
+               <xsl:call-template name='foo' />
+       </xsl:template>
+</xsl:stylesheet>".Replace ("include.xsl", file);
+                       XmlReader xslReader = XmlReader.Create (new StringReader (xsl));
+                       transform.Load (xslReader);
+                       XmlReader inputReader = XmlReader.Create (new StringReader ("<bar />"));
+                       var sw = new StringWriter ();
+                       XmlWriter outputWriter = XmlWriter.Create (sw);
+                       transform.Transform (inputReader, outputWriter);
+                       outputWriter.Close ();
+                       Assert.AreEqual ("<?xml version=\"1.0\" encoding=\"utf-16\"?><foo />", sw.ToString (), "#1");
+               }
        }
 }
index 2186adc2da3356304770750fc9b370668181b0f4..b0ebe6bbce18fa761ba39077e7c3abefd9c72ed8 100644 (file)
 
 RUNTIME = mono
 
-ifeq ($(PROFILE), net_2_0)
-       nunit_MONO_PATH="../../../../../class/lib/net_2_0"
-       CSCOMPILE=MONO_PATH=../../../../../class/lib/net_2_0 ../../../../../../mono/runtime/mono-wrapper ../../../../../class/lib/net_2_0/gmcs.exe
-else
-       nunit_MONO_PATH="../../../../../class/lib/net_1_1"
-       CSCOMPILE=mcs
-endif
+nunit_MONO_PATH="../../../../../class/lib/net_4_5"
+CSCOMPILE=MONO_PATH=../../../../../class/lib/net_4_5 ../../../../../../runtime/mono-wrapper ../../../../../class/lib/build/mcs.exe
 
 TEST_ARCHIVE = xslt-testsuite-03.ZIP
 CATALOG = testsuite/TESTS/catalog.xml
 FIXED_CATALOG = testsuite/TESTS/catalog-fixed.xml
 
-mono_wrapper_PATH="../../../../../../mono/runtime/mono-wrapper"
-NUNIT_CONSOLE=$(mono_wrapper_PATH) --debug ./nunit-console.exe
+mono_wrapper_PATH="../../../../../../runtime/mono-wrapper"
+NUNIT_CONSOLE=$(mono_wrapper_PATH) --debug $(nunit_MONO_PATH)/nunit-console.exe
 
 FIXTURE=MonoTests.oasis_xslt.SuiteBuilder
-CLEAN_NUNIT_FLAGS=/fixture:$(FIXTURE) /xml=TestResult.xml /include=Clean
-FAILED_NUNIT_FLAGS=/fixture:$(FIXTURE) /xml=FailedTestResult.xml /include=KnownFailures
-ALL_NUNIT_FLAGS=/fixture:$(FIXTURE) /xml=AllTestResult.xml /out=AllTestResult.log /include=KnownFailures,Clean
+CLEAN_NUNIT_FLAGS=-fixture:$(FIXTURE) -xml=TestResult.xml -include=Clean
+FAILED_NUNIT_FLAGS=-fixture:$(FIXTURE) -xml=FailedTestResult.xml -include=KnownFailures
+ALL_NUNIT_FLAGS=-fixture:$(FIXTURE) -xml=AllTestResult.xml -out=AllTestResult.log -include=KnownFailures,Clean
 
 TEST_PROG=xslttest.dll
 GENERATE_EXE=generate.exe
@@ -41,7 +36,7 @@ else
 REFERENCE_RESULTS_NAME=results
 endif
 REFERENCE_RESULTS_ARCHIVE=xslt-reference-$(REFERENCE_RESULTS_NAME).tar.gz
-REFERENCE_RESULTS_URL=http://anonsvn.mono-project.com/source/trunk/release/test-ext/xslt-standalone/$(REFERENCE_RESULTS_ARCHIVE)
+REFERENCE_RESULTS_URL=https://github.com/mono/release/raw/master/test-ext/xslt-standalone/$(REFERENCE_RESULTS_ARCHIVE)
 REFERENCE_RESULTS=$(REFERENCE_RESULTS_NAME)/timestamp
 
 test : $(TEST_PROG) $(FIXED_CATALOG) $(REFERENCE_RESULTS)
@@ -92,7 +87,7 @@ $(GENERATE_EXE) : generate.cs XsltTestUtils.cs
        # It somehow does not work fine unless nunit-console.exe is here ...
        cp $(nunit_MONO_PATH)/nunit-console.exe .
 $(TEST_PROG) : xslttest.cs XsltTestUtils.cs
-       $(CSCOMPILE) xslttest.cs XsltTestUtils.cs XmlCompare.cs -r:nunit.core -r:nunit.framework -out:$@ -t:library
+       $(CSCOMPILE) xslttest.cs XsltTestUtils.cs XmlCompare.cs -r:nunit.core -r:nunit.core.interfaces -r:nunit.framework -out:$@ -t:library
 
 catalog-fixed : $(FIXED_CATALOG)
 
index 8ecd22edf47ce9c3d9a8c12956fce9f5b6a784ed..0761338aef3ce0f865af73d31135df098bb27a12 100644 (file)
@@ -17,10 +17,8 @@ namespace MonoTests.oasis_xslt {
                ArrayList fixmeList = new ArrayList ();
                #endregion
        
-               TestSuite _suite;
-               SuiteBuilder (TestSuite suite)
+               public SuiteBuilder ()
                {
-                       _suite = suite;
                }
 
                void ReadLists ()
@@ -42,7 +40,7 @@ namespace MonoTests.oasis_xslt {
                        }
                }
 
-               public void Build ()
+               void Build (TestSuite suite)
                {
 //                     if (Environment.GetEnvironmentVariables().Contains("START_DEBUG"))
 //                             System.Diagnostics.Debugger.Launch ();
@@ -65,18 +63,23 @@ namespace MonoTests.oasis_xslt {
                                string expectedException = (string) expectedExceptions[testid];
                                bool isKnownFailure = knownFailures.Contains (testid) || fixmeList.Contains (testid);
 
-                               _suite.Add (new TestFromCatalog (testid, stt, expectedException,
+                               suite.Add (new TestFromCatalog (testid, stt, expectedException,
                                        EnvOptions.InverseResults, isKnownFailure));
                        }
                }
 
+               static object lock_obj = new object ();
+               static TestSuite _suite;
+
                [Suite]
                public static TestSuite Suite { 
                        get {
+                               if (_suite == null) { lock (lock_obj) {
                                TestSuite suite = new TestSuite ("MonoTests.oasis_xslt.SuiteBuilder");
-                               SuiteBuilder builder = new SuiteBuilder (suite);
-                               builder.Build ();
-                               return suite;
+                               new SuiteBuilder ().Build (suite);
+                               _suite = suite;
+                               } }
+                               return _suite;
                        }
                }
        }
@@ -99,7 +102,7 @@ namespace MonoTests.oasis_xslt {
                        ArrayList arr = new ArrayList ();
                        if (isKnownFailure) {
                                arr.Add ("KnownFailures");
-                               this.IsExplicit = true;
+                               //this.IsExplicit = true;
                        }
                        else
                                arr.Add ("Clean");
diff --git a/mcs/class/System.XML/mobile_static_System.Xml.dll.sources b/mcs/class/System.XML/mobile_static_System.Xml.dll.sources
new file mode 100644 (file)
index 0000000..b663093
--- /dev/null
@@ -0,0 +1 @@
+#include mobile_System.Xml.dll.sources
index 65865661c492f6a1d11e0bc35d868731a1d5da04..852bbda88c8f171bf3a351060a51dc17c4ff9436 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{BBF0A00E-6A3D-4ECF-9272-C93076D628E7}</ProjectGuid>\r
+    <ProjectGuid>{98E9FB98-226C-4256-A22A-91819C4C33B6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Xaml-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b8d5354bc13d0348e7b96151acbf28a190de2b56..4cf5cbc6445ac0572cc64d7b64ba673495aad5ab 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{690E0C87-8516-4F5D-B105-1FEDC19AE99A}</ProjectGuid>\r
+    <ProjectGuid>{2E8547F9-AE9C-4179-BC88-C0695369170B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Xaml-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 514e01947623d3910a5c93db3e6069dc2477c829..39f482e4bd65b8b1a3b5e84e55b96e4a55b5d284 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F6C4BB5B-07D6-417E-9FF9-0EBD4D7A207A}</ProjectGuid>\r
+    <ProjectGuid>{52A4F0F5-20DA-4EC3-BF50-23D92DE2C5AB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Xaml-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_0.csproj">\r
-      <Project>{BBF0A00E-6A3D-4ECF-9272-C93076D628E7}</Project>\r
+      <Project>{98E9FB98-226C-4256-A22A-91819C4C33B6}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 52fce9ccce8282d08dc232ed61511480bb7a2822..366a74b61bb1d9721c9f4305f5aa8f8c1cabeb8c 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}</ProjectGuid>\r
+    <ProjectGuid>{10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\System.Xaml-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_5.csproj">\r
-      <Project>{690E0C87-8516-4F5D-B105-1FEDC19AE99A}</Project>\r
+      <Project>{2E8547F9-AE9C-4179-BC88-C0695369170B}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f86d5b0f939d46e0e982ca379917c28e3a90fab3..644b3086116ee10ab721c4f5bd53a6dcaa1a789a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{32FB4911-5E84-4692-975C-23AB21BF215B}</ProjectGuid>\r
+    <ProjectGuid>{13E70866-6FF1-4D25-803F-BAE8CF945920}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b89681a7eec9f8fe6421fdd4c958695a12b2050e..7c238321dc6f8f1f92c24707530146461117addf 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{802B1060-BD79-4648-A24E-D38F34AE29A0}</ProjectGuid>\r
+    <ProjectGuid>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2eae663dc42b13fe690f994457b8556b7f3ecee4..7fb23f83ab4227e70d7d07c9932cb4e59d63004a 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</ProjectGuid>\r
+    <ProjectGuid>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ca9596d88dd988aedc105145946385d93eb799cf..3d3d6baae3b321f999374d3b4c978db98d162402 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0FA65F50-3FD8-4A29-B842-2847B429AF58}</ProjectGuid>\r
+    <ProjectGuid>{8D96EF98-273B-4549-96B1-02E608B841B8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_2_0.csproj">\r
-      <Project>{32FB4911-5E84-4692-975C-23AB21BF215B}</Project>\r
+      <Project>{13E70866-6FF1-4D25-803F-BAE8CF945920}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b106e5d292f53458662481e7c87c912ac8a220bc..dd18bc4903e3dd148799b24c8065bffb3f54d010 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A1A49B89-9513-47C7-A26E-6E65BA38671F}</ProjectGuid>\r
+    <ProjectGuid>{7EFD1940-C3FA-4B91-85DB-9ABDAECE3AB2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index a89e2150d4f793c2b7f823545a3949951f030077..0be3054c8f6d83da75a23e16f56e647b384a7d88 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}</ProjectGuid>\r
+    <ProjectGuid>{20A3B729-8CAB-4480-84BF-07E8CECE4CDB}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,1720</NoWarn>\r
     <OutputPath>bin\Debug\System.Xml.Linq-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f38458ca3b8ce7c909bbcbf41f34b38a43a47e86..af5fd976403171be1e8800087152cf9fe9f48b03 100644 (file)
@@ -181,16 +181,20 @@ namespace System.Xml.Linq
 
                public IEnumerable <XElement> Elements (XName name)
                {
-                       foreach (XElement el in Elements ())
-                               if (el.Name == name)
+                       foreach (XNode n in Nodes ()) {
+                               XElement el = n as XElement;
+                               if (el != null && el.Name == name)
                                        yield return el;
+                       }
                }
 
                public XElement Element (XName name)
                {
-                       foreach (XElement el in Elements ())
-                               if (el.Name == name)
+                       foreach (XNode n in Nodes ()) {
+                               XElement el = n as XElement;
+                               if (el != null && el.Name == name)
                                        return el;
+                       }
                        return null;
                }
 
index 80ba33b662332394e89f44393fbe7ea925b47263..81dea5e4a4360cdeb9f14ae5eaea19eb6fc71523 100644 (file)
@@ -382,7 +382,8 @@ namespace System.Xml.Linq
 
                public XAttribute Attribute (XName name)
                {
-                       foreach (XAttribute a in Attributes ())
+                       XAttribute next;
+                       for (XAttribute a = attr_first; a != null; a = a.NextAttribute)
                                if (a.Name == name)
                                        return a;
                        return null;
@@ -760,8 +761,9 @@ namespace System.Xml.Linq
 
                public void ReplaceAll (object content)
                {
-                       RemoveNodes ();
-                       Add (content);
+                       // it's waste of resource, but from bug #11298 it must save content
+                       // snapshot first and then remove existing attributes.
+                       ReplaceAll (XUtil.ExpandArray (content).ToArray ());
                }
 
                public void ReplaceAll (params object [] content)
@@ -772,8 +774,9 @@ namespace System.Xml.Linq
 
                public void ReplaceAttributes (object content)
                {
-                       RemoveAttributes ();
-                       Add (content);
+                       // it's waste of resource, but from bug #11298 it must save content
+                       // snapshot first and then remove existing attributes.
+                       ReplaceAttributes (XUtil.ExpandArray (content).ToArray ());
                }
 
                public void ReplaceAttributes (params object [] content)
@@ -785,8 +788,9 @@ namespace System.Xml.Linq
                public void SetElementValue (XName name, object value)
                {
                        var element = Element (name);
-                       if (element == null && value != null) {
-                               Add (new XElement (name, value));
+                       if (element == null) {
+                               if (value != null)
+                                       Add (new XElement (name, value));
                        } else if (element != null && value == null) {
                                element.Remove ();
                        } else
index 80d0e7b09cb0ac9fc5a9b9d086263001b5753b87..59bbceb4f92a148133bb40ee6f7f9b59e7394e5d 100644 (file)
@@ -153,7 +153,7 @@ namespace System.Xml.Linq
 
                public override string ToString ()
                {
-                       if (ns == XNamespace.None)
+                       if (Object.ReferenceEquals (ns, XNamespace.None))
                                return local;
                        return String.Concat ("{", ns.NamespaceName, "}", local);
                }
index c6bb881eac2134caefc6c756fc8a01f953eba3f5..e98811ed434c181db2c9f1ed853a605115e85bc9 100644 (file)
@@ -80,9 +80,10 @@ namespace System.Xml.Linq
                public string ToString (SaveOptions options)
                {
                        StringWriter sw = new StringWriter ();
-                       XmlWriterSettings s = new XmlWriterSettings ();
-                       s.ConformanceLevel = ConformanceLevel.Auto;
-                       s.Indent = options != SaveOptions.DisableFormatting;
+                       XmlWriterSettings s = new XmlWriterSettings () {
+                               ConformanceLevel = ConformanceLevel.Auto,
+                               Indent = options != SaveOptions.DisableFormatting,
+                               OmitXmlDeclaration = true };
                        XmlWriter xw = XmlWriter.Create (sw, s);
                        WriteTo (xw);
                        xw.Close ();
index 8353b25d2b8a02b4291f49e4932ca0966be01d24..c620e4f59920c2ccc557db25241bbcec05c79b6d 100644 (file)
@@ -165,42 +165,42 @@ namespace System.Xml.Linq
                
                internal void OnAddingObject (object addedObject)
                {
-                       OnChanging (addedObject, new XObjectChangeEventArgs (XObjectChange.Add));
+                       OnChanging (addedObject, XObjectChangeEventArgs.Add);
                }
 
                internal void OnAddedObject (object addedObject)
                {
-                       OnChanged (addedObject, new XObjectChangeEventArgs (XObjectChange.Add));
+                       OnChanged (addedObject, XObjectChangeEventArgs.Add);
                }
 
                internal void OnNameChanging (object renamedObject)
                {
-                       OnChanging (renamedObject, new XObjectChangeEventArgs (System.Xml.Linq.XObjectChange.Name));
+                       OnChanging (renamedObject, XObjectChangeEventArgs.Name);
                }
 
                internal void OnNameChanged (object renamedObject)
                {
-                       OnChanged (renamedObject, new XObjectChangeEventArgs (System.Xml.Linq.XObjectChange.Name));
+                       OnChanged (renamedObject, XObjectChangeEventArgs.Name);
                }
                
                internal void OnRemovingObject (object removedObject)
                {
-                       OnChanging (removedObject, new XObjectChangeEventArgs (XObjectChange.Remove));
+                       OnChanging (removedObject, XObjectChangeEventArgs.Remove);
                }
 
                internal void OnRemovedObject (object removedObject)
                {
-                       OnChanged (removedObject, new XObjectChangeEventArgs (XObjectChange.Remove));
+                       OnChanged (removedObject, XObjectChangeEventArgs.Remove);
                }
 
                internal void OnValueChanging (object changedObject)
                {
-                       OnChanging (changedObject, new XObjectChangeEventArgs (XObjectChange.Value));
+                       OnChanging (changedObject, XObjectChangeEventArgs.Value);
                }
 
                internal void OnValueChanged (object changedObject)
                {
-                       OnChanged (changedObject, new XObjectChangeEventArgs (XObjectChange.Value));
+                       OnChanged (changedObject, XObjectChangeEventArgs.Value);
                }
 
                
index 69cb484b23ed49c47b3e3b6a1895c2fec40dcb51..debe2696823078f1d1e9ac4688dc54a7fa632a28 100644 (file)
@@ -93,7 +93,7 @@ namespace System.Xml.Linq
                        throw new NotImplementedException ();
                }
 
-               public static IEnumerable ExpandArray (object o)
+               public static IEnumerable<object> ExpandArray (object o)
                {
                        XNode n = o as XNode;
                        if (n != null)
index 83bee5fe7e8c574ee5e2293e36f3ee4bbe65d2f9..7aa0bb9f00981753e626665aa9c179e2ab634866 100644 (file)
@@ -24,8 +24,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-#if !NET_2_1
-
 using System;
 using System.Xml;
 using System.Xml.Linq;
@@ -109,5 +107,3 @@ namespace System.Xml.Schema
                }
        }
 }
-
-#endif
index 5a5f255094c74c579df300882bd87538267d25e7..dd0b6a6783572b57f642ce0ab0e0981ea6be8a11 100644 (file)
@@ -2050,5 +2050,27 @@ namespace MonoTests.System.Xml.Linq
                        XElement newElement = new XElement(ns + "geoloc");
                        Assert.AreEqual ("<geoloc xmlns=\"http://jabber.org/protocol/geoloc\" />", newElement.ToString (), "#1");
                }
+               
+               [Test] // bug #10194
+               public void SetElementValueNullOnNonExistingElement ()
+               {
+                       var xd = XDocument.Parse ("<foo />");
+                       xd.Root.SetElementValue (XName.Get ("bar"), null);
+               }
+               
+               [Test] // bug #11298
+               public void ReplaceAttributesIteratesContentsFirstThenRemove ()
+               {
+                       var xmlString = "<Class Id='1' Name='' Cluster='' xmlns='urn:x' />";
+                       var e = XDocument.Parse (xmlString).Root;
+                       var attrs = e.Attributes ()
+                               .Where (a => !a.IsNamespaceDeclaration)
+                               .Select (a => a.Name.Namespace != XNamespace.None ?
+                                                new XAttribute (XName.Get(a.Name.LocalName), a.Value) : a);
+                       e.ReplaceAttributes (attrs);
+                       Assert.IsNotNull (e.Attribute ("Id"), "#1");
+                       Assert.IsNotNull (e.Attribute ("Name"), "#2");
+                       Assert.IsNotNull (e.Attribute ("Cluster"), "#3");
+               }
        }
 }
diff --git a/mcs/class/System.Xml.Serialization/AssemblyInfo.cs b/mcs/class/System.Xml.Serialization/AssemblyInfo.cs
new file mode 100644 (file)
index 0000000..0a8d012
--- /dev/null
@@ -0,0 +1,44 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Reflection;
+using System.Runtime.CompilerServices;
+
+[assembly: AssemblyTitle ("System.Xml.Serialization.dll")]
+[assembly: AssemblyDescription ("System.Xml.Serialization.dll")]
+[assembly: AssemblyDefaultAlias ("System.Xml.Serialization.dll")]
+
+[assembly: AssemblyCompany (Consts.MonoCompany)]
+[assembly: AssemblyProduct (Consts.MonoProduct)]
+[assembly: AssemblyCopyright (Consts.MonoCopyright)]
+[assembly: AssemblyVersion (Consts.FxVersion)]
+[assembly: AssemblyInformationalVersion (Consts.FxFileVersion)]
+[assembly: AssemblyFileVersion (Consts.FxFileVersion)]
+[assembly: AssemblyDelaySign (true)]
+[assembly: AssemblyKeyFile ("../ecma.pub")]
+
+[assembly: ReferenceAssembly]
diff --git a/mcs/class/System.Xml.Serialization/Makefile b/mcs/class/System.Xml.Serialization/Makefile
new file mode 100644 (file)
index 0000000..ff0d35d
--- /dev/null
@@ -0,0 +1,12 @@
+thisdir = class/System.Xml.Serialization
+SUBDIRS = 
+include ../../build/rules.make
+
+LIBRARY = System.Xml.Serialization.dll
+LIB_MCS_FLAGS = /r:System.Xml /r:System.ServiceModel
+
+PLATFORM_DEBUG_FLAGS =
+
+NO_TEST = yes
+
+include ../../build/library.make
diff --git a/mcs/class/System.Xml.Serialization/System.Xml.Serialization.dll.sources b/mcs/class/System.Xml.Serialization/System.Xml.Serialization.dll.sources
new file mode 100644 (file)
index 0000000..d75b28a
--- /dev/null
@@ -0,0 +1,3 @@
+AssemblyInfo.cs
+TypeForwarders.cs
+../../build/common/Consts.cs
diff --git a/mcs/class/System.Xml.Serialization/TypeForwarders.cs b/mcs/class/System.Xml.Serialization/TypeForwarders.cs
new file mode 100644 (file)
index 0000000..376e38d
--- /dev/null
@@ -0,0 +1,38 @@
+//
+// TypeForwarders.cs
+//
+// Author:
+//       Martin Baulig <martin.baulig@xamarin.com>
+//
+// Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlMapping))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlTypeMapping))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlMappingAccess))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializer))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.ServiceModel.XmlSerializerFormatAttribute))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlArrayItemAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributeOverrides))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlElementAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlAnyElementAttributes))]
+[assembly: System.Runtime.CompilerServices.TypeForwardedToAttribute(typeof(System.Xml.Serialization.XmlSerializerNamespaces))]
+
index 84425f018f70b02a04bc17ffd86cb8eac64b0da7..3b25daa8977eecc2a4328aae9fd5dff0971002d1 100644 (file)
@@ -27,7 +27,7 @@ ifneq (1, $(FRAMEWORK_VERSION_MAJOR))
 LIB_MCS_FLAGS = -nowarn:618 -d:CONFIGURATION_2_0 -unsafe $(RESOURCE_FILES:%=-resource:%)
 TEST_MCS_FLAGS += -r:System.Configuration
 PROFILE_ANY_MOBILE := $(filter monotouch monodroid, $(PROFILE))
-NOT_SL := $(filter net_2_0 net_4_0 net_4_5 monotouch monotouch_runtime monodroid mobile, $(PROFILE))
+NOT_SL := $(filter net_2_0 net_4_0 net_4_5 monotouch_runtime monodroid mobile, $(PROFILE))
 endif
 ifeq (2.1, $(FRAMEWORK_VERSION))
 LIB_MCS_FLAGS += -d:INSIDE_SYSTEM
@@ -36,7 +36,7 @@ LIB_MCS_FLAGS += -d:SECURITY_DEP
 endif
 endif
 ifeq (monotouch, $(PROFILE))
-LIB_MCS_FLAGS += -d:FULL_AOT_RUNTIME
+LIB_MCS_FLAGS += -d:SECURITY_DEP
 endif
 
 EXTRA_DISTFILES = \
index 26039bdd79b3de87fccd138b2345b4f809967f16..62b41de358d512f71d3fdaaa3985845ae2beb990 100644 (file)
@@ -395,6 +395,20 @@ namespace Mono.CSharp
                                args.AppendFormat("\"{0}\" ",source);
                        return args.ToString();
                }
+
+               // Keep in sync with mcs/class/Microsoft.Build.Utilities/Microsoft.Build.Utilities/ToolTask.cs
+               const string ErrorRegexPattern = @"
+                       ^
+                       (\s*(?<file>[^\(]+)                         # filename (optional)
+                        (\((?<line>\d*)(,(?<column>\d*[\+]*))?\))? # line+column (optional)
+                        :\s+)?
+                       (?<level>\w+)                               # error|warning
+                       \s+
+                       (?<number>[^:]*\d)                          # CS1234
+                       :
+                       \s*
+                       (?<message>.*)$";
+
                private static CompilerError CreateErrorFromString(string error_string)
                {
                        if (error_string.StartsWith ("BETA"))
@@ -404,8 +418,7 @@ namespace Mono.CSharp
                                return null;
 
                        CompilerError error=new CompilerError();
-                       Regex reg = new Regex (@"^(\s*(?<file>.*)\((?<line>\d*)(,(?<column>\d*))?\)(:)?\s+)*(?<level>\w+)\s*(?<number>.*):\s(?<message>.*)",
-                               RegexOptions.Compiled | RegexOptions.ExplicitCapture);
+                       Regex reg = new Regex (ErrorRegexPattern, RegexOptions.Compiled | RegexOptions.ExplicitCapture | RegexOptions.IgnorePatternWhitespace);
                        Match match=reg.Match(error_string);
                        if (!match.Success) {
                                // We had some sort of runtime crash
index e5d9e5e7e669b6fa293eed9d2037467b419084eb..de0f569d5c5d57a002c307b612d0f9e9f10d64b3 100644 (file)
@@ -172,7 +172,28 @@ namespace Mono.CSharp
                {
                        GenerateCompileUnitStart (compileUnit);
 
-                       GenerateGlobalNamespace (compileUnit);
+                       List<CodeNamespaceImport> imports = null;
+                       foreach (CodeNamespace codeNamespace in compileUnit.Namespaces) {
+                               if (!string.IsNullOrEmpty (codeNamespace.Name))
+                                       continue;
+
+                               if (codeNamespace.Imports.Count == 0)
+                                       continue;
+
+                               if (imports == null)
+                                       imports = new List<CodeNamespaceImport> ();
+
+                               foreach (CodeNamespaceImport i in codeNamespace.Imports)
+                                       imports.Add (i);
+                       }
+
+                       if (imports != null) {
+                               imports.Sort ((a, b) => a.Namespace.CompareTo (b.Namespace));
+                               foreach (var import in imports)
+                                       GenerateNamespaceImport (import);
+
+                               Output.WriteLine ();
+                       }
 
                        if (compileUnit.AssemblyCustomAttributes.Count > 0) {
                                OutputAttributes (compileUnit.AssemblyCustomAttributes, 
@@ -180,26 +201,22 @@ namespace Mono.CSharp
                                Output.WriteLine ("");
                        }
 
-                       GenerateLocalNamespaces (compileUnit);
-
-                       GenerateCompileUnitEnd (compileUnit);
-               }
+                       CodeNamespaceImportCollection global_imports = null;
+                       foreach (CodeNamespace codeNamespace in compileUnit.Namespaces) {
+                               if (string.IsNullOrEmpty (codeNamespace.Name)) {
+                                       global_imports = codeNamespace.Imports;
+                                       codeNamespace.Imports = new CodeNamespaceImportCollection ();
+                               }
 
-               private void GenerateGlobalNamespace (CodeCompileUnit compileUnit) {
-                       CodeNamespace globalNamespace = null;
+                               GenerateNamespace (codeNamespace);
 
-                       foreach (CodeNamespace codeNamespace in compileUnit.Namespaces)
-                               if (string.IsNullOrEmpty (codeNamespace.Name)) 
-                                       globalNamespace = codeNamespace;
-  
-                       if (globalNamespace != null)
-                               GenerateNamespace (globalNamespace);
-               }
+                               if (global_imports != null) {
+                                       codeNamespace.Imports = global_imports;
+                                       global_imports = null;
+                               }
+                       }
 
-               private void GenerateLocalNamespaces (CodeCompileUnit compileUnit) {
-                       foreach (CodeNamespace codeNamespace in compileUnit.Namespaces)
-                               if (!string.IsNullOrEmpty (codeNamespace.Name))
-                                       GenerateNamespace (codeNamespace);
+                       GenerateCompileUnitEnd (compileUnit);
                }
 
                protected override void GenerateDefaultValueExpression (CodeDefaultValueExpression e)
@@ -1597,9 +1614,13 @@ namespace Mono.CSharp
 
                static void FillKeywordTable ()
                {
-                       keywordsTable = new Hashtable ();
-                       foreach (string keyword in keywords) {
-                               keywordsTable.Add (keyword, keyword);
+                       lock (keywords) {
+                               if (keywordsTable == null) {
+                                       keywordsTable = new Hashtable ();
+                                       foreach (string keyword in keywords) {
+                                               keywordsTable.Add (keyword, keyword);
+                                       }
+                               }
                        }
                }
 
index 784f1eef0b2e229d9fd701960d092bd069f9477a..0eb2c4aea2ef2c3b12fce8fe53ae6b6405474faf 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Ntlm;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Protocol.Ntlm;
+#endif
 
 using System;
 using System.Collections;
 using System.Net;
-using MonoSecurity::Mono.Security.Protocol.Ntlm;
 
 namespace Mono.Http
 {
index 76a123f5a12263ca91ba8c8d5e4cc96d425e13f8..9a09b1afa566121d2426bd7a35bbc2df0010fb87 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4C8FFAF4-4FE9-4377-821B-AFD255791495}</ProjectGuid>\r
+    <ProjectGuid>{DC4EE47D-CEB6-4592-994A-92C6B1D746FA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-build</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-basic.csproj">\r
-      <Project>{E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}</Project>\r
+      <Project>{347CC78E-794E-4BEF-BDAB-A0437E367442}</Project>\r
       <Name>System.XML\System.Xml-basic</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 8e1082a8b361176af64ca72fc525a7219666122e..acdb87cb6e4a116a8ca486f9752b5a882abd3825 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{0F9C68C1-0695-4DC0-8064-B0749F54DF34}</ProjectGuid>\r
+    <ProjectGuid>{245C754C-D6DE-4434-BA78-37A93E196236}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-build.csproj">\r
-      <Project>{A2433930-2BB3-4818-97D2-45A907CB7B3B}</Project>\r
+      <Project>{D513888C-71DC-4A65-B753-668FF8FB2CAA}</Project>\r
       <Name>System.XML\System.Xml-build</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-build.csproj">\r
-      <Project>{4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}</Project>\r
-      <Name>Mono.Security\Mono.Security-build</Name>\r
-    </ProjectReference>\r
     <Reference Include="System.Configuration.dll">\r
       <SpecificVersion>False</SpecificVersion>\r
       <HintPath>System.Configuration.dll</HintPath>\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System\System-build-1.csproj">\r
-      <Project>{C3638457-A40E-4E70-81B4-54ACB31DD76D}</Project>\r
+      <Project>{83D197B9-A796-4A0D-B8F9-930DD9415615}</Project>\r
       <Name>System\System-build-1</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Security\Mono.Security-build.csproj">\r
+      <Project>{FC2EF2C1-8774-4DFE-AE47-9574374D3591}</Project>\r
+      <Name>Mono.Security\Mono.Security-build</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
index cdabd5198dc9c310f5387feda83c733ce7abda6f..3dca305f9e4da0e66ea039420c953bfc6bfec317 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}</ProjectGuid>\r
+    <ProjectGuid>{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
-    </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
+      <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
index 202d7a4cbe9cc200f13075fe7b3bd1e48a58ed36..7d8e588fa41e06d08694c6ab9d562048feaea2b9 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</ProjectGuid>\r
+    <ProjectGuid>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-net_4_5-1</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5.csproj">\r
-      <Project>{443B892C-060C-4829-839D-FE539CDEC5D9}</Project>\r
+      <Project>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</Project>\r
       <Name>System\System-net_4_5</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
+      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
index a5e0e82745a55c00842a8fc2abd28b63765bd45c..8a215931f33cfd6a20fa32514230eb374b5a7977 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{34966210-D64D-419C-94A4-9A6093CE5882}</ProjectGuid>\r
+    <ProjectGuid>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-net_4_5-2</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
-    </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-1.csproj">\r
-      <Project>{B53B8417-E392-4660-86F0-54E7B7FAD4BA}</Project>\r
+      <Project>{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}</Project>\r
       <Name>System\System-net_4_5-1</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
+      <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
index 6e4a29c843ad2e18ccc18e66ca91d360ad65ad91..8287772af3db97744b6df74875a6fda3a49c27a4 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{443B892C-060C-4829-839D-FE539CDEC5D9}</ProjectGuid>\r
+    <ProjectGuid>{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699,618</NoWarn>\r
     <OutputPath>bin\Debug\System-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
-    <Compile Include="..\..\build\common\Locale.cs" />\r
-    <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
-    <Compile Include="..\corlib\Mono\DataConverter.cs" />\r
-    <Compile Include="..\corlib\System.Collections.Generic\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Collections\CollectionDebuggerView.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\CyclicDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\IConcurrentDeque.cs" />\r
-    <Compile Include="..\corlib\System.Threading.Tasks\PopResult.cs" />\r
-    <Compile Include="..\corlib\System.Threading\AtomicBoolean.cs" />\r
     <Compile Include="Assembly\AssemblyInfo.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeCompiler.cs" />\r
     <Compile Include="Microsoft.CSharp\CSharpCodeGenerator.cs" />\r
     <Compile Include="System.Diagnostics\TraceSwitch.cs" />\r
     <Compile Include="System.Diagnostics\Win32EventLog.cs" />\r
     <Compile Include="System.Diagnostics\XmlWriterTraceListener.cs" />\r
+    <Compile Include="System.IO.Compression\CompressionLevel.cs" />\r
     <Compile Include="System.IO.Compression\CompressionMode.cs" />\r
     <Compile Include="System.IO.Compression\DeflateStream.cs" />\r
     <Compile Include="System.IO.Compression\GZipStream.cs" />\r
     <Compile Include="System.IO\InvalidDataException.cs" />\r
     <Compile Include="System.IO\IODescriptionAttribute.cs" />\r
     <Compile Include="System.IO\KeventWatcher.cs" />\r
-    <Compile Include="System.IO\MonoIO.cs" />\r
-    <Compile Include="System.IO\MonoIOError.cs" />\r
     <Compile Include="System.IO\MonoSyncFileStream.cs" />\r
     <Compile Include="System.IO\NotifyFilters.cs" />\r
     <Compile Include="System.IO\NullFileWatcher.cs" />\r
     <Compile Include="System.Net.Sockets\TransmitFileOptions.cs" />\r
     <Compile Include="System.Net.Sockets\UdpClient.cs" />\r
     <Compile Include="System.Net.Sockets\UdpReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\ClientWebSocketOptions.cs" />\r
+    <Compile Include="System.Net.WebSockets\HttpListenerWebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocket.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketCloseStatus.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketContext.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketError.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketException.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketMessageType.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketReceiveResult.cs" />\r
+    <Compile Include="System.Net.WebSockets\WebSocketState.cs" />\r
     <Compile Include="System.Net\AuthenticationManager.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemes.cs" />\r
     <Compile Include="System.Net\AuthenticationSchemeSelector.cs" />\r
     <Compile Include="System.Text.RegularExpressions\quicksearch.cs" />\r
     <Compile Include="System.Text.RegularExpressions\Regex.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexCompilationInfo.cs" />\r
+    <Compile Include="System.Text.RegularExpressions\RegexMatchTimeoutException.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexOptions.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunner.cs" />\r
     <Compile Include="System.Text.RegularExpressions\RegexRunnerFactory.cs" />\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
-    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
-      <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
-    </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
+      <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
+    </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
index 4a98df203f0390656a0d3916173ca5f72d58df8a..56aae8c79ae5ceb8eccb60c14d32dad7fb80d9e2 100644 (file)
@@ -5,9 +5,9 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{76A71BC0-3D69-40C6-BF09-46F7B0009F00}</ProjectGuid>\r
+    <ProjectGuid>{F311EB21-B217-44F5-B4CB-96A7A4692C2E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <OutputPath>bin\Debug\System-tests-net_2_0</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
@@ -22,7 +22,7 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>false</Optimize>\r
     <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -30,7 +30,7 @@
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
     <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>true</Optimize>\r
     <DefineConstants>NET_1_1;NET_2_0</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromCompileUnitTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromExpressionTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromNamespaceTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Drawing.dll">\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_2_0.csproj">\r
-      <Project>{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}</Project>\r
+      <Project>{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}</Project>\r
       <Name>Mono.Security\Mono.Security-net_2_0</Name>\r
     </ProjectReference>\r
     <Reference Include="System.Data">\r
       <Private>False</Private>\r
     </Reference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0.csproj">\r
-      <Project>{67A04408-CBEF-4B63-B975-29D827B0DBED}</Project>\r
+      <Project>{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}</Project>\r
       <Name>System.XML\System.Xml-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_2_0.csproj">\r
-      <Project>{725170B0-51F0-46E2-A74D-F764B68553D6}</Project>\r
+      <Project>{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}</Project>\r
       <Name>System.Configuration\System.Configuration-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index fc7dee239ad55299d4d8baf1d4829ea824763e64..ac27d614dc71e99a1d05e0d5f9621312bd8b22b5 100644 (file)
@@ -5,9 +5,9 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{29AFC20E-0D3A-46E8-B41F-034DD6AC9D31}</ProjectGuid>\r
+    <ProjectGuid>{3CF54815-AE4B-40C1-9FFA-8291CA826229}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <OutputPath>bin\Debug\System-tests-net_4_0</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
@@ -22,7 +22,7 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>false</Optimize>\r
     <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -30,7 +30,7 @@
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
     <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>true</Optimize>\r
     <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromCompileUnitTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromExpressionTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromNamespaceTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_2_0.csproj">\r
-      <Project>{0877A48B-2DF5-40A2-8714-ABBF2BD48987}</Project>\r
+      <Project>{CA7E5301-90D2-4C07-87B7-851AA216D4C9}</Project>\r
       <Name>System.Drawing\System.Drawing-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_0.csproj">\r
-      <Project>{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}</Project>\r
+      <Project>{5E680987-7C43-48A0-9BF1-86124ACA78BD}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_2_0.csproj">\r
-      <Project>{B8CA1780-FF35-49B9-B385-C24BD0558109}</Project>\r
+      <Project>{49220562-83E1-49A2-971F-5D31C4AB0258}</Project>\r
       <Name>System.Data\System.Data-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0.csproj">\r
-      <Project>{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}</Project>\r
+      <Project>{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}</Project>\r
       <Name>System.XML\System.Xml-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 30b1f602f764831bbf3bdfc8a59755cc8d601534..13882879817c1924435ef81507c324145a1402d8 100644 (file)
@@ -5,9 +5,9 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{3B85CE19-864B-4F81-A0C3-A60C25CE8DB3}</ProjectGuid>\r
+    <ProjectGuid>{BC3F4974-B76D-41FF-B96C-091EA918A837}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <OutputPath>bin\Debug\System-tests-net_4_5</OutputPath>\r
     <NoStdLib>True</NoStdLib>\r
     <NoConfig>False</NoConfig>\r
@@ -22,7 +22,7 @@
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">\r
     <DebugSymbols>true</DebugSymbols>\r
     <DebugType>full</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>false</Optimize>\r
     <DefineConstants>DEBUG;TRACE;NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -30,7 +30,7 @@
   </PropertyGroup>\r
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">\r
     <DebugType>pdbonly</DebugType>\r
-    <NoWarn>1699,618,219,67,169,612</NoWarn>\r
+    <NoWarn>1699,618,672,219,67,169,612</NoWarn>\r
     <Optimize>true</Optimize>\r
     <DefineConstants>NET_1_1;NET_2_0;NET_3_0;NET_3_5;NET_4_0;NET_4_5</DefineConstants>\r
     <ErrorReport>prompt</ErrorReport>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromCompileUnitTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromExpressionTest.cs" />\r
     <Compile Include="Test\Microsoft.CSharp\CodeGeneratorFromNamespaceTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Drawing\System.Drawing-net_4_0.csproj">\r
-      <Project>{0005126E-C0D0-4DA3-A2E2-E49592D3E164}</Project>\r
+      <Project>{DE98E72C-2727-4737-AAFC-CC1228F4812C}</Project>\r
       <Name>System.Drawing\System.Drawing-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Security\Mono.Security-net_4_5.csproj">\r
-      <Project>{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}</Project>\r
+      <Project>{99D172A2-7914-496C-9005-AA69F51195AF}</Project>\r
       <Name>Mono.Security\Mono.Security-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5.csproj">\r
-      <Project>{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}</Project>\r
+      <Project>{F96F7491-66DB-4291-8803-F2F165B33B55}</Project>\r
       <Name>System.XML\System.Xml-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index da056d15336030f5a974515f73f1cbf02cb7ed4c..80c30eece70d9d13e40ed5d50ffb86c729d42938 100644 (file)
@@ -73,33 +73,36 @@ namespace System.CodeDom.Compiler {
 
                                        // note: this property *cannot* change TempDir property
                                        string temp = tempdir;
-                                       if (temp.Length == 0)
-                                               temp = GetOwnTempDir ();
+                                       if (temp.Length == 0) {
+                                               if (ownTempDir != null) {
+                                                       temp = ownTempDir;
+                                                       Directory.CreateDirectory (temp);
+                                               } else {
+                                                       temp = CreateOwnTempDir ();
+                                               }
+                                       }
 
                                        // Create a temporary file at the target directory. This ensures
                                        // that the generated file name is unique.
-                                       FileStream f = null;
-                                       do {
+                                       int test_counter = 1000;
+                                       while (true) {
                                                int num = rnd.Next ();
                                                num++;
                                                basepath = Path.Combine (temp, num.ToString("x"));
                                                string path = basepath + ".tmp";
 
                                                try {
-                                                       f = new FileStream (path, FileMode.CreateNew);
-                                               }
-                                               catch (System.IO.IOException) {
-                                                       f = null;
-                                                       continue;
-                                               }
-                                               catch {
-                                                       // avoid endless loop
+                                                       using (var f = new FileStream (path, FileMode.CreateNew)) {
+                                                               break;
+                                                       }
+                                               } catch (IOException) {
+                                                       if (test_counter-- > 0)
+                                                               continue;
+
                                                        throw;
                                                }
-                                       } while (f == null);
-                                       
-                                       f.Close ();
-                                       
+                                       }
+
                                        // and you must have discovery access to the combined path
                                        // note: the cache behaviour is tested in the CAS tests
                                        if (SecurityManager.SecurityEnabled) {
@@ -110,12 +113,9 @@ namespace System.CodeDom.Compiler {
                                return(basepath);
                        }
                }
-               
-               string GetOwnTempDir ()
-               {
-                       if (ownTempDir != null)
-                               return ownTempDir;
 
+               string CreateOwnTempDir ()
+               {
                        // this call ensure the Environment permissions check
                        string basedir = Path.GetTempPath ();
                        
@@ -245,9 +245,8 @@ namespace System.CodeDom.Compiler {
                                File.Delete (tmpFile);
                                basepath = null;
                        }
-                       if (allDeleted && ownTempDir != null) {
+                       if (allDeleted && ownTempDir != null && filenames.Length > 0) {
                                Directory.Delete (ownTempDir, true);
-                               ownTempDir = null;
                        }
                }
 
index 8a709865b4149519aa388fe7ba56963d8346188e..7940975eb21a6c7ce09b6f8f7728a31a106d0c05 100644 (file)
@@ -80,6 +80,9 @@ namespace System.CodeDom
                                }
                                return imports;
                        }
+                       internal set {
+                               imports = value;
+                       }
                }
 
                public string Name {
index e5fb5ad7f59eff5bb9778826056e2e21b312a860..cc7e04ecdd50b974268a6130728ba83dc3fbc55a 100644 (file)
@@ -42,10 +42,17 @@ namespace System.Collections.Concurrent
                const int spinCount = 5;
 
                readonly IProducerConsumerCollection<T> underlyingColl;
-               readonly int upperBound;
 
+               /* These events are used solely for the purpose of having an optimized sleep cycle when
+                * the BlockingCollection have to wait on an external event (Add or Remove for instance)
+                */
+               ManualResetEventSlim mreAdd = new ManualResetEventSlim (true);
+               ManualResetEventSlim mreRemove = new ManualResetEventSlim (true);
                AtomicBoolean isComplete;
-               long completeId;
+
+               readonly int upperBound;
+
+               int completeId;
 
                /* The whole idea of the collection is to use these two long values in a transactional
                 * way to track and manage the actual data inside the underlying lock-free collection
@@ -54,14 +61,9 @@ namespace System.Collections.Concurrent
                 * They are manipulated with CAS and are guaranteed to increase over time and use
                 * of the instance thus preventing ABA problems.
                 */
-               long addId = long.MinValue;
-               long removeId = long.MinValue;
+               int addId = int.MinValue;
+               int removeId = int.MinValue;
 
-               /* These events are used solely for the purpose of having an optimized sleep cycle when
-                * the BlockingCollection have to wait on an external event (Add or Remove for instance)
-                */
-               ManualResetEventSlim mreAdd = new ManualResetEventSlim (true);
-               ManualResetEventSlim mreRemove = new ManualResetEventSlim (true);
 
                /* For time based operations, we share this instance of Stopwatch and base calculation
                   on a time offset at each of these method call */
@@ -118,11 +120,12 @@ namespace System.Collections.Concurrent
                        do {
                                cancellationToken.ThrowIfCancellationRequested ();
 
-                               long cachedAddId = addId;
-                               long cachedRemoveId = removeId;
+                               int cachedAddId = addId;
+                               int cachedRemoveId = removeId;
+                               int itemsIn = cachedAddId - cachedRemoveId;
 
                                // If needed, we check and wait that the collection isn't full
-                               if (upperBound != -1 && cachedAddId - cachedRemoveId > upperBound) {
+                               if (upperBound != -1 && itemsIn > upperBound) {
                                        if (millisecondsTimeout == 0)
                                                return false;
 
@@ -207,8 +210,8 @@ namespace System.Collections.Concurrent
                        do {
                                cancellationToken.ThrowIfCancellationRequested ();
 
-                               long cachedRemoveId = removeId;
-                               long cachedAddId = addId;
+                               int cachedRemoveId = removeId;
+                               int cachedAddId = addId;
 
                                // Empty case
                                if (cachedRemoveId == cachedAddId) {
@@ -367,13 +370,19 @@ namespace System.Collections.Concurrent
                {
                        item = default (T);
                        CheckArray (collections);
-                       int index = 0;
-                       foreach (var coll in collections) {
-                               try {
-                                       item = coll.Take ();
-                                       return index;
-                               } catch {}
-                               index++;
+                       WaitHandle[] wait_table = null;
+                       while (true) {
+                               int index = 0;
+                               for (int i = 0; i < collections.Length; ++i) {
+                                       if (collections [i].TryTake (out item))
+                                               return i;
+                               }
+                               if (wait_table == null) {
+                                       wait_table = new WaitHandle [collections.Length];
+                                       for (int i = 0; i < collections.Length; ++i)
+                                               wait_table [i] = collections [i].mreRemove.WaitHandle;
+                               }
+                               WaitHandle.WaitAny (wait_table);
                        }
                        return -1;
                }
@@ -382,14 +391,24 @@ namespace System.Collections.Concurrent
                {
                        item = default (T);
                        CheckArray (collections);
-                       int index = 0;
-                       foreach (var coll in collections) {
-                               try {
-                                       item = coll.Take (cancellationToken);
-                                       return index;
-                               } catch {}
-                               index++;
+                       WaitHandle[] wait_table = null;
+                       while (true) {
+                               int index = 0;
+                               for (int i = 0; i < collections.Length; ++i) {
+                                       if (collections [i].TryTake (out item))
+                                               return i;
+                               }
+                               cancellationToken.ThrowIfCancellationRequested ();
+                               if (wait_table == null) {
+                                       wait_table = new WaitHandle [collections.Length + 1];
+                                       for (int i = 0; i < collections.Length; ++i)
+                                               wait_table [i] = collections [i].mreRemove.WaitHandle;
+                                       wait_table [collections.Length] = cancellationToken.WaitHandle;
+                               }
+                               WaitHandle.WaitAny (wait_table);
+                               cancellationToken.ThrowIfCancellationRequested ();
                        }
+
                        return -1;
                }
 
index 5998c061ab0302690b8f07f5328a0919759de805..5b4cbfcf1af6aaf3d4e86dc47dc0fa24ee0a28ee 100644 (file)
@@ -41,8 +41,8 @@ namespace System.Collections.Concurrent
        [DebuggerTypeProxy (typeof (CollectionDebuggerView<>))]
        public class ConcurrentBag<T> : IProducerConsumerCollection<T>, IEnumerable<T>, IEnumerable
        {
-               // We store hints in a long
-               long hints;
+               // We store hints in an int
+               int hints;
 
                int count;
                // The container area is where bag are added foreach thread
@@ -153,19 +153,19 @@ namespace System.Collections.Concurrent
                                return;
                        var hs = hints;
                        // If cas failed then we don't retry
-                       Interlocked.CompareExchange (ref hints, (long)(((ulong)hs) << 4 | (uint)index), (long)hs);
+                       Interlocked.CompareExchange (ref hints, (int)(((uint)hs) << 4 | (uint)index), (int)hs);
                }
 
                bool TryGetHint (out int index)
                {
-                       /* Funny little thing to know, since hints is a long (because CAS has no ulong overload),
+                       /* Funny little thing to know, since hints is signed (because CAS has no uint overload),
                         * a shift-right operation is an arithmetic shift which might set high-order right bits
                         * to 1 instead of 0 if the number turns negative.
                         */
                        var hs = hints;
                        index = 0;
 
-                       if (Interlocked.CompareExchange (ref hints, (long)(((ulong)hs) >> 4), hs) == hs)
+                       if (Interlocked.CompareExchange (ref hints, (int)(((uint)hs) >> 4), hs) == hs)
                                index = (int)(hs & 0xF);
 
                        return index > 0;
index c1190b2ad26d67daeeecc6c79191814e56db3879..2eaec862bda11b699875eb110f37849fb71b1134 100644 (file)
@@ -629,7 +629,7 @@ namespace System.Collections.Generic
                        int right = len-1;
 
                        while (left <= right) {
-                               int guess = (left + right) >> 1;
+                               int guess = left + ((right - left) >> 1);
 
                                int cmp = Compare (table[guess].Key, key);
                                if (cmp == 0) return guess;
index 6c26e8795f62cf037c1eddafeec9a8dd8ce73aa3..339e63c9aa2079d44290b9a939defd982c23c329 100644 (file)
@@ -40,30 +40,33 @@ namespace System.Collections.ObjectModel
 #endif
        public class ObservableCollection<T> : Collection<T>, INotifyCollectionChanged, INotifyPropertyChanged {
                [Serializable]
-               sealed class Reentrant : IDisposable {
-                       private int count = 0;
+#if !MOBILE
+               [TypeForwardedFrom (Consts.WindowsBase_3_0)]
+#endif
+               sealed class SimpleMonitor : IDisposable {
+                       private int _busyCount;
 
-                       public Reentrant()
+                       public SimpleMonitor()
                        {
                        }
 
                        public void Enter()
                        {
-                               count++;
+                               _busyCount++;
                        }
 
                        public void Dispose()
                        {
-                               count--;
+                               _busyCount--;
                        }
 
                        public bool Busy
                        {
-                               get { return count > 0; }
+                               get { return _busyCount > 0; }
                        }
                }
 
-               private Reentrant reentrant = new Reentrant ();
+               private SimpleMonitor _monitor = new SimpleMonitor ();
 
                public ObservableCollection ()
                {
@@ -83,7 +86,9 @@ namespace System.Collections.ObjectModel
                {
                }
 
+               [field:NonSerialized]
                public virtual event NotifyCollectionChangedEventHandler CollectionChanged;
+               [field:NonSerialized]
                protected virtual event PropertyChangedEventHandler PropertyChanged;
 
                event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged {
@@ -93,8 +98,8 @@ namespace System.Collections.ObjectModel
 
                protected IDisposable BlockReentrancy ()
                {
-                       reentrant.Enter ();
-                       return reentrant;
+                       _monitor.Enter ();
+                       return _monitor;
                }
 
                protected void CheckReentrancy ()
@@ -102,7 +107,7 @@ namespace System.Collections.ObjectModel
                        NotifyCollectionChangedEventHandler eh = CollectionChanged;
 
                        // Only have a problem if we have more than one event listener.
-                       if (reentrant.Busy && eh != null && eh.GetInvocationList ().Length > 1)
+                       if (_monitor.Busy && eh != null && eh.GetInvocationList ().Length > 1)
                                throw new InvalidOperationException ("Cannot modify the collection while reentrancy is blocked.");
                }
 
index 5c61d72eef89da05deee4e4ade0717818f8d4853..10951616484cde3a873715d2470166f5dbffe5a4 100644 (file)
@@ -44,7 +44,7 @@ namespace System.ComponentModel {
 
                private EventHandlerList event_handlers;
                private ISite mySite;
-               private object disposedEvent = new object ();
+               static readonly object disposedEvent = new object ();
 
                public Component ()
                {
index bf618659ce6ff8f15fa71e8a2dccff08b4c243ee..4c336dd00572f33f087e5c65a4287f57f31d74f5 100644 (file)
@@ -27,6 +27,7 @@
 //
 
 using System;
+using System.Reflection;
 #if (XML_DEP)
 using System.Xml;
 #endif
@@ -112,7 +113,79 @@ namespace System.Configuration
 #if (CONFIGURATION_DEP)
                protected override void Unmerge (ConfigurationElement sourceElement, ConfigurationElement parentElement, ConfigurationSaveMode saveMode)
                {
-                       throw new NotImplementedException ();
+                       if (parentElement != null && sourceElement.GetType() != parentElement.GetType())
+                               throw new ConfigurationErrorsException ("Can't unmerge two elements of different type");
+
+                       bool isMinimalOrModified = saveMode == ConfigurationSaveMode.Minimal ||
+                               saveMode == ConfigurationSaveMode.Modified;
+
+                       foreach (PropertyInformation prop in sourceElement.ElementInformation.Properties)
+                       {
+                               if (prop.ValueOrigin == PropertyValueOrigin.Default)
+                                       continue;
+                               
+                               PropertyInformation unmergedProp = ElementInformation.Properties [prop.Name];
+                               
+                               object sourceValue = prop.Value;
+                               if (parentElement == null || !HasValue (parentElement, prop.Name)) {
+                                       unmergedProp.Value = sourceValue;
+                                       continue;
+                               }
+
+                               if (sourceValue == null)
+                                       continue;
+
+                               object parentValue = GetItem (parentElement, prop.Name);
+                               if (!PropertyIsElement (prop)) {
+                                       if (!object.Equals (sourceValue, parentValue) || 
+                                           (saveMode == ConfigurationSaveMode.Full) ||
+                                           (saveMode == ConfigurationSaveMode.Modified && prop.ValueOrigin == PropertyValueOrigin.SetHere))
+                                               unmergedProp.Value = sourceValue;
+                                       continue;
+                               }
+
+                               var sourceElem = (ConfigurationElement) sourceValue;
+                               if (isMinimalOrModified && !ElementIsModified (sourceElem))
+                                       continue;
+                               if (parentValue == null) {
+                                       unmergedProp.Value = sourceValue;
+                                       continue;
+                               }
+
+                               var parentElem = (ConfigurationElement) parentValue;
+                               ConfigurationElement copy = (ConfigurationElement) unmergedProp.Value;
+                               ElementUnmerge (copy, sourceElem, parentElem, saveMode);
+                       }
+               }
+
+               bool HasValue (ConfigurationElement element, string propName)
+               {
+                       PropertyInformation info = element.ElementInformation.Properties [propName];
+                       return info != null && info.ValueOrigin != PropertyValueOrigin.Default;
+               }
+
+               object GetItem (ConfigurationElement element, string property)
+               {
+                       PropertyInformation pi = ElementInformation.Properties [property];
+                       if (pi == null)
+                               throw new InvalidOperationException ("Property '" + property + "' not found in configuration element");
+
+                       return pi.Value;
+               }
+               
+               bool PropertyIsElement (PropertyInformation prop)
+               {
+                       return (typeof(ConfigurationElement).IsAssignableFrom (prop.Type));
+               }
+               
+               bool ElementIsModified (ConfigurationElement element)
+               {
+                       return (bool) element.GetType ().GetMethod ("IsModified", BindingFlags.NonPublic | BindingFlags.Instance).Invoke (element, new object [0]);
+               }
+               
+               void ElementUnmerge (ConfigurationElement target, ConfigurationElement sourceElement, ConfigurationElement parentElement, ConfigurationSaveMode saveMode)
+               {
+                       target.GetType ().GetMethod ("Unmerge", BindingFlags.NonPublic | BindingFlags.Instance).Invoke (target, new object [] {sourceElement, parentElement, saveMode});
                }
 #endif
        }
index 55a8362a5519e2a7ff067515377eccdee5a9b27a..dc45ae8d4ad7b0f08f717f26422a0457f9a24d0f 100644 (file)
@@ -53,7 +53,7 @@ namespace System.Diagnostics {
        }
 #endif
 
-       internal class TraceImpl {
+       static class TraceImpl {
 
 #if !MOBILE
                private static object initLock = new object ();
@@ -86,23 +86,21 @@ namespace System.Diagnostics {
                }
 #else
                [ThreadStatic]
-               private static int indentLevel = 0;
+               private static int indentLevel;
 
                [ThreadStatic]
                private static int indentSize;
 #endif
 
-               private TraceImpl ()
-               {
-               }
-
 #if MOBILE
-               static TraceImpl ()
-               {
-                       listeners = new TraceListenerCollection (true);
-               }
+               static TraceListenerCollection listeners = new TraceListenerCollection (true);
+#else
+               static TraceListenerCollection listeners;
 #endif
 
+               static bool use_global_lock;
+               static CorrelationManager correlation_manager = new CorrelationManager ();
+
                public static bool AutoFlush {
                        get {
                                InitOnce ();
@@ -146,8 +144,6 @@ namespace System.Diagnostics {
                        }
                }
 
-               private static TraceListenerCollection listeners;
-
                public static TraceListenerCollection Listeners {
                        get {
                                InitOnce ();
@@ -162,9 +158,6 @@ namespace System.Diagnostics {
                        }
                }
 
-               static bool use_global_lock;
-               static CorrelationManager correlation_manager = new CorrelationManager ();
-
                public static CorrelationManager CorrelationManager {
                        get {
                                InitOnce ();
@@ -223,24 +216,18 @@ namespace System.Diagnostics {
 #endif
                }
 
-               // FIXME: According to MSDN, this method should display a dialog box
-               [MonoTODO]
                public static void Assert (bool condition)
                {
                        if (!condition)
-                               Fail (new StackTrace(true).ToString());
+                               Fail ("");
                }
 
-               // FIXME: According to MSDN, this method should display a dialog box
-               [MonoTODO]
                public static void Assert (bool condition, string message)
                {
                        if (!condition)
                                Fail (message);
                }
 
-               // FIXME: According to MSDN, this method should display a dialog box
-               [MonoTODO]
                public static void Assert (bool condition, string message, 
                        string detailMessage)
                {
index f2d3c76610574efb4e4ddf214298f256b7155b32..7bb49150b5ef1210361f721d78c6cdcde1c029a8 100644 (file)
@@ -162,7 +162,7 @@ namespace System.Diagnostics {
 
                public virtual void Fail (string message)
                {
-                       Fail (message, "");
+                       Fail (message, null);
                }
 
                public virtual void Fail (string message, string detailMessage)
@@ -170,8 +170,11 @@ namespace System.Diagnostics {
                        WriteLine ("---- DEBUG ASSERTION FAILED ----");
                        WriteLine ("---- Assert Short Message ----");
                        WriteLine (message);
-                       WriteLine ("---- Assert Long Message ----");
-                       WriteLine (detailMessage);
+                       if (detailMessage != null) {
+                               WriteLine ("---- Assert Long Message ----");
+                               WriteLine (detailMessage);
+                       }
+
                        WriteLine ("");
                }
 
index a99e77a2e6fd3825e05e454478ac91684bee921b..e804235386a69b9cc065b77925c37c4ba94a8890 100644 (file)
@@ -1,12 +1,12 @@
 //
 // TraceSource.cs
 //
-// Author:
+// Authors:
 //     Atsushi Enomoto  <atsushi@ximian.com>
+//     Marek Safar (marek.safar@gmail.com)
 //
 // Copyright (C) 2007 Novell, Inc.
-//
-
+// Copyright 2013 Xamarin Inc
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -45,17 +45,21 @@ namespace System.Diagnostics
                {
                }
 
-               public TraceSource (string name, SourceLevels sourceLevels)
+               public TraceSource (string name, SourceLevels defaultLevel)
                {
                        if (name == null)
                                throw new ArgumentNullException ("name");
+                       if (name.Length == 0)
+                               throw new ArgumentException ("name");
+                       
                        Hashtable sources = DiagnosticsConfiguration.Settings ["sources"] as Hashtable;
                        TraceSourceInfo info = sources != null ? sources [name] as TraceSourceInfo : null;
                        source_switch = new SourceSwitch (name);
 
-                       if (info == null)
+                       if (info == null) {
                                listeners = new TraceListenerCollection ();
-                       else {
+                               source_switch.Level = defaultLevel;
+                       } else {
                                source_switch.Level = info.Levels;
                                listeners = info.Listeners;
                        }
index 7ea3a7a49f776cdf1100a0675c929d9f5ed2ef68..2242c19cf589f8603b219037d45e524f953fbaf5 100644 (file)
@@ -27,7 +27,7 @@
 #if NET_4_5
 namespace System.IO.Compression {
        public enum CompressionLevel {
-               Optional,
+               Optimal,
                Fastest,
                NoCompression
        }
index 00c92ef503cc6ba03fa8c8cac22bb304f2e5acb4..02c0c9f6b02dc00345ba844de459196299aae41d 100644 (file)
@@ -5,8 +5,10 @@
 // Authors:
 //     Christopher James Lahey <clahey@ximian.com>
 //     Gonzalo Paniagua Javier (gonzalo@novell.com)
+//  Marek Safar (marek.safar@gmail.com)
 //
 // (c) Copyright 2004,2009 Novell, Inc. <http://www.novell.com>
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -37,12 +39,10 @@ using System.Runtime.Remoting.Messaging;
 using MonoTouch;
 #endif
 
-namespace System.IO.Compression {
+namespace System.IO.Compression
+{
        public class DeflateStream : Stream
        {
-               const int BufferSize = 4096;
-               [UnmanagedFunctionPointer (CallingConvention.Cdecl)]
-               delegate int UnmanagedReadOrWrite (IntPtr buffer, int length, IntPtr data);
                delegate int ReadMethod (byte[] array, int offset, int count);
                delegate void WriteMethod (byte[] array, int offset, int count);
 
@@ -50,11 +50,7 @@ namespace System.IO.Compression {
                CompressionMode mode;
                bool leaveOpen;
                bool disposed;
-               UnmanagedReadOrWrite feeder; // This will be passed to unmanaged code and used there
-               IntPtr z_stream;
-               byte [] io_buffer;
-
-               GCHandle data;
+               DeflateStreamNative native;
 
                public DeflateStream (Stream compressedStream, CompressionMode mode) :
                        this (compressedStream, mode, false, false)
@@ -74,14 +70,10 @@ namespace System.IO.Compression {
                        if (mode != CompressionMode.Compress && mode != CompressionMode.Decompress)
                                throw new ArgumentException ("mode");
 
-                       this.data = GCHandle.Alloc (this);
                        this.base_stream = compressedStream;
-                       this.feeder = (mode == CompressionMode.Compress) ? new UnmanagedReadOrWrite (UnmanagedWrite) :
-                                                                          new UnmanagedReadOrWrite (UnmanagedRead);
-                       this.z_stream = CreateZStream (mode, gzip, feeder, GCHandle.ToIntPtr (data));
-                       if (z_stream == IntPtr.Zero) {
-                               this.base_stream = null;
-                               this.feeder = null;
+
+                       this.native = DeflateStreamNative.Create (compressedStream, mode, gzip);
+                       if (this.native == null) {
                                throw new NotImplementedException ("Failed to initialize zlib. You probably have an old zlib installed. Version 1.2.0.4 or later is required.");
                        }
                        this.mode = mode;
@@ -106,109 +98,31 @@ namespace System.IO.Compression {
 
                protected override void Dispose (bool disposing)
                {
+                       native.Dispose (disposing);
+
                        if (disposing && !disposed) {
                                disposed = true;
-                               IntPtr zz = z_stream;
-                               z_stream = IntPtr.Zero;
-                               int res = 0;
-                               if (zz != IntPtr.Zero)
-                                       res = CloseZStream (zz); // This will Flush() the remaining output if any
 
-                               io_buffer = null;
                                if (!leaveOpen) {
                                        Stream st = base_stream;
                                        if (st != null)
                                                st.Close ();
                                        base_stream = null;
                                }
-                               CheckResult (res, "Dispose");
-                       }
-
-                       if (data.IsAllocated) {
-                               data.Free ();
-                               data = new GCHandle ();
                        }
 
                        base.Dispose (disposing);
                }
 
-#if MONOTOUCH
-               [MonoPInvokeCallback (typeof (UnmanagedReadOrWrite))]
-#endif
-               static int UnmanagedRead (IntPtr buffer, int length, IntPtr data)
-               {
-                       GCHandle s = GCHandle.FromIntPtr (data);
-                       var self = s.Target as DeflateStream;
-                       if (self == null)
-                               return -1;
-                       return self.UnmanagedRead (buffer, length);
-               }
-
-               int UnmanagedRead (IntPtr buffer, int length)
-               {
-                       int total = 0;
-                       int n = 1;
-                       while (length > 0 && n > 0) {
-                               if (io_buffer == null)
-                                       io_buffer = new byte [BufferSize];
-
-                               int count = Math.Min (length, io_buffer.Length);
-                               n = base_stream.Read (io_buffer, 0, count);
-                               if (n > 0) {
-                                       Marshal.Copy (io_buffer, 0, buffer, n);
-                                       unsafe {
-                                               buffer = new IntPtr ((byte *) buffer.ToPointer () + n);
-                                       }
-                                       length -= n;
-                                       total += n;
-                               }
-                       }
-                       return total;
-               }
-
-#if MONOTOUCH
-               [MonoPInvokeCallback (typeof (UnmanagedReadOrWrite))]
-#endif
-               static int UnmanagedWrite (IntPtr buffer, int length, IntPtr data)
-               {
-                       GCHandle s = GCHandle.FromIntPtr (data);
-                       var self = s.Target as DeflateStream;
-                       if (self == null)
-                               return -1;
-                       return self.UnmanagedWrite (buffer, length);
-               }
-
-               int UnmanagedWrite (IntPtr buffer, int length)
-               {
-                       int total = 0;
-                       while (length > 0) {
-                               if (io_buffer == null)
-                                       io_buffer = new byte [BufferSize];
-
-                               int count = Math.Min (length, io_buffer.Length);
-                               Marshal.Copy (buffer, io_buffer, 0, count);
-                               base_stream.Write (io_buffer, 0, count);
-                               unsafe {
-                                       buffer = new IntPtr ((byte *) buffer.ToPointer () + count);
-                               }
-                               length -= count;
-                               total += count;
-                       }
-                       return total;
-               }
-
                unsafe int ReadInternal (byte[] array, int offset, int count)
                {
                        if (count == 0)
                                return 0;
 
-                       int result = 0;
                        fixed (byte *b = array) {
                                IntPtr ptr = new IntPtr (b + offset);
-                               result = ReadZStream (z_stream, ptr, count);
+                               return native.ReadZStream (ptr, count);
                        }
-                       CheckResult (result, "ReadInternal");
-                       return result;
                }
 
                public override int Read (byte[] dest, int dest_offset, int count)
@@ -235,12 +149,10 @@ namespace System.IO.Compression {
                        if (count == 0)
                                return;
 
-                       int result = 0;
                        fixed (byte *b = array) {
                                IntPtr ptr = new IntPtr (b + offset);
-                               result = WriteZStream (z_stream, ptr, count);
+                               native.WriteZStream (ptr, count);
                        }
-                       CheckResult (result, "WriteInternal");
                }
 
                public override void Write (byte[] src, int src_offset, int count)
@@ -263,53 +175,13 @@ namespace System.IO.Compression {
                        WriteInternal (src, src_offset, count);
                }
 
-               static void CheckResult (int result, string where)
-               {
-                       if (result >= 0)
-                               return;
-
-                       string error;
-                       switch (result) {
-                       case -1: // Z_ERRNO
-                               error = "Unknown error"; // Marshal.GetLastWin32() ?
-                               break;
-                       case -2: // Z_STREAM_ERROR
-                               error = "Internal error";
-                               break;
-                       case -3: // Z_DATA_ERROR
-                               error = "Corrupted data";
-                               break;
-                       case -4: // Z_MEM_ERROR
-                               error = "Not enough memory";
-                               break;
-                       case -5: // Z_BUF_ERROR
-                               error = "Internal error (no progress possible)";
-                               break;
-                       case -6: // Z_VERSION_ERROR
-                               error = "Invalid version";
-                               break;
-                       case -10:
-                               error = "Invalid argument(s)";
-                               break;
-                       case -11:
-                               error = "IO error";
-                               break;
-                       default:
-                               error = "Unknown error";
-                               break;
-                       }
-
-                       throw new IOException (error + " " + where);
-               }
-
                public override void Flush ()
                {
                        if (disposed)
                                throw new ObjectDisposedException (GetType ().FullName);
 
                        if (CanWrite) {
-                               int result = Flush (z_stream);
-                               CheckResult (result, "Flush");
+                               native.Flush ();
                        }
                }
 
@@ -430,6 +302,188 @@ namespace System.IO.Compression {
                        get { throw new NotSupportedException(); }
                        set { throw new NotSupportedException(); }
                }
+       }
+
+       class DeflateStreamNative
+       {
+               const int BufferSize = 4096;
+
+               [UnmanagedFunctionPointer (CallingConvention.Cdecl)]
+               delegate int UnmanagedReadOrWrite (IntPtr buffer, int length, IntPtr data);
+
+               UnmanagedReadOrWrite feeder; // This will be passed to unmanaged code and used there
+
+               Stream base_stream;
+               IntPtr z_stream;
+               GCHandle data;
+               bool disposed;
+               byte [] io_buffer;
+
+               private DeflateStreamNative ()
+               {
+               }
+
+               public static DeflateStreamNative Create (Stream compressedStream, CompressionMode mode, bool gzip)
+               {
+                       var dsn = new DeflateStreamNative ();
+                       dsn.data = GCHandle.Alloc (dsn);
+                       dsn.feeder = mode == CompressionMode.Compress ? new UnmanagedReadOrWrite (UnmanagedWrite) : new UnmanagedReadOrWrite (UnmanagedRead);
+                       dsn.z_stream = CreateZStream (mode, gzip, dsn.feeder, GCHandle.ToIntPtr (dsn.data));
+                       if (dsn.z_stream == IntPtr.Zero) {
+                               dsn.Dispose (true);
+                               return null;
+                       }
+
+                       dsn.base_stream = compressedStream;
+                       return dsn;
+               }
+
+               ~DeflateStreamNative ()
+               {
+                       Dispose (false);
+               }
+
+               public void Dispose (bool disposing)
+               {
+                       if (disposing && !disposed) {
+                               disposed = true;
+                               GC.SuppressFinalize (this);
+                       
+                               io_buffer = null;
+                       
+                               IntPtr zz = z_stream;
+                               z_stream = IntPtr.Zero;
+                               if (zz != IntPtr.Zero)
+                                       CloseZStream (zz); // This will Flush() the remaining output if any
+                       }
+
+                       if (data.IsAllocated) {
+                               data.Free ();
+                       }
+               }
+
+               public void Flush ()
+               {
+                       var res = Flush (z_stream);
+                       CheckResult (res, "Flush");
+               }
+
+               public int ReadZStream (IntPtr buffer, int length)
+               {
+                       var res = ReadZStream (z_stream, buffer, length);
+                       CheckResult (res, "ReadInternal");
+                       return res;
+               }
+
+               public void WriteZStream (IntPtr buffer, int length)
+               {
+                       var res = WriteZStream (z_stream, buffer, length);
+                       CheckResult (res, "WriteInternal");
+               }
+
+#if MONOTOUCH
+               [MonoPInvokeCallback (typeof (UnmanagedReadOrWrite))]
+#endif
+               static int UnmanagedRead (IntPtr buffer, int length, IntPtr data)
+               {
+                       GCHandle s = GCHandle.FromIntPtr (data);
+                       var self = s.Target as DeflateStreamNative;
+                       if (self == null)
+                               return -1;
+                       return self.UnmanagedRead (buffer, length);
+               }
+
+               int UnmanagedRead (IntPtr buffer, int length)
+               {
+                       int total = 0;
+                       int n = 1;
+                       while (length > 0 && n > 0) {
+                               if (io_buffer == null)
+                                       io_buffer = new byte [BufferSize];
+
+                               int count = Math.Min (length, io_buffer.Length);
+                               n = base_stream.Read (io_buffer, 0, count);
+                               if (n > 0) {
+                                       Marshal.Copy (io_buffer, 0, buffer, n);
+                                       unsafe {
+                                               buffer = new IntPtr ((byte *) buffer.ToPointer () + n);
+                                       }
+                                       length -= n;
+                                       total += n;
+                               }
+                       }
+                       return total;
+               }
+
+#if MONOTOUCH
+               [MonoPInvokeCallback (typeof (UnmanagedReadOrWrite))]
+#endif
+               static int UnmanagedWrite (IntPtr buffer, int length, IntPtr data)
+               {
+                       GCHandle s = GCHandle.FromIntPtr (data);
+                       var self = s.Target as DeflateStreamNative;
+                       if (self == null)
+                               return -1;
+                       return self.UnmanagedWrite (buffer, length);
+               }
+
+               int UnmanagedWrite (IntPtr buffer, int length)
+               {
+                       int total = 0;
+                       while (length > 0) {
+                               if (io_buffer == null)
+                                       io_buffer = new byte [BufferSize];
+
+                               int count = Math.Min (length, io_buffer.Length);
+                               Marshal.Copy (buffer, io_buffer, 0, count);
+                               base_stream.Write (io_buffer, 0, count);
+                               unsafe {
+                                       buffer = new IntPtr ((byte *) buffer.ToPointer () + count);
+                               }
+                               length -= count;
+                               total += count;
+                       }
+                       return total;
+               }
+
+               static void CheckResult (int result, string where)
+               {
+                       if (result >= 0)
+                               return;
+
+                       string error;
+                       switch (result) {
+                       case -1: // Z_ERRNO
+                               error = "Unknown error"; // Marshal.GetLastWin32() ?
+                               break;
+                       case -2: // Z_STREAM_ERROR
+                               error = "Internal error";
+                               break;
+                       case -3: // Z_DATA_ERROR
+                               error = "Corrupted data";
+                               break;
+                       case -4: // Z_MEM_ERROR
+                               error = "Not enough memory";
+                               break;
+                       case -5: // Z_BUF_ERROR
+                               error = "Internal error (no progress possible)";
+                               break;
+                       case -6: // Z_VERSION_ERROR
+                               error = "Invalid version";
+                               break;
+                       case -10:
+                               error = "Invalid argument(s)";
+                               break;
+                       case -11:
+                               error = "IO error";
+                               break;
+                       default:
+                               error = "Unknown error";
+                               break;
+                       }
+
+                       throw new IOException (error + " " + where);
+               }
 
 #if MONOTOUCH || MONODROID
                const string LIBNAME = "__Internal";
index e3113f500f2d5d69df61018d08cd9dcfbaff3009..5b496e14ce55587de1c814557d30cfd9afce411c 100644 (file)
 //
 
 #if SECURITY_DEP
+
+#if MONOTOUCH
+using System.Security.Cryptography.X509Certificates;
+#else
 extern alias PrebuiltSystem;
+using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
+
 #endif
 
 using System;
@@ -49,10 +56,6 @@ using System.Configuration;
 using System.Net.Security;
 using System.Security.Authentication;
 
-#if SECURITY_DEP
-using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
-#endif
-
 namespace System.Net.Mail {
        public class SmtpClient
 #if NET_4_0
index c60954c949edbae9cba5756c031f8b9b79e4706a..de9754e951d0a812c3128a35c4cdcf5789991184 100644 (file)
@@ -2,8 +2,8 @@
 // System.Net.NetworkInformation.NetworkChange
 //
 // Authors:
-//     Gonzalo Paniagua Javier (gonzalo@novell.com)
-//  Aaron Bockover (abock@xamarin.com)
+//   Gonzalo Paniagua Javier (LinuxNetworkChange) (gonzalo@novell.com)
+//   Aaron Bockover (MacNetworkChange) (abock@xamarin.com)
 //
 // Copyright (c) 2006,2011 Novell, Inc. (http://www.novell.com)
 // Copyright (c) 2013 Xamarin, Inc. (http://www.xamarin.com)
 // distribute, sublicense, and/or sell copies of the Software, and to
 // permit persons to whom the Software is furnished to do so, subject to
 // the following conditions:
-// 
+//
 // The above copyright notice and this permission notice shall be
 // included in all copies or substantial portions of the Software.
-// 
+//
 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+using System;
 using System.Net.Sockets;
 using System.Runtime.InteropServices;
 using System.Threading;
 
+#if NETWORK_CHANGE_STANDALONE
+namespace NetworkInformation {
+
+       public class NetworkAvailabilityEventArgs : EventArgs
+       {
+               public bool IsAvailable { get; set; }
+
+               public NetworkAvailabilityEventArgs (bool available)
+               {
+                       IsAvailable = available;
+               }
+       }
+
+       public delegate void NetworkAddressChangedEventHandler (object sender, EventArgs args);
+       public delegate void NetworkAvailabilityChangedEventHandler (object sender, NetworkAvailabilityEventArgs args);
+#else
 namespace System.Net.NetworkInformation {
-       internal interface INetworkChange {
+#endif
+
+       internal interface INetworkChange : IDisposable {
                event NetworkAddressChangedEventHandler NetworkAddressChanged;
                event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged;
+               bool HasRegisteredEvents { get; }
        }
 
        public sealed class NetworkChange {
                static INetworkChange networkChange;
 
-               static NetworkChange ()
+               public static event NetworkAddressChangedEventHandler NetworkAddressChanged {
+                       add {
+                               lock (typeof (INetworkChange)) {
+                                       MaybeCreate ();
+                                       if (networkChange != null)
+                                               networkChange.NetworkAddressChanged += value;
+                               }
+                       }
+
+                       remove {
+                               lock (typeof (INetworkChange)) {
+                                       if (networkChange != null) {
+                                               networkChange.NetworkAddressChanged -= value;
+                                               MaybeDispose ();
+                                       }
+                               }
+                       }
+               }
+
+               public static event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
+                       add {
+                               lock (typeof (INetworkChange)) {
+                                       MaybeCreate ();
+                                       if (networkChange != null)
+                                               networkChange.NetworkAvailabilityChanged += value;
+                               }
+                       }
+
+                       remove {
+                               lock (typeof (INetworkChange)) {
+                                       if (networkChange != null) {
+                                               networkChange.NetworkAvailabilityChanged -= value;
+                                               MaybeDispose ();
+                                       }
+                               }
+                       }
+               }
+
+               static void MaybeCreate ()
                {
-                       if (MacNetworkChange.IsEnabled) {
+                       if (networkChange != null)
+                               return;
+
+                       try {
                                networkChange = new MacNetworkChange ();
-                       } else {
+                       } catch {
+#if !NETWORK_CHANGE_STANDALONE
                                networkChange = new LinuxNetworkChange ();
+#endif
                        }
                }
 
-               public static event NetworkAddressChangedEventHandler NetworkAddressChanged {
-                       add { networkChange.NetworkAddressChanged += value; }
-                       remove { networkChange.NetworkAddressChanged -= value; }
+               static void MaybeDispose ()
+               {
+                       if (networkChange != null && networkChange.HasRegisteredEvents) {
+                               networkChange.Dispose ();
+                               networkChange = null;
+                       }
                }
+       }
 
-               public static event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
-                       add { networkChange.NetworkAvailabilityChanged += value; }
-                       remove { networkChange.NetworkAvailabilityChanged -= value; }
+       internal sealed class MacNetworkChange : INetworkChange
+       {
+               const string DL_LIB = "/usr/lib/libSystem.dylib";
+               const string CORE_SERVICES_LIB = "/System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration";
+               const string CORE_FOUNDATION_LIB = "/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation";
+
+               [UnmanagedFunctionPointerAttribute (CallingConvention.Cdecl)]
+               delegate void SCNetworkReachabilityCallback (IntPtr target, NetworkReachabilityFlags flags, IntPtr info);
+
+               [DllImport (DL_LIB)]
+               static extern IntPtr dlopen (string path, int mode);
+
+               [DllImport (DL_LIB)]
+               static extern IntPtr dlsym (IntPtr handle, string symbol);
+
+               [DllImport (DL_LIB)]
+               static extern int dlclose (IntPtr handle);
+
+               [DllImport (CORE_FOUNDATION_LIB)]
+               static extern void CFRelease (IntPtr handle);
+
+               [DllImport (CORE_FOUNDATION_LIB)]
+               static extern IntPtr CFRunLoopGetMain ();
+
+               [DllImport (CORE_SERVICES_LIB)]
+               static extern IntPtr SCNetworkReachabilityCreateWithAddress (IntPtr allocator, ref sockaddr_in sockaddr);
+
+               [DllImport (CORE_SERVICES_LIB)]
+               static extern bool SCNetworkReachabilityGetFlags (IntPtr reachability, out NetworkReachabilityFlags flags);
+
+               [DllImport (CORE_SERVICES_LIB)]
+               static extern bool SCNetworkReachabilitySetCallback (IntPtr reachability, SCNetworkReachabilityCallback callback, ref SCNetworkReachabilityContext context);
+
+               [DllImport (CORE_SERVICES_LIB)]
+               static extern bool SCNetworkReachabilityScheduleWithRunLoop (IntPtr reachability, IntPtr runLoop, IntPtr runLoopMode);
+
+               [DllImport (CORE_SERVICES_LIB)]
+               static extern bool SCNetworkReachabilityUnscheduleFromRunLoop (IntPtr reachability, IntPtr runLoop, IntPtr runLoopMode);
+
+               [StructLayout (LayoutKind.Explicit, Size = 28)]
+               struct sockaddr_in {
+                       [FieldOffset (0)] public byte sin_len;
+                       [FieldOffset (1)] public byte sin_family;
+
+                       public static sockaddr_in Create ()
+                       {
+                               return new sockaddr_in {
+                                       sin_len = 28,
+                                       sin_family = 2 // AF_INET
+                               };
+                       }
                }
-       }
 
-       internal sealed class MacNetworkChange : INetworkChange {
-               public static bool IsEnabled {
-                       get { return mono_sc_reachability_enabled () != 0; }
+               [StructLayout (LayoutKind.Sequential)]
+               struct SCNetworkReachabilityContext {
+                       public IntPtr version;
+                       public IntPtr info;
+                       public IntPtr retain;
+                       public IntPtr release;
+                       public IntPtr copyDescription;
+               }
+
+               [Flags]
+               enum NetworkReachabilityFlags {
+                       None = 0,
+                       TransientConnection = 1 << 0,
+                       Reachable = 1 << 1,
+                       ConnectionRequired = 1 << 2,
+                       ConnectionOnTraffic = 1 << 3,
+                       InterventionRequired = 1 << 4,
+                       ConnectionOnDemand = 1 << 5,
+                       IsLocalAddress = 1 << 16,
+                       IsDirect = 1 << 17,
+                       IsWWAN = 1 << 18,
+                       ConnectionAutomatic = ConnectionOnTraffic
                }
 
+               IntPtr handle;
+               IntPtr runLoopMode;
+               SCNetworkReachabilityCallback callback;
+               bool scheduledWithRunLoop;
+               NetworkReachabilityFlags flags;
+
                event NetworkAddressChangedEventHandler networkAddressChanged;
                event NetworkAvailabilityChangedEventHandler networkAvailabilityChanged;
 
                public event NetworkAddressChangedEventHandler NetworkAddressChanged {
                        add {
-                               if (value != null) {
-                                       MaybeInitialize ();
-                                       networkAddressChanged += value;
-                                       value (null, EventArgs.Empty);
-                               }
+                               value (null, EventArgs.Empty);
+                               networkAddressChanged += value;
                        }
 
-                       remove {
-                               networkAddressChanged -= value;
-                               MaybeDispose ();
-                       }
+                       remove { networkAddressChanged -= value; }
                }
 
                public event NetworkAvailabilityChangedEventHandler NetworkAvailabilityChanged {
                        add {
-                               if (value != null) {
-                                       MaybeInitialize ();
-                                       networkAvailabilityChanged += value;
-                                       var available = handle != IntPtr.Zero && mono_sc_reachability_is_available (handle) != 0;
-                                       value (null, new NetworkAvailabilityEventArgs (available));
-                               }
+                               value (null, new NetworkAvailabilityEventArgs (IsAvailable));
+                               networkAvailabilityChanged += value;
                        }
 
-                       remove {
-                               networkAvailabilityChanged -= value;
-                               MaybeDispose ();
+                       remove { networkAvailabilityChanged -= value; }
+               }
+
+               bool IsAvailable {
+                       get {
+                               return (flags & NetworkReachabilityFlags.Reachable) != 0 &&
+                                       (flags & NetworkReachabilityFlags.ConnectionRequired) == 0;
                        }
                }
 
-               IntPtr handle;
-               MonoSCReachabilityCallback callback;
+               public bool HasRegisteredEvents {
+                       get { return networkAddressChanged != null || networkAvailabilityChanged != null; }
+               }
 
-               void Callback (int available)
+               public MacNetworkChange ()
                {
-                       var addressChanged = networkAddressChanged;
-                       if (addressChanged != null) {
-                               addressChanged (null, EventArgs.Empty);
-                       }
+                       var sockaddr = sockaddr_in.Create ();
+                       handle = SCNetworkReachabilityCreateWithAddress (IntPtr.Zero, ref sockaddr);
+                       if (handle == IntPtr.Zero)
+                               throw new Exception ("SCNetworkReachabilityCreateWithAddress returned NULL");
 
-                       var availabilityChanged = networkAvailabilityChanged;
-                       if (availabilityChanged != null) {
-                               availabilityChanged (null, new NetworkAvailabilityEventArgs (available != 0));
-                       }
+                       callback = new SCNetworkReachabilityCallback (HandleCallback);
+                       var info = new SCNetworkReachabilityContext {
+                               info = GCHandle.ToIntPtr (GCHandle.Alloc (this))
+                       };
+
+                       SCNetworkReachabilitySetCallback (handle, callback, ref info);
+
+                       scheduledWithRunLoop =
+                       LoadRunLoopMode () &&
+                               SCNetworkReachabilityScheduleWithRunLoop (handle, CFRunLoopGetMain (), runLoopMode);
+
+                       SCNetworkReachabilityGetFlags (handle, out flags);
                }
 
-               void MaybeInitialize ()
+               bool LoadRunLoopMode ()
                {
-                       lock (this) {
-                               if (handle == IntPtr.Zero) {
-                                       callback = new MonoSCReachabilityCallback (Callback);
-                                       handle = mono_sc_reachability_new (callback);
+                       var cfLibHandle = dlopen (CORE_FOUNDATION_LIB, 0);
+                       if (cfLibHandle == IntPtr.Zero)
+                               return false;
+
+                       try {
+                               runLoopMode = dlsym (cfLibHandle, "kCFRunLoopDefaultMode");
+                               if (runLoopMode != IntPtr.Zero) {
+                                       runLoopMode = Marshal.ReadIntPtr (runLoopMode);
+                                       return runLoopMode != IntPtr.Zero;
                                }
+                       } finally {
+                               dlclose (cfLibHandle);
                        }
+
+                       return false;
                }
 
-               void MaybeDispose ()
+               public void Dispose ()
                {
                        lock (this) {
-                               var addressChanged = networkAddressChanged;
-                               var availabilityChanged = networkAvailabilityChanged;
-                               if (handle != IntPtr.Zero && addressChanged == null && availabilityChanged == null) {
-                                       mono_sc_reachability_free (handle);
-                                       handle = IntPtr.Zero;
-                               }
+                               if (handle == IntPtr.Zero)
+                                       return;
+
+                               if (scheduledWithRunLoop)
+                                       SCNetworkReachabilityUnscheduleFromRunLoop (handle, CFRunLoopGetMain (), runLoopMode);
+
+                               CFRelease (handle);
+                               handle = IntPtr.Zero;
+                               callback = null;
+                               flags = NetworkReachabilityFlags.None;
+                               scheduledWithRunLoop = false;
                        }
                }
 
-#if MONOTOUCH || MONODROID
-               const string LIBNAME = "__Internal";
-#else
-               const string LIBNAME = "MonoPosixHelper";
+#if MONOTOUCH
+               [MonoTouch.MonoPInvokeCallback (typeof (SCNetworkReachabilityCallback))]
 #endif
+               static void HandleCallback (IntPtr reachability, NetworkReachabilityFlags flags, IntPtr info)
+               {
+                       if (info == IntPtr.Zero)
+                               return;
 
-               delegate void MonoSCReachabilityCallback (int available);
-
-               [DllImport (LIBNAME)]
-               static extern int mono_sc_reachability_enabled ();
+                       var instance = GCHandle.FromIntPtr (info).Target as MacNetworkChange;
+                       if (instance == null || instance.flags == flags)
+                               return;
 
-               [DllImport (LIBNAME)]
-               static extern IntPtr mono_sc_reachability_new (MonoSCReachabilityCallback callback);
+                       instance.flags = flags;
 
-               [DllImport (LIBNAME)]
-               static extern void mono_sc_reachability_free (IntPtr handle);
+                       var addressChanged = instance.networkAddressChanged;
+                       if (addressChanged != null)
+                               addressChanged (null, EventArgs.Empty);
 
-               [DllImport (LIBNAME)]
-               static extern int mono_sc_reachability_is_available (IntPtr handle);
+                       var availabilityChanged = instance.networkAvailabilityChanged;
+                       if (availabilityChanged != null)
+                               availabilityChanged (null, new NetworkAvailabilityEventArgs (instance.IsAvailable));
+               }
        }
 
+#if !NETWORK_CHANGE_STANDALONE
+
        internal sealed class LinuxNetworkChange : INetworkChange {
                [Flags]
                enum EventType {
@@ -185,6 +346,14 @@ namespace System.Net.NetworkInformation {
                        remove { Unregister (value); }
                }
 
+               public bool HasRegisteredEvents {
+                       get { return AddressChanged != null || AvailabilityChanged != null; }
+               }
+
+               public void Dispose ()
+               {
+               }
+
                //internal Socket (AddressFamily family, SocketType type, ProtocolType proto, IntPtr sock)
 
                bool EnsureSocket ()
@@ -321,5 +490,7 @@ namespace System.Net.NetworkInformation {
                [DllImport (LIBNAME, CallingConvention=CallingConvention.Cdecl)]
                static extern IntPtr CloseNLSocket (IntPtr sock);
        }
-}
 
+#endif
+
+}
index 0597a165f084b82c262eab6def22a252f5045831..880b909fad16b0a93e3bc827676254f38cdc2a33 100644 (file)
@@ -41,15 +41,21 @@ using System.Globalization;
 
 namespace System.Net.NetworkInformation {
        public abstract class NetworkInterface {
+#if MONOTOUCH
+               internal const bool runningOnUnix = true;
+#else
                static Version windowsVer51 = new Version (5, 1);
                static internal readonly bool runningOnUnix = (Environment.OSVersion.Platform == PlatformID.Unix);
-               
+#endif 
                protected NetworkInterface ()
                {
                }
 
                public static NetworkInterface [] GetAllNetworkInterfaces ()
                {
+#if MONOTOUCH
+                       return MacOsNetworkInterface.ImplGetAllNetworkInterfaces ();
+#else
                        if (runningOnUnix) {
                                try {
                                        if (Platform.IsMacOS)
@@ -66,6 +72,7 @@ namespace System.Net.NetworkInformation {
                                        return Win32NetworkInterface2.ImplGetAllNetworkInterfaces ();
                                return new NetworkInterface [0];
                        }
+#endif
                }
 
                [MonoTODO("Always returns true")]
index a10abf90489f7519d6a4630dc261c015dfe8517d..0cbf96fda2f404cfe61dfc0c125abc5dbe4077dd 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+#else
 extern alias PrebuiltSystem;
-
 using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
+#endif
 
 using System.Security.Cryptography.X509Certificates;
 
index 0ea27f465281db75b0d12f30ecf9e57a9955edfc..331d4cb8045f275f588859fd6cb08e9a1ad66516 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Tls;
+
+using CipherAlgorithmType = System.Security.Authentication.CipherAlgorithmType;
+using HashAlgorithmType = System.Security.Authentication.HashAlgorithmType;
+using ExchangeAlgorithmType = System.Security.Authentication.ExchangeAlgorithmType;
+
+using MonoCipherAlgorithmType = Mono.Security.Protocol.Tls.CipherAlgorithmType;
+using MonoHashAlgorithmType = Mono.Security.Protocol.Tls.HashAlgorithmType;
+using MonoExchangeAlgorithmType = Mono.Security.Protocol.Tls.ExchangeAlgorithmType;
+using MonoSecurityProtocolType = Mono.Security.Protocol.Tls.SecurityProtocolType;
+#else
 extern alias PrebuiltSystem;
 extern alias MonoSecurity;
 
 using X509CertificateCollection = PrebuiltSystem::System.Security.Cryptography.X509Certificates.X509CertificateCollection;
 
-using System;
-using System.IO;
-using System.Net;
-using System.Security.Authentication;
-using System.Security.Cryptography.X509Certificates;
-using System.Security.Principal;
-using System.Security.Cryptography;
-using MonoSecurity::Mono.Security.Protocol.Tls;
-
 using CipherAlgorithmType = System.Security.Authentication.CipherAlgorithmType;
 using HashAlgorithmType = System.Security.Authentication.HashAlgorithmType;
 using ExchangeAlgorithmType = System.Security.Authentication.ExchangeAlgorithmType;
@@ -57,6 +60,17 @@ using MonoHashAlgorithmType = MonoSecurity::Mono.Security.Protocol.Tls.HashAlgor
 using MonoExchangeAlgorithmType = MonoSecurity::Mono.Security.Protocol.Tls.ExchangeAlgorithmType;
 using MonoSecurityProtocolType = MonoSecurity::Mono.Security.Protocol.Tls.SecurityProtocolType;
 
+using MonoSecurity::Mono.Security.Protocol.Tls;
+#endif
+
+using System;
+using System.IO;
+using System.Net;
+using System.Security.Authentication;
+using System.Security.Cryptography.X509Certificates;
+using System.Security.Principal;
+using System.Security.Cryptography;
+
 #if NET_4_5
 using System.Threading.Tasks;
 #endif
@@ -353,7 +367,12 @@ namespace System.Net.Security
                                return null;
                        };
 
-                       if (validation_callback != null)
+                       if (validation_callback != null) {
+#if MONOTOUCH
+                               var helper = new ServicePointManager.ChainValidationHelper (this, targetHost);
+                               helper.ServerCertificateValidationCallback = validation_callback;
+                               s.ServerCertValidation2 += new CertificateValidationCallback2 (helper.ValidateChain);
+#else
                                s.ServerCertValidationDelegate = delegate (X509Certificate cert, int [] certErrors) {
                                        X509Chain chain = new X509Chain ();
                                        X509Certificate2 x2 = (cert as X509Certificate2);
@@ -393,6 +412,8 @@ namespace System.Net.Security
 
                                        return validation_callback (this, cert, chain, errors);
                                };
+#endif
+                       }
                        if (selection_callback != null)
                                s.ClientCertSelectionDelegate = OnCertificateSelection;
 
index 05b1ff31f54e49d09bb893fcd86a6f893e35eb58..11a7eda8a45ee9b9ae8631201dcf2a76a9313f9a 100644 (file)
@@ -752,16 +752,33 @@ namespace System.Net.Sockets {
                        }
 
                        if (ipv6Supported == -1) {
+                               // We need to put a try/catch around ConfigurationManager methods as will always throw an exception 
+                               // when run in a mono embedded application.  This occurs as embedded applications do not have a setup
+                               // for application config.  The exception is not thrown when called from a normal .NET application. 
+                               //
+                               // We, then, need to guard calls to the ConfigurationManager.  If the config is not found or throws an
+                               // exception, will fall through to the existing Socket / API directly below in the code.
+                               //
+                               // Also note that catching ConfigurationErrorsException specifically would require library dependency
+                               // System.Configuration, and wanted to avoid that.
 #if !NET_2_1
 #if CONFIGURATION_DEP
-                               SettingsSection config;
-                               config = (SettingsSection) System.Configuration.ConfigurationManager.GetSection ("system.net/settings");
-                               if (config != null)
-                                       ipv6Supported = config.Ipv6.Enabled ? -1 : 0;
+                               try {
+                                       SettingsSection config;
+                                       config = (SettingsSection) System.Configuration.ConfigurationManager.GetSection ("system.net/settings");
+                                       if (config != null)
+                                               ipv6Supported = config.Ipv6.Enabled ? -1 : 0;
+                               } catch {
+                                       ipv6Supported = -1;
+                               }
 #else
-                               NetConfig config = System.Configuration.ConfigurationSettings.GetConfig("system.net/settings") as NetConfig;
-                               if (config != null)
-                                       ipv6Supported = config.ipv6Enabled ? -1 : 0;
+                               try {
+                                       NetConfig config = System.Configuration.ConfigurationSettings.GetConfig("system.net/settings") as NetConfig;
+                                       if (config != null)
+                                               ipv6Supported = config.ipv6Enabled ? -1 : 0;
+                               } catch {
+                                       ipv6Supported = -1;
+                               }
 #endif
 #endif
                                if (ipv6Supported != 0) {
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3778c740538ffde77005774f0408e68a27f87b69 100644 (file)
@@ -0,0 +1,355 @@
+//
+// ClientWebSocket.cs
+//
+// Authors:
+//       Jérémie Laval <jeremie dot laval at xamarin dot com>
+//
+// Copyright 2013 Xamarin Inc (http://www.xamarin.com).
+//
+// Lightly inspired from WebSocket4Net distributed under the Apache License 2.0
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+#if NET_4_5
+
+using System;
+using System.Net;
+using System.Net.Sockets;
+using System.Security.Principal;
+using System.Security.Cryptography.X509Certificates;
+using System.Runtime.CompilerServices;
+using System.Collections.Generic;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Globalization;
+using System.Text;
+using System.Security.Cryptography;
+
+namespace System.Net.WebSockets
+{
+       public class ClientWebSocket : WebSocket, IDisposable
+       {
+               const string Magic = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
+               const string VersionTag = "13";
+
+               ClientWebSocketOptions options;
+               WebSocketState state;
+               string subProtocol;
+
+               HttpWebRequest req;
+               WebConnection connection;
+               Socket underlyingSocket;
+
+               Random random = new Random ();
+
+               const int HeaderMaxLength = 14;
+               byte[] headerBuffer;
+               byte[] sendBuffer;
+
+               public ClientWebSocket ()
+               {
+                       options = new ClientWebSocketOptions ();
+                       state = WebSocketState.None;
+                       headerBuffer = new byte[HeaderMaxLength];
+               }
+
+               public override void Dispose ()
+               {
+                       if (connection != null)
+                               connection.Close (false);
+               }
+
+               [MonoTODO]
+               public override void Abort ()
+               {
+                       throw new NotImplementedException ();
+               }
+
+               public ClientWebSocketOptions Options {
+                       get {
+                               return options;
+                       }
+               }
+
+               public override WebSocketState State {
+                       get {
+                               return state;
+                       }
+               }
+
+               public override WebSocketCloseStatus? CloseStatus {
+                       get {
+                               if (state != WebSocketState.Closed)
+                                       return (WebSocketCloseStatus?)null;
+                               return WebSocketCloseStatus.Empty;
+                       }
+               }
+
+               public override string CloseStatusDescription {
+                       get {
+                               return null;
+                       }
+               }
+
+               public override string SubProtocol {
+                       get {
+                               return subProtocol;
+                       }
+               }
+
+               public async Task ConnectAsync (Uri uri, CancellationToken cancellationToken)
+               {
+                       state = WebSocketState.Connecting;
+                       var httpUri = new UriBuilder (uri);
+                       if (uri.Scheme == "wss")
+                               httpUri.Scheme = "https";
+                       else
+                               httpUri.Scheme = "http";
+                       req = (HttpWebRequest)WebRequest.Create (httpUri.Uri);
+                       req.ReuseConnection = true;
+                       if (options.Cookies != null)
+                               req.CookieContainer = options.Cookies;
+
+                       if (options.CustomRequestHeaders.Count > 0) {
+                               foreach (var header in options.CustomRequestHeaders)
+                                       req.Headers[header.Key] = header.Value;
+                       }
+
+                       var secKey = Convert.ToBase64String (Encoding.ASCII.GetBytes (Guid.NewGuid ().ToString ().Substring (0, 16)));
+                       string expectedAccept = Convert.ToBase64String (SHA1.Create ().ComputeHash (Encoding.ASCII.GetBytes (secKey + Magic)));
+
+                       req.Headers["Upgrade"] = "WebSocket";
+                       req.Headers["Sec-WebSocket-Version"] = VersionTag;
+                       req.Headers["Sec-WebSocket-Key"] = secKey;
+                       req.Headers["Sec-WebSocket-Origin"] = uri.Host;
+                       if (options.SubProtocols.Count > 0)
+                               req.Headers["Sec-WebSocket-Protocol"] = string.Join (",", options.SubProtocols);
+
+                       if (options.Credentials != null)
+                               req.Credentials = options.Credentials;
+                       if (options.ClientCertificates != null)
+                               req.ClientCertificates = options.ClientCertificates;
+                       if (options.Proxy != null)
+                               req.Proxy = options.Proxy;
+                       req.UseDefaultCredentials = options.UseDefaultCredentials;
+                       req.Connection = "Upgrade";
+
+                       HttpWebResponse resp = null;
+                       try {
+                               resp = (HttpWebResponse)(await req.GetResponseAsync ().ConfigureAwait (false));
+                       } catch (Exception e) {
+                               throw new WebSocketException (WebSocketError.Success, e);
+                       }
+
+                       connection = req.StoredConnection;
+                       underlyingSocket = connection.socket;
+
+                       if (resp.StatusCode != HttpStatusCode.SwitchingProtocols)
+                               throw new WebSocketException ("The server returned status code '" + (int)resp.StatusCode + "' when status code '101' was expected");
+                       if (!string.Equals (resp.Headers["Upgrade"], "WebSocket", StringComparison.OrdinalIgnoreCase)
+                               || !string.Equals (resp.Headers["Connection"], "Upgrade", StringComparison.OrdinalIgnoreCase)
+                               || !string.Equals (resp.Headers["Sec-WebSocket-Accept"], expectedAccept))
+                               throw new WebSocketException ("HTTP header error during handshake");
+                       if (resp.Headers["Sec-WebSocket-Protocol"] != null) {
+                               if (!options.SubProtocols.Contains (resp.Headers["Sec-WebSocket-Protocol"]))
+                                       throw new WebSocketException (WebSocketError.UnsupportedProtocol);
+                               subProtocol = resp.Headers["Sec-WebSocket-Protocol"];
+                       }
+
+                       state = WebSocketState.Open;
+               }
+
+               public override Task SendAsync (ArraySegment<byte> buffer, WebSocketMessageType messageType, bool endOfMessage, CancellationToken cancellationToken)
+               {
+                       EnsureWebSocketConnected ();
+                       ValidateArraySegment (buffer);
+                       if (connection == null)
+                               throw new WebSocketException (WebSocketError.Faulted);
+                       var count = Math.Max (options.SendBufferSize, buffer.Count) + HeaderMaxLength;
+                       if (sendBuffer == null || sendBuffer.Length != count)
+                               sendBuffer = new byte[count];
+                       return Task.Run (() => {
+                               EnsureWebSocketState (WebSocketState.Open, WebSocketState.CloseReceived);
+                               var maskOffset = WriteHeader (messageType, buffer, endOfMessage);
+
+                               if (buffer.Count > 0)
+                                       MaskData (buffer, maskOffset);
+                               //underlyingSocket.Send (headerBuffer, 0, maskOffset + 4, SocketFlags.None);
+                               var headerLength = maskOffset + 4;
+                               Array.Copy (headerBuffer, sendBuffer, headerLength);
+                               underlyingSocket.Send (sendBuffer, 0, buffer.Count + headerLength, SocketFlags.None);
+                       });
+               }
+
+               public override Task<WebSocketReceiveResult> ReceiveAsync (ArraySegment<byte> buffer, CancellationToken cancellationToken)
+               {
+                       EnsureWebSocketConnected ();
+                       ValidateArraySegment (buffer);
+                       return Task.Run (() => {
+                               EnsureWebSocketState (WebSocketState.Open, WebSocketState.CloseSent);
+                               // First read the two first bytes to know what we are doing next
+                               connection.Read (req, headerBuffer, 0, 2);
+                               var isLast = (headerBuffer[0] >> 7) > 0;
+                               var isMasked = (headerBuffer[1] >> 7) > 0;
+                               int mask = 0;
+                               var type = (WebSocketMessageType)(headerBuffer[0] & 0xF);
+                               long length = headerBuffer[1] & 0x7F;
+                               int offset = 0;
+                               if (length == 126) {
+                                       offset = 2;
+                                       connection.Read (req, headerBuffer, 2, offset);
+                                       length = (headerBuffer[2] << 8) | headerBuffer[3];
+                               } else if (length == 127) {
+                                       offset = 8;
+                                       connection.Read (req, headerBuffer, 2, offset);
+                                       length = 0;
+                                       for (int i = 2; i <= 9; i++)
+                                               length = (length << 8) | headerBuffer[i];
+                               }
+
+                               if (isMasked) {
+                                       connection.Read (req, headerBuffer, 2 + offset, 4);
+                                       for (int i = 0; i < 4; i++) {
+                                               var pos = i + offset + 2;
+                                               mask = (mask << 8) | headerBuffer[pos];
+                                       }
+                               }
+
+                               if (type == WebSocketMessageType.Close) {
+                                       state = WebSocketState.Closed;
+                                       var tmpBuffer = new byte[length];
+                                       connection.Read (req, tmpBuffer, 0, tmpBuffer.Length);
+                                       var closeStatus = (WebSocketCloseStatus)(tmpBuffer[0] << 8 | tmpBuffer[1]);
+                                       var closeDesc = tmpBuffer.Length > 2 ? Encoding.UTF8.GetString (tmpBuffer, 2, tmpBuffer.Length - 2) : string.Empty;
+                                       return new WebSocketReceiveResult ((int)length, type, isLast, closeStatus, closeDesc);
+                               } else {
+                                       var readLength = (int)(buffer.Count < length ? buffer.Count : length);
+                                       connection.Read (req, buffer.Array, buffer.Offset, readLength);
+
+                                       return new WebSocketReceiveResult ((int)length, type, isLast);
+                               }
+                       });
+               }
+
+               // The damn difference between those two methods is that CloseAsync will wait for server acknowledgement before completing
+               // while CloseOutputAsync will send the close packet and simply complete.
+
+               public async override Task CloseAsync (WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken)
+               {
+                       EnsureWebSocketConnected ();
+                       await SendCloseFrame (closeStatus, statusDescription, cancellationToken).ConfigureAwait (false);
+                       state = WebSocketState.CloseSent;
+                       // TODO: figure what's exceptions are thrown if the server returns something faulty here
+                       await ReceiveAsync (new ArraySegment<byte> (new byte[0]), cancellationToken).ConfigureAwait (false);
+                       state = WebSocketState.Closed;
+               }
+
+               public async override Task CloseOutputAsync (WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken)
+               {
+                       EnsureWebSocketConnected ();
+                       await SendCloseFrame (closeStatus, statusDescription, cancellationToken).ConfigureAwait (false);
+                       state = WebSocketState.CloseSent;
+               }
+
+               async Task SendCloseFrame (WebSocketCloseStatus closeStatus, string statusDescription, CancellationToken cancellationToken)
+               {
+                       var statusDescBuffer = string.IsNullOrEmpty (statusDescription) ? new byte[2] : new byte[2 + Encoding.UTF8.GetByteCount (statusDescription)];
+                       statusDescBuffer[0] = (byte)(((ushort)closeStatus) >> 8);
+                       statusDescBuffer[1] = (byte)(((ushort)closeStatus) & 0xFF);
+                       if (!string.IsNullOrEmpty (statusDescription))
+                               Encoding.UTF8.GetBytes (statusDescription, 0, statusDescription.Length, statusDescBuffer, 2);
+                       await SendAsync (new ArraySegment<byte> (statusDescBuffer), WebSocketMessageType.Close, true, cancellationToken).ConfigureAwait (false);
+               }
+
+               int WriteHeader (WebSocketMessageType type, ArraySegment<byte> buffer, bool endOfMessage)
+               {
+                       var opCode = (byte)type;
+                       var length = buffer.Count;
+
+                       headerBuffer[0] = (byte)(opCode | (endOfMessage ? 0 : 0x80));
+                       if (length < 126) {
+                               headerBuffer[1] = (byte)length;
+                       } else if (length <= ushort.MaxValue) {
+                               headerBuffer[1] = (byte)126;
+                               headerBuffer[2] = (byte)(length / 256);
+                               headerBuffer[3] = (byte)(length % 256);
+                       } else {
+                               headerBuffer[1] = (byte)127;
+
+                               int left = length;
+                               int unit = 256;
+
+                               for (int i = 9; i > 1; i--) {
+                                       headerBuffer[i] = (byte)(left % unit);
+                                       left = left / unit;
+                               }
+                       }
+
+                       var l = Math.Max (0, headerBuffer[1] - 125);
+                       var maskOffset = 2 + l * l * 2;
+                       GenerateMask (headerBuffer, maskOffset);
+
+                       // Since we are client only, we always mask the payload
+                       headerBuffer[1] |= 0x80;
+
+                       return maskOffset;
+               }
+
+               void GenerateMask (byte[] mask, int offset)
+               {
+                       mask[offset + 0] = (byte)random.Next (0, 255);
+                       mask[offset + 1] = (byte)random.Next (0, 255);
+                       mask[offset + 2] = (byte)random.Next (0, 255);
+                       mask[offset + 3] = (byte)random.Next (0, 255);
+               }
+
+               void MaskData (ArraySegment<byte> buffer, int maskOffset)
+               {
+                       var sendBufferOffset = maskOffset + 4;
+                       for (var i = 0; i < buffer.Count; i++)
+                               sendBuffer[i + sendBufferOffset] = (byte)(buffer.Array[buffer.Offset + i] ^ headerBuffer[maskOffset + (i % 4)]);
+               }
+
+               void EnsureWebSocketConnected ()
+               {
+                       if (state < WebSocketState.Open)
+                               throw new InvalidOperationException ("The WebSocket is not connected");
+               }
+
+               void EnsureWebSocketState (params WebSocketState[] validStates)
+               {
+                       foreach (var validState in validStates)
+                               if (state == validState)
+                                       return;
+                       throw new WebSocketException ("The WebSocket is in an invalid state ('" + state + "') for this operation. Valid states are: " + string.Join (", ", validStates));
+               }
+
+               void ValidateArraySegment (ArraySegment<byte> segment)
+               {
+                       if (segment.Array == null)
+                               throw new ArgumentNullException ("buffer.Array");
+                       if (segment.Offset < 0)
+                               throw new ArgumentOutOfRangeException ("buffer.Offset");
+                       if (segment.Offset + segment.Count > segment.Array.Length)
+                               throw new ArgumentOutOfRangeException ("buffer.Count");
+               }
+       }
+}
+
+#endif
index a1d617cbadb88a109acdae79b3a8b612cadbaf3e..586752d7f67563c0dc17bc602d395b586c86191b 100644 (file)
@@ -33,11 +33,15 @@ using System.Net;
 using System.Security.Principal;
 using System.Security.Cryptography.X509Certificates;
 using System.Runtime.CompilerServices;
+using System.Collections.Generic;
 
 namespace System.Net.WebSockets
 {
        public sealed class ClientWebSocketOptions
        {
+               List<string> subprotocols = new List<string> ();
+               Dictionary<string, string> customRequestHeaders = new Dictionary<string, string> ();
+
                public X509CertificateCollection ClientCertificates { get; set; }
 
                public CookieContainer Cookies { get; set; }
@@ -50,28 +54,53 @@ namespace System.Net.WebSockets
 
                public bool UseDefaultCredentials { get; set; }
 
-               [MonoTODO]
+               internal IList<string> SubProtocols {
+                       get {
+                               return subprotocols.AsReadOnly ();
+                       }
+               }
+
+               internal Dictionary<string, string> CustomRequestHeaders {
+                       get {
+                               return customRequestHeaders;
+                       }
+               }
+
+               internal int ReceiveBufferSize {
+                       get;
+                       private set;
+               }
+
+               internal ArraySegment<byte> CustomReceiveBuffer {
+                       get;
+                       private set;
+               }
+
+               internal int SendBufferSize {
+                       get;
+                       private set;
+               }
+
                public void AddSubProtocol (string subProtocol)
                {
-                       throw new NotImplementedException ();
+                       subprotocols.Add (subProtocol);
                }
 
-               [MonoTODO]
                public void SetBuffer (int receiveBufferSize, int sendBufferSize)
                {
-                       throw new NotImplementedException ();
+                       SetBuffer (receiveBufferSize, sendBufferSize, new ArraySegment<byte> ());
                }
 
-               [MonoTODO]
                public void SetBuffer (int receiveBufferSize, int sendBufferSize, ArraySegment<byte> buffer)
                {
-                       throw new NotImplementedException ();
+                       ReceiveBufferSize = receiveBufferSize;
+                       SendBufferSize = sendBufferSize;
+                       CustomReceiveBuffer = buffer;
                }
 
-               [MonoTODO]
                public void SetRequestHeader (string headerName, string headerValue)
                {
-                       throw new NotImplementedException ();
+                       customRequestHeaders[headerName] = headerValue;
                }
        }
 }
index b4980174f6bb7c72c7fa9e251b6ad2dc3ed5ebad..e617ab38b0bfee190e81ed48bcf55f03d3d5f2fa 100644 (file)
@@ -36,72 +36,68 @@ namespace System.Net.WebSockets
 {
        public sealed class WebSocketException : Win32Exception
        {
-               public WebSocketException ()
+               const string DefaultMessage = "Generic WebSocket exception";
+
+               public WebSocketException () : this (WebSocketError.Success, -1, DefaultMessage, null)
                {
                        
                }
 
-               public WebSocketException (int nativeError) : base (nativeError)
+               public WebSocketException (int nativeError) : this (WebSocketError.Success, nativeError, DefaultMessage, null)
                {
                        
                }
 
-               public WebSocketException (string message) : base (message)
+               public WebSocketException (string message) : this (WebSocketError.Success, -1, message, null)
                {
                        
                }
 
-               public WebSocketException (WebSocketError error)
+               public WebSocketException (WebSocketError error) : this (error, -1, DefaultMessage, null)
                {
-                       WebSocketErrorCode = error;
                }
 
-               public WebSocketException (int nativeError, Exception innerException)
+               public WebSocketException (int nativeError, Exception innerException) : this (WebSocketError.Success, nativeError, DefaultMessage, innerException)
                {
                        
                }
 
-               public WebSocketException (int nativeError, string message) : base (nativeError, message)
+               public WebSocketException (int nativeError, string message) : this (WebSocketError.Success, nativeError, message, null)
                {
                        
                }
 
-               public WebSocketException (string message, Exception innerException) : base (message, innerException)
+               public WebSocketException (string message, Exception innerException) : this (WebSocketError.Success, -1, message, innerException)
                {
                        
                }
 
-               public WebSocketException (WebSocketError error, Exception innerException)
+               public WebSocketException (WebSocketError error, Exception innerException) : this (error, -1, DefaultMessage, innerException)
                {
-                       WebSocketErrorCode = error;
+
                }
 
-               public WebSocketException (WebSocketError error, int nativeError) : base (nativeError)
+               public WebSocketException (WebSocketError error, int nativeError) : this (error, nativeError, DefaultMessage, null)
                {
-                       WebSocketErrorCode = error;
                }
 
-               public WebSocketException (WebSocketError error, string message) : base (message)
+               public WebSocketException (WebSocketError error, string message) : this (error, -1, message, null)
                {
-                       WebSocketErrorCode = error;
                }
 
-               public WebSocketException (WebSocketError error, int nativeError, Exception innerException) : base (nativeError)
+               public WebSocketException (WebSocketError error, int nativeError, Exception innerException) : this (error, nativeError, DefaultMessage, innerException)
                {
-                       WebSocketErrorCode = error;
                }
 
-               public WebSocketException (WebSocketError error, int nativeError, string message) : base (nativeError, message)
+               public WebSocketException (WebSocketError error, int nativeError, string message) : this (error, nativeError, message, null)
                {
-                       WebSocketErrorCode = error;
                }
 
-               public WebSocketException (WebSocketError error, string message, Exception innerException)
+               public WebSocketException (WebSocketError error, string message, Exception innerException) : this (error, -1, message, innerException)
                {
-                       WebSocketErrorCode = error;
                }
 
-               public WebSocketException (WebSocketError error, int nativeError, string message, Exception innerException) : base (nativeError, message)
+               public WebSocketException (WebSocketError error, int nativeError, string message, Exception innerException) : base (message, innerException)
                {
                        WebSocketErrorCode = error;
                }
index 18e2d9ecbe8d4dd84741dec1b780b9e24e931a89..50cbc003c0f7c254cdcf1506a723ba8530542c91 100644 (file)
@@ -35,9 +35,9 @@ namespace System.Net.WebSockets
 {
        public enum WebSocketMessageType
        {
-               Text,
-               Binary,
-               Close
+               Text = 1,
+               Binary = 2,
+               Close = 8
        }
 }
 
index e237344e46687ba099b656681b8bb80aaa02dc6f..af97ebcdca92cc21acb5e75fa1b663fc39ebb658 100644 (file)
@@ -36,20 +36,22 @@ namespace System.Net.WebSockets
 {
        public class WebSocketReceiveResult
        {
-               [MonoTODO]
                public WebSocketReceiveResult (int count, WebSocketMessageType messageType, bool endOfMessage)
+                    : this (count, messageType, endOfMessage, null, null)
                {
-                       throw new NotImplementedException ();
                }
 
-               [MonoTODO]
                public WebSocketReceiveResult (int count,
                                               WebSocketMessageType messageType,
                                               bool endOfMessage,
                                               WebSocketCloseStatus? closeStatus,
                                               string closeStatusDescription)
                {
-                       throw new NotImplementedException ();
+                       MessageType = messageType;
+                       CloseStatus = closeStatus;
+                       CloseStatusDescription = closeStatusDescription;
+                       Count = count;
+                       EndOfMessage = endOfMessage;
                }
 
                public WebSocketCloseStatus? CloseStatus {
index 903d52755b942ad10c78d31fa8cb21b8471662c1..be618771eb9ee0ad5b37fdd9157da238b21f6fb1 100644 (file)
@@ -250,7 +250,7 @@ namespace System.Net
 
                        // build the hash object (only MD5 is defined in RFC2617)
                        if ((parser.Algorithm == null) || (parser.Algorithm.ToUpper ().StartsWith ("MD5")))
-                               hash = HashAlgorithm.Create ("MD5");
+                               hash = MD5.Create ();
 
                        return true;
                }
index d8d3f119ce26b82efb070641e9fe3723a92d5855..fb532cd22c2a8a19929b6cfe1b85a20f08d00f7d 100644 (file)
@@ -126,7 +126,7 @@ namespace System.Net {
                                throw ares.Exception;
                        IPHostEntry entry = ares.HostEntry;
                        if (entry == null || entry.AddressList == null || entry.AddressList.Length == 0)
-                               throw new SocketException(11001);
+                               Error_11001 (entry.HostName);
                        return entry;
                }
 #endif
@@ -293,7 +293,13 @@ namespace System.Net {
                private extern static bool GetHostName_internal(out string h_name);
 #endif 
 
-               private static IPHostEntry hostent_to_IPHostEntry(string h_name, string[] h_aliases, string[] h_addrlist) 
+               static void Error_11001 (string hostName)
+               {
+                       throw new SocketException(11001, string.Format ("Could not resolve host '{0}'", hostName));
+
+               }
+
+               private static IPHostEntry hostent_to_IPHostEntry(string originalHostName, string h_name, string[] h_aliases, string[] h_addrlist) 
                {
                        IPHostEntry he = new IPHostEntry();
                        ArrayList addrlist = new ArrayList();
@@ -317,7 +323,7 @@ namespace System.Net {
                        }
 
                        if(addrlist.Count == 0)
-                               throw new SocketException(11001);
+                               Error_11001 (originalHostName);
 
                        he.AddressList = addrlist.ToArray(typeof(IPAddress)) as IPAddress[];
                        return he;
@@ -377,9 +383,9 @@ namespace System.Net {
 #else
                        bool ret = GetHostByAddr_internal(address, out h_name, out h_aliases, out h_addrlist);
                        if (!ret)
-                               throw new SocketException(11001);
+                               Error_11001 (address);
 #endif
-                       return (hostent_to_IPHostEntry (h_name, h_aliases, h_addrlist));
+                       return (hostent_to_IPHostEntry (address, h_name, h_aliases, h_addrlist));
                        
                }
 
@@ -456,9 +462,9 @@ namespace System.Net {
 
                        bool ret = GetHostByName_internal(hostName, out h_name, out h_aliases, out h_addrlist);
                        if (ret == false)
-                               throw new SocketException(11001);
+                               Error_11001 (hostName);
 
-                       return(hostent_to_IPHostEntry(h_name, h_aliases, h_addrlist));
+                       return(hostent_to_IPHostEntry(hostName, h_name, h_aliases, h_addrlist));
 #endif
                }
 
@@ -472,7 +478,7 @@ namespace System.Net {
                        bool ret = GetHostName_internal(out hostName);
 
                        if (ret == false)
-                               throw new SocketException(11001);
+                               Error_11001 (hostName);
 
                        return hostName;
 #endif
index 09f3197a7a4e844d7302d9a418d4801124bd21f8..909101100999098d3e2f99bff94e6306de28fcf3 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Authenticode;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Authenticode;
+#endif
 
 using System.IO;
 using System.Net.Sockets;
@@ -38,7 +43,6 @@ using System.Collections.Generic;
 using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
 using System.Threading;
-using MonoSecurity::Mono.Security.Authenticode;
 
 namespace System.Net {
        sealed class EndPointListener
index edb0441b7231147d9296f8786e07a2846136363a..3354b2a8097d8b3117974c127b8b7bfab707e983 100644 (file)
@@ -549,7 +549,12 @@ namespace System.Net
                                if (local_path [0] == '/')
                                        local_path = local_path.Substring (1);
 
-                               Uri initial = new Uri ("ftp://dummy-host" + initial_path);
+                               UriBuilder initialBuilder = new UriBuilder () {
+                                       Scheme  = "ftp",
+                                       Host    = "dummy-host",
+                                       Path    = initial_path,
+                               };
+                               Uri initial = initialBuilder.Uri;
                                result = new Uri (initial, local_path).LocalPath;
                        }
 
index a34f19024c80761d1d16660ed488d4b62bd8ee33..33080c2d77b9a1d463c3e3f61bbb4a0ff4eef9fd 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Tls;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Protocol.Tls;
+#endif
 
 using System.IO;
 using System.Net.Sockets;
@@ -38,7 +43,6 @@ using System.Text;
 using System.Threading;
 using System.Security.Cryptography;
 using System.Security.Cryptography.X509Certificates;
-using MonoSecurity::Mono.Security.Protocol.Tls;
 
 namespace System.Net {
        sealed class HttpConnection
index 6329e359a4fd27e72a31be770aec7f1341b531d6..c72d21d1d82f3c44e19c7f9d381d434336cc33aa 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Tls;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security.Protocol.Tls;
+#endif
 
 using System.Collections;
 using System.Collections.Specialized;
@@ -44,7 +49,6 @@ using System.Security.Authentication.ExtendedProtection;
 #if NET_4_5
 using System.Threading.Tasks;
 #endif
-using MonoSecurity::Mono.Security.Protocol.Tls;
 
 namespace System.Net {
        public sealed class HttpListenerRequest
index f6b72e03253d00caa337cf1bd4920209f2ff0089..fcc3e26d701004a8302c47166e202ec97389d76b 100644 (file)
@@ -73,6 +73,9 @@ namespace System.Net {
                UnsupportedMediaType = 415,
                RequestedRangeNotSatisfiable = 416,
                ExpectationFailed = 417,
+#if NET_4_5
+               UpgradeRequired = 426,
+#endif
                InternalServerError = 500,
                NotImplemented = 501,
                BadGateway = 502,
index 3b55624cfc881336fc3fd63689bf6ca8ed84a223..c3c4772b5aa3fe29a75026057b81955ac4870b5c 100644 (file)
@@ -421,6 +421,10 @@ namespace System.Net
                        if (idx >= 0)
                                return false;
 
+                       IPAddress ipaddr;
+                       if (IPAddress.TryParse (val, out ipaddr))
+                               return true;
+
                        string u = scheme + "://" + val + "/";
                        return Uri.IsWellFormedUriString (u, UriKind.Absolute);
                }
@@ -1159,7 +1163,9 @@ namespace System.Net
                        bool spoint10 = (proto_version == null || proto_version == HttpVersion.Version10);
 
                        if (keepAlive && (version == HttpVersion.Version10 || spoint10)) {
-                               webHeaders.RemoveAndAdd (connectionHeader, "keep-alive");
+                               if (webHeaders[connectionHeader] == null
+                                   || webHeaders[connectionHeader].IndexOf ("keep-alive", StringComparison.OrdinalIgnoreCase) == -1)
+                                       webHeaders.RemoveAndAdd (connectionHeader, "keep-alive");
                        } else if (!keepAlive && version == HttpVersion.Version11) {
                                webHeaders.RemoveAndAdd (connectionHeader, "close");
                        }
@@ -1601,6 +1607,13 @@ namespace System.Net
 
                        throw throwMe;
                }
+
+               internal bool ReuseConnection {
+                       get;
+                       set;
+               }
+
+               internal WebConnection StoredConnection;
        }
 }
 
index 0cb3cd8c8525627f3a8f9122f81662e776cd65c8..2b756a97bd1e513400a25f64f3484ddc7e40f117 100644 (file)
@@ -277,7 +277,7 @@ namespace System.Net
                        CheckDisposed ();
                        if (stream == null)
                                return Stream.Null;  
-                       if (0 == String.Compare (method, "HEAD", true)) // see par 4.3 & 9.4
+                       if (string.Equals (method, "HEAD", StringComparison.OrdinalIgnoreCase))  // see par 4.3 & 9.4
                                return Stream.Null;  
 
                        return stream;
@@ -319,7 +319,6 @@ namespace System.Net
                void IDisposable.Dispose ()
                {
                        Dispose (true);
-                       GC.SuppressFinalize (this);  
                }
                
 #if NET_4_0
index 1738ce07ee107377d086e108832ff27886ffb6ef..88f75e88a9941e4c7457f763497bc9f04416d6b7 100644 (file)
@@ -117,6 +117,8 @@ namespace System.Net {
                                        }
                                } else {
                                        completed = true;
+                    this.synch = false;
+
                                        if (handle != null)
                                                handle.Set ();
 
index a21cf97c658412b7768c337c806372c1d9b57a4e..b6300b9428ef694dc74ce8dd6312c8c0fabac24f 100644 (file)
@@ -607,12 +607,13 @@ namespace System.Net
 #endif
                
                [DllImport (CFNetworkLibrary)]
-               // CFArrayRef CFNetworkCopyProxiesForAutoConfigurationScript (CFStringRef proxyAutoConfigurationScript, CFURLRef targetURL);
-               extern static IntPtr CFNetworkCopyProxiesForAutoConfigurationScript (IntPtr proxyAutoConfigurationScript, IntPtr targetURL);
+               // CFArrayRef CFNetworkCopyProxiesForAutoConfigurationScript (CFStringRef proxyAutoConfigurationScript, CFURLRef targetURL, CFErrorRef* error);
+               extern static IntPtr CFNetworkCopyProxiesForAutoConfigurationScript (IntPtr proxyAutoConfigurationScript, IntPtr targetURL, out IntPtr error);
                
                static CFArray CopyProxiesForAutoConfigurationScript (IntPtr proxyAutoConfigurationScript, CFUrl targetURL)
                {
-                       IntPtr native = CFNetworkCopyProxiesForAutoConfigurationScript (proxyAutoConfigurationScript, targetURL.Handle);
+                       IntPtr err = IntPtr.Zero;
+                       IntPtr native = CFNetworkCopyProxiesForAutoConfigurationScript (proxyAutoConfigurationScript, targetURL.Handle, out err);
                        
                        if (native == IntPtr.Zero)
                                return null;
index b0615a651b44d8ed13184339f8b4f98e0a93f01c..27e9893a80a86df8f2db606cb13f126378cf62d2 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Tls;
+using MSX = Mono.Security.X509;
+using Mono.Security.X509.Extensions;
+#else
 extern alias MonoSecurity;
-
-using System.Text.RegularExpressions;
 using MonoSecurity::Mono.Security.X509.Extensions;
 using MonoSecurity::Mono.Security.Protocol.Tls;
 using MSX = MonoSecurity::Mono.Security.X509;
 #endif
 
+using System.Text.RegularExpressions;
+#endif
+
 using System;
 using System.Collections;
 using System.Collections.Specialized;
@@ -72,10 +78,12 @@ namespace System.Net
        public class ServicePointManager {
                class SPKey {
                        Uri uri; // schema/host/port
+                       Uri proxy;
                        bool use_connect;
 
-                       public SPKey (Uri uri, bool use_connect) {
+                       public SPKey (Uri uri, Uri proxy, bool use_connect) {
                                this.uri = uri;
+                               this.proxy = proxy;
                                this.use_connect = use_connect;
                        }
 
@@ -87,8 +95,16 @@ namespace System.Net
                                get { return use_connect; }
                        }
 
+                       public bool UsesProxy {
+                               get { return proxy != null; }
+                       }
+
                        public override int GetHashCode () {
-                               return uri.GetHashCode () + ((use_connect) ? 1 : 0);
+                               int hash = 23;
+                               hash = hash * 31 + ((use_connect) ? 1 : 0);
+                               hash = hash * 31 + uri.GetHashCode ();
+                               hash = hash * 31 + (proxy != null ? proxy.GetHashCode () : 0);
+                               return hash;
                        }
 
                        public override bool Equals (object obj) {
@@ -97,7 +113,13 @@ namespace System.Net
                                        return false;
                                }
 
-                               return (uri.Equals (other.uri) && other.use_connect == use_connect);
+                               if (!uri.Equals (other.uri))
+                                       return false;
+                               if (use_connect != other.use_connect || UsesProxy != other.UsesProxy)
+                                       return false;
+                               if (UsesProxy && !proxy.Equals (other.proxy))
+                                       return false;
+                               return true;
                        }
                }
 
@@ -304,7 +326,8 @@ namespace System.Net
                        if (address == null)
                                throw new ArgumentNullException ("address");
 
-                       RecycleServicePoints ();
+                       if ((servicePoints.Count % 4) == 0)
+                               RecycleServicePoints ();
 
                        var origAddress = new Uri (address.Scheme + "://" + address.Authority);
                        
@@ -324,8 +347,8 @@ namespace System.Net
                        address = new Uri (address.Scheme + "://" + address.Authority);
                        
                        ServicePoint sp = null;
+                       SPKey key = new SPKey (origAddress, usesProxy ? address : null, useConnect);
                        lock (servicePoints) {
-                               SPKey key = new SPKey (origAddress, useConnect);
                                sp = servicePoints [key] as ServicePoint;
                                if (sp != null)
                                        return sp;
@@ -392,6 +415,7 @@ namespace System.Net
                internal class ChainValidationHelper {
                        object sender;
                        string host;
+                       RemoteCertificateValidationCallback cb;
 
 #if !MONOTOUCH
                        static bool is_macosx = System.IO.File.Exists (OSX509Certificates.SecurityLibrary);
@@ -410,19 +434,19 @@ namespace System.Net
                        }
 #endif
 
-                       public ChainValidationHelper (object sender)
+                       public ChainValidationHelper (object sender, string hostName)
                        {
                                this.sender = sender;
+                               host = hostName;
                        }
 
-                       public string Host {
+                       public RemoteCertificateValidationCallback ServerCertificateValidationCallback {
                                get {
-                                       if (host == null && sender is HttpWebRequest)
-                                               host = ((HttpWebRequest) sender).Address.Host;
-                                       return host;
+                                       if (cb == null)
+                                               cb = ServicePointManager.ServerCertificateValidationCallback;
+                                       return cb;
                                }
-
-                               set { host = value; }
+                               set { cb = value; }
                        }
 
                        // Used when the obsolete ICertificatePolicy is set to DefaultCertificatePolicy
@@ -435,7 +459,6 @@ namespace System.Net
                                        return null;
 
                                ICertificatePolicy policy = ServicePointManager.CertificatePolicy;
-                               RemoteCertificateValidationCallback cb = ServicePointManager.ServerCertificateValidationCallback;
 
                                X509Certificate2 leaf = new X509Certificate2 (certs [0].RawData);
                                int status11 = 0; // Error code passed to the obsolete ICertificatePolicy callback
@@ -448,7 +471,7 @@ namespace System.Net
                                // the certificates that the server provided (which generally does not include the root) so, only  
                                // if there's a user callback, we'll create the X509Chain but won't build it
                                // ref: https://bugzilla.xamarin.com/show_bug.cgi?id=7245
-                               if (cb != null) {
+                               if (ServerCertificateValidationCallback != null) {
 #endif
                                chain = new X509Chain ();
                                chain.ChainPolicy = new X509ChainPolicy ();
@@ -478,7 +501,7 @@ namespace System.Net
                                                status11 = -2146762490; //CERT_E_PURPOSE 0x800B0106
                                        }
 
-                                       if (!CheckServerIdentity (certs [0], Host)) {
+                                       if (!CheckServerIdentity (certs [0], host)) {
                                                errors |= SslPolicyErrors.RemoteCertificateNameMismatch;
                                                status11 = -2146762481; // CERT_E_CN_NO_MATCH 0x800B010F
                                        }
@@ -488,7 +511,7 @@ namespace System.Net
                                        // Ideally we should return the SecTrustResult
                                        OSX509Certificates.SecTrustResult trustResult = OSX509Certificates.SecTrustResult.Deny;
                                        try {
-                                               trustResult = OSX509Certificates.TrustEvaluateSsl (certs, Host);
+                                               trustResult = OSX509Certificates.TrustEvaluateSsl (certs, host);
                                                // We could use the other values of trustResult to pass this extra information
                                                // to the .NET 2 callback for values like SecTrustResult.Confirm
                                                result = (trustResult == OSX509Certificates.SecTrustResult.Proceed ||
@@ -534,8 +557,8 @@ namespace System.Net
                                        user_denied = !result && !(policy is DefaultCertificatePolicy);
                                }
                                // If there's a 2.0 callback, it takes precedence
-                               if (cb != null) {
-                                       result = cb (sender, leaf, chain, errors);
+                               if (ServerCertificateValidationCallback != null) {
+                                       result = ServerCertificateValidationCallback (sender, leaf, chain, errors);
                                        user_denied = !result;
                                }
                                return new ValidationResult (result, user_denied, status11);
index 4e1993f7e585c46c19b3ef53edb7beb4b6da6622..66358a6a65a00e7658fc019970771db798385f1d 100644 (file)
@@ -326,15 +326,16 @@ namespace System.Net
                                        
                                        int nread = 0;
                                        long notify_total = 0;
-                                       while ((nread = st.Read (buffer, 0, length)) != 0){
-                                               if (async){
-                                                       notify_total += nread;
+                                       while ((nread = st.Read (buffer, 0, length)) != 0) {
+                                               notify_total += nread;
+                                               if (async)
                                                        OnDownloadProgressChanged (
                                                                new DownloadProgressChangedEventArgs (notify_total, response.ContentLength, userToken));
-                                                                                                     
-                                               }
                                                f.Write (buffer, 0, nread);
                                        }
+
+                                       if (cLength > 0 && notify_total < cLength)
+                                               throw new WebException ("Download aborted prematurely.", WebExceptionStatus.ReceiveFailure);
                                } catch (ThreadInterruptedException){
                                        if (request != null)
                                                request.Abort ();
index 29d0e458ca908d111c946048e2678dfeca767787..7f65751c679f25aab1a931ebcde6ab20ca9e7b72 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security.Protocol.Tls;
+#else
 extern alias MonoSecurity;
-
 using MonoSecurity::Mono.Security.Protocol.Tls;
 #endif
 
+#endif
+
 using System.IO;
 using System.Collections;
 using System.Net.Sockets;
@@ -58,7 +62,7 @@ namespace System.Net
        {
                ServicePoint sPoint;
                Stream nstream;
-               Socket socket;
+               internal Socket socket;
                object socketLock = new object ();
                WebExceptionStatus status;
                WaitCallback initConn;
@@ -93,19 +97,15 @@ namespace System.Net
                Exception connect_exception;
                static object classLock = new object ();
                static Type sslStream;
+#if !MONOTOUCH
                static PropertyInfo piClient;
                static PropertyInfo piServer;
                static PropertyInfo piTrustFailure;
+#endif
 
 #if MONOTOUCH
-                static MethodInfo start_wwan;
-
-                static WebConnection ()
-                {
-                        Type type = Type.GetType ("MonoTouch.ObjCRuntime.Runtime, monotouch");
-                       if (type != null)
-                               start_wwan = type.GetMethod ("StartWWAN", new Type [] { typeof (System.Uri) });
-                }
+               [System.Runtime.InteropServices.DllImport ("__Internal")]
+               static extern void monotouch_start_wwan (string uri);
 #endif
 
                public WebConnection (WebConnectionGroup group, ServicePoint sPoint)
@@ -165,10 +165,8 @@ namespace System.Net
 
                                if (hostEntry == null) {
 #if MONOTOUCH
-                                       if (start_wwan != null) {
-                                               start_wwan.Invoke (null, new object [1] { sPoint.Address });
-                                               hostEntry = sPoint.HostEntry;
-                                       }
+                                       monotouch_start_wwan (sPoint.Address.ToString ());
+                                       hostEntry = sPoint.HostEntry;
                                        if (hostEntry == null) {
 #endif
                                                status = sPoint.UsesProxy ? WebExceptionStatus.ProxyNameResolutionFailure :
@@ -253,9 +251,11 @@ namespace System.Net
                                        throw new NotSupportedException (msg);
                                }
 #endif
+#if !MONOTOUCH
                                piClient = sslStream.GetProperty ("SelectedClientCertificate");
                                piServer = sslStream.GetProperty ("ServerCertificate");
                                piTrustFailure = sslStream.GetProperty ("TrustFailure");
+#endif
                        }
                }
 
@@ -434,14 +434,17 @@ namespace System.Net
                                                        if (!ok)
                                                                return false;
                                                }
-
+#if SECURITY_DEP
+#if MONOTOUCH
+                                               nstream = new HttpsClientStream (serverStream, request.ClientCertificates, request, buffer);
+#else
                                                object[] args = new object [4] { serverStream,
-                                                                               request.ClientCertificates,
-                                                                               request, buffer};
+                                                       request.ClientCertificates,
+                                                       request, buffer};
                                                nstream = (Stream) Activator.CreateInstance (sslStream, args);
-#if SECURITY_DEP
+#endif
                                                SslClientStream scs = (SslClientStream) nstream;
-                                               var helper = new ServicePointManager.ChainValidationHelper (request);
+                                               var helper = new ServicePointManager.ChainValidationHelper (request, request.Address.Host);
                                                scs.ServerCertValidation2 += new CertificateValidationCallback2 (helper.ValidateChain);
 #endif
                                                certsAvailable = false;
@@ -610,11 +613,17 @@ namespace System.Net
                        return (statusCode >= 200 && statusCode != 204 && statusCode != 304);
                }
 
-               internal void GetCertificates () 
+               internal void GetCertificates (Stream stream
                {
                        // here the SSL negotiation have been done
-                       X509Certificate client = (X509Certificate) piClient.GetValue (nstream, null);
-                       X509Certificate server = (X509Certificate) piServer.GetValue (nstream, null);
+#if SECURITY_DEP && MONOTOUCH
+                       HttpsClientStream s = (stream as HttpsClientStream);
+                       X509Certificate client = s.SelectedClientCertificate;
+                       X509Certificate server = s.ServerCertificate;
+#else
+                       X509Certificate client = (X509Certificate) piClient.GetValue (stream, null);
+                       X509Certificate server = (X509Certificate) piServer.GetValue (stream, null);
+#endif
                        sPoint.SetCertificates (client, server);
                        certsAvailable = (server != null);
                }
@@ -741,6 +750,8 @@ namespace System.Net
                {
                        HttpWebRequest request = (HttpWebRequest) state;
                        request.WebConnection = this;
+                       if (request.ReuseConnection)
+                               request.StoredConnection = this;
 
                        if (request.Aborted)
                                return;
@@ -936,20 +947,23 @@ namespace System.Net
                        }
 
                        int nbytes = 0;
+                       bool done = false;
                        WebAsyncResult wr = null;
                        IAsyncResult nsAsync = ((WebAsyncResult) result).InnerAsyncResult;
                        if (chunkedRead && (nsAsync is WebAsyncResult)) {
                                wr = (WebAsyncResult) nsAsync;
                                IAsyncResult inner = wr.InnerAsyncResult;
-                               if (inner != null && !(inner is WebAsyncResult))
+                               if (inner != null && !(inner is WebAsyncResult)) {
                                        nbytes = s.EndRead (inner);
+                                       done = nbytes == 0;
+                               }
                        } else if (!(nsAsync is WebAsyncResult)) {
                                nbytes = s.EndRead (nsAsync);
                                wr = (WebAsyncResult) result;
+                               done = nbytes == 0;
                        }
 
                        if (chunkedRead) {
-                               bool done = (nbytes == 0);
                                try {
                                        chunkStream.WriteAndReadBack (wr.Buffer, wr.Offset, wr.Size, ref nbytes);
                                        if (!done && nbytes == 0 && chunkStream.WantMore)
@@ -1130,16 +1144,16 @@ namespace System.Net
                        lock (this) {
                                if (Data.request != request)
                                        throw new ObjectDisposedException (typeof (NetworkStream).FullName);
-                               if (nstream == null)
-                                       return false;
                                s = nstream;
+                               if (s == null)
+                                       return false;
                        }
 
                        try {
                                s.Write (buffer, offset, size);
                                // here SSL handshake should have been done
                                if (ssl && !certsAvailable)
-                                       GetCertificates ();
+                                       GetCertificates (s);
                        } catch (Exception e) {
                                err_msg = e.Message;
                                WebExceptionStatus wes = WebExceptionStatus.SendFailure;
@@ -1150,9 +1164,16 @@ namespace System.Net
                                }
 
                                // if SSL is in use then check for TrustFailure
-                               if (ssl && (bool) piTrustFailure.GetValue (nstream, null)) {
-                                       wes = WebExceptionStatus.TrustFailure;
-                                       msg = "Trust failure";
+                               if (ssl) {
+#if SECURITY_DEP && MONOTOUCH
+                                       HttpsClientStream https = (s as HttpsClientStream);
+                                       if (https.TrustFailure) {
+#else
+                                       if ((bool) piTrustFailure.GetValue (s , null)) {
+#endif
+                                               wes = WebExceptionStatus.TrustFailure;
+                                               msg = "Trust failure";
+                                       }
                                }
 
                                HandleError (wes, e, msg);
@@ -1164,6 +1185,11 @@ namespace System.Net
                internal void Close (bool sendNext)
                {
                        lock (this) {
+                               if (Data != null && Data.request != null && Data.request.ReuseConnection) {
+                                       Data.request.ReuseConnection = false;
+                                       return;
+                               }
+
                                if (nstream != null) {
                                        try {
                                                nstream.Close ();
index 5b0cd421c1d2b9022a3ddef10d260a55790a87ce..987b7cc109412087df5c61296ba82c3434d9207a 100644 (file)
@@ -58,24 +58,17 @@ namespace System.Net
                static HybridDictionary prefixes = new HybridDictionary ();
                static bool isDefaultWebProxySet;
                static IWebProxy defaultWebProxy;
-
-#if !NET_2_1           
                static RequestCachePolicy defaultCachePolicy;
-#endif         
-               // Constructors
-               
+
                static WebRequest ()
                {
-#if NET_2_1
+#if MOBILE
                        IWebRequestCreate http = new HttpRequestCreator ();
                        RegisterPrefix ("http", http);
                        RegisterPrefix ("https", http);
-       #if MOBILE
                        RegisterPrefix ("file", new FileWebRequestCreator ());
                        RegisterPrefix ("ftp", new FtpRequestCreator ());
-       #endif
 #else
-                       defaultCachePolicy = new HttpRequestCachePolicy (HttpRequestCacheLevel.NoCacheNoStore);
        #if CONFIGURATION_DEP
                        object cfg = ConfigurationManager.GetSection ("system.net/webRequestModules");
                        WebRequestModulesSection s = cfg as WebRequestModulesSection;
@@ -137,7 +130,6 @@ namespace System.Net
                        set { throw GetMustImplement (); }
                }
 
-#if !NET_2_1
                [MonoTODO ("Implement the caching system. Currently always returns a policy with the NoCacheNoStore level")]
                public virtual RequestCachePolicy CachePolicy
                {
@@ -146,14 +138,14 @@ namespace System.Net
                        }
                }
                
-               public static RequestCachePolicy DefaultCachePolicy
-               {
-                       get { return defaultCachePolicy; }
+               public static RequestCachePolicy DefaultCachePolicy {
+                       get {
+                               return defaultCachePolicy ?? (defaultCachePolicy = new HttpRequestCachePolicy (HttpRequestCacheLevel.NoCacheNoStore));
+                       }
                        set {
                                throw GetMustImplement ();
                        }
                }
-#endif
                
                public virtual WebHeaderCollection Headers { 
                        get { throw GetMustImplement (); }
@@ -335,6 +327,12 @@ namespace System.Net
 #if MONOTOUCH
                        return CFNetwork.GetDefaultProxy ();
 #else
+#if MONODROID
+                       // Return the system web proxy.  This only works for ICS+.
+                       var androidProxy = AndroidPlatform.GetDefaultProxy ();
+                       if (androidProxy != null)
+                               return androidProxy;
+#endif
 #if !NET_2_1
                        if (IsWindows ()) {
                                int iProxyEnable = (int)Microsoft.Win32.Registry.GetValue ("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings", "ProxyEnable", 0);
index 9aaf8a462ecde5fed9ae2a71a9fe1e2c24c79da5..33e27cf23720653e89388e8602fb563941a08821 100644 (file)
 //
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using MSX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
+using MSX = MonoSecurity::Mono.Security.X509;
+#endif
 
 using System;
 using System.Runtime.InteropServices;
-using MSX = MonoSecurity::Mono.Security.X509;
 
 namespace System.Security.Cryptography.X509Certificates {
 
index 45772c29b4f872a08716c83ac64209c04980ca88..3122a108d4aac9a2028cc2075cc37d384b4def12 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+using Mono.Security.Cryptography;
+using MSX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
-
 using MonoSecurity::Mono.Security;
 using MonoSecurity::Mono.Security.Cryptography;
 using MSX = MonoSecurity::Mono.Security.X509;
+#endif
 
 namespace System.Security.Cryptography.X509Certificates {
 
index 6130257f88f1cf73d1f0b8d009b53c37158fa3fd..db0377e12a871846e3c79d62c57f16590494a6ec 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+using MX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+using MX = MonoSecurity::Mono.Security.X509;
+#endif
 
 using System.Collections;
 using System.Text;
 
-using MonoSecurity::Mono.Security;
-using MX = MonoSecurity::Mono.Security.X509;
-
 namespace System.Security.Cryptography.X509Certificates {
 
        [MonoTODO ("Some X500DistinguishedNameFlags options aren't supported, like DoNotUsePlusSign, DoNotUseQuotes and ForceUTF8Encoding")]
index 1a3eff95e7d39af0dc3231046439dde2a1d0b654..f3ffaaa47f117cb81dd9b0bd4c4e72d37812a61d 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+#endif
 
 using System.Text;
 
-using MonoSecurity::Mono.Security;
-
 namespace System.Security.Cryptography.X509Certificates {
 
        public sealed class X509BasicConstraintsExtension : X509Extension {
index 18107591585cdfe6f7ae39be74aaea57eefe2719..300e1140e1d3a60f930f5591e19cdd2ebcd9fbdb 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+using Mono.Security.Cryptography;
+using MX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
 
 using MonoSecurity::Mono.Security;
@@ -36,11 +41,16 @@ using MonoSecurity::Mono.Security.Cryptography;
 using MX = MonoSecurity::Mono.Security.X509;
 #endif
 
+#endif
+
 using System.IO;
 using System.Text;
 
 namespace System.Security.Cryptography.X509Certificates {
 
+#if NET_4_0
+       [Serializable]
+#endif
        public class X509Certificate2 : X509Certificate {
 #if !SECURITY_DEP
                // Used in Mono.Security HttpsClientStream
@@ -580,7 +590,7 @@ namespace System.Security.Cryptography.X509Certificates {
                        if (_cert == null)
                                throw new CryptographicException (empty_error);
 
-                       X509Chain chain = (X509Chain) CryptoConfig.CreateFromName ("X509Chain");
+                       X509Chain chain = X509Chain.Create ();
                        if (!chain.Build (this))
                                return false;
                        // TODO - check chain and other stuff ???
index 7dfd434c85a054e9e0fb35aa97062cd3d2069aeb..7550c0608cb753a93971d423c516427e5e8588f7 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using MX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
+using MX = MonoSecurity::Mono.Security.X509;
+#endif
 
 using System.Collections;
 using System.Text;
 
-using MX = MonoSecurity::Mono.Security.X509;
-
 namespace System.Security.Cryptography.X509Certificates {
 
        public class X509Chain {
@@ -235,7 +238,11 @@ namespace System.Security.Cryptography.X509Certificates {
 
                public static X509Chain Create ()
                {
+#if FULL_AOT_RUNTIME
+                       return new X509Chain ();
+#else
                        return (X509Chain) CryptoConfig.CreateFromName ("X509Chain");
+#endif
                }
 
                // private stuff
index ebc7df34b7e9c68c724d63adf14cde40149c1740..19ddcb8bd92286d3b12646286dce209af902ef22 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+#endif
 
 using System.Text;
 
-using MonoSecurity::Mono.Security;
-
 namespace System.Security.Cryptography.X509Certificates {
 
        public sealed class X509EnhancedKeyUsageExtension : X509Extension {
index f08ae933b4516d759706d546bbecd95a30f4bed6..bceabd05723e60fa11021e7495c16a26f9751b6d 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+using MX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+using MX = MonoSecurity::Mono.Security.X509;
+#endif
 
 using System.Collections;
-using Mono.Security;
-using MX = Mono.Security.X509;
 
 namespace System.Security.Cryptography.X509Certificates {
 
@@ -51,13 +56,13 @@ namespace System.Security.Cryptography.X509Certificates {
                        _list = new ArrayList ();
                }
 
-               internal X509ExtensionCollection (MonoSecurity::Mono.Security.X509.X509Certificate cert)
+               internal X509ExtensionCollection (MX.X509Certificate cert)
                {
                        _list = new ArrayList (cert.Extensions.Count);
                        if (cert.Extensions.Count == 0)
                                return;
 
-                       foreach (MonoSecurity::Mono.Security.X509.X509Extension ext in cert.Extensions) {
+                       foreach (MX.X509Extension ext in cert.Extensions) {
                                bool critical = ext.Critical;
                                string oid = ext.Oid;
                                byte[] raw_data = null;
index ac7e05387511b019f3425b21f2aef3cd2d1f0813..69f56faece63dbe338571f442ab2d699588fd65c 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+#endif
 
 using System.Text;
 
-using MonoSecurity::Mono.Security;
-
 namespace System.Security.Cryptography.X509Certificates {
 
        public sealed class X509KeyUsageExtension : X509Extension {
index 208754d9fd800bc34f5169aa5da5118e49167170..58966329d043f789d62fe93a419bb519562e0896 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using MX = Mono.Security.X509;
+#else
 extern alias MonoSecurity;
+using MX = MonoSecurity::Mono.Security.X509;
+#endif
 
 using System.Security.Permissions;
-using MX = MonoSecurity::Mono.Security.X509;
 
 namespace System.Security.Cryptography.X509Certificates {
 
index b7a7af852fc06554de833ed6ffac788465a13ec0..fe2114afe1782ed9fd8fa799f5b89faa20580b99 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+using Mono.Security.Cryptography;
+#else
 extern alias MonoSecurity;
-
-using System.Text;
-
 using MonoSecurity::Mono.Security;
 using MonoSecurity::Mono.Security.Cryptography;
+#endif
+
+using System.Text;
 
 namespace System.Security.Cryptography.X509Certificates {
 
index 14b8ccedfabdccb9b3726b9d2e30a6072857991c..995f1b220c2d68b4ce5b1d04a970fe9be9c3e21f 100644 (file)
 
 #if SECURITY_DEP
 
+#if MONOTOUCH
+using Mono.Security;
+using Mono.Security.Cryptography;
+#else
 extern alias MonoSecurity;
+using MonoSecurity::Mono.Security;
+using MonoSecurity::Mono.Security.Cryptography;
+#endif
 
 using System.Security.Cryptography.X509Certificates;
 using System.Text;
 
-using MonoSecurity::Mono.Security;
-using MonoSecurity::Mono.Security.Cryptography;
-
 namespace System.Security.Cryptography {
 
        internal enum AsnDecodeStatus {
index 4748b403f54aa0e4dd2edb841c92237acd432e6c..9307a632bce454af5ed31a46eca0102929243409 100644 (file)
@@ -31,7 +31,9 @@ using System;
 using System.Text;
 using System.Collections;
 using System.Reflection;
+#if !FULL_AOT_RUNTIME
 using System.Reflection.Emit;
+#endif
 using System.Runtime.Serialization;
 
 using RegularExpression = System.Text.RegularExpressions.Syntax.RegularExpression;
@@ -270,6 +272,8 @@ namespace System.Text.RegularExpressions {
                {
                        return Split (input, pattern, options);
                }
+
+               public static readonly TimeSpan InfiniteMatchTimeout = TimeSpan.FromMilliseconds (-1);
 #endif
 
                static void validate_options (RegexOptions options)
index d35ee4e0ebe66638c480e35db89de9607b34fea2..28a7011bb545c2cabf6c422bb896c3212c08c011 100644 (file)
@@ -159,7 +159,13 @@ namespace System.Timers
 
                protected override void Dispose (bool disposing)
                {
-                       Close ();
+                       // If we're disposing explicitly, clear all
+                       // fields. If not, all fields will have been
+                       // nulled by the GC during finalization, so
+                       // trying to lock on _lock will blow up.
+                       if (disposing)
+                               Close ();
+
                        base.Dispose (disposing);
                }
 
index bcc30bd186c9b432508d6caeb7d1b967b282bf92..338a92b63966011d11d3b3c7f13b2c6e0d533aa1 100644 (file)
@@ -31,6 +31,7 @@ extern alias MonoSecurity;
 
 #if MONODROID
 using System;
+using System.Net;
 using System.Net.Security;
 using System.Security.Cryptography.X509Certificates;
 #if SECURITY_DEP
@@ -45,12 +46,13 @@ namespace System {
                static readonly Converter<MSX.X509CertificateCollection, bool> trustEvaluateSsl;
                static readonly Func<MSX.X509CertificateCollection, object, X509Certificate2, X509Chain, SslPolicyErrors, bool> trustEvaluateSsl2;
 #endif  // SECURITY_DEP
+               static readonly Func<IWebProxy> getDefaultProxy;
 
 
                static AndroidPlatform ()
                {
-#if SECURITY_DEP
                        var t = Type.GetType ("Android.Runtime.AndroidEnvironment, Mono.Android", throwOnError:true);
+#if SECURITY_DEP
                        trustEvaluateSsl2 = (Func<MSX.X509CertificateCollection, object, X509Certificate2, X509Chain, SslPolicyErrors, bool>)
                                Delegate.CreateDelegate (
                                                typeof (Func<MSX.X509CertificateCollection, object, X509Certificate2, X509Chain, SslPolicyErrors, bool>),
@@ -66,6 +68,10 @@ namespace System {
                                                        ignoreCase:false,
                                                        throwOnBindFailure:true);
 #endif  // SECURITY_DEP
+                       getDefaultProxy = (Func<IWebProxy>)Delegate.CreateDelegate (
+                               typeof (Func<IWebProxy>), t, "GetDefaultProxy",
+                               ignoreCase:false,
+                               throwOnBindFailure:true);
                }
 
 #if SECURITY_DEP
@@ -76,6 +82,11 @@ namespace System {
                        return trustEvaluateSsl (collection);
                }
 #endif  // SECURITY_DEP
+
+               internal static IWebProxy GetDefaultProxy ()
+               {
+                       return getDefaultProxy ();
+               }
        }
 }
 #endif  // MONODROID
index 823063b5624b2854e829d362c09c5f3b5b7b1701..8f6f496e906e8fd8cc9dcbbf549e1aebd3065e23 100644 (file)
@@ -1,7 +1,7 @@
 //
 // System.Platform
 //
-// Copyright (C) 2011 Xamarin, Inc. (www.xamarin.com)
+// Copyright (C) 2011-2013 Xamarin Inc. (www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -28,6 +28,11 @@ using System.Runtime.InteropServices;
 
 namespace System {
        internal static class Platform {
+#if MONOTOUCH
+               public static bool IsMacOS {
+                       get { return true; }
+               }
+#else
                [DllImport ("libc")]
                static extern int uname (IntPtr buf);
                
@@ -53,5 +58,6 @@ namespace System {
                                return isMacOS;
                        }
                }
+#endif
        }
 }
index 38708615c4c5cb76412c24596d8c0c1a088eca5a..9e8c8cd6eb58a8c956fd382df66bdac04ef181bb 100644 (file)
@@ -209,6 +209,9 @@ namespace System {
                                        success = false;
                                        break;
                                }
+
+                               if (success && isAbsoluteUri && (path.Length > 0))
+                                       path = EscapeString (path);
                        }
                }
 
index 03a8553dba6d9c7b0785e1442aad4ba9520167dc..b20e6dcab2ed8a35fc93c08d9f34689ff0e84a62 100644 (file)
@@ -39,6 +39,9 @@ namespace System {
                Query = 32,
                Fragment = 64,
                StrongPort = 128,
+#if NET_4_5
+               NormalizedHost = 256,
+#endif                 
                KeepDelimiter = 0x40000000,
 
                HostAndPort = Host | StrongPort,
index a306d52be4078327ed987181b077286996e8307f..33f8326b2d6e9041d793afd58945e5239378669a 100644 (file)
@@ -499,3 +499,4 @@ System.Collections.Concurrent/BlockingCollectionTests.cs
 System.Collections.Concurrent/ConcurrentBagTests.cs
 System.Collections.Concurrent/CollectionStressTestHelper.cs
 System.Collections.Concurrent/ParallelTestHelper.cs
+System.Net.WebSockets/ClientWebSocketTest.cs
index f34bcca6d6abec884a114ec3cf946fc6efd471ca..fe60d4e5a86f8af9d56b652afab63170f26e3e72 100644 (file)
@@ -359,6 +359,49 @@ namespace MonoTests.Microsoft.CSharp
                        Assert.AreEqual (tempFile, tempFiles[0], "#5");
                }
 
+               [Test]
+               public void CompileFromSource_InMemory_Twice ()
+               {
+                       CompilerParameters options = new CompilerParameters ();
+                       options.GenerateExecutable = false;
+                       options.GenerateInMemory = true;
+
+                       ICodeCompiler compiler = _codeProvider.CreateCompiler ();
+
+                       var src_1 = "class X { ";
+
+                       CompilerResults results_1 = compiler.CompileAssemblyFromSource (options, src_1);
+                       var output_1 = options.OutputAssembly;
+
+                       var src_2 = "class X { }";
+
+                       CompilerResults results_2 = compiler.CompileAssemblyFromSource (options, src_2);
+                       var output_2 = options.OutputAssembly;
+
+                       // verify compilation was successful
+                       AssertCompileResults (results_2, true);
+
+                       Assert.AreEqual (output_1, output_2, "#1");
+               }
+
+
+               [Test]
+               public void CompileFromSource_InMemory_With_Extra_Delete ()
+               {
+                       CompilerParameters options = new CompilerParameters ();
+                       options.GenerateExecutable = false;
+                       options.GenerateInMemory = true;
+
+                       ICodeCompiler compiler = _codeProvider.CreateCompiler ();
+
+                       var src_1 = "class X { ";
+
+                       compiler.CompileAssemblyFromSource (options, src_1);
+
+                       options.TempFiles.Delete ();
+                       options.TempFiles.Delete ();
+               }
+
                [Test]
                public void CompileFromSourceBatch_InMemory ()
                {
index c9eea9c165b380e9e9477f48729589ac7a55ca6f..02e3dc71c0e1764351ba339c28a7fa9bc3250cc7 100644 (file)
@@ -181,24 +181,45 @@ namespace MonoTests.Microsoft.CSharp
                [Test]
                public void AttributeAndGlobalNamespaceWithImportTest ()
                {
-                       var import = new CodeNamespaceImport ("Z");
-                       AddGlobalNamespaceWithImport (codeUnit, import);
-                       AddAssemblyAttribute (codeUnit, "A");
-
-                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
-                               "using Z;{0}{0}[assembly: A()]{0}{0}", NewLine), Generate ());
-               }
-
-               private static void AddGlobalNamespaceWithImport (CodeCompileUnit codeUnit, CodeNamespaceImport import) {
                        CodeNamespace ns = new CodeNamespace ();
-                       ns.Imports.Add (import);
+                       ns.Imports.Add (new CodeNamespaceImport ("Z"));
+                       ns.Imports.Add (new CodeNamespaceImport ("A"));
                        codeUnit.Namespaces.Add (ns);
-               }
 
-               private static void AddAssemblyAttribute (CodeCompileUnit codeUnit, string attributeName) {
                        CodeAttributeDeclaration attrDec = new CodeAttributeDeclaration ();
-                       attrDec.Name = attributeName;
+                       attrDec.Name = "A";
                        codeUnit.AssemblyCustomAttributes.Add (attrDec);
+
+                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+                               "using A;{0}using Z;{0}{0}[assembly: A()]{0}{0}{0}", NewLine), Generate ());
+               }
+
+               [Test]
+               public void GlobalAttributeBeforeType ()
+               {
+                       StringWriter writer = new StringWriter ();
+                       writer.NewLine = NewLine;
+
+                       codeUnit = new CodeCompileUnit () {
+                               AssemblyCustomAttributes = {
+                                       new CodeAttributeDeclaration (
+                                               new CodeTypeReference (typeof (CLSCompliantAttribute)),
+                                               new CodeAttributeArgument (new CodePrimitiveExpression (false))),
+                               },
+                               Namespaces = {
+                                       new CodeNamespace () {
+                                               Types = {
+                                                       new CodeTypeDeclaration ("Resources"),
+                                               },
+                                       }
+                               },
+                       };
+
+                       generator.GenerateCodeFromCompileUnit (codeUnit, writer, options);
+                       writer.Close ();
+
+                       Assert.AreEqual (string.Format (CultureInfo.InvariantCulture,
+                               "[assembly: System.CLSCompliantAttribute(false)]{0}{0}{0}{0}public class Resources {{{0}}}{0}", NewLine), Generate ());
                }
        }
 }
index 0098e2de927e421859e0e5ed1356c5842cd0b191..9f0e9b0190da47d2bb9bf8e4783eab871b46cdde 100644 (file)
@@ -27,6 +27,7 @@ using System;
 using System.Threading;
 using System.Collections.Concurrent;
 using System.Collections.Generic;
+using System.Threading.Tasks;
 
 using NUnit.Framework;
 
@@ -192,6 +193,60 @@ namespace MonoTests.System.Collections.Concurrent
                        Assert.IsNull (o);
                        Assert.IsFalse (success);
                }
+
+               [Test]
+               public void TakeAnyFromSecondCollection ()
+               {
+                       var a = new BlockingCollection<string> ();
+                       var b = new BlockingCollection<string> ();
+                       var arr = new [] { a, b };
+                       string res = null;
+
+                       Task<int> t = Task.Factory.StartNew (() => BlockingCollection<string>.TakeFromAny (arr, out res));
+                       a.Add ("foo");
+                       Assert.AreEqual (0, t.Result, "#1");
+                       Assert.AreEqual ("foo", res, "#2");
+
+                       t = Task.Factory.StartNew (() => BlockingCollection<string>.TakeFromAny (arr, out res));
+                       b.Add ("bar");
+                       Assert.AreEqual (1, t.Result, "#3");
+                       Assert.AreEqual ("bar", res, "#4");
+               }
+
+               [Test]
+               public void TakeAnyCancellable ()
+               {
+                       var a = new BlockingCollection<string> ();
+                       var b = new BlockingCollection<string> ();
+                       var arr = new [] { a, b };
+                       var cts = new CancellationTokenSource ();
+                       string res = null;
+
+                       Task<int> t = Task.Factory.StartNew (() => BlockingCollection<string>.TakeFromAny (arr, out res, cts.Token));
+                       Thread.Sleep (100);
+                       a.Add ("foo");
+                       Assert.AreEqual (0, t.Result, "#1");
+                       Assert.AreEqual ("foo", res, "#2");
+
+                       t = Task.Factory.StartNew (() => BlockingCollection<string>.TakeFromAny (arr, out res, cts.Token));
+                       Thread.Sleep (100);
+                       b.Add ("bar");
+                       Assert.AreEqual (1, t.Result, "#3");
+                       Assert.AreEqual ("bar", res, "#4");
+
+                       t = Task.Factory.StartNew (() => {
+                               try {
+                                       return BlockingCollection<string>.TakeFromAny (arr, out res, cts.Token);
+                               } catch (OperationCanceledException WE_GOT_CANCELED) {
+                                       res = "canceled";
+                                       return -10;
+                               }
+                       });
+
+                       cts.Cancel ();
+                       Assert.AreEqual (-10, t.Result, "#5");
+                       Assert.AreEqual ("canceled", res, "#6");
+               }
        }
 }
 #endif
index a95f54b90afbd059153ef456e9a50979a5f55306..562c6e9dc6f531c27db6bdb7093b69387be02502 100644 (file)
@@ -50,6 +50,13 @@ namespace MonoTests.System.Diagnostics
                        new TraceSource (null);
                }
 
+               [Test]
+               [ExpectedException (typeof (ArgumentException))]
+               public void ConstructorEmpty ()
+               {
+                       new TraceSource ("");
+               }
+               
                [Test]
                public void DefaultValues ()
                {
@@ -70,6 +77,20 @@ namespace MonoTests.System.Diagnostics
                        TraceSource ts = new TraceSource ("foo");
                        ts.Switch = null;
                }
+               
+               [Test]
+               public void SwitchLevel ()
+               {
+                       TraceSource s = new TraceSource ("Source1");
+                       Assert.AreEqual (SourceLevels.Off, s.Switch.Level, "#1");
+
+                       s = new TraceSource("Source2", SourceLevels.All);
+                       Assert.AreEqual (SourceLevels.All, s.Switch.Level, "#2");
+
+                       s = new TraceSource("Source3");
+                       s.Switch.Level = SourceLevels.All;
+                       Assert.AreEqual (SourceLevels.All, s.Switch.Level, "#3");
+               }
        }
 }
 
index 6193222fe8855408b4d3f1b635daeab57fb9dec7..d59d607e59dc469d4fdaf49d67070eadefe38e3e 100644 (file)
@@ -8,8 +8,6 @@
 // (C) 2004 Novell, Inc. <http://www.novell.com>
 // 
 
-#if NET_2_0
-
 using NUnit.Framework;
 using System;
 using System.IO;
@@ -277,6 +275,22 @@ namespace MonoTests.System.IO.Compression
                        decompress.Dispose ();
                }
 
+               [Test]
+               public void DisposeOrderTest ()
+               {
+                       var fs = new MemoryStream();
+                       GZipStream compressed = new GZipStream(fs, CompressionMode.Compress);
+                       byte[] buffer = new byte[1024];
+                       compressed.Write(buffer, 0, buffer.Length);
+                       compressed.Close();
+
+                       try {
+                               fs.WriteByte(2);
+                               Assert.Fail ();
+                       } catch (ObjectDisposedException) {
+                       }                       
+               }
+
                static byte [] compressed_data = {
                        0x1f, 0x8b, 0x08, 0x08, 0x70, 0xbb, 0x5d, 0x41, 0x00,
                        0x03, 0x74, 0x65, 0x73, 0x74, 0x00, 0xf3, 0x48, 0xcd,
@@ -285,4 +299,3 @@ namespace MonoTests.System.IO.Compression
        }
 }
 
-#endif
index 2062cf84f62b9ab07d4f4783d02404c07b314480..710b4982c11bae307354cee3e908bbd3e96ea5ca 100644 (file)
@@ -1032,7 +1032,7 @@ namespace MonoTests.System.Net.Sockets {
                        
                        client.BeginReceive (BRCallback, client);
 
-                       IPEndPoint ep = new IPEndPoint (Dns.GetHostEntry (string.Empty).AddressList[0], 1237);
+                       IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 1237);
                        byte[] send_bytes = new byte[] {10, 11, 12, 13};
                        client.Send (send_bytes, send_bytes.Length, ep);
 
@@ -1051,16 +1051,21 @@ namespace MonoTests.System.Net.Sockets {
                [Test]
                public void Available ()
                {
-                       UdpClient client = new UdpClient (1238);
-                       IPEndPoint ep = new IPEndPoint (Dns.GetHostEntry (string.Empty).AddressList[0], 1238);
-                       byte[] bytes = new byte[] {10, 11, 12, 13};
-                       
-                       client.Send (bytes, bytes.Length, ep);
-                       int avail = client.Available;
-                       
-                       Assert.AreEqual (bytes.Length, avail, "Available #1");
+                       using (UdpClient client = new UdpClient (1238)) {
+                               IPEndPoint ep = new IPEndPoint (IPAddress.Loopback, 1238);
+                               byte[] bytes = new byte[] {10, 11, 12, 13};
+                               
+                               int res = client.Send (bytes, bytes.Length, ep);
+                               Assert.AreEqual (bytes.Length, res, "Send");
+
+                               // that might happen too quickly, data sent and not yet received/available
+                               Thread.Sleep (100);
+                               int avail = client.Available;
+                               
+                               Assert.AreEqual (bytes.Length, avail, "Available #1");
 
-                       client.Close ();
+                               client.Close ();
+                       }
                }
                
                [Test]
diff --git a/mcs/class/System/Test/System.Net.WebSockets/ClientWebSocketTest.cs b/mcs/class/System/Test/System.Net.WebSockets/ClientWebSocketTest.cs
new file mode 100644 (file)
index 0000000..3666003
--- /dev/null
@@ -0,0 +1,242 @@
+#if NET_4_5 && !MOBILE
+using System;
+using System.Net;
+using System.Threading;
+using System.Threading.Tasks;
+using System.Collections.Generic;
+using System.Net.WebSockets;
+using System.Reflection;
+using System.Text;
+
+using NUnit.Framework;
+
+
+namespace MonoTests.System.Net.WebSockets
+{
+       [TestFixture]
+       public class ClientWebSocketTest
+       {
+               const string EchoServerUrl = "ws://echo.websocket.org";
+               const int Port = 42123;
+               HttpListener listener;
+               ClientWebSocket socket;
+               MethodInfo headerSetMethod;
+
+               [SetUp]
+               public void Setup ()
+               {
+                       listener = new HttpListener ();
+                       listener.Prefixes.Add ("http://localhost:" + Port + "/");
+                       listener.Start ();
+                       socket = new ClientWebSocket ();
+               }
+
+               [TearDown]
+               public void Teardown ()
+               {
+                       if (listener != null) {
+                               listener.Stop ();
+                               listener = null;
+                       }
+                       if (socket != null) {
+                               if (socket.State == WebSocketState.Open)
+                                       socket.CloseAsync (WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None).Wait ();
+                               socket.Dispose ();
+                               socket = null;
+                       }
+               }
+
+               [Test]
+               public void ServerHandshakeReturnCrapStatusCodeTest ()
+               {
+                       HandleHttpRequestAsync ((req, resp) => resp.StatusCode = 418);
+                       try {
+                               socket.ConnectAsync (new Uri ("ws://localhost:" + Port), CancellationToken.None).Wait ();
+                       } catch (AggregateException e) {
+                               AssertWebSocketException (e, WebSocketError.Success, typeof (WebException));
+                               return;
+                       }
+                       Assert.Fail ("Should have thrown");
+               }
+
+               [Test]
+               public void ServerHandshakeReturnWrongUpgradeHeader ()
+               {
+                       HandleHttpRequestAsync ((req, resp) => {
+                                       resp.StatusCode = 101;
+                                       resp.Headers["Upgrade"] = "gtfo";
+                               });
+                       try {
+                               socket.ConnectAsync (new Uri ("ws://localhost:" + Port), CancellationToken.None).Wait ();
+                       } catch (AggregateException e) {
+                               AssertWebSocketException (e, WebSocketError.Success);
+                               return;
+                       }
+                       Assert.Fail ("Should have thrown");
+               }
+
+               [Test]
+               public void ServerHandshakeReturnWrongConnectionHeader ()
+               {
+                       HandleHttpRequestAsync ((req, resp) => {
+                                       resp.StatusCode = 101;
+                                       resp.Headers["Upgrade"] = "websocket";
+                                       // Mono http request doesn't like the forcing, test still valid since the default connection header value is empty
+                                       //ForceSetHeader (resp.Headers, "Connection", "Foo");
+                               });
+                       try {
+                               socket.ConnectAsync (new Uri ("ws://localhost:" + Port), CancellationToken.None).Wait ();
+                       } catch (AggregateException e) {
+                               AssertWebSocketException (e, WebSocketError.Success);
+                               return;
+                       }
+                       Assert.Fail ("Should have thrown");
+               }
+
+               [Test]
+               public void EchoTest ()
+               {
+                       const string Payload = "This is a websocket test";
+
+                       Assert.AreEqual (WebSocketState.None, socket.State);
+                       socket.ConnectAsync (new Uri (EchoServerUrl), CancellationToken.None).Wait ();
+                       Assert.AreEqual (WebSocketState.Open, socket.State);
+
+                       var sendBuffer = Encoding.ASCII.GetBytes (Payload);
+                       socket.SendAsync (new ArraySegment<byte> (sendBuffer), WebSocketMessageType.Text, true, CancellationToken.None).Wait ();
+
+                       var receiveBuffer = new byte[Payload.Length];
+                       var resp = socket.ReceiveAsync (new ArraySegment<byte> (receiveBuffer), CancellationToken.None).Result;
+
+                       Assert.AreEqual (Payload.Length, resp.Count);
+                       Assert.IsTrue (resp.EndOfMessage);
+                       Assert.AreEqual (WebSocketMessageType.Text, resp.MessageType);
+                       Assert.AreEqual (Payload, Encoding.ASCII.GetString (receiveBuffer, 0, resp.Count));
+
+                       socket.CloseAsync (WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None).Wait ();
+                       Assert.AreEqual (WebSocketState.Closed, socket.State);
+               }
+
+               [Test]
+               public void CloseOutputAsyncTest ()
+               {
+                       socket.ConnectAsync (new Uri (EchoServerUrl), CancellationToken.None).Wait ();
+                       Assert.AreEqual (WebSocketState.Open, socket.State);
+
+                       socket.CloseOutputAsync (WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None).Wait ();
+                       Assert.AreEqual (WebSocketState.CloseSent, socket.State);
+
+                       var resp = socket.ReceiveAsync (new ArraySegment<byte> (new byte[0]), CancellationToken.None).Result;
+                       Assert.AreEqual (WebSocketState.Closed, socket.State);
+                       Assert.AreEqual (WebSocketMessageType.Close, resp.MessageType);
+                       Assert.AreEqual (WebSocketCloseStatus.NormalClosure, resp.CloseStatus);
+                       Assert.AreEqual (string.Empty, resp.CloseStatusDescription);
+               }
+
+               [Test]
+               public void CloseAsyncTest ()
+               {
+                       socket.ConnectAsync (new Uri (EchoServerUrl), CancellationToken.None).Wait ();
+                       Assert.AreEqual (WebSocketState.Open, socket.State);
+
+                       socket.CloseAsync (WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None).Wait ();
+                       Assert.AreEqual (WebSocketState.Closed, socket.State);
+               }
+
+               [Test, ExpectedException (typeof (InvalidOperationException))]
+               public void SendAsyncArgTest_NotConnected ()
+               {
+                       socket.SendAsync (new ArraySegment<byte> (new byte[0]), WebSocketMessageType.Text, true, CancellationToken.None);
+               }
+
+               [Test, ExpectedException (typeof (ArgumentNullException))]
+               public void SendAsyncArgTest_NoArray ()
+               {
+                       socket.ConnectAsync (new Uri (EchoServerUrl), CancellationToken.None).Wait ();
+                       socket.SendAsync (new ArraySegment<byte> (), WebSocketMessageType.Text, true, CancellationToken.None);
+               }
+
+               [Test, ExpectedException (typeof (InvalidOperationException))]
+               public void ReceiveAsyncArgTest_NotConnected ()
+               {
+                       socket.ReceiveAsync (new ArraySegment<byte> (new byte[0]), CancellationToken.None);
+               }
+
+               [Test, ExpectedException (typeof (ArgumentNullException))]
+               public void ReceiveAsyncArgTest_NoArray ()
+               {
+                       socket.ConnectAsync (new Uri (EchoServerUrl), CancellationToken.None).Wait ();
+                       socket.ReceiveAsync (new ArraySegment<byte> (), CancellationToken.None);
+               }
+
+               [Test]
+               public void ReceiveAsyncWrongState_Closed ()
+               {
+                       try {
+                               socket.ConnectAsync (new Uri (EchoServerUrl), CancellationToken.None).Wait ();
+                               socket.CloseAsync (WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None).Wait ();
+                               socket.ReceiveAsync (new ArraySegment<byte> (new byte[0]), CancellationToken.None).Wait ();
+                       } catch (AggregateException e) {
+                               AssertWebSocketException (e, WebSocketError.Success);
+                               return;
+                       }
+                       Assert.Fail ("Should have thrown");
+               }
+
+               [Test]
+               public void SendAsyncWrongState_Closed ()
+               {
+                       try {
+                               socket.ConnectAsync (new Uri (EchoServerUrl), CancellationToken.None).Wait ();
+                               socket.CloseAsync (WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None).Wait ();
+                               socket.SendAsync (new ArraySegment<byte> (new byte[0]), WebSocketMessageType.Text, true, CancellationToken.None).Wait ();
+                       } catch (AggregateException e) {
+                               AssertWebSocketException (e, WebSocketError.Success);
+                               return;
+                       }
+                       Assert.Fail ("Should have thrown");
+               }
+
+               [Test]
+               public void SendAsyncWrongState_CloseSent ()
+               {
+                       try {
+                               socket.ConnectAsync (new Uri (EchoServerUrl), CancellationToken.None).Wait ();
+                               socket.CloseOutputAsync (WebSocketCloseStatus.NormalClosure, string.Empty, CancellationToken.None).Wait ();
+                               socket.SendAsync (new ArraySegment<byte> (new byte[0]), WebSocketMessageType.Text, true, CancellationToken.None).Wait ();
+                       } catch (AggregateException e) {
+                               AssertWebSocketException (e, WebSocketError.Success);
+                               return;
+                       }
+                       Assert.Fail ("Should have thrown");
+               }
+
+               async Task HandleHttpRequestAsync (Action<HttpListenerRequest, HttpListenerResponse> handler)
+               {
+                       var ctx = await listener.GetContextAsync ();
+                       handler (ctx.Request, ctx.Response);
+                       ctx.Response.Close ();
+               }
+
+               void AssertWebSocketException (AggregateException e, WebSocketError error, Type inner = null)
+               {
+                       var wsEx = e.InnerException as WebSocketException;
+                       Console.WriteLine (e.InnerException.ToString ());
+                       Assert.IsNotNull (wsEx, "Not a websocketexception");
+                       Assert.AreEqual (error, wsEx.WebSocketErrorCode);
+                       if (inner != null) {
+                               Assert.IsNotNull (wsEx.InnerException);
+                               Assert.IsInstanceOfType (inner, wsEx.InnerException);
+                       }
+               }
+
+               void ForceSetHeader (WebHeaderCollection headers, string name, string value)
+               {
+                       if (headerSetMethod == null)
+                               headerSetMethod = typeof (WebHeaderCollection).GetMethod ("AddValue", BindingFlags.NonPublic);
+                       headerSetMethod.Invoke (headers, new[] { name, value });
+               }
+       }
+}
+
+#endif
index 611df7bf51450b09604ce05414ece68ad2b705e9..44797640651c31745e21743823130c9c33b91ec3 100644 (file)
@@ -32,7 +32,7 @@ namespace MonoTests.System.Net
                        site1Dot = "96.126.105.110",\r
                        site2Name = "info.diku.dk",\r
                        site2Dot = "130.225.96.4",\r
-                       noneExistingSite = "www.unlikely.novell.com";\r
+                       noneExistingSite = "unlikely.xamarin.com";\r
                private uint site1IP = 1852407392, site2IP = 2195808260; // Big-Endian\r
 \r
                [Test]\r
index 7c05b4224d0b4a10ab36b3428ba49fab975ec88c..2fc05090ef4253afc62cc57d7f9936a64063c807 100644 (file)
@@ -203,7 +203,11 @@ namespace MonoTests.System.Net
                [Test]
                public void DownloadFile1 ()
                {
-                       ServerDownload sp = new ServerDownload ();
+                       DownloadFile (new ServerDownload ());
+               }
+
+               void DownloadFile (ServerDownload sp)
+               {
                        sp.Start ();
                        string uri = String.Format ("ftp://{0}:{1}/file.txt", sp.IPAddress, sp.Port);
                        try {
@@ -228,6 +232,14 @@ namespace MonoTests.System.Net
                        }
                }
 
+               [Test]
+               public void DownloadFile2 ()
+               {
+                       // Some embedded FTP servers in Industrial Automation Hardware report
+                       // the PWD using backslashes, but allow forward slashes for CWD.
+                       DownloadFile (new ServerDownload (@"\Users\someuser", "/Users/someuser/"));
+               }
+
                [Test]
                public void DeleteFile1 ()
                {
@@ -377,6 +389,20 @@ namespace MonoTests.System.Net
                }
 
                class ServerDownload : FtpServer {
+
+                       string Pwd, Cwd;
+
+                       public ServerDownload ()
+                               : this (null, null)
+                       {
+                       }
+
+                       public ServerDownload (string pwd, string cwd)
+                       {
+                               Pwd = pwd ?? "/home/someuser";
+                               Cwd = cwd ?? "/home/someuser/";
+                       }
+
                        protected override void Run ()
                        {
                                Socket client = control.Accept ();
@@ -388,7 +414,7 @@ namespace MonoTests.System.Net
                                        return;
                                }
 
-                               if (!DoInitialDialog (writer, reader, "/home/someuser", "/home/someuser/")) {
+                               if (!DoInitialDialog (writer, reader, Pwd, Cwd)) {
                                        client.Close ();
                                        return;
                                }
index c2bd8ec5ca16b8dbda6e15f29171ea79ec783c7e..f0826d1c9902938fe975f2a12554f06926ef5876 100644 (file)
@@ -1482,7 +1482,7 @@ namespace MonoTests.System.Net
 
                        if (timeoutWorker.End == null) {
                                thread.Abort ();
-                               Assert.Fail ("Thread did not finish after double the timout specified passed");
+                               Assert.Fail ("Thread finished after triple the timeout specified has passed");
                        }
 
                        if (!String.IsNullOrEmpty (timeoutWorker.Body)) {
@@ -1502,7 +1502,8 @@ namespace MonoTests.System.Net
                        Assert.AreEqual (webEx.Status, WebExceptionStatus.Timeout,
                                         "WebException was thrown, but with a wrong status (should be timeout): " + webEx.Status);
 
-                       Assert.IsFalse (timeoutWorker.End > (timeoutWorker.Start + TimeSpan.FromMilliseconds (three_seconds_in_milliseconds + 500)));
+                       Assert.IsFalse (timeoutWorker.End > (timeoutWorker.Start + TimeSpan.FromMilliseconds (three_seconds_in_milliseconds + 500)),
+                                       "Timeout exception should have been thrown shortly after timeout is reached, however it was at least half-second late");
                }
 
                [Test] // 1st possible case of https://bugzilla.novell.com/show_bug.cgi?id=MONO74177
@@ -2479,7 +2480,40 @@ namespace MonoTests.System.Net
 
                        Assert.AreEqual (null, req.Headers.Get ("Date"));
                }
+               
+               [Test]
+               // Bug #12393
+               public void TestIPv6Host ()
+               {
+                       var address = "2001:0000:0000:0001:0001:0001:0157:0000";
+                       var address2 = '[' + address + ']';
+                       var uri = new Uri (string.Format ("http://{0}/test.css", address2));
+                       var hwr = (HttpWebRequest)WebRequest.Create (uri);
+
+                       hwr.Host = address2;
+                       Assert.AreEqual (address2, hwr.Host, "#1");
+               }
+
+               [Test]
+               // Bug #12393
+               [Category ("NotWorking")]
+               public void TestIPv6Host2 ()
+               {
+                       var address = "2001:0000:0000:0001:0001:0001:0157:0000";
+                       var address2 = '[' + address + ']';
+                       var uri = new Uri (string.Format ("http://{0}/test.css", address2));
+                       var hwr = (HttpWebRequest)WebRequest.Create (uri);
+
+                       try {
+                               hwr.Host = address;
+                               Assert.Fail ("#1");
+                       } catch (ArgumentException) {
+                               ;
+                       }
+               }
 #endif
+
+
                class ListenerScope : IDisposable {
                        EventWaitHandle completed;
                        public HttpListener listener;
index 0a860c137ed04d3e169a1a7648aecfc8e63ae7f8..9439f666cc81426a827153c47709eefe32fae101 100644 (file)
@@ -284,14 +284,9 @@ namespace MonoTests.System.Security.Cryptography.X509Certificates {
                public void StaticCreation () 
                {
                        X509Chain c = X509Chain.Create ();
-#if MOBILE
-                       Assert.IsNull (c);
-#else
                        CheckDefaultChain (c);
-#endif
                }
 
-#if !MOBILE
                [Test]
                public void CreateViaCryptoConfig ()
                {
@@ -299,7 +294,6 @@ namespace MonoTests.System.Security.Cryptography.X509Certificates {
                        Assert.AreEqual (typeof (X509Chain), CryptoConfig.CreateFromName ("X509Chain").GetType (), "X509Chain");
                        Assert.IsNull (CryptoConfig.CreateFromName ("System.Security.Cryptography.X509Certificates.X509Chain"), "System.Security.Cryptography.X509Certificates.X509Chain");
                }
-#endif
        }
 }
 
index 3c0c66dd5d7eefc306bc942a7a184b3e9e75c53f..508e1307993018782d889aeea5da971a371de287 100644 (file)
@@ -1876,5 +1876,17 @@ namespace MonoTests.System
                        string escaped = uri.GetComponents (UriComponents.Fragment, UriFormat.UriEscaped);
                        Assert.AreEqual ("id=1%262&sort=asc", escaped, "UriEscaped");
                }
+
+               [Test]
+               // Bug #12631
+               public void LocalPathWithBaseUrl ()
+               {
+                       var mainUri = new Uri ("http://www.imdb.com");
+                       var uriPath = "/title/tt0106521";
+
+                       Uri result;
+                       Assert.IsTrue (Uri.TryCreate (mainUri, uriPath, out result), "#1");
+                       Assert.AreEqual ("http://www.imdb.com/title/tt0106521", result.ToString (), "#2");
+               }
        }
 }
index da4e7c4d5503344a62c467c9947dafc8f5882368..8fe73931954eb6023ebd7176a3a88b0fb135c95c 100644 (file)
@@ -181,6 +181,9 @@ namespace MonoTests.System
                        uri = new Uri ("http://dummy.com");
                        Assert.IsTrue (Uri.TryCreate (relative, UriKind.Relative, out uri), "relative-Relative");
                        Assert.AreEqual (relative, uri.OriginalString, "relative-RelativeOrAbsolute-OriginalString");
+
+                       Assert.IsTrue (Uri.TryCreate ("http://mono-project.com/☕", UriKind.Absolute, out uri), "highunicode-Absolute");
+                       Assert.AreEqual("http://mono-project.com/%E2%98%95", uri.AbsoluteUri, "highunicode-Absolute-AbsoluteUri");
                }
 
                [Test] // TryCreate (String, UriKind, Uri)
index 8b5c746266977ce59eb19e3323925218f655d790..0b17914cef9e367edec9c3325d58a07670a0dce6 100644 (file)
@@ -20,6 +20,8 @@ System.Collections.Specialized/HybridDictionary.cs
 System.Collections.Specialized/ListDictionary.cs
 System.Collections.Specialized/NameObjectCollectionBase.cs
 System.Collections.Specialized/NameValueCollection.cs
+System.Collections.Specialized/IOrderedDictionary.cs
+System.Collections.Specialized/OrderedDictionary.cs
 System.Collections.Specialized/ProcessStringDictionary.cs
 System.Collections.Specialized/StringCollection.cs
 System.Collections.Specialized/StringDictionary.cs
diff --git a/mcs/class/System/mobile_static_System.dll.sources b/mcs/class/System/mobile_static_System.dll.sources
new file mode 100644 (file)
index 0000000..7bb9316
--- /dev/null
@@ -0,0 +1,76 @@
+#include mobile_System.dll.sources
+MonoTouch/MonoPInvokeCallbackAttribute.cs
+../Mono.Security/Mono.Security.Authenticode/PrivateKey.cs
+../Mono.Security/Mono.Security.Cryptography/MD5SHA1.cs
+../Mono.Security/Mono.Security.Cryptography/TlsHMAC.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
+../Mono.Security/Mono.Security.Protocol.Tls/Alert.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteCollection.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientContext.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientRecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientSessionCache.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ContentType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/Context.cs
+../Mono.Security/Mono.Security.Protocol.Tls/DebugHelper.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HandshakeState.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityParameters.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ServerContext.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslCipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslHandshakeHash.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsCipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsClientSettings.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsException.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsServerSettings.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/ClientCertificateType.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeMessage.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeType.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
+../Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/GeneralNames.cs
+../Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
index 8dce31d234c5b119f6502c1b4dbf3c9b3baf94c0..7bb9316feb58c8635592e618ee4b6865d842aa51 100644 (file)
@@ -1,2 +1,76 @@
 #include mobile_System.dll.sources
 MonoTouch/MonoPInvokeCallbackAttribute.cs
+../Mono.Security/Mono.Security.Authenticode/PrivateKey.cs
+../Mono.Security/Mono.Security.Cryptography/MD5SHA1.cs
+../Mono.Security/Mono.Security.Cryptography/TlsHMAC.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/ChallengeResponse2.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/MessageBase.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmAuthLevel.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/NtlmFlags.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type1Message.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type2Message.cs
+../Mono.Security/Mono.Security.Protocol.Ntlm/Type3Message.cs
+../Mono.Security/Mono.Security.Protocol.Tls/Alert.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteCollection.cs
+../Mono.Security/Mono.Security.Protocol.Tls/CipherSuiteFactory.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientContext.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientRecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ClientSessionCache.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ContentType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/Context.cs
+../Mono.Security/Mono.Security.Protocol.Tls/DebugHelper.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ExchangeAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HandshakeState.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HashAlgorithmType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/HttpsClientStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureDeformatter.cs
+../Mono.Security/Mono.Security.Protocol.Tls/RSASslSignatureFormatter.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityCompressionType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityParameters.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SecurityProtocolType.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ServerContext.cs
+../Mono.Security/Mono.Security.Protocol.Tls/ServerRecordProtocol.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslClientStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslCipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslHandshakeHash.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslServerStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls/SslStreamBase.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsCipherSuite.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsClientSettings.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsException.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsServerSettings.cs
+../Mono.Security/Mono.Security.Protocol.Tls/TlsStream.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/ClientCertificateType.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeMessage.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake/HandshakeType.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientCertificateVerify.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsClientKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerCertificateRequest.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerHelloDone.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Client/TlsServerKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientCertificateVerify.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsClientKeyExchange.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificate.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerCertificateRequest.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerFinished.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHello.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerHelloDone.cs
+../Mono.Security/Mono.Security.Protocol.Tls.Handshake.Server/TlsServerKeyExchange.cs
+../Mono.Security/Mono.Security.X509.Extensions/AuthorityKeyIdentifierExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/ExtendedKeyUsageExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/GeneralNames.cs
+../Mono.Security/Mono.Security.X509.Extensions/NetscapeCertTypeExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/SubjectAltNameExtension.cs
index d2df217d39b3544b0cea6a0b62b9849a99df6a50..0c31fd647f949bc8cb505121942259d30050cc04 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FA446F0C-75D2-439A-9C1D-81CB6EDB8953}</ProjectGuid>\r
+    <ProjectGuid>{C13E6BD8-A2FC-41C2-B21B-9BF414BB4DA0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\SystemWebTestShim-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_2_0-1.csproj">\r
-      <Project>{AAF21FBC-A48A-430A-8B9E-0EEF65869221}</Project>\r
+      <Project>{3BAE9384-0A9D-4505-ABED-6D41949763D3}</Project>\r
       <Name>System.Web\System.Web-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2c50daa4eba538dbbc846a17b7a6cd597c2fdba3..e80e8f212906a2bef6b0f3d0025e62b9cca75d63 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{2CA35670-6F91-4423-A36A-12560A182E0D}</ProjectGuid>\r
+    <ProjectGuid>{08486D58-12AA-4B53-82F7-1B2C62EAE9D5}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\SystemWebTestShim-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_0-1.csproj">\r
-      <Project>{D9409D43-8919-4A4C-A7B5-77383840CD35}</Project>\r
+      <Project>{77D30907-035D-4382-AA43-5A8EE294EA33}</Project>\r
       <Name>System.Web\System.Web-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index f636b6a116e94ca28c4daa65119707696f733d56..235e9afaa644d40980952a3bed54554650cc09c1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}</ProjectGuid>\r
+    <ProjectGuid>{3D24376B-ECC8-4E7B-9433-C77CC67880AA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\SystemWebTestShim-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Web\System.Web-net_4_5-1.csproj">\r
-      <Project>{A945645C-6DF3-414E-B5F1-25DC35C95136}</Project>\r
+      <Project>{6CC04C44-1378-4502-B134-FE6D46B1A4B4}</Project>\r
       <Name>System.Web\System.Web-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 516b21cb39763c9dcbe62312ed38d34032739ac3..e91eb4bfda787a4c2c8017ee0acb1ce09f57eaaa 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{320524F1-AA91-4BC3-B88C-8E0AECEE1CCC}</ProjectGuid>\r
+    <ProjectGuid>{5AEB6A6A-C5EF-433B-B668-2066172D2D80}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WebMatrix.Data-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 584efc15f6d11ee48fde505d7b8c91bd87b6710e..8997f52b912e10a48a49d941c95d71c21390e177 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}</ProjectGuid>\r
+    <ProjectGuid>{A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WebMatrix.Data-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9f921447bc59377a521f8f37c3dc7763aa7d7855..c93daf9a3c663d8cfe3d68065f9754ee4d3dd6e5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{92D24812-C6DC-411F-9AD8-B2E9EFBD9138}</ProjectGuid>\r
+    <ProjectGuid>{AD5F22B4-1F90-4549-9284-331B941F6F4A}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WebMatrix.Data-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WebMatrix.Data\WebMatrix.Data-net_4_0.csproj">\r
-      <Project>{320524F1-AA91-4BC3-B88C-8E0AECEE1CCC}</Project>\r
+      <Project>{5AEB6A6A-C5EF-433B-B668-2066172D2D80}</Project>\r
       <Name>WebMatrix.Data\WebMatrix.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_0.csproj">\r
-      <Project>{6865A6A5-DF93-45C7-BE83-F06907EC81F8}</Project>\r
+      <Project>{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}</Project>\r
       <Name>System.Data\System.Data-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj">\r
-      <Project>{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}</Project>\r
+      <Project>{F26434C1-BA3D-41FB-B560-C009CB72B1B6}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_0.csproj">\r
-      <Project>{56A7FA9E-7F2B-4BCB-8523-FD4EEE876BE0}</Project>\r
+      <Project>{342E1BD0-A935-4D49-B71E-ECDF0B42F90F}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 08204cefef7358954ddf9a4867dd8b45a7f5c9d7..d4109788d708b0ec1b639ea57009374196a3a59b 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{57596539-1B39-4CF2-9586-383EF5AB45DB}</ProjectGuid>\r
+    <ProjectGuid>{4D33E714-F07E-44AC-9998-705170E29818}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WebMatrix.Data-tests-net_4_5</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WebMatrix.Data\WebMatrix.Data-net_4_5.csproj">\r
-      <Project>{37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}</Project>\r
+      <Project>{A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}</Project>\r
       <Name>WebMatrix.Data\WebMatrix.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Data\System.Data-net_4_5.csproj">\r
-      <Project>{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}</Project>\r
+      <Project>{663D8C81-B74E-4D44-8C59-2264C6942B30}</Project>\r
       <Name>System.Data\System.Data-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj">\r
-      <Project>{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}</Project>\r
+      <Project>{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}</Project>\r
       <Name>Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj">\r
-      <Project>{94E8FEFF-9695-4F77-A8AB-85370336FE0D}</Project>\r
+      <Project>{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}</Project>\r
       <Name>Microsoft.CSharp\Microsoft.CSharp-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 1ea166cd9ac3134a1165f5513852e53a8112fb9d..2ec5f3be0b489652f82eb7d21ab39be1c4241b0c 100644 (file)
@@ -42,31 +42,31 @@ namespace System.Collections.ObjectModel
 {
        [Serializable]
        public class ObservableCollection<T> : Collection<T>, INotifyCollectionChanged, INotifyPropertyChanged {
-               
-               private class Reentrant : IDisposable {
-                       private int count = 0;
+               [Serializable]
+               sealed class SimpleMonitor : IDisposable {
+                       private int _busyCount;
 
-                       public Reentrant()
+                       public SimpleMonitor()
                        {
                        }
 
                        public void Enter()
                        {
-                               count++;
+                               _busyCount++;
                        }
 
                        public void Dispose()
                        {
-                               count--;
+                               _busyCount--;
                        }
 
                        public bool Busy
                        {
-                               get { return count > 0; }
+                               get { return _busyCount > 0; }
                        }
                }
 
-               private Reentrant reentrant = new Reentrant ();
+               private SimpleMonitor _monitor = new SimpleMonitor ();
 
                public ObservableCollection()
                {
@@ -86,7 +86,9 @@ namespace System.Collections.ObjectModel
                {
                }
 
+               [field:NonSerialized]
                public virtual event NotifyCollectionChangedEventHandler CollectionChanged;
+               [field:NonSerialized]
                protected virtual event PropertyChangedEventHandler PropertyChanged;
 
                event PropertyChangedEventHandler INotifyPropertyChanged.PropertyChanged {
@@ -96,8 +98,8 @@ namespace System.Collections.ObjectModel
 
                protected IDisposable BlockReentrancy ()
                {
-                       reentrant.Enter ();
-                       return reentrant;
+                       _monitor.Enter ();
+                       return _monitor;
                }
 
                protected void CheckReentrancy ()
@@ -105,7 +107,7 @@ namespace System.Collections.ObjectModel
                        NotifyCollectionChangedEventHandler eh = CollectionChanged;
 
                        // Only have a problem if we have more than one event listener.
-                       if (reentrant.Busy && eh != null && eh.GetInvocationList ().Length > 1)
+                       if (_monitor.Busy && eh != null && eh.GetInvocationList ().Length > 1)
                                throw new InvalidOperationException ("Cannot modify the collection while reentrancy is blocked.");
                }
 
index 9160f30bbe6879bb260376c3b6fbc53ee084b5c5..8e02384f58f00960e473c9c83bf7b90d76f5301b 100644 (file)
@@ -237,7 +237,7 @@ namespace System.IO.Packaging {
                {
                        while (true)
                        {
-                               string s = relationshipId.ToString ();
+                               string s = "Re" + relationshipId.ToString ();
                                if (!RelationshipExists (s))
                                        return s;
                                relationshipId ++;
@@ -262,4 +262,4 @@ namespace System.IO.Packaging {
                                Package.WriteRelationships (Relationships, s);
                }
        }
-}
\ No newline at end of file
+}
index 943e2407da7dcb23b7656abe1e08f0d6338cdf43..d9de2772a17c54966073d64dc35a1933137b08df 100644 (file)
@@ -83,7 +83,7 @@ namespace System.Windows {
                
                public object GetValue(DependencyProperty dp)
                {
-                       object val = properties[dp];
+                       object val = properties.ContainsKey (dp) ? properties [dp] : null;
                        return val == null ? dp.DefaultMetadata.DefaultValue : val;
                }
                
@@ -102,7 +102,7 @@ namespace System.Windows {
                
                public object ReadLocalValue(DependencyProperty dp)
                {
-                       object val = properties[dp];
+                       object val = properties.ContainsKey (dp) ? properties [dp] : null;
                        return val == null ? DependencyProperty.UnsetValue : val;
                }
                
index 31bdad96fcc0e149a51f9e4efa055f4d1a204969..2700953a8b275e9acbb43c8ec197c9df9fcad8e9 100644 (file)
@@ -59,6 +59,10 @@ namespace MonoTests.System.Windows {
        class Y : DependencyObject {
        }
 
+       class DefaultValueTest : DependencyObject {
+               public static readonly DependencyProperty AProperty = DependencyProperty.Register("A", typeof(string), typeof(DefaultValueTest), new PropertyMetadata("defaultValueTest"));
+       }
+
        [TestFixture]
        public class DependencyObjectTest {
                [Test]
@@ -105,5 +109,12 @@ namespace MonoTests.System.Windows {
                        Assert.AreEqual(2, count);
                }
 
+               [Test]
+               public void TestDefaultValue()
+               {
+                       DefaultValueTest obj = new DefaultValueTest ();
+                       Assert.AreEqual (obj.GetValue(DefaultValueTest.AProperty), "defaultValueTest");
+               }
+
        }
 }
index ae4bc6e50d227acde1bb8afafe2a8bdf58a6187a..4e785b34529dc1f32fea84cb58f271bb25495a22 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{FA9820E4-3756-46DD-A2A0-8508F4F043EA}</ProjectGuid>\r
+    <ProjectGuid>{6FC343B3-4186-4DB7-B678-3BDFEF0065CD}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-net_2_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 2fb92bb3c91ae651559b9d2c861432018fe49b8e..1f2dad75c0d918be2c3b39c6d1d31173ff568dc7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7063C843-FB21-477B-ACC4-DA51C8C374E9}</ProjectGuid>\r
+    <ProjectGuid>{E016C66E-35A6-4A95-BD35-AF13FBCD3DA0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_0.csproj">\r
-      <Project>{BBF0A00E-6A3D-4ECF-9272-C93076D628E7}</Project>\r
+      <Project>{98E9FB98-226C-4256-A22A-91819C4C33B6}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ae11377b991c788ea5696d178a4b8f15702fafe6..3bc913fa5b8a032ee033fe3a086500ee5e173c02 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{6D23A57D-01AF-4266-8E58-C16E732FCF81}</ProjectGuid>\r
+    <ProjectGuid>{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_5.csproj">\r
-      <Project>{690E0C87-8516-4F5D-B105-1FEDC19AE99A}</Project>\r
+      <Project>{2E8547F9-AE9C-4179-BC88-C0695369170B}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index ab31ef2d771578628a063422eed7ad5510f53502..0ed7508a9e7e82a7fbab7f7eac05d8ac08b68184 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{924FFCB7-F0CC-4F03-9792-87B0208128EC}</ProjectGuid>\r
+    <ProjectGuid>{BDCD7137-667B-4488-9B53-7D6CF37E45B6}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-tests-net_2_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_2_0.csproj">\r
-      <Project>{FA9820E4-3756-46DD-A2A0-8508F4F043EA}</Project>\r
+      <Project>{6FC343B3-4186-4DB7-B678-3BDFEF0065CD}</Project>\r
       <Name>WindowsBase\WindowsBase-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_2_0.csproj">\r
-      <Project>{FA9820E4-3756-46DD-A2A0-8508F4F043EA}</Project>\r
+      <Project>{6FC343B3-4186-4DB7-B678-3BDFEF0065CD}</Project>\r
       <Name>WindowsBase\WindowsBase-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_2_0-2.csproj">\r
-      <Project>{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}</Project>\r
+      <Project>{79F25FD7-0D76-4526-AF39-1A648649A827}</Project>\r
       <Name>System\System-net_2_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_2_0-1.csproj">\r
-      <Project>{205A8E90-88CC-4B46-8151-87FA90B666A5}</Project>\r
+      <Project>{D9776E38-7673-45F6-BF19-7B77830DF9CA}</Project>\r
       <Name>System.XML\System.Xml-net_2_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9b7f7f2d202d44b5f429150d39216931c71cba54..1bc72234ac809c3fabb28de213f4c585f8881f14 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4272351D-956F-4B59-9C7F-46A857D37A71}</ProjectGuid>\r
+    <ProjectGuid>{99E17164-FD6F-4058-AD77-00ECEB685C9B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-tests-net_4_0</OutputPath>\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_0.csproj">\r
-      <Project>{7063C843-FB21-477B-ACC4-DA51C8C374E9}</Project>\r
+      <Project>{E016C66E-35A6-4A95-BD35-AF13FBCD3DA0}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_0.csproj">\r
-      <Project>{7063C843-FB21-477B-ACC4-DA51C8C374E9}</Project>\r
+      <Project>{E016C66E-35A6-4A95-BD35-AF13FBCD3DA0}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_0.csproj">\r
-      <Project>{BBF0A00E-6A3D-4ECF-9272-C93076D628E7}</Project>\r
+      <Project>{98E9FB98-226C-4256-A22A-91819C4C33B6}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 5506f371bedf0c644b777cdbb2426a1333f6a5db..589bc53ce45f26c006f6cfeffc57673d3c344ab6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AB097D8E-4AD6-4120-B75C-306E274727D4}</ProjectGuid>\r
+    <ProjectGuid>{E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\WindowsBase-tests-net_4_5</OutputPath>\r
@@ -87,8 +87,7 @@
     <Compile Include="Test\System.Windows\SizeConverterTest.cs" />\r
     <Compile Include="Test\System.Windows\SizeTest.cs" />\r
     <Compile Include="Test\System.Windows\VectorConverterTest.cs" />\r
-    <Compile Include="Test\System.Windows\VectorTest.cs" />\r
-  </ItemGroup>\r
+    <Compile Include="Test\System.Windows\VectorTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="BeforeBuild">\r
@@ -98,6 +97,7 @@
   -->\r
   <PropertyGroup>\r
     <PreBuildEvent>\r
+\r
     </PreBuildEvent>\r
     <PostBuildEvent>\r
       xcopy $(TargetName).* $(ProjectDir)..\lib\net_4_5\ /Y /R /D\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_5.csproj">\r
-      <Project>{6D23A57D-01AF-4266-8E58-C16E732FCF81}</Project>\r
+      <Project>{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}</Project>\r
+      <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
+    </ProjectReference>\r
+    <ProjectReference Include="..\WindowsBase\WindowsBase-net_4_5.csproj">\r
+      <Project>{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}</Project>\r
       <Name>WindowsBase\WindowsBase-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xaml\System.Xaml-net_4_5.csproj">\r
-      <Project>{690E0C87-8516-4F5D-B105-1FEDC19AE99A}</Project>\r
+      <Project>{2E8547F9-AE9C-4179-BC88-C0695369170B}</Project>\r
       <Name>System.Xaml\System.Xaml-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
-</Project>\r
+</Project>
index 999738f5ffecea4bc6f00b58924b4b558eaa9f0a..2b3026c2ce71135c53e5c9d6fbf8f705198af625 100644 (file)
@@ -10,10 +10,23 @@ using System.Xml.XPath;
 var template_android = File.ReadAllText ("project_template_android.txt");
 var template_ios = File.ReadAllText ("project_template_ios.txt");
 
-var guids_android = new string [] { "4fa878dc-6e88-43c4-b37b-8c1151cec56f", "fef62c23-10cd-4def-a5ae-54a8b309e970", "d263c126-9d3c-4299-a0c1-f25c703d07c9", "ec704077-ea31-4852-ad24-6732244174c0", "9360e845-d79d-4288-9100-63a80fad2bf0", "00dc3654-e373-4e3f-80fe-109f795adf1f", "e662282b-4341-4f86-aaaa-a942335b47fb", "a153a379-670c-42c2-9018-fc0d933a4f7f", "b29d45a6-0b8c-49c5-82a2-457e4d3cbc33", "3a3b5e76-029f-46b0-9ccf-fefe06eb61e7", "cb2ab716-bfcb-43bc-a03b-a3bda427746c", "73c5260f-8972-4e7c-822b-1a3a0358fa0b" };
-var guids_ios = new string [] { "6f2675f5-fcc7-4a28-9dc3-657b4613dcc5", "a67f34b5-75c1-4319-a93e-93df87e728a4", "79a43ceb-1a18-49ea-aac4-b72b9c90bf5a", "0a977063-0796-4cd4-84b8-aedb2d648b26", "b41cb61a-dca0-4539-8f99-7b3499e18e6d", "24f995bd-7075-489c-b7a5-7fde08c304b6", "894021ec-14fb-430a-8572-bea9569ae435", "92857c8e-0e83-4d02-a831-8af3fed43336", "912e14a2-7bdf-4600-8d55-e8c4f33a2063", "0f6c2933-8d0c-41e6-9f77-e8714ab8c4ab", "47d85a91-e8e2-4088-bf5a-68a161754d48", "45377009-1425-47fc-985e-05f98022f9e3" };
+var guids_android = new string [] { 
+// Ix
+"5F7F40B6-19D3-48C7-8E15-AE1F976F60E1", "065F2411-7610-4AD6-9513-A1EFFCE576C0",
+"C4037060-1692-4423-B29E-76F3A74A72A5",
+// Rx
+"4fa878dc-6e88-43c4-b37b-8c1151cec56f", "fef62c23-10cd-4def-a5ae-54a8b309e970", "d263c126-9d3c-4299-a0c1-f25c703d07c9", "ec704077-ea31-4852-ad24-6732244174c0", "9360e845-d79d-4288-9100-63a80fad2bf0", "00dc3654-e373-4e3f-80fe-109f795adf1f", "e662282b-4341-4f86-aaaa-a942335b47fb", "a153a379-670c-42c2-9018-fc0d933a4f7f", "b29d45a6-0b8c-49c5-82a2-457e4d3cbc33", "3a3b5e76-029f-46b0-9ccf-fefe06eb61e7", "cb2ab716-bfcb-43bc-a03b-a3bda427746c", "73c5260f-8972-4e7c-822b-1a3a0358fa0b" };
+var guids_ios = new string [] {
+// Ix
+"AD6FCBE9-0F6A-4F27-8147-17AB1C8799A2", "220AD2F1-FEE9-4514-8F36-6BE37F0AAD7F",
+"4779C7FF-6969-4715-9389-DF6C43655D6F",
+// Rx
+"6f2675f5-fcc7-4a28-9dc3-657b4613dcc5", "a67f34b5-75c1-4319-a93e-93df87e728a4", "79a43ceb-1a18-49ea-aac4-b72b9c90bf5a", "0a977063-0796-4cd4-84b8-aedb2d648b26", "b41cb61a-dca0-4539-8f99-7b3499e18e6d", "24f995bd-7075-489c-b7a5-7fde08c304b6", "894021ec-14fb-430a-8572-bea9569ae435", "92857c8e-0e83-4d02-a831-8af3fed43336", "912e14a2-7bdf-4600-8d55-e8c4f33a2063", "0f6c2933-8d0c-41e6-9f77-e8714ab8c4ab", "47d85a91-e8e2-4088-bf5a-68a161754d48", "45377009-1425-47fc-985e-05f98022f9e3" };
 
 var asses = new string [] {
+       "System.Interactive",
+       "System.Interactive.Async",
+       "System.Interactive.Providers",
        "System.Reactive.Interfaces",
        "System.Reactive.Core",
        "System.Reactive.PlatformServices",
@@ -45,20 +58,28 @@ var blacklist = new string [] {
        "ObservableConcurrencyTest.cs",
        };
 
-var dstAndroid = "../../external/rx/Rx/NET/Source/Rx_Xamarin/android";
-var dstIOS = "../../external/rx/Rx/NET/Source/Rx_Xamarin/iOS";
-
 int guid_idx = 0;
 foreach (var ass in asses) {
 
+       var ix = ass.Contains ("Interactive");
+
+       var dstAndroid = ix ? "../../external/rx/Ix/NET/Ix_Xamarin/android" :
+               "../../external/rx/Rx/NET/Source/Rx_Xamarin/android";
+       var dstIOS = ix ? "../../external/rx/Ix/NET/Ix_Xamarin/iOS" :
+               "../../external/rx/Rx/NET/Source/Rx_Xamarin/iOS";
+
+
        var monoass = ass == "Microsoft.Reactive.Testing" ?
                "Mono.Reactive.Testing" : ass;
-       var basePath = "../../external/rx/Rx/NET/Source";
+       var basePath = ix ? "../../external/rx/Ix/NET" :
+               "../../external/rx/Rx/NET/Source";
        var csproj = Path.Combine (basePath, ass, ass + ".csproj");
        var pathPrefix = ass == "Tests.System.Reactive" ? "../" : "";
 
-       var android_dir = Path.GetFullPath (Path.Combine (csproj, "..", "..", "Rx_Xamarin", "android", "rx", monoass));
-       var ios_dir = Path.GetFullPath (Path.Combine (csproj, "..", "..", "Rx_Xamarin", "iOS", "rx", monoass));
+       var category = ix ? "Ix_Xamarin" : "Rx_Xamarin";
+       var category2 = ix ? "ix" : "rx";
+       var android_dir = Path.GetFullPath (Path.Combine (csproj, "..", "..", category, "android", category2, monoass));
+       var ios_dir = Path.GetFullPath (Path.Combine (csproj, "..", "..", category, "iOS", category2, monoass));
        var android_proj = Path.Combine (android_dir, "android_" + monoass + ".csproj");
        var ios_proj = Path.Combine (ios_dir, "ios_" + monoass + ".csproj");
        if (!Directory.Exists (android_dir))
@@ -91,10 +112,6 @@ foreach (var ass in asses) {
        var projectRefsXml = "";
        var resourcesXml = "";
 
-       var signing_xml_template = "<SignAssembly>True</SignAssembly>\n    <DelaySign>True</DelaySign>\n    <AssemblyOriginatorKeyFile>../../../reactive.pub</AssemblyOriginatorKeyFile>\n";
-       var signingXml = ass.StartsWith ("System") ? signing_xml_template : "";
-       
-
        var doc = XDocument.Load (csproj);
        var rootNS = doc.XPathSelectElement ("//*[local-name()='RootNamespace']").Value;
        var guid = doc.XPathSelectElement ("//*[local-name()='ProjectGuid']").Value;
@@ -110,9 +127,10 @@ foreach (var ass in asses) {
                        .Select (el => el.Attribute ("Include").Value)
                        .Select (s => s.Replace ("\\", "/"))) {
                        if (!blacklist.Any (b => path.Contains (b))) {
-                               var p = Path.Combine ("..", basePath, ass, path);
-                               tw.WriteLine (Path.Combine (pathPrefix, p));
-                               sourcesXml += "    <Compile Include='..\\..\\..\\..\\..\\..\\" + p.Replace ('/', '\\') + "'>\n      <Link>" + path + "</Link>\n    </Compile>\n";
+                               var p = Path.Combine (ass, path);
+                               var p2 = Path.Combine ("..", basePath, ass, path);
+                               tw.WriteLine (Path.Combine (pathPrefix, p2));
+                               sourcesXml += "    <Compile Include=\"..\\..\\..\\..\\" + p.Replace ('/', '\\') + "\">\n      <Link>" + path.Replace ('/', '\\') + "</Link>\n    </Compile>\n";
                        }
                }
        }
@@ -146,13 +164,13 @@ foreach (var ass in asses) {
                string template, prj_prefix, nunitProjRef, nunitRef;
                var androidNUnit = "<ProjectReference Include=\"..\\..\\Andr.Unit\\Android.NUnitLite\\Android.NUnitLite.csproj\"><Project>{6A005891-A3D6-4398-A729-F645397D573A}</Project><Name>Android.NUnitLite</Name></ProjectReference>";
                if (f == android_proj) {
-                       prj_guid = guids_android [guid_idx];
+                       prj_guid = guids_android [guid_idx].ToUpper ();
                        template = template_android;
                        prj_prefix ="android_";
                        nunitProjRef = ass.Contains ("Test") ? androidNUnit : "";
                        nunitRef = "";
                } else {
-                       prj_guid = guids_ios [guid_idx];
+                       prj_guid = guids_ios [guid_idx].ToUpper ();
                        template = template_ios;
                        prj_prefix ="ios_";
                        nunitProjRef = "";
@@ -166,13 +184,13 @@ foreach (var ass in asses) {
                                .Replace ("OPTIONAL_MONOTOUCH_NUNITLITE", nunitRef)
                                .Replace ("PROJECT_REFERENCES_GO_HERE",
                                        projectRefsXml
+                                               .Replace (" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\"", "")
                                                .Replace ("Microsoft.Reactive.Testing", "Mono.Reactive.Testing")
                                                .Replace ("System", prj_prefix + "System")
                                                .Replace ("Mono", prj_prefix + "Mono")
                                                .Replace ("Include=\"..\\" + prj_prefix, "Include=\"..\\"))
-                               .Replace ("RESOURCES_GO_HERE", sourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\')) // whoa, BACKSLASH doesn't work only on android on MD/mac...!
-                               .Replace ("SOURCES_GO_HERE", resourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\')) // whoa, BACKSLASH doesn't work only on android on MD/mac...!
-                               .Replace ("SIGNING_SPEC_GOES_HERE", signingXml));
+                               .Replace ("RESOURCES_GO_HERE", resourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\')) // whoa, BACKSLASH doesn't work only on android on MD/mac...!
+                               .Replace ("SOURCES_GO_HERE", sourcesXml.Replace ('\\', f == ios_proj ? '/' : '\\'))); // whoa, BACKSLASH doesn't work only on android on MD/mac...!
                }
        }
        guid_idx++;
index dd231d584799095a03a99e00321c9ef6e340e00b..3000f81971b1ccdc94ecbda7dee4befe574c257f 100644 (file)
@@ -106,13 +106,18 @@ $(TEST_RESX_RESOURCES) $(TEST_RESX_RESOURCES_SATELITE): %.resources: %.resx
 
 TEST_RESOURCES = $(TEST_RESX_RESOURCES) $(TEST_RESX_RESOURCES_SATELITE)
 
-$(test_lib): $(TEST_RESOURCES) satellite-assemblies
+satellite_assembly1 = es-ES/$(patsubst %.dll,%.resources.dll,$(test_lib))
+satellite_assembly2 = nn-NO/$(patsubst %.dll,%.resources.dll,$(test_lib))
 
-satellite-assemblies:
+$(test_lib): $(TEST_RESOURCES) $(satellite_assembly1) $(satellite_assembly2) 
+
+$(satellite_assembly1): Test/resources/culture-es-ES.cs Test/resources/Resources.es-ES.resources
        @mkdir -p es-ES
-       $(CSCOMPILE) -target:library -r:$(corlib) Test/resources/culture-es-ES.cs -resource:Test/resources/Resources.es-ES.resources -out:es-ES/$(patsubst %.dll,%.Resources.dll,$(test_lib))
+       $(CSCOMPILE) -target:library -r:$(corlib) Test/resources/culture-es-ES.cs -resource:Test/resources/Resources.es-ES.resources -out:$@
+
+$(satellite_assembly2): Test/resources/culture-nn-NO.cs Test/resources/Resources.nn-NO.resources
        @mkdir -p nn-NO
-       $(CSCOMPILE) -target:library -r:$(corlib) Test/resources/culture-nn-NO.cs -resource:Test/resources/Resources.nn-NO.resources -out:nn-NO/$(patsubst %.dll,%.Resources.dll,$(test_lib))
+       $(CSCOMPILE) -target:library -r:$(corlib) Test/resources/culture-nn-NO.cs -resource:Test/resources/Resources.nn-NO.resources -out:$@
 
 vtsdir = Test/System.Runtime.Serialization.Formatters.Binary/VersionTolerantSerialization
 vtslibs = \
@@ -135,7 +140,9 @@ $(vtsdir)/$(PROFILE)_TestLib/BinarySerializationOverVersions.exe: $(vtsdir)/Bina
                $(vtsdir)/BinarySerializationOverVersions.cs -out:$@
        @cp $(vtsdir)/$(PROFILE)_TestLib/1.0/Address.dll $(vtsdir)/$(PROFILE)_TestLib
 
-# Need to define MONO_PATH to an absolute dir since the test is ran from a subdir
+# Need to define TEST_MONO_PATH to an absolute dir since the test is ran from a subdir
+TEST_MONO_PATH=$(PWD)/../lib/$(PROFILE)
+
 run-test-vts: test-vts
        @echo Running vts tests...
        PATH="$(TEST_RUNTIME_WRAPPERS_PATH):$(PATH)" $(TEST_RUNTIME) $(RUNTIME_FLAGS) $(TEST_HARNESS) -noshadow \
index 6d5c07d12d4305bda353bc5064f87fe0efaf587e..1cb4c39eacd0546b35dd423a20445001b4c3542a 100644 (file)
@@ -328,8 +328,9 @@ namespace Microsoft.Win32 {
                        try {
                                using (StreamWriter writer = new StreamWriter (path, false, Encoding.ASCII))
                                        writer.WriteLine (btime.ToString ());
-                       } catch (Exception e) {
-                               Console.Error.WriteLine ("While saving registry data at {0}: {1}", path, e);
+                       } catch (Exception) {
+                               /* This can happen when a user process tries to write to MachineStore */
+                               //Console.Error.WriteLine ("While saving registry data at {0}: {1}", path, e);
                        }
                }
                        
diff --git a/mcs/class/corlib/Mono.Math.Prime.Generator/ChangeLog b/mcs/class/corlib/Mono.Math.Prime.Generator/ChangeLog
deleted file mode 100644 (file)
index 885c6e7..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-2007-09-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * NextPrimeFinder.cs, PrimeGeneratorBase.cs:  Updated to match 
-       Mono.Security sources.
-
-2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * SequentialSearchPrimeGeneratorBase.cs: Fixed warning (l4) for unused
-       variables.
-
-2004-05-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * SequentialSearchPrimeGeneratorBase.cs: In sync with 
-       Mono.Security.dll version.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * NextPrimeFinder.cs: In sync with Mono.Security.dll version.
-       * PrimeGeneratorBase.cs: In sync with Mono.Security.dll version.
-       * SequentialSearchPrimeGeneratorBase.cs: In sync with 
-       Mono.Security.dll version.
-
-2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PrimeGeneratorBase.cs: Changed primality test to Rabin Miller to
-       fix issues #51229 (bug), #54262 (very long in same cases).
-
-2003-04-22  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * NextPrimeFinder.cs: New. Prime Generator.
-       Support class for BigInteger (commited for Ben Maurer).
-       * PrimeGeneratorBase.cs: New. Abstract Prime Generator.
-       Support class for BigInteger (commited for Ben Maurer).
-       * SequentialSearchPrimeGeneratorBase.cs: New. Prime Generator.
-       Support class for BigInteger (commited for Ben Maurer).
diff --git a/mcs/class/corlib/Mono.Math.Prime.Generator/NextPrimeFinder.cs b/mcs/class/corlib/Mono.Math.Prime.Generator/NextPrimeFinder.cs
deleted file mode 100644 (file)
index 5c31bac..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// Mono.Math.Prime.Generator.NextPrimeFinder.cs - Prime Generator
-//
-// Authors:
-//     Ben Maurer
-//
-// Copyright (c) 2003 Ben Maurer. All rights reserved
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Math.Prime.Generator {
-
-       /// <summary>
-       /// Finds the next prime after a given number.
-       /// </summary>
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class NextPrimeFinder : SequentialSearchPrimeGeneratorBase {
-               
-               protected override BigInteger GenerateSearchBase (int bits, object Context) 
-               {
-                       if (Context == null) 
-                               throw new ArgumentNullException ("Context");
-
-                       BigInteger ret = new BigInteger ((BigInteger)Context);
-                       ret.SetBit (0);
-                       return ret;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math.Prime.Generator/PrimeGeneratorBase.cs b/mcs/class/corlib/Mono.Math.Prime.Generator/PrimeGeneratorBase.cs
deleted file mode 100644 (file)
index 51f7a12..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-//
-// Mono.Math.Prime.Generator.PrimeGeneratorBase.cs - Abstract Prime Generator
-//
-// Authors:
-//     Ben Maurer
-//
-// Copyright (c) 2003 Ben Maurer. All rights reserved
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Math.Prime.Generator {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       abstract class PrimeGeneratorBase {
-
-               public virtual ConfidenceFactor Confidence {
-                       get {
-#if DEBUG
-                               return ConfidenceFactor.ExtraLow;
-#else
-                               return ConfidenceFactor.Medium;
-#endif
-                       }
-               }
-
-               public virtual Prime.PrimalityTest PrimalityTest {
-                       get {
-                               return new Prime.PrimalityTest (PrimalityTests.RabinMillerTest);
-                       }
-               }
-
-               public virtual int TrialDivisionBounds {
-                       get { return 4000; }
-               }
-
-               /// <summary>
-               /// Performs primality tests on bi, assumes trial division has been done.
-               /// </summary>
-               /// <param name="bi">A BigInteger that has been subjected to and passed trial division</param>
-               /// <returns>False if bi is composite, true if it may be prime.</returns>
-               /// <remarks>The speed of this method is dependent on Confidence</remarks>
-               protected bool PostTrialDivisionTests (BigInteger bi)
-               {
-                       return PrimalityTest (bi, this.Confidence);
-               }
-
-               public abstract BigInteger GenerateNewPrime (int bits);
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs b/mcs/class/corlib/Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs
deleted file mode 100644 (file)
index 87388d0..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-//
-// Mono.Math.Prime.Generator.SequentialSearchPrimeGeneratorBase.cs - Prime Generator
-//
-// Authors:
-//     Ben Maurer
-//
-// Copyright (c) 2003 Ben Maurer. All rights reserved
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-namespace Mono.Math.Prime.Generator {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class SequentialSearchPrimeGeneratorBase : PrimeGeneratorBase {
-
-               protected virtual BigInteger GenerateSearchBase (int bits, object context)
-               {
-                       BigInteger ret = BigInteger.GenerateRandom (bits);
-                       ret.SetBit (0);
-                       return ret;
-               }
-
-
-               public override BigInteger GenerateNewPrime (int bits)
-               {
-                       return GenerateNewPrime (bits, null);
-               }
-
-
-               public virtual BigInteger GenerateNewPrime (int bits, object context)
-               {
-                       //
-                       // STEP 1. Find a place to do a sequential search
-                       //
-                       BigInteger curVal = GenerateSearchBase (bits, context);
-
-                       const uint primeProd1 = 3u* 5u * 7u * 11u * 13u * 17u * 19u * 23u * 29u;
-
-                       uint pMod1 = curVal % primeProd1;
-
-                       int DivisionBound = TrialDivisionBounds;
-                       uint[] SmallPrimes = BigInteger.smallPrimes;
-                       //
-                       // STEP 2. Search for primes
-                       //
-                       while (true) {
-
-                               //
-                               // STEP 2.1 Sieve out numbers divisible by the first 9 primes
-                               //
-                               if (pMod1 %  3 == 0) goto biNotPrime;
-                               if (pMod1 %  5 == 0) goto biNotPrime;
-                               if (pMod1 %  7 == 0) goto biNotPrime;
-                               if (pMod1 % 11 == 0) goto biNotPrime;
-                               if (pMod1 % 13 == 0) goto biNotPrime;
-                               if (pMod1 % 17 == 0) goto biNotPrime;
-                               if (pMod1 % 19 == 0) goto biNotPrime;
-                               if (pMod1 % 23 == 0) goto biNotPrime;
-                               if (pMod1 % 29 == 0) goto biNotPrime;
-
-                               //
-                               // STEP 2.2 Sieve out all numbers divisible by the primes <= DivisionBound
-                               //
-                               for (int p = 10; p < SmallPrimes.Length && SmallPrimes [p] <= DivisionBound; p++) {
-                                       if (curVal % SmallPrimes [p] == 0)
-                                               goto biNotPrime;
-                               }
-
-                               //
-                               // STEP 2.3 Is the potential prime acceptable?
-                               //
-                               if (!IsPrimeAcceptable (curVal, context))
-                                       goto biNotPrime;
-
-                               //
-                               // STEP 2.4 Filter out all primes that pass this step with a primality test
-                               //
-                               if (PrimalityTest (curVal, Confidence))
-                                       return curVal;
-
-                               //
-                               // STEP 2.4
-                               //
-                       biNotPrime:
-                               pMod1 += 2;
-                               if (pMod1 >= primeProd1)
-                                       pMod1 -= primeProd1;
-                               curVal.Incr2 ();
-                       }
-               }
-
-               protected virtual bool IsPrimeAcceptable (BigInteger bi, object context)
-               {
-                       return true;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math.Prime/ChangeLog b/mcs/class/corlib/Mono.Math.Prime/ChangeLog
deleted file mode 100644 (file)
index dce3384..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-2007-09-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ConfidenceFactor.cs, PrimalityTests.cs: Updated to match 
-       Mono.Security sources.
-
-2004-05-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PrimalityTests.cs: In sync with Mono.Security.dll version.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PrimalityTests.cs: In sync with Mono.Security.dll version.
-
-2003-04-23  Alp Toker  <alp@atoker.com>
-
-       * PrimalityTests.cs: Mark PrimalityTest as non-CLS-compliant (build fix)
-
-2003-04-22  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * ConfidenceFactor.cs: New. Enum for prime quality.
-       Support for BigInteger (commited for Ben Maurer).
-       * PrimalityTests.cs: New. Tests for primality.
-       Support for BigInteger (commited for Ben Maurer).
-
diff --git a/mcs/class/corlib/Mono.Math.Prime/ConfidenceFactor.cs b/mcs/class/corlib/Mono.Math.Prime/ConfidenceFactor.cs
deleted file mode 100644 (file)
index 00cbac5..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// Mono.Math.Prime.ConfidenceFactor.cs - Confidence factor for prime generation
-//
-// Authors:
-//     Ben Maurer
-//
-// Copyright (c) 2003 Ben Maurer. All rights reserved
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Math.Prime {
-       /// <summary>
-       /// A factor of confidence.
-       /// </summary>
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       enum ConfidenceFactor {
-               /// <summary>
-               /// Only suitable for development use, probability of failure may be greater than 1/2^20.
-               /// </summary>
-               ExtraLow,
-               /// <summary>
-               /// Suitable only for transactions which do not require forward secrecy.  Probability of failure about 1/2^40
-               /// </summary>
-               Low,
-               /// <summary>
-               /// Designed for production use. Probability of failure about 1/2^80.
-               /// </summary>
-               Medium,
-               /// <summary>
-               /// Suitable for sensitive data. Probability of failure about 1/2^160.
-               /// </summary>
-               High,
-               /// <summary>
-               /// Use only if you have lots of time! Probability of failure about 1/2^320.
-               /// </summary>
-               ExtraHigh,
-               /// <summary>
-               /// Only use methods which generate provable primes. Not yet implemented.
-               /// </summary>
-               Provable
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math.Prime/PrimalityTests.cs b/mcs/class/corlib/Mono.Math.Prime/PrimalityTests.cs
deleted file mode 100644 (file)
index cd3953e..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-//
-// Mono.Math.Prime.PrimalityTests.cs - Test for primality
-//
-// Authors:
-//     Ben Maurer
-//
-// Copyright (c) 2003 Ben Maurer. All rights reserved
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Math.Prime {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       delegate bool PrimalityTest (BigInteger bi, ConfidenceFactor confidence);
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       sealed class PrimalityTests {
-
-               private PrimalityTests ()
-               {
-               }
-
-               #region SPP Test
-               
-               private static int GetSPPRounds (BigInteger bi, ConfidenceFactor confidence)
-               {
-                       int bc = bi.BitCount();
-
-                       int Rounds;
-
-                       // Data from HAC, 4.49
-                       if      (bc <= 100 ) Rounds = 27;
-                       else if (bc <= 150 ) Rounds = 18;
-                       else if (bc <= 200 ) Rounds = 15;
-                       else if (bc <= 250 ) Rounds = 12;
-                       else if (bc <= 300 ) Rounds =  9;
-                       else if (bc <= 350 ) Rounds =  8;
-                       else if (bc <= 400 ) Rounds =  7;
-                       else if (bc <= 500 ) Rounds =  6;
-                       else if (bc <= 600 ) Rounds =  5;
-                       else if (bc <= 800 ) Rounds =  4;
-                       else if (bc <= 1250) Rounds =  3;
-                       else                 Rounds =  2;
-
-                       switch (confidence) {
-                               case ConfidenceFactor.ExtraLow:
-                                       Rounds >>= 2;
-                                       return Rounds != 0 ? Rounds : 1;
-                               case ConfidenceFactor.Low:
-                                       Rounds >>= 1;
-                                       return Rounds != 0 ? Rounds : 1;
-                               case ConfidenceFactor.Medium:
-                                       return Rounds;
-                               case ConfidenceFactor.High:
-                                       return Rounds << 1;
-                               case ConfidenceFactor.ExtraHigh:
-                                       return Rounds << 2;
-                               case ConfidenceFactor.Provable:
-                                       throw new Exception ("The Rabin-Miller test can not be executed in a way such that its results are provable");
-                               default:
-                                       throw new ArgumentOutOfRangeException ("confidence");
-                       }
-               }
-
-               public static bool Test (BigInteger n, ConfidenceFactor confidence)
-               {
-                       // Rabin-Miller fails with smaller primes (at least with our BigInteger code)
-                       if (n.BitCount () < 33)
-                               return SmallPrimeSppTest (n, confidence);
-                       else
-                               return RabinMillerTest (n, confidence);
-               }
-
-               /// <summary>
-               ///     Probabilistic prime test based on Rabin-Miller's test
-               /// </summary>
-               /// <param name="n" type="BigInteger.BigInteger">
-               ///     <para>
-               ///         The number to test.
-               ///     </para>
-               /// </param>
-               /// <param name="confidence" type="int">
-               ///     <para>
-               ///     The number of chosen bases. The test has at least a
-               ///     1/4^confidence chance of falsely returning True.
-               ///     </para>
-               /// </param>
-               /// <returns>
-               ///     <para>
-               ///             True if "this" is a strong pseudoprime to randomly chosen bases.
-               ///     </para>
-               ///     <para>
-               ///             False if "this" is definitely NOT prime.
-               ///     </para>
-               /// </returns>
-               public static bool RabinMillerTest (BigInteger n, ConfidenceFactor confidence)
-               {
-                       int bits = n.BitCount ();
-                       int t = GetSPPRounds (bits, confidence);
-
-                       // n - 1 == 2^s * r, r is odd
-                       BigInteger n_minus_1 = n - 1;
-                       int s = n_minus_1.LowestSetBit ();
-                       BigInteger r = n_minus_1 >> s;
-
-                       BigInteger.ModulusRing mr = new BigInteger.ModulusRing (n);
-                       
-                       // Applying optimization from HAC section 4.50 (base == 2)
-                       // not a really random base but an interesting (and speedy) one
-                       BigInteger y = null;
-                       // FIXME - optimization disable for small primes due to bug #81857
-                       if (n.BitCount () > 100)
-                               y = mr.Pow (2, r);
-
-                       // still here ? start at round 1 (round 0 was a == 2)
-                       for (int round = 0; round < t; round++) {
-
-                               if ((round > 0) || (y == null)) {
-                                       BigInteger a = null;
-
-                                       // check for 2 <= a <= n - 2
-                                       // ...but we already did a == 2 previously as an optimization
-                                       do {
-                                               a = BigInteger.GenerateRandom (bits);
-                                       } while ((a <= 2) && (a >= n_minus_1));
-
-                                       y = mr.Pow (a, r);
-                               }
-
-                               if (y == 1)
-                                       continue;
-
-                               for (int j = 0; ((j < s) && (y != n_minus_1)); j++) {
-
-                                       y = mr.Pow (y, 2);
-                                       if (y == 1)
-                                               return false;
-                               }
-
-                               if (y != n_minus_1)
-                                       return false;
-                       }
-                       return true;
-               }
-
-               public static bool SmallPrimeSppTest (BigInteger bi, ConfidenceFactor confidence)
-               {
-                       int Rounds = GetSPPRounds (bi, confidence);
-
-                       // calculate values of s and t
-                       BigInteger p_sub1 = bi - 1;
-                       int s = p_sub1.LowestSetBit ();
-
-                       BigInteger t = p_sub1 >> s;
-
-
-                       BigInteger.ModulusRing mr = new BigInteger.ModulusRing (bi);
-
-                       for (int round = 0; round < Rounds; round++) {
-
-                               BigInteger b = mr.Pow (BigInteger.smallPrimes [round], t);
-
-                               if (b == 1) continue;              // a^t mod p = 1
-
-                               bool result = false;
-                               for (int j = 0; j < s; j++) {
-
-                                       if (b == p_sub1) {         // a^((2^j)*t) mod p = p-1 for some 0 <= j <= s-1
-                                               result = true;
-                                               break;
-                                       }
-
-                                       b = (b * b) % bi;
-                               }
-
-                               if (result == false)
-                                       return false;
-                       }
-                       return true;
-               }
-
-               #endregion
-
-               // TODO: Implement the Lucus test
-               // TODO: Implement other new primality tests
-               // TODO: Implement primality proving
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math/BigInteger.cs b/mcs/class/corlib/Mono.Math/BigInteger.cs
deleted file mode 100644 (file)
index 0356d0a..0000000
+++ /dev/null
@@ -1,2372 +0,0 @@
-//
-// BigInteger.cs - Big Integer implementation
-//
-// Authors:
-//     Ben Maurer
-//     Chew Keong TAN
-//     Sebastien Pouliot <sebastien@ximian.com>
-//     Pieter Philippaerts <Pieter@mentalis.org>
-//
-// Copyright (c) 2003 Ben Maurer
-// All rights reserved
-//
-// Copyright (c) 2002 Chew Keong TAN
-// All rights reserved.
-//
-// Copyright (C) 2004, 2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security.Cryptography;
-using Mono.Math.Prime.Generator;
-using Mono.Math.Prime;
-
-namespace Mono.Math {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class BigInteger {
-
-               #region Data Storage
-
-               /// <summary>
-               /// The Length of this BigInteger
-               /// </summary>
-               uint length = 1;
-
-               /// <summary>
-               /// The data for this BigInteger
-               /// </summary>
-               uint [] data;
-
-               #endregion
-
-               #region Constants
-
-               /// <summary>
-               /// Default length of a BigInteger in bytes
-               /// </summary>
-               const uint DEFAULT_LEN = 20;
-
-               /// <summary>
-               ///             Table of primes below 2000.
-               /// </summary>
-               /// <remarks>
-               ///             <para>
-               ///             This table was generated using Mathematica 4.1 using the following function:
-               ///             </para>
-               ///             <para>
-               ///                     <code>
-               ///                     PrimeTable [x_] := Prime [Range [1, PrimePi [x]]]
-               ///                     PrimeTable [6000]
-               ///                     </code>
-               ///             </para>
-               /// </remarks>
-               internal static readonly uint [] smallPrimes = {
-                       2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71,
-                       73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151,
-                       157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233,
-                       239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317,
-                       331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419,
-                       421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503,
-                       509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607,
-                       613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701,
-                       709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811,
-                       821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911,
-                       919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997,
-
-                       1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087,
-                       1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181,
-                       1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279,
-                       1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373,
-                       1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471,
-                       1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559,
-                       1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637,
-                       1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747,
-                       1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867,
-                       1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973,
-                       1979, 1987, 1993, 1997, 1999, 
-               
-                       2003, 2011, 2017, 2027, 2029, 2039, 2053, 2063, 2069, 2081, 2083, 2087, 2089,
-                       2099, 2111, 2113, 2129, 2131, 2137, 2141, 2143, 2153, 2161, 2179, 2203, 2207,
-                       2213, 2221, 2237, 2239, 2243, 2251, 2267, 2269, 2273, 2281, 2287, 2293, 2297,
-                       2309, 2311, 2333, 2339, 2341, 2347, 2351, 2357, 2371, 2377, 2381, 2383, 2389,
-                       2393, 2399, 2411, 2417, 2423, 2437, 2441, 2447, 2459, 2467, 2473, 2477, 2503,
-                       2521, 2531, 2539, 2543, 2549, 2551, 2557, 2579, 2591, 2593, 2609, 2617, 2621,
-                       2633, 2647, 2657, 2659, 2663, 2671, 2677, 2683, 2687, 2689, 2693, 2699, 2707,
-                       2711, 2713, 2719, 2729, 2731, 2741, 2749, 2753, 2767, 2777, 2789, 2791, 2797,
-                       2801, 2803, 2819, 2833, 2837, 2843, 2851, 2857, 2861, 2879, 2887, 2897, 2903,
-                       2909, 2917, 2927, 2939, 2953, 2957, 2963, 2969, 2971, 2999,
-                       
-                       3001, 3011, 3019, 3023, 3037, 3041, 3049, 3061, 3067, 3079, 3083, 3089, 3109,
-                       3119, 3121, 3137, 3163, 3167, 3169, 3181, 3187, 3191, 3203, 3209, 3217, 3221,
-                       3229, 3251, 3253, 3257, 3259, 3271, 3299, 3301, 3307, 3313, 3319, 3323, 3329,
-                       3331, 3343, 3347, 3359, 3361, 3371, 3373, 3389, 3391, 3407, 3413, 3433, 3449,
-                       3457, 3461, 3463, 3467, 3469, 3491, 3499, 3511, 3517, 3527, 3529, 3533, 3539,
-                       3541, 3547, 3557, 3559, 3571, 3581, 3583, 3593, 3607, 3613, 3617, 3623, 3631,
-                       3637, 3643, 3659, 3671, 3673, 3677, 3691, 3697, 3701, 3709, 3719, 3727, 3733,
-                       3739, 3761, 3767, 3769, 3779, 3793, 3797, 3803, 3821, 3823, 3833, 3847, 3851,
-                       3853, 3863, 3877, 3881, 3889, 3907, 3911, 3917, 3919, 3923, 3929, 3931, 3943,
-                       3947, 3967, 3989,
-                       
-                       4001, 4003, 4007, 4013, 4019, 4021, 4027, 4049, 4051, 4057, 4073, 4079, 4091,
-                       4093, 4099, 4111, 4127, 4129, 4133, 4139, 4153, 4157, 4159, 4177, 4201, 4211,
-                       4217, 4219, 4229, 4231, 4241, 4243, 4253, 4259, 4261, 4271, 4273, 4283, 4289,
-                       4297, 4327, 4337, 4339, 4349, 4357, 4363, 4373, 4391, 4397, 4409, 4421, 4423,
-                       4441, 4447, 4451, 4457, 4463, 4481, 4483, 4493, 4507, 4513, 4517, 4519, 4523,
-                       4547, 4549, 4561, 4567, 4583, 4591, 4597, 4603, 4621, 4637, 4639, 4643, 4649,
-                       4651, 4657, 4663, 4673, 4679, 4691, 4703, 4721, 4723, 4729, 4733, 4751, 4759,
-                       4783, 4787, 4789, 4793, 4799, 4801, 4813, 4817, 4831, 4861, 4871, 4877, 4889,
-                       4903, 4909, 4919, 4931, 4933, 4937, 4943, 4951, 4957, 4967, 4969, 4973, 4987,
-                       4993, 4999,
-                       
-                       5003, 5009, 5011, 5021, 5023, 5039, 5051, 5059, 5077, 5081, 5087, 5099, 5101,
-                       5107, 5113, 5119, 5147, 5153, 5167, 5171, 5179, 5189, 5197, 5209, 5227, 5231, 
-                       5233, 5237, 5261, 5273, 5279, 5281, 5297, 5303, 5309, 5323, 5333, 5347, 5351,
-                       5381, 5387, 5393, 5399, 5407, 5413, 5417, 5419, 5431, 5437, 5441, 5443, 5449,
-                       5471, 5477, 5479, 5483, 5501, 5503, 5507, 5519, 5521, 5527, 5531, 5557, 5563,
-                       5569, 5573, 5581, 5591, 5623, 5639, 5641, 5647, 5651, 5653, 5657, 5659, 5669,
-                       5683, 5689, 5693, 5701, 5711, 5717, 5737, 5741, 5743, 5749, 5779, 5783, 5791,
-                       5801, 5807, 5813, 5821, 5827, 5839, 5843, 5849, 5851, 5857, 5861, 5867, 5869,
-                       5879, 5881, 5897, 5903, 5923, 5927, 5939, 5953, 5981, 5987
-               };
-
-               public enum Sign : int {
-                       Negative = -1,
-                       Zero = 0,
-                       Positive = 1
-               };
-
-               #region Exception Messages
-               const string WouldReturnNegVal = "Operation would return a negative value";
-               #endregion
-
-               #endregion
-
-               #region Constructors
-
-               public BigInteger ()
-               {
-                       data = new uint [DEFAULT_LEN];
-                       this.length = DEFAULT_LEN;
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif          
-               public BigInteger (Sign sign, uint len) 
-               {
-                       this.data = new uint [len];
-                       this.length = len;
-               }
-
-               public BigInteger (BigInteger bi)
-               {
-                       this.data = (uint [])bi.data.Clone ();
-                       this.length = bi.length;
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif       
-               public BigInteger (BigInteger bi, uint len)
-               {
-
-                       this.data = new uint [len];
-
-                       for (uint i = 0; i < bi.length; i++)
-                               this.data [i] = bi.data [i];
-
-                       this.length = bi.length;
-               }
-
-               #endregion
-
-               #region Conversions
-               
-               public BigInteger (byte [] inData)
-               {
-                       if (inData.Length == 0)
-                               inData = new byte [1];
-                       length = (uint)inData.Length >> 2;
-                       int leftOver = inData.Length & 0x3;
-
-                       // length not multiples of 4
-                       if (leftOver != 0) length++;
-
-                       data = new uint [length];
-
-                       for (int i = inData.Length - 1, j = 0; i >= 3; i -= 4, j++) {
-                               data [j] = (uint)(
-                                       (inData [i-3] << (3*8)) |
-                                       (inData [i-2] << (2*8)) |
-                                       (inData [i-1] << (1*8)) |
-                                       (inData [i])
-                                       );
-                       }
-
-                       switch (leftOver) {
-                       case 1: data [length-1] = (uint)inData [0]; break;
-                       case 2: data [length-1] = (uint)((inData [0] << 8) | inData [1]); break;
-                       case 3: data [length-1] = (uint)((inData [0] << 16) | (inData [1] << 8) | inData [2]); break;
-                       }
-
-                       this.Normalize ();
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public BigInteger (uint [] inData)
-               {
-                       if (inData.Length == 0)
-                               inData = new uint [1];
-                       length = (uint)inData.Length;
-
-                       data = new uint [length];
-
-                       for (int i = (int)length - 1, j = 0; i >= 0; i--, j++)
-                               data [j] = inData [i];
-
-                       this.Normalize ();
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public BigInteger (uint ui)
-               {
-                       data = new uint [] {ui};
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public BigInteger (ulong ul)
-               {
-                       data = new uint [2] { (uint)ul, (uint)(ul >> 32)};
-                       length = 2;
-
-                       this.Normalize ();
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static implicit operator BigInteger (uint value)
-               {
-                       return (new BigInteger (value));
-               }
-
-               public static implicit operator BigInteger (int value)
-               {
-                       if (value < 0) throw new ArgumentOutOfRangeException ("value");
-                       return (new BigInteger ((uint)value));
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static implicit operator BigInteger (ulong value)
-               {
-                       return (new BigInteger (value));
-               }
-
-               /* This is the BigInteger.Parse method I use. This method works
-               because BigInteger.ToString returns the input I gave to Parse. */
-               public static BigInteger Parse (string number) 
-               {
-                       if (number == null)
-                               throw new ArgumentNullException ("number");
-
-                       int i = 0, len = number.Length;
-                       char c;
-                       bool digits_seen = false;
-                       BigInteger val = new BigInteger (0);
-                       if (number [i] == '+') {
-                               i++;
-                       } 
-                       else if (number [i] == '-') {
-                               throw new FormatException (WouldReturnNegVal);
-                       }
-
-                       for (; i < len; i++) {
-                               c = number [i];
-                               if (c == '\0') {
-                                       i = len;
-                                       continue;
-                               }
-                               if (c >= '0' && c <= '9') {
-                                       val = val * 10 + (c - '0');
-                                       digits_seen = true;
-                               } 
-                               else {
-                                       if (Char.IsWhiteSpace (c)) {
-                                               for (i++; i < len; i++) {
-                                                       if (!Char.IsWhiteSpace (number [i]))
-                                                               throw new FormatException ();
-                                               }
-                                               break;
-                                       } 
-                                       else
-                                               throw new FormatException ();
-                               }
-                       }
-                       if (!digits_seen)
-                               throw new FormatException ();
-                       return val;
-               }
-
-               #endregion
-
-               #region Operators
-
-               public static BigInteger operator + (BigInteger bi1, BigInteger bi2)
-               {
-                       if (bi1 == 0)
-                               return new BigInteger (bi2);
-                       else if (bi2 == 0)
-                               return new BigInteger (bi1);
-                       else
-                               return Kernel.AddSameSign (bi1, bi2);
-               }
-
-               public static BigInteger operator - (BigInteger bi1, BigInteger bi2)
-               {
-                       if (bi2 == 0)
-                               return new BigInteger (bi1);
-
-                       if (bi1 == 0)
-                               throw new ArithmeticException (WouldReturnNegVal);
-
-                       switch (Kernel.Compare (bi1, bi2)) {
-
-                               case Sign.Zero:
-                                       return 0;
-
-                               case Sign.Positive:
-                                       return Kernel.Subtract (bi1, bi2);
-
-                               case Sign.Negative:
-                                       throw new ArithmeticException (WouldReturnNegVal);
-                               default:
-                                       throw new Exception ();
-                       }
-               }
-
-               public static int operator % (BigInteger bi, int i)
-               {
-                       if (i > 0)
-                               return (int)Kernel.DwordMod (bi, (uint)i);
-                       else
-                               return -(int)Kernel.DwordMod (bi, (uint)-i);
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static uint operator % (BigInteger bi, uint ui)
-               {
-                       return Kernel.DwordMod (bi, (uint)ui);
-               }
-
-               public static BigInteger operator % (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.multiByteDivide (bi1, bi2)[1];
-               }
-
-               public static BigInteger operator / (BigInteger bi, int i)
-               {
-                       if (i > 0)
-                               return Kernel.DwordDiv (bi, (uint)i);
-
-                       throw new ArithmeticException (WouldReturnNegVal);
-               }
-
-               public static BigInteger operator / (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.multiByteDivide (bi1, bi2)[0];
-               }
-
-               public static BigInteger operator * (BigInteger bi1, BigInteger bi2)
-               {
-                       if (bi1 == 0 || bi2 == 0) return 0;
-
-                       //
-                       // Validate pointers
-                       //
-                       if (bi1.data.Length < bi1.length) throw new IndexOutOfRangeException ("bi1 out of range");
-                       if (bi2.data.Length < bi2.length) throw new IndexOutOfRangeException ("bi2 out of range");
-
-                       BigInteger ret = new BigInteger (Sign.Positive, bi1.length + bi2.length);
-
-                       Kernel.Multiply (bi1.data, 0, bi1.length, bi2.data, 0, bi2.length, ret.data, 0);
-
-                       ret.Normalize ();
-                       return ret;
-               }
-
-               public static BigInteger operator * (BigInteger bi, int i)
-               {
-                       if (i < 0) throw new ArithmeticException (WouldReturnNegVal);
-                       if (i == 0) return 0;
-                       if (i == 1) return new BigInteger (bi);
-
-                       return Kernel.MultiplyByDword (bi, (uint)i);
-               }
-
-               public static BigInteger operator << (BigInteger bi1, int shiftVal)
-               {
-                       return Kernel.LeftShift (bi1, shiftVal);
-               }
-
-               public static BigInteger operator >> (BigInteger bi1, int shiftVal)
-               {
-                       return Kernel.RightShift (bi1, shiftVal);
-               }
-
-               #endregion
-
-               #region Friendly names for operators
-
-               // with names suggested by FxCop 1.30
-
-               public static BigInteger Add (BigInteger bi1, BigInteger bi2) 
-               {
-                       return (bi1 + bi2);
-               }
-
-               public static BigInteger Subtract (BigInteger bi1, BigInteger bi2) 
-               {
-                       return (bi1 - bi2);
-               }
-
-               public static int Modulus (BigInteger bi, int i) 
-               {
-                       return (bi % i);
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static uint Modulus (BigInteger bi, uint ui) 
-               {
-                       return (bi % ui);
-               }
-
-               public static BigInteger Modulus (BigInteger bi1, BigInteger bi2) 
-               {
-                       return (bi1 % bi2);
-               }
-
-               public static BigInteger Divid (BigInteger bi, int i) 
-               {
-                       return (bi / i);
-               }
-
-               public static BigInteger Divid (BigInteger bi1, BigInteger bi2) 
-               {
-                       return (bi1 / bi2);
-               }
-
-               public static BigInteger Multiply (BigInteger bi1, BigInteger bi2) 
-               {
-                       return (bi1 * bi2);
-               }
-
-               public static BigInteger Multiply (BigInteger bi, int i) 
-               {
-                       return (bi * i);
-               }
-
-               #endregion
-
-               #region Random
-               private static RandomNumberGenerator rng;
-               private static RandomNumberGenerator Rng {
-                       get {
-                               if (rng == null)
-                                       rng = RandomNumberGenerator.Create ();
-                               return rng;
-                       }
-               }
-
-               /// <summary>
-               /// Generates a new, random BigInteger of the specified length.
-               /// </summary>
-               /// <param name="bits">The number of bits for the new number.</param>
-               /// <param name="rng">A random number generator to use to obtain the bits.</param>
-               /// <returns>A random number of the specified length.</returns>
-               public static BigInteger GenerateRandom (int bits, RandomNumberGenerator rng)
-               {
-                       int dwords = bits >> 5;
-                       int remBits = bits & 0x1F;
-
-                       if (remBits != 0)
-                               dwords++;
-
-                       BigInteger ret = new BigInteger (Sign.Positive, (uint)dwords + 1);
-                       byte [] random = new byte [dwords << 2];
-
-                       rng.GetBytes (random);
-                       Buffer.BlockCopy (random, 0, ret.data, 0, (int)dwords << 2);
-
-                       if (remBits != 0) {
-                               uint mask = (uint)(0x01 << (remBits-1));
-                               ret.data [dwords-1] |= mask;
-
-                               mask = (uint)(0xFFFFFFFF >> (32 - remBits));
-                               ret.data [dwords-1] &= mask;
-                       }
-                       else
-                               ret.data [dwords-1] |= 0x80000000;
-
-                       ret.Normalize ();
-                       return ret;
-               }
-
-               /// <summary>
-               /// Generates a new, random BigInteger of the specified length using the default RNG crypto service provider.
-               /// </summary>
-               /// <param name="bits">The number of bits for the new number.</param>
-               /// <returns>A random number of the specified length.</returns>
-               public static BigInteger GenerateRandom (int bits)
-               {
-                       return GenerateRandom (bits, Rng);
-               }
-
-               /// <summary>
-               /// Randomizes the bits in "this" from the specified RNG.
-               /// </summary>
-               /// <param name="rng">A RNG.</param>
-               public void Randomize (RandomNumberGenerator rng)
-               {
-                       if (this == 0)
-                               return;
-
-                       int bits = this.BitCount ();
-                       int dwords = bits >> 5;
-                       int remBits = bits & 0x1F;
-
-                       if (remBits != 0)
-                               dwords++;
-
-                       byte [] random = new byte [dwords << 2];
-
-                       rng.GetBytes (random);
-                       Buffer.BlockCopy (random, 0, data, 0, (int)dwords << 2);
-
-                       if (remBits != 0) {
-                               uint mask = (uint)(0x01 << (remBits-1));
-                               data [dwords-1] |= mask;
-
-                               mask = (uint)(0xFFFFFFFF >> (32 - remBits));
-                               data [dwords-1] &= mask;
-                       }
-
-                       else
-                               data [dwords-1] |= 0x80000000;
-
-                       Normalize ();
-               }
-
-               /// <summary>
-               /// Randomizes the bits in "this" from the default RNG.
-               /// </summary>
-               public void Randomize ()
-               {
-                       Randomize (Rng);
-               }
-
-               #endregion
-
-               #region Bitwise
-
-               public int BitCount ()
-               {
-                       this.Normalize ();
-
-                       uint value = data [length - 1];
-                       uint mask = 0x80000000;
-                       uint bits = 32;
-
-                       while (bits > 0 && (value & mask) == 0) {
-                               bits--;
-                               mask >>= 1;
-                       }
-                       bits += ((length - 1) << 5);
-
-                       return (int)bits;
-               }
-
-               /// <summary>
-               /// Tests if the specified bit is 1.
-               /// </summary>
-               /// <param name="bitNum">The bit to test. The least significant bit is 0.</param>
-               /// <returns>True if bitNum is set to 1, else false.</returns>
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public bool TestBit (uint bitNum)
-               {
-                       uint bytePos = bitNum >> 5;             // divide by 32
-                       byte bitPos = (byte)(bitNum & 0x1F);    // get the lowest 5 bits
-
-                       uint mask = (uint)1 << bitPos;
-                       return ((this.data [bytePos] & mask) != 0);
-               }
-
-               public bool TestBit (int bitNum)
-               {
-                       if (bitNum < 0) throw new IndexOutOfRangeException ("bitNum out of range");
-
-                       uint bytePos = (uint)bitNum >> 5;             // divide by 32
-                       byte bitPos = (byte)(bitNum & 0x1F);    // get the lowest 5 bits
-
-                       uint mask = (uint)1 << bitPos;
-                       return ((this.data [bytePos] | mask) == this.data [bytePos]);
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public void SetBit (uint bitNum)
-               {
-                       SetBit (bitNum, true);
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public void ClearBit (uint bitNum)
-               {
-                       SetBit (bitNum, false);
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public void SetBit (uint bitNum, bool value)
-               {
-                       uint bytePos = bitNum >> 5;             // divide by 32
-
-                       if (bytePos < this.length) {
-                               uint mask = (uint)1 << (int)(bitNum & 0x1F);
-                               if (value)
-                                       this.data [bytePos] |= mask;
-                               else
-                                       this.data [bytePos] &= ~mask;
-                       }
-               }
-
-               public int LowestSetBit ()
-               {
-                       if (this == 0) return -1;
-                       int i = 0;
-                       while (!TestBit (i)) i++;
-                       return i;
-               }
-
-               public byte[] GetBytes ()
-               {
-                       if (this == 0) return new byte [1];
-
-                       int numBits = BitCount ();
-                       int numBytes = numBits >> 3;
-                       if ((numBits & 0x7) != 0)
-                               numBytes++;
-
-                       byte [] result = new byte [numBytes];
-
-                       int numBytesInWord = numBytes & 0x3;
-                       if (numBytesInWord == 0) numBytesInWord = 4;
-
-                       int pos = 0;
-                       for (int i = (int)length - 1; i >= 0; i--) {
-                               uint val = data [i];
-                               for (int j = numBytesInWord - 1; j >= 0; j--) {
-                                       result [pos+j] = (byte)(val & 0xFF);
-                                       val >>= 8;
-                               }
-                               pos += numBytesInWord;
-                               numBytesInWord = 4;
-                       }
-                       return result;
-               }
-
-               #endregion
-
-               #region Compare
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static bool operator == (BigInteger bi1, uint ui)
-               {
-                       if (bi1.length != 1) bi1.Normalize ();
-                       return bi1.length == 1 && bi1.data [0] == ui;
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public static bool operator != (BigInteger bi1, uint ui)
-               {
-                       if (bi1.length != 1) bi1.Normalize ();
-                       return !(bi1.length == 1 && bi1.data [0] == ui);
-               }
-
-               public static bool operator == (BigInteger bi1, BigInteger bi2)
-               {
-                       // we need to compare with null
-                       if ((bi1 as object) == (bi2 as object))
-                               return true;
-                       if (null == bi1 || null == bi2)
-                               return false;
-                       return Kernel.Compare (bi1, bi2) == 0;
-               }
-
-               public static bool operator != (BigInteger bi1, BigInteger bi2)
-               {
-                       // we need to compare with null
-                       if ((bi1 as object) == (bi2 as object))
-                               return false;
-                       if (null == bi1 || null == bi2)
-                               return true;
-                       return Kernel.Compare (bi1, bi2) != 0;
-               }
-
-               public static bool operator > (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.Compare (bi1, bi2) > 0;
-               }
-
-               public static bool operator < (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.Compare (bi1, bi2) < 0;
-               }
-
-               public static bool operator >= (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.Compare (bi1, bi2) >= 0;
-               }
-
-               public static bool operator <= (BigInteger bi1, BigInteger bi2)
-               {
-                       return Kernel.Compare (bi1, bi2) <= 0;
-               }
-
-               public Sign Compare (BigInteger bi)
-               {
-                       return Kernel.Compare (this, bi);
-               }
-
-               #endregion
-
-               #region Formatting
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public string ToString (uint radix)
-               {
-                       return ToString (radix, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-               }
-
-#if !INSIDE_CORLIB
-               [CLSCompliant (false)]
-#endif 
-               public string ToString (uint radix, string characterSet)
-               {
-                       if (characterSet.Length < radix)
-                               throw new ArgumentException ("charSet length less than radix", "characterSet");
-                       if (radix == 1)
-                               throw new ArgumentException ("There is no such thing as radix one notation", "radix");
-
-                       if (this == 0) return "0";
-                       if (this == 1) return "1";
-
-                       string result = "";
-
-                       BigInteger a = new BigInteger (this);
-
-                       while (a != 0) {
-                               uint rem = Kernel.SingleByteDivideInPlace (a, radix);
-                               result = characterSet [(int) rem] + result;
-                       }
-
-                       return result;
-               }
-
-               #endregion
-
-               #region Misc
-
-               /// <summary>
-               ///     Normalizes this by setting the length to the actual number of
-               ///     uints used in data and by setting the sign to Sign.Zero if the
-               ///     value of this is 0.
-               /// </summary>
-               private void Normalize ()
-               {
-                       // Normalize length
-                       while (length > 0 && data [length-1] == 0) length--;
-
-                       // Check for zero
-                       if (length == 0)
-                               length++;
-               }
-
-               public void Clear () 
-               {
-                       for (int i=0; i < length; i++)
-                               data [i] = 0x00;
-               }
-
-               #endregion
-
-               #region Object Impl
-
-               public override int GetHashCode ()
-               {
-                       uint val = 0;
-
-                       for (uint i = 0; i < this.length; i++)
-                               val ^= this.data [i];
-
-                       return (int)val;
-               }
-
-               public override string ToString ()
-               {
-                       return ToString (10);
-               }
-
-               public override bool Equals (object o)
-               {
-                       if (o == null)
-                               return false;
-                       if (o is int)
-                               return (int)o >= 0 && this == (uint)o;
-
-                       BigInteger bi = o as BigInteger;
-                       if (bi == null)
-                               return false;
-                       
-                       return Kernel.Compare (this, bi) == 0;
-               }
-
-               #endregion
-
-               #region Number Theory
-
-               public BigInteger GCD (BigInteger bi)
-               {
-                       return Kernel.gcd (this, bi);
-               }
-
-               public BigInteger ModInverse (BigInteger modulus)
-               {
-                       return Kernel.modInverse (this, modulus);
-               }
-
-               public BigInteger ModPow (BigInteger exp, BigInteger n)
-               {
-                       ModulusRing mr = new ModulusRing (n);
-                       return mr.Pow (this, exp);
-               }
-               
-               #endregion
-
-               #region Prime Testing
-
-               public bool IsProbablePrime ()
-               {
-                       // can we use our small-prime table ?
-                       if (this <= smallPrimes[smallPrimes.Length - 1]) {
-                               for (int p = 0; p < smallPrimes.Length; p++) {
-                                       if (this == smallPrimes[p])
-                                               return true;
-                               }
-                               // the list is complete, so it's not a prime
-                               return false;
-                       }
-
-                       // otherwise check if we can divide by one of the small primes
-                       for (int p = 0; p < smallPrimes.Length; p++) {
-                               if (this % smallPrimes[p] == 0)
-                                       return false;
-                       }
-                       // the last step is to confirm the "large" prime with the SPP or Miller-Rabin test
-                       return PrimalityTests.Test (this, Prime.ConfidenceFactor.Medium);
-               }
-
-               #endregion
-
-               #region Prime Number Generation
-
-               /// <summary>
-               /// Generates the smallest prime >= bi
-               /// </summary>
-               /// <param name="bi">A BigInteger</param>
-               /// <returns>The smallest prime >= bi. More mathematically, if bi is prime: bi, else Prime [PrimePi [bi] + 1].</returns>
-               public static BigInteger NextHighestPrime (BigInteger bi)
-               {
-                       NextPrimeFinder npf = new NextPrimeFinder ();
-                       return npf.GenerateNewPrime (0, bi);
-               }
-
-               public static BigInteger GeneratePseudoPrime (int bits)
-               {
-                       SequentialSearchPrimeGeneratorBase sspg = new SequentialSearchPrimeGeneratorBase ();
-                       return sspg.GenerateNewPrime (bits);
-               }
-
-               /// <summary>
-               /// Increments this by two
-               /// </summary>
-               public void Incr2 ()
-               {
-                       int i = 0;
-
-                       data [0] += 2;
-
-                       // If there was no carry, nothing to do
-                       if (data [0] < 2) {
-
-                               // Account for the first carry
-                               data [++i]++;
-
-                               // Keep adding until no carry
-                               while (data [i++] == 0x0)
-                                       data [i]++;
-
-                               // See if we increased the data length
-                               if (length == (uint)i)
-                                       length++;
-                       }
-               }
-
-               #endregion
-
-#if INSIDE_CORLIB
-               internal
-#else
-               public
-#endif
-               sealed class ModulusRing {
-
-                       BigInteger mod, constant;
-
-                       public ModulusRing (BigInteger modulus)
-                       {
-                               this.mod = modulus;
-
-                               // calculate constant = b^ (2k) / m
-                               uint i = mod.length << 1;
-
-                               constant = new BigInteger (Sign.Positive, i + 1);
-                               constant.data [i] = 0x00000001;
-
-                               constant = constant / mod;
-                       }
-
-                       public void BarrettReduction (BigInteger x)
-                       {
-                               BigInteger n = mod;
-                               uint k = n.length,
-                                       kPlusOne = k+1,
-                                       kMinusOne = k-1;
-
-                               // x < mod, so nothing to do.
-                               if (x.length < k) return;
-
-                               BigInteger q3;
-
-                               //
-                               // Validate pointers
-                               //
-                               if (x.data.Length < x.length) throw new IndexOutOfRangeException ("x out of range");
-
-                               // q1 = x / b^ (k-1)
-                               // q2 = q1 * constant
-                               // q3 = q2 / b^ (k+1), Needs to be accessed with an offset of kPlusOne
-
-                               // TODO: We should the method in HAC p 604 to do this (14.45)
-                               q3 = new BigInteger (Sign.Positive, x.length - kMinusOne + constant.length);
-                               Kernel.Multiply (x.data, kMinusOne, x.length - kMinusOne, constant.data, 0, constant.length, q3.data, 0);
-
-                               // r1 = x mod b^ (k+1)
-                               // i.e. keep the lowest (k+1) words
-
-                               uint lengthToCopy = (x.length > kPlusOne) ? kPlusOne : x.length;
-
-                               x.length = lengthToCopy;
-                               x.Normalize ();
-
-                               // r2 = (q3 * n) mod b^ (k+1)
-                               // partial multiplication of q3 and n
-
-                               BigInteger r2 = new BigInteger (Sign.Positive, kPlusOne);
-                               Kernel.MultiplyMod2p32pmod (q3.data, (int)kPlusOne, (int)q3.length - (int)kPlusOne, n.data, 0, (int)n.length, r2.data, 0, (int)kPlusOne);
-
-                               r2.Normalize ();
-
-                               if (r2 <= x) {
-                                       Kernel.MinusEq (x, r2);
-                               } else {
-                                       BigInteger val = new BigInteger (Sign.Positive, kPlusOne + 1);
-                                       val.data [kPlusOne] = 0x00000001;
-
-                                       Kernel.MinusEq (val, r2);
-                                       Kernel.PlusEq (x, val);
-                               }
-
-                               while (x >= n)
-                                       Kernel.MinusEq (x, n);
-                       }
-
-                       public BigInteger Multiply (BigInteger a, BigInteger b)
-                       {
-                               if (a == 0 || b == 0) return 0;
-
-                               if (a > mod)
-                                       a %= mod;
-
-                               if (b > mod)
-                                       b %= mod;
-
-                               BigInteger ret = a * b;
-                               BarrettReduction (ret);
-
-                               return ret;
-                       }
-
-                       public BigInteger Difference (BigInteger a, BigInteger b)
-                       {
-                               Sign cmp = Kernel.Compare (a, b);
-                               BigInteger diff;
-
-                               switch (cmp) {
-                                       case Sign.Zero:
-                                               return 0;
-                                       case Sign.Positive:
-                                               diff = a - b; break;
-                                       case Sign.Negative:
-                                               diff = b - a; break;
-                                       default:
-                                               throw new Exception ();
-                               }
-
-                               if (diff >= mod) {
-                                       if (diff.length >= mod.length << 1)
-                                               diff %= mod;
-                                       else
-                                               BarrettReduction (diff);
-                               }
-                               if (cmp == Sign.Negative)
-                                       diff = mod - diff;
-                               return diff;
-                       }
-#if true
-                       public BigInteger Pow (BigInteger a, BigInteger k)
-                       {
-                               BigInteger b = new BigInteger (1);
-                               if (k == 0)
-                                       return b;
-
-                               BigInteger A = a;
-                               if (k.TestBit (0))
-                                       b = a;
-
-                               for (int i = 1; i < k.BitCount (); i++) {
-                                       A = Multiply (A, A);
-                                       if (k.TestBit (i))
-                                               b = Multiply (A, b);
-                               }
-                               return b;
-                       }
-#else
-                       public BigInteger Pow (BigInteger b, BigInteger exp)
-                       {
-                               if ((mod.data [0] & 1) == 1) return OddPow (b, exp);
-                               else return EvenPow (b, exp);
-                       }
-                       
-                       public BigInteger EvenPow (BigInteger b, BigInteger exp)
-                       {
-                               BigInteger resultNum = new BigInteger ((BigInteger)1, mod.length << 1);
-                               BigInteger tempNum = new BigInteger (b % mod, mod.length << 1);  // ensures (tempNum * tempNum) < b^ (2k)
-
-                               uint totalBits = (uint)exp.BitCount ();
-
-                               uint [] wkspace = new uint [mod.length << 1];
-
-                               // perform squaring and multiply exponentiation
-                               for (uint pos = 0; pos < totalBits; pos++) {
-                                       if (exp.TestBit (pos)) {
-
-                                               Array.Clear (wkspace, 0, wkspace.Length);
-                                               Kernel.Multiply (resultNum.data, 0, resultNum.length, tempNum.data, 0, tempNum.length, wkspace, 0);
-                                               resultNum.length += tempNum.length;
-                                               uint [] t = wkspace;
-                                               wkspace = resultNum.data;
-                                               resultNum.data = t;
-
-                                               BarrettReduction (resultNum);
-                                       }
-
-                                       Kernel.SquarePositive (tempNum, ref wkspace);
-                                       BarrettReduction (tempNum);
-
-                                       if (tempNum == 1) {
-                                               return resultNum;
-                                       }
-                               }
-
-                               return resultNum;
-                       }
-
-                       private BigInteger OddPow (BigInteger b, BigInteger exp)
-                       {
-                               BigInteger resultNum = new BigInteger (Montgomery.ToMont (1, mod), mod.length << 1);
-                               BigInteger tempNum = new BigInteger (Montgomery.ToMont (b, mod), mod.length << 1);  // ensures (tempNum * tempNum) < b^ (2k)
-                               uint mPrime = Montgomery.Inverse (mod.data [0]);
-                               uint totalBits = (uint)exp.BitCount ();
-
-                               uint [] wkspace = new uint [mod.length << 1];
-
-                               // perform squaring and multiply exponentiation
-                               for (uint pos = 0; pos < totalBits; pos++) {
-                                       if (exp.TestBit (pos)) {
-
-                                               Array.Clear (wkspace, 0, wkspace.Length);
-                                               Kernel.Multiply (resultNum.data, 0, resultNum.length, tempNum.data, 0, tempNum.length, wkspace, 0);
-                                               resultNum.length += tempNum.length;
-                                               uint [] t = wkspace;
-                                               wkspace = resultNum.data;
-                                               resultNum.data = t;
-
-                                               Montgomery.Reduce (resultNum, mod, mPrime);
-                                       }
-
-                                       // the value of tempNum is required in the last loop
-                                       if (pos < totalBits - 1) {
-                                               Kernel.SquarePositive (tempNum, ref wkspace);
-                                               Montgomery.Reduce (tempNum, mod, mPrime);
-                                       }
-                               }
-
-                               Montgomery.Reduce (resultNum, mod, mPrime);
-                               return resultNum;
-                       }
-#endif
-                       #region Pow Small Base
-
-                       // TODO: Make tests for this, not really needed b/c prime stuff
-                       // checks it, but still would be nice
-#if !INSIDE_CORLIB
-                        [CLSCompliant (false)]
-#endif 
-#if true
-                       public BigInteger Pow (uint b, BigInteger exp)
-                       {
-                               return Pow (new BigInteger (b), exp);
-                       }
-#else
-                       public BigInteger Pow (uint b, BigInteger exp)
-                       {
-//                             if (b != 2) {
-                                       if ((mod.data [0] & 1) == 1)
-                                               return OddPow (b, exp);
-                                       else
-                                               return EvenPow (b, exp);
-/* buggy in some cases (like the well tested primes) 
-                               } else {
-                                       if ((mod.data [0] & 1) == 1)
-                                               return OddModTwoPow (exp);
-                                       else 
-                                               return EvenModTwoPow (exp);
-                               }*/
-                       }
-
-                       private unsafe BigInteger OddPow (uint b, BigInteger exp)
-                       {
-                               exp.Normalize ();
-                               uint [] wkspace = new uint [mod.length << 1 + 1];
-
-                               BigInteger resultNum = Montgomery.ToMont ((BigInteger)b, this.mod);
-                               resultNum = new BigInteger (resultNum, mod.length << 1 +1);
-
-                               uint mPrime = Montgomery.Inverse (mod.data [0]);
-
-                               int bc = exp.BitCount () - 2;
-                               uint pos = (bc > 1 ? (uint) bc : 1);
-
-                               //
-                               // We know that the first itr will make the val b
-                               //
-
-                               do {
-                                       //
-                                       // r = r ^ 2 % m
-                                       //
-                                       Kernel.SquarePositive (resultNum, ref wkspace);
-                                       resultNum = Montgomery.Reduce (resultNum, mod, mPrime);
-
-                                       if (exp.TestBit (pos)) {
-
-                                               //
-                                               // r = r * b % m
-                                               //
-
-                                               // TODO: Is Unsafe really speeding things up?
-                                               fixed (uint* u = resultNum.data) {
-
-                                                       uint i = 0;
-                                                       ulong mc = 0;
-
-                                                       do {
-                                                               mc += (ulong)u [i] * (ulong)b;
-                                                               u [i] = (uint)mc;
-                                                               mc >>= 32;
-                                                       } while (++i < resultNum.length);
-
-                                                       if (resultNum.length < mod.length) {
-                                                               if (mc != 0) {
-                                                                       u [i] = (uint)mc;
-                                                                       resultNum.length++;
-                                                                       while (resultNum >= mod)
-                                                                               Kernel.MinusEq (resultNum, mod);
-                                                               }
-                                                       } else if (mc != 0) {
-
-                                                               //
-                                                               // First, we estimate the quotient by dividing
-                                                               // the first part of each of the numbers. Then
-                                                               // we correct this, if necessary, with a subtraction.
-                                                               //
-
-                                                               uint cc = (uint)mc;
-
-                                                               // We would rather have this estimate overshoot,
-                                                               // so we add one to the divisor
-                                                               uint divEstimate;
-                                                               if (mod.data [mod.length - 1] < UInt32.MaxValue) {
-                                                                       divEstimate = (uint) ((((ulong)cc << 32) | (ulong) u [i -1]) /
-                                                                               (mod.data [mod.length-1] + 1));
-                                                               }
-                                                               else {
-                                                                       // guess but don't divide by 0
-                                                                       divEstimate = (uint) ((((ulong)cc << 32) | (ulong) u [i -1]) /
-                                                                               (mod.data [mod.length-1]));
-                                                               }
-
-                                                               uint t;
-
-                                                               i = 0;
-                                                               mc = 0;
-                                                               do {
-                                                                       mc += (ulong)mod.data [i] * (ulong)divEstimate;
-                                                                       t = u [i];
-                                                                       u [i] -= (uint)mc;
-                                                                       mc >>= 32;
-                                                                       if (u [i] > t) mc++;
-                                                                       i++;
-                                                               } while (i < resultNum.length);
-                                                               cc -= (uint)mc;
-
-                                                               if (cc != 0) {
-
-                                                                       uint sc = 0, j = 0;
-                                                                       uint [] s = mod.data;
-                                                                       do {
-                                                                               uint a = s [j];
-                                                                               if (((a += sc) < sc) | ((u [j] -= a) > ~a)) sc = 1;
-                                                                               else sc = 0;
-                                                                               j++;
-                                                                       } while (j < resultNum.length);
-                                                                       cc -= sc;
-                                                               }
-                                                               while (resultNum >= mod)
-                                                                       Kernel.MinusEq (resultNum, mod);
-                                                       } else {
-                                                               while (resultNum >= mod)
-                                                                       Kernel.MinusEq (resultNum, mod);
-                                                       }
-                                               }
-                                       }
-                               } while (pos-- > 0);
-
-                               resultNum = Montgomery.Reduce (resultNum, mod, mPrime);
-                               return resultNum;
-
-                       }
-                       
-                       private unsafe BigInteger EvenPow (uint b, BigInteger exp)
-                       {
-                               exp.Normalize ();
-                               uint [] wkspace = new uint [mod.length << 1 + 1];
-                               BigInteger resultNum = new BigInteger ((BigInteger)b, mod.length << 1 + 1);
-
-                               uint pos = (uint)exp.BitCount () - 2;
-
-                               //
-                               // We know that the first itr will make the val b
-                               //
-
-                               do {
-                                       //
-                                       // r = r ^ 2 % m
-                                       //
-                                       Kernel.SquarePositive (resultNum, ref wkspace);
-                                       if (!(resultNum.length < mod.length))
-                                               BarrettReduction (resultNum);
-
-                                       if (exp.TestBit (pos)) {
-
-                                               //
-                                               // r = r * b % m
-                                               //
-
-                                               // TODO: Is Unsafe really speeding things up?
-                                               fixed (uint* u = resultNum.data) {
-
-                                                       uint i = 0;
-                                                       ulong mc = 0;
-
-                                                       do {
-                                                               mc += (ulong)u [i] * (ulong)b;
-                                                               u [i] = (uint)mc;
-                                                               mc >>= 32;
-                                                       } while (++i < resultNum.length);
-
-                                                       if (resultNum.length < mod.length) {
-                                                               if (mc != 0) {
-                                                                       u [i] = (uint)mc;
-                                                                       resultNum.length++;
-                                                                       while (resultNum >= mod)
-                                                                               Kernel.MinusEq (resultNum, mod);
-                                                               }
-                                                       } else if (mc != 0) {
-
-                                                               //
-                                                               // First, we estimate the quotient by dividing
-                                                               // the first part of each of the numbers. Then
-                                                               // we correct this, if necessary, with a subtraction.
-                                                               //
-
-                                                               uint cc = (uint)mc;
-
-                                                               // We would rather have this estimate overshoot,
-                                                               // so we add one to the divisor
-                                                               uint divEstimate = (uint) ((((ulong)cc << 32) | (ulong) u [i -1]) /
-                                                                       (mod.data [mod.length-1] + 1));
-
-                                                               uint t;
-
-                                                               i = 0;
-                                                               mc = 0;
-                                                               do {
-                                                                       mc += (ulong)mod.data [i] * (ulong)divEstimate;
-                                                                       t = u [i];
-                                                                       u [i] -= (uint)mc;
-                                                                       mc >>= 32;
-                                                                       if (u [i] > t) mc++;
-                                                                       i++;
-                                                               } while (i < resultNum.length);
-                                                               cc -= (uint)mc;
-
-                                                               if (cc != 0) {
-
-                                                                       uint sc = 0, j = 0;
-                                                                       uint [] s = mod.data;
-                                                                       do {
-                                                                               uint a = s [j];
-                                                                               if (((a += sc) < sc) | ((u [j] -= a) > ~a)) sc = 1;
-                                                                               else sc = 0;
-                                                                               j++;
-                                                                       } while (j < resultNum.length);
-                                                                       cc -= sc;
-                                                               }
-                                                               while (resultNum >= mod)
-                                                                       Kernel.MinusEq (resultNum, mod);
-                                                       } else {
-                                                               while (resultNum >= mod)
-                                                                       Kernel.MinusEq (resultNum, mod);
-                                                       }
-                                               }
-                                       }
-                               } while (pos-- > 0);
-
-                               return resultNum;
-                       }
-#endif
-/* known to be buggy in some cases */
-#if false
-                       private unsafe BigInteger EvenModTwoPow (BigInteger exp)
-                       {
-                               exp.Normalize ();
-                               uint [] wkspace = new uint [mod.length << 1 + 1];
-
-                               BigInteger resultNum = new BigInteger (2, mod.length << 1 +1);
-
-                               uint value = exp.data [exp.length - 1];
-                               uint mask = 0x80000000;
-
-                               // Find the first bit of the exponent
-                               while ((value & mask) == 0)
-                                       mask >>= 1;
-
-                               //
-                               // We know that the first itr will make the val 2,
-                               // so eat one bit of the exponent
-                               //
-                               mask >>= 1;
-
-                               uint wPos = exp.length - 1;
-
-                               do {
-                                       value = exp.data [wPos];
-                                       do {
-                                               Kernel.SquarePositive (resultNum, ref wkspace);
-                                               if (resultNum.length >= mod.length)
-                                                       BarrettReduction (resultNum);
-
-                                               if ((value & mask) != 0) {
-                                                       //
-                                                       // resultNum = (resultNum * 2) % mod
-                                                       //
-
-                                                       fixed (uint* u = resultNum.data) {
-                                                               //
-                                                               // Double
-                                                               //
-                                                               uint* uu = u;
-                                                               uint* uuE = u + resultNum.length;
-                                                               uint x, carry = 0;
-                                                               while (uu < uuE) {
-                                                                       x = *uu;
-                                                                       *uu = (x << 1) | carry;
-                                                                       carry = x >> (32 - 1);
-                                                                       uu++;
-                                                               }
-
-                                                               // subtraction inlined because we know it is square
-                                                               if (carry != 0 || resultNum >= mod) {
-                                                                       uu = u;
-                                                                       uint c = 0;
-                                                                       uint [] s = mod.data;
-                                                                       uint i = 0;
-                                                                       do {
-                                                                               uint a = s [i];
-                                                                               if (((a += c) < c) | ((* (uu++) -= a) > ~a))
-                                                                                       c = 1;
-                                                                               else
-                                                                                       c = 0;
-                                                                               i++;
-                                                                       } while (uu < uuE);
-                                                               }
-                                                       }
-                                               }
-                                       } while ((mask >>= 1) > 0);
-                                       mask = 0x80000000;
-                               } while (wPos-- > 0);
-
-                               return resultNum;
-                       }
-
-                       private unsafe BigInteger OddModTwoPow (BigInteger exp)
-                       {
-
-                               uint [] wkspace = new uint [mod.length << 1 + 1];
-
-                               BigInteger resultNum = Montgomery.ToMont ((BigInteger)2, this.mod);
-                               resultNum = new BigInteger (resultNum, mod.length << 1 +1);
-
-                               uint mPrime = Montgomery.Inverse (mod.data [0]);
-
-                               //
-                               // TODO: eat small bits, the ones we can do with no modular reduction
-                               //
-                               uint pos = (uint)exp.BitCount () - 2;
-
-                               do {
-                                       Kernel.SquarePositive (resultNum, ref wkspace);
-                                       resultNum = Montgomery.Reduce (resultNum, mod, mPrime);
-
-                                       if (exp.TestBit (pos)) {
-                                               //
-                                               // resultNum = (resultNum * 2) % mod
-                                               //
-
-                                               fixed (uint* u = resultNum.data) {
-                                                       //
-                                                       // Double
-                                                       //
-                                                       uint* uu = u;
-                                                       uint* uuE = u + resultNum.length;
-                                                       uint x, carry = 0;
-                                                       while (uu < uuE) {
-                                                               x = *uu;
-                                                               *uu = (x << 1) | carry;
-                                                               carry = x >> (32 - 1);
-                                                               uu++;
-                                                       }
-
-                                                       // subtraction inlined because we know it is square
-                                                       if (carry != 0 || resultNum >= mod) {
-                                                               fixed (uint* s = mod.data) {
-                                                                       uu = u;
-                                                                       uint c = 0;
-                                                                       uint* ss = s;
-                                                                       do {
-                                                                               uint a = *ss++;
-                                                                               if (((a += c) < c) | ((* (uu++) -= a) > ~a))
-                                                                                       c = 1;
-                                                                               else
-                                                                                       c = 0;
-                                                                       } while (uu < uuE);
-                                                               }
-                                                       }
-                                               }
-                                       }
-                               } while (pos-- > 0);
-
-                               resultNum = Montgomery.Reduce (resultNum, mod, mPrime);
-                               return resultNum;
-                       }
-#endif
-                       #endregion
-               }
-
-               /// <summary>
-               /// Low level functions for the BigInteger
-               /// </summary>
-               private sealed class Kernel {
-
-                       #region Addition/Subtraction
-
-                       /// <summary>
-                       /// Adds two numbers with the same sign.
-                       /// </summary>
-                       /// <param name="bi1">A BigInteger</param>
-                       /// <param name="bi2">A BigInteger</param>
-                       /// <returns>bi1 + bi2</returns>
-                       public static BigInteger AddSameSign (BigInteger bi1, BigInteger bi2)
-                       {
-                               uint [] x, y;
-                               uint yMax, xMax, i = 0;
-
-                               // x should be bigger
-                               if (bi1.length < bi2.length) {
-                                       x = bi2.data;
-                                       xMax = bi2.length;
-                                       y = bi1.data;
-                                       yMax = bi1.length;
-                               } else {
-                                       x = bi1.data;
-                                       xMax = bi1.length;
-                                       y = bi2.data;
-                                       yMax = bi2.length;
-                               }
-                               
-                               BigInteger result = new BigInteger (Sign.Positive, xMax + 1);
-
-                               uint [] r = result.data;
-
-                               ulong sum = 0;
-
-                               // Add common parts of both numbers
-                               do {
-                                       sum = ((ulong)x [i]) + ((ulong)y [i]) + sum;
-                                       r [i] = (uint)sum;
-                                       sum >>= 32;
-                               } while (++i < yMax);
-
-                               // Copy remainder of longer number while carry propagation is required
-                               bool carry = (sum != 0);
-
-                               if (carry) {
-
-                                       if (i < xMax) {
-                                               do
-                                                       carry = ((r [i] = x [i] + 1) == 0);
-                                               while (++i < xMax && carry);
-                                       }
-
-                                       if (carry) {
-                                               r [i] = 1;
-                                               result.length = ++i;
-                                               return result;
-                                       }
-                               }
-
-                               // Copy the rest
-                               if (i < xMax) {
-                                       do
-                                               r [i] = x [i];
-                                       while (++i < xMax);
-                               }
-
-                               result.Normalize ();
-                               return result;
-                       }
-
-                       public static BigInteger Subtract (BigInteger big, BigInteger small)
-                       {
-                               BigInteger result = new BigInteger (Sign.Positive, big.length);
-
-                               uint [] r = result.data, b = big.data, s = small.data;
-                               uint i = 0, c = 0;
-
-                               do {
-
-                                       uint x = s [i];
-                                       if (((x += c) < c) | ((r [i] = b [i] - x) > ~x))
-                                               c = 1;
-                                       else
-                                               c = 0;
-
-                               } while (++i < small.length);
-
-                               if (i == big.length) goto fixup;
-
-                               if (c == 1) {
-                                       do
-                                               r [i] = b [i] - 1;
-                                       while (b [i++] == 0 && i < big.length);
-
-                                       if (i == big.length) goto fixup;
-                               }
-
-                               do
-                                       r [i] = b [i];
-                               while (++i < big.length);
-
-                               fixup:
-
-                                       result.Normalize ();
-                               return result;
-                       }
-
-                       public static void MinusEq (BigInteger big, BigInteger small)
-                       {
-                               uint [] b = big.data, s = small.data;
-                               uint i = 0, c = 0;
-
-                               do {
-                                       uint x = s [i];
-                                       if (((x += c) < c) | ((b [i] -= x) > ~x))
-                                               c = 1;
-                                       else
-                                               c = 0;
-                               } while (++i < small.length);
-
-                               if (i == big.length) goto fixup;
-
-                               if (c == 1) {
-                                       do
-                                               b [i]--;
-                                       while (b [i++] == 0 && i < big.length);
-                               }
-
-                               fixup:
-
-                                       // Normalize length
-                                       while (big.length > 0 && big.data [big.length-1] == 0) big.length--;
-
-                               // Check for zero
-                               if (big.length == 0)
-                                       big.length++;
-
-                       }
-
-                       public static void PlusEq (BigInteger bi1, BigInteger bi2)
-                       {
-                               uint [] x, y;
-                               uint yMax, xMax, i = 0;
-                               bool flag = false;
-
-                               // x should be bigger
-                               if (bi1.length < bi2.length){
-                                       flag = true;
-                                       x = bi2.data;
-                                       xMax = bi2.length;
-                                       y = bi1.data;
-                                       yMax = bi1.length;
-                               } else {
-                                       x = bi1.data;
-                                       xMax = bi1.length;
-                                       y = bi2.data;
-                                       yMax = bi2.length;
-                               }
-
-                               uint [] r = bi1.data;
-
-                               ulong sum = 0;
-
-                               // Add common parts of both numbers
-                               do {
-                                       sum += ((ulong)x [i]) + ((ulong)y [i]);
-                                       r [i] = (uint)sum;
-                                       sum >>= 32;
-                               } while (++i < yMax);
-
-                               // Copy remainder of longer number while carry propagation is required
-                               bool carry = (sum != 0);
-
-                               if (carry){
-
-                                       if (i < xMax) {
-                                               do
-                                                       carry = ((r [i] = x [i] + 1) == 0);
-                                               while (++i < xMax && carry);
-                                       }
-
-                                       if (carry) {
-                                               r [i] = 1;
-                                               bi1.length = ++i;
-                                               return;
-                                       }
-                               }
-
-                               // Copy the rest
-                               if (flag && i < xMax - 1) {
-                                       do
-                                               r [i] = x [i];
-                                       while (++i < xMax);
-                               }
-
-                               bi1.length = xMax + 1;
-                               bi1.Normalize ();
-                       }
-
-                       #endregion
-
-                       #region Compare
-
-                       /// <summary>
-                       /// Compares two BigInteger
-                       /// </summary>
-                       /// <param name="bi1">A BigInteger</param>
-                       /// <param name="bi2">A BigInteger</param>
-                       /// <returns>The sign of bi1 - bi2</returns>
-                       public static Sign Compare (BigInteger bi1, BigInteger bi2)
-                       {
-                               //
-                               // Step 1. Compare the lengths
-                               //
-                               uint l1 = bi1.length, l2 = bi2.length;
-
-                               while (l1 > 0 && bi1.data [l1-1] == 0) l1--;
-                               while (l2 > 0 && bi2.data [l2-1] == 0) l2--;
-
-                               if (l1 == 0 && l2 == 0) return Sign.Zero;
-
-                               // bi1 len < bi2 len
-                               if (l1 < l2) return Sign.Negative;
-                               // bi1 len > bi2 len
-                               else if (l1 > l2) return Sign.Positive;
-
-                               //
-                               // Step 2. Compare the bits
-                               //
-
-                               uint pos = l1 - 1;
-
-                               while (pos != 0 && bi1.data [pos] == bi2.data [pos]) pos--;
-                               
-                               if (bi1.data [pos] < bi2.data [pos])
-                                       return Sign.Negative;
-                               else if (bi1.data [pos] > bi2.data [pos])
-                                       return Sign.Positive;
-                               else
-                                       return Sign.Zero;
-                       }
-
-                       #endregion
-
-                       #region Division
-
-                       #region Dword
-
-                       /// <summary>
-                       /// Performs n / d and n % d in one operation.
-                       /// </summary>
-                       /// <param name="n">A BigInteger, upon exit this will hold n / d</param>
-                       /// <param name="d">The divisor</param>
-                       /// <returns>n % d</returns>
-                       public static uint SingleByteDivideInPlace (BigInteger n, uint d)
-                       {
-                               ulong r = 0;
-                               uint i = n.length;
-
-                               while (i-- > 0) {
-                                       r <<= 32;
-                                       r |= n.data [i];
-                                       n.data [i] = (uint)(r / d);
-                                       r %= d;
-                               }
-                               n.Normalize ();
-
-                               return (uint)r;
-                       }
-
-                       public static uint DwordMod (BigInteger n, uint d)
-                       {
-                               ulong r = 0;
-                               uint i = n.length;
-
-                               while (i-- > 0) {
-                                       r <<= 32;
-                                       r |= n.data [i];
-                                       r %= d;
-                               }
-
-                               return (uint)r;
-                       }
-
-                       public static BigInteger DwordDiv (BigInteger n, uint d)
-                       {
-                               BigInteger ret = new BigInteger (Sign.Positive, n.length);
-
-                               ulong r = 0;
-                               uint i = n.length;
-
-                               while (i-- > 0) {
-                                       r <<= 32;
-                                       r |= n.data [i];
-                                       ret.data [i] = (uint)(r / d);
-                                       r %= d;
-                               }
-                               ret.Normalize ();
-
-                               return ret;
-                       }
-
-                       public static BigInteger [] DwordDivMod (BigInteger n, uint d)
-                       {
-                               BigInteger ret = new BigInteger (Sign.Positive , n.length);
-
-                               ulong r = 0;
-                               uint i = n.length;
-
-                               while (i-- > 0) {
-                                       r <<= 32;
-                                       r |= n.data [i];
-                                       ret.data [i] = (uint)(r / d);
-                                       r %= d;
-                               }
-                               ret.Normalize ();
-
-                               BigInteger rem = (uint)r;
-
-                               return new BigInteger [] {ret, rem};
-                       }
-
-                               #endregion
-
-                       #region BigNum
-
-                       public static BigInteger [] multiByteDivide (BigInteger bi1, BigInteger bi2)
-                       {
-                               if (Kernel.Compare (bi1, bi2) == Sign.Negative)
-                                       return new BigInteger [2] { 0, new BigInteger (bi1) };
-
-                               bi1.Normalize (); bi2.Normalize ();
-
-                               if (bi2.length == 1)
-                                       return DwordDivMod (bi1, bi2.data [0]);
-
-                               uint remainderLen = bi1.length + 1;
-                               int divisorLen = (int)bi2.length + 1;
-
-                               uint mask = 0x80000000;
-                               uint val = bi2.data [bi2.length - 1];
-                               int shift = 0;
-                               int resultPos = (int)bi1.length - (int)bi2.length;
-
-                               while (mask != 0 && (val & mask) == 0) {
-                                       shift++; mask >>= 1;
-                               }
-
-                               BigInteger quot = new BigInteger (Sign.Positive, bi1.length - bi2.length + 1);
-                               BigInteger rem = (bi1 << shift);
-
-                               uint [] remainder = rem.data;
-
-                               bi2 = bi2 << shift;
-
-                               int j = (int)(remainderLen - bi2.length);
-                               int pos = (int)remainderLen - 1;
-
-                               uint firstDivisorByte = bi2.data [bi2.length-1];
-                               ulong secondDivisorByte = bi2.data [bi2.length-2];
-
-                               while (j > 0) {
-                                       ulong dividend = ((ulong)remainder [pos] << 32) + (ulong)remainder [pos-1];
-
-                                       ulong q_hat = dividend / (ulong)firstDivisorByte;
-                                       ulong r_hat = dividend % (ulong)firstDivisorByte;
-
-                                       do {
-
-                                               if (q_hat == 0x100000000 ||
-                                                       (q_hat * secondDivisorByte) > ((r_hat << 32) + remainder [pos-2])) {
-                                                       q_hat--;
-                                                       r_hat += (ulong)firstDivisorByte;
-
-                                                       if (r_hat < 0x100000000)
-                                                               continue;
-                                               }
-                                               break;
-                                       } while (true);
-
-                                       //
-                                       // At this point, q_hat is either exact, or one too large
-                                       // (more likely to be exact) so, we attempt to multiply the
-                                       // divisor by q_hat, if we get a borrow, we just subtract
-                                       // one from q_hat and add the divisor back.
-                                       //
-
-                                       uint t;
-                                       uint dPos = 0;
-                                       int nPos = pos - divisorLen + 1;
-                                       ulong mc = 0;
-                                       uint uint_q_hat = (uint)q_hat;
-                                       do {
-                                               mc += (ulong)bi2.data [dPos] * (ulong)uint_q_hat;
-                                               t = remainder [nPos];
-                                               remainder [nPos] -= (uint)mc;
-                                               mc >>= 32;
-                                               if (remainder [nPos] > t) mc++;
-                                               dPos++; nPos++;
-                                       } while (dPos < divisorLen);
-
-                                       nPos = pos - divisorLen + 1;
-                                       dPos = 0;
-
-                                       // Overestimate
-                                       if (mc != 0) {
-                                               uint_q_hat--;
-                                               ulong sum = 0;
-
-                                               do {
-                                                       sum = ((ulong)remainder [nPos]) + ((ulong)bi2.data [dPos]) + sum;
-                                                       remainder [nPos] = (uint)sum;
-                                                       sum >>= 32;
-                                                       dPos++; nPos++;
-                                               } while (dPos < divisorLen);
-
-                                       }
-
-                                       quot.data [resultPos--] = (uint)uint_q_hat;
-
-                                       pos--;
-                                       j--;
-                               }
-
-                               quot.Normalize ();
-                               rem.Normalize ();
-                               BigInteger [] ret = new BigInteger [2] { quot, rem };
-
-                               if (shift != 0)
-                                       ret [1] >>= shift;
-
-                               return ret;
-                       }
-
-                       #endregion
-
-                       #endregion
-
-                       #region Shift
-                       public static BigInteger LeftShift (BigInteger bi, int n)
-                       {
-                               if (n == 0) return new BigInteger (bi, bi.length + 1);
-
-                               int w = n >> 5;
-                               n &= ((1 << 5) - 1);
-
-                               BigInteger ret = new BigInteger (Sign.Positive, bi.length + 1 + (uint)w);
-
-                               uint i = 0, l = bi.length;
-                               if (n != 0) {
-                                       uint x, carry = 0;
-                                       while (i < l) {
-                                               x = bi.data [i];
-                                               ret.data [i + w] = (x << n) | carry;
-                                               carry = x >> (32 - n);
-                                               i++;
-                                       }
-                                       ret.data [i + w] = carry;
-                               } else {
-                                       while (i < l) {
-                                               ret.data [i + w] = bi.data [i];
-                                               i++;
-                                       }
-                               }
-
-                               ret.Normalize ();
-                               return ret;
-                       }
-
-                       public static BigInteger RightShift (BigInteger bi, int n)
-                       {
-                               if (n == 0) return new BigInteger (bi);
-
-                               int w = n >> 5;
-                               int s = n & ((1 << 5) - 1);
-
-                               BigInteger ret = new BigInteger (Sign.Positive, bi.length - (uint)w + 1);
-                               uint l = (uint)ret.data.Length - 1;
-
-                               if (s != 0) {
-
-                                       uint x, carry = 0;
-
-                                       while (l-- > 0) {
-                                               x = bi.data [l + w];
-                                               ret.data [l] = (x >> n) | carry;
-                                               carry = x << (32 - n);
-                                       }
-                               } else {
-                                       while (l-- > 0)
-                                               ret.data [l] = bi.data [l + w];
-
-                               }
-                               ret.Normalize ();
-                               return ret;
-                       }
-
-                       #endregion
-
-                       #region Multiply
-
-                       public static BigInteger MultiplyByDword (BigInteger n, uint f)
-                       {
-                               BigInteger ret = new BigInteger (Sign.Positive, n.length + 1);
-
-                               uint i = 0;
-                               ulong c = 0;
-
-                               do {
-                                       c += (ulong)n.data [i] * (ulong)f;
-                                       ret.data [i] = (uint)c;
-                                       c >>= 32;
-                               } while (++i < n.length);
-                               ret.data [i] = (uint)c;
-                               ret.Normalize ();
-                               return ret;
-
-                       }
-
-                       /// <summary>
-                       /// Multiplies the data in x [xOffset:xOffset+xLen] by
-                       /// y [yOffset:yOffset+yLen] and puts it into
-                       /// d [dOffset:dOffset+xLen+yLen].
-                       /// </summary>
-                       /// <remarks>
-                       /// This code is unsafe! It is the caller's responsibility to make
-                       /// sure that it is safe to access x [xOffset:xOffset+xLen],
-                       /// y [yOffset:yOffset+yLen], and d [dOffset:dOffset+xLen+yLen].
-                       /// </remarks>
-                       public static unsafe void Multiply (uint [] x, uint xOffset, uint xLen, uint [] y, uint yOffset, uint yLen, uint [] d, uint dOffset)
-                       {
-                               fixed (uint* xx = x, yy = y, dd = d) {
-                                       uint* xP = xx + xOffset,
-                                               xE = xP + xLen,
-                                               yB = yy + yOffset,
-                                               yE = yB + yLen,
-                                               dB = dd + dOffset;
-
-                                       for (; xP < xE; xP++, dB++) {
-
-                                               if (*xP == 0) continue;
-
-                                               ulong mcarry = 0;
-
-                                               uint* dP = dB;
-                                               for (uint* yP = yB; yP < yE; yP++, dP++) {
-                                                       mcarry += ((ulong)*xP * (ulong)*yP) + (ulong)*dP;
-
-                                                       *dP = (uint)mcarry;
-                                                       mcarry >>= 32;
-                                               }
-
-                                               if (mcarry != 0)
-                                                       *dP = (uint)mcarry;
-                                       }
-                               }
-                       }
-
-                       /// <summary>
-                       /// Multiplies the data in x [xOffset:xOffset+xLen] by
-                       /// y [yOffset:yOffset+yLen] and puts the low mod words into
-                       /// d [dOffset:dOffset+mod].
-                       /// </summary>
-                       /// <remarks>
-                       /// This code is unsafe! It is the caller's responsibility to make
-                       /// sure that it is safe to access x [xOffset:xOffset+xLen],
-                       /// y [yOffset:yOffset+yLen], and d [dOffset:dOffset+mod].
-                       /// </remarks>
-                       public static unsafe void MultiplyMod2p32pmod (uint [] x, int xOffset, int xLen, uint [] y, int yOffest, int yLen, uint [] d, int dOffset, int mod)
-                       {
-                               fixed (uint* xx = x, yy = y, dd = d) {
-                                       uint* xP = xx + xOffset,
-                                               xE = xP + xLen,
-                                               yB = yy + yOffest,
-                                               yE = yB + yLen,
-                                               dB = dd + dOffset,
-                                               dE = dB + mod;
-
-                                       for (; xP < xE; xP++, dB++) {
-
-                                               if (*xP == 0) continue;
-
-                                               ulong mcarry = 0;
-                                               uint* dP = dB;
-                                               for (uint* yP = yB; yP < yE && dP < dE; yP++, dP++) {
-                                                       mcarry += ((ulong)*xP * (ulong)*yP) + (ulong)*dP;
-
-                                                       *dP = (uint)mcarry;
-                                                       mcarry >>= 32;
-                                               }
-
-                                               if (mcarry != 0 && dP < dE)
-                                                       *dP = (uint)mcarry;
-                                       }
-                               }
-                       }
-
-                       public static unsafe void SquarePositive (BigInteger bi, ref uint [] wkSpace)
-                       {
-                               uint [] t = wkSpace;
-                               wkSpace = bi.data;
-                               uint [] d = bi.data;
-                               uint dl = bi.length;
-                               bi.data = t;
-
-                               fixed (uint* dd = d, tt = t) {
-
-                                       uint* ttE = tt + t.Length;
-                                       // Clear the dest
-                                       for (uint* ttt = tt; ttt < ttE; ttt++)
-                                               *ttt = 0;
-
-                                       uint* dP = dd, tP = tt;
-
-                                       for (uint i = 0; i < dl; i++, dP++) {
-                                               if (*dP == 0)
-                                                       continue;
-
-                                               ulong mcarry = 0;
-                                               uint bi1val = *dP;
-
-                                               uint* dP2 = dP + 1, tP2 = tP + 2*i + 1;
-
-                                               for (uint j = i + 1; j < dl; j++, tP2++, dP2++) {
-                                                       // k = i + j
-                                                       mcarry += ((ulong)bi1val * (ulong)*dP2) + *tP2;
-
-                                                       *tP2 = (uint)mcarry;
-                                                       mcarry >>= 32;
-                                               }
-
-                                               if (mcarry != 0)
-                                                       *tP2 = (uint)mcarry;
-                                       }
-
-                                       // Double t. Inlined for speed.
-
-                                       tP = tt;
-
-                                       uint x, carry = 0;
-                                       while (tP < ttE) {
-                                               x = *tP;
-                                               *tP = (x << 1) | carry;
-                                               carry = x >> (32 - 1);
-                                               tP++;
-                                       }
-                                       if (carry != 0) *tP = carry;
-
-                                       // Add in the diagnals
-
-                                       dP = dd;
-                                       tP = tt;
-                                       for (uint* dE = dP + dl; (dP < dE); dP++, tP++) {
-                                               ulong val = (ulong)*dP * (ulong)*dP + *tP;
-                                               *tP = (uint)val;
-                                               val >>= 32;
-                                               *(++tP) += (uint)val;
-                                               if (*tP < (uint)val) {
-                                                       uint* tP3 = tP;
-                                                       // Account for the first carry
-                                                       (*++tP3)++;
-
-                                                       // Keep adding until no carry
-                                                       while ((*tP3++) == 0)
-                                                               (*tP3)++;
-                                               }
-
-                                       }
-
-                                       bi.length <<= 1;
-
-                                       // Normalize length
-                                       while (tt [bi.length-1] == 0 && bi.length > 1) bi.length--;
-
-                               }
-                       }
-
-/* 
- * Never called in BigInteger (and part of a private class)
- *                     public static bool Double (uint [] u, int l)
-                       {
-                               uint x, carry = 0;
-                               uint i = 0;
-                               while (i < l) {
-                                       x = u [i];
-                                       u [i] = (x << 1) | carry;
-                                       carry = x >> (32 - 1);
-                                       i++;
-                               }
-                               if (carry != 0) u [l] = carry;
-                               return carry != 0;
-                       }*/
-
-                       #endregion
-
-                       #region Number Theory
-
-                       public static BigInteger gcd (BigInteger a, BigInteger b)
-                       {
-                               BigInteger x = a;
-                               BigInteger y = b;
-
-                               BigInteger g = y;
-
-                               while (x.length > 1) {
-                                       g = x;
-                                       x = y % x;
-                                       y = g;
-
-                               }
-                               if (x == 0) return g;
-
-                               // TODO: should we have something here if we can convert to long?
-
-                               //
-                               // Now we can just do it with single precision. I am using the binary gcd method,
-                               // as it should be faster.
-                               //
-
-                               uint yy = x.data [0];
-                               uint xx = y % yy;
-
-                               int t = 0;
-
-                               while (((xx | yy) & 1) == 0) {
-                                       xx >>= 1; yy >>= 1; t++;
-                               }
-                               while (xx != 0) {
-                                       while ((xx & 1) == 0) xx >>= 1;
-                                       while ((yy & 1) == 0) yy >>= 1;
-                                       if (xx >= yy)
-                                               xx = (xx - yy) >> 1;
-                                       else
-                                               yy = (yy - xx) >> 1;
-                               }
-
-                               return yy << t;
-                       }
-
-                       public static uint modInverse (BigInteger bi, uint modulus)
-                       {
-                               uint a = modulus, b = bi % modulus;
-                               uint p0 = 0, p1 = 1;
-
-                               while (b != 0) {
-                                       if (b == 1)
-                                               return p1;
-                                       p0 += (a / b) * p1;
-                                       a %= b;
-
-                                       if (a == 0)
-                                               break;
-                                       if (a == 1)
-                                               return modulus-p0;
-
-                                       p1 += (b / a) * p0;
-                                       b %= a;
-
-                               }
-                               return 0;
-                       }
-                       
-                       public static BigInteger modInverse (BigInteger bi, BigInteger modulus)
-                       {
-                               if (modulus.length == 1) return modInverse (bi, modulus.data [0]);
-
-                               BigInteger [] p = { 0, 1 };
-                               BigInteger [] q = new BigInteger [2];    // quotients
-                               BigInteger [] r = { 0, 0 };             // remainders
-
-                               int step = 0;
-
-                               BigInteger a = modulus;
-                               BigInteger b = bi;
-
-                               ModulusRing mr = new ModulusRing (modulus);
-
-                               while (b != 0) {
-
-                                       if (step > 1) {
-
-                                               BigInteger pval = mr.Difference (p [0], p [1] * q [0]);
-                                               p [0] = p [1]; p [1] = pval;
-                                       }
-
-                                       BigInteger [] divret = multiByteDivide (a, b);
-
-                                       q [0] = q [1]; q [1] = divret [0];
-                                       r [0] = r [1]; r [1] = divret [1];
-                                       a = b;
-                                       b = divret [1];
-
-                                       step++;
-                               }
-
-                               if (r [0] != 1)
-                                       throw (new ArithmeticException ("No inverse!"));
-
-                               return mr.Difference (p [0], p [1] * q [0]);
-
-                       }
-                       #endregion
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Math/ChangeLog b/mcs/class/corlib/Mono.Math/ChangeLog
deleted file mode 100644 (file)
index f91df6a..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-2007-05-31  Alan McGovern  <alan.mcgovern@gmail.com>
-
-       * BigInteger.cs: Don't instantiate a new BigInteger after
-       multiplying - it's not needed.  
-
-2007-09-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Updated to match Mono.Security sources.
-
-2007-07-28  Miguel de Icaza  <miguel@novell.com>
-
-       * BigInteger.cs: Do not cast inside Equals,instead use the as
-       operator, as reported by Jesse Jones.
-
-2004-12-03  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Fix issue #70169 in ModPow when modulus is a power of
-       two.
-
-2004-10-19  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Fix issue #68452 when Randomize was being called on a
-       0 BigInteger (i.e. BitCount == 0).
-
-2004-05-14  Marek Safar  <marek.safar@seznam.cz>
-
-       * BigInteger.cs: Removed useless [CLSCompliant (false)]
-
-2004-05-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: In sync with Mono.Security.dll version.
-
-2004-04-30 Ben Maurer  <bmaurer@users.sourceforge.net>
-
-       * BigInteger.cs: use readonly for prime array.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: In sync with Mono.Security.dll version.
-
-2004-02-23  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Corrected isProbablePrime by removing the redundant 
-       loop. Fix #54750.
-
-2004-02-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Fixed isProbablePrime() and added Parse method from
-       patch provided by Pieter (#51229). Changed SmallPrimeSppTest to 
-       RabinMillerTest (#51229, #54262). Removed obsoleted method
-       isProbablePrime(int).
-
-2004-02-09  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BigInteger.cs: Added INSIDE_CORLIB to define ModulusRing as 
-       internal. Without this the unit tests for Mono.Math (now in
-       Mono.Security assembly) wont compile (see bugzilla #44845).
-
-2003-11-20 Ben Maurer  <bmaurer@users.sourceforge.net>
-
-       * BigInteger.cs: Fix prob. prime test for small numbers (Pieter Philippaerts)
-
-2003-06-11  Sebastien Pouliot <spouliot@motus.com>
-
-       * BigInteger.cs: Added Clear to zeroize big integers and code to allow
-       compares with null (because operators == and != are re-defined). Note:
-       The class may still leak some private info in temp arrays (thanks Ben).
-
-2003-04-22  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * BigInteger.cs: New, much faster, version by Ben Maurer. 
-       Warning: this version requires "unsafe" compilation switch
-       (which isn't a problem in corlib but may be elsewhere)
-
-2003-02-08  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * BigInteger.cs: Renamed namespace to match new location.
-
diff --git a/mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeBase.cs b/mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeBase.cs
deleted file mode 100644 (file)
index bee47e7..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-//
-// AuthenticodeBase.cs: Authenticode signature base class
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004, 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-using System.Security.Cryptography;
-
-namespace Mono.Security.Authenticode {
-
-       // References:
-       // a.   http://www.cs.auckland.ac.nz/~pgut001/pubs/authenticode.txt
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       enum Authority {
-               Individual,
-               Commercial,
-               Maximum
-       }
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class AuthenticodeBase {
-
-               public const string spcIndirectDataContext = "1.3.6.1.4.1.311.2.1.4";
-
-               private byte[] fileblock;
-               private FileStream fs;
-               private int blockNo;
-               private int blockLength;
-               private int peOffset;
-               private int dirSecurityOffset;
-               private int dirSecuritySize;
-               private int coffSymbolTableOffset;
-
-               public AuthenticodeBase ()
-               {
-                       fileblock = new byte [4096];
-               }
-
-               internal int PEOffset {
-                       get {
-                               if (blockNo < 1)
-                                       ReadFirstBlock ();
-                               return peOffset;
-                       }
-               }
-
-               internal int CoffSymbolTableOffset {
-                       get {
-                               if (blockNo < 1)
-                                       ReadFirstBlock ();
-                               return coffSymbolTableOffset;
-                       }
-               }
-
-               internal int SecurityOffset {
-                       get {
-                               if (blockNo < 1)
-                                       ReadFirstBlock ();
-                               return dirSecurityOffset;
-                       }
-               }
-
-               internal void Open (string filename)
-               {
-                       if (fs != null)
-                               Close ();
-                       fs = new FileStream (filename, FileMode.Open, FileAccess.Read, FileShare.Read);
-               }
-
-               internal void Close ()
-               {
-                       if (fs != null) {
-                               fs.Close ();
-                               fs = null;
-                               blockNo = 0;
-                       }
-               }
-
-               internal bool ReadFirstBlock ()
-               {
-                       if (fs == null)
-                               return false;
-
-                       fs.Position = 0;
-                       // read first block - it will include (100% sure) 
-                       // the MZ header and (99.9% sure) the PE header
-                       blockLength = fs.Read (fileblock, 0, fileblock.Length);
-                       blockNo = 1;
-                       if (blockLength < 64)
-                               return false;   // invalid PE file
-
-                       // 1. Validate the MZ header informations
-                       // 1.1. Check for magic MZ at start of header
-                       if (BitConverterLE.ToUInt16 (fileblock, 0) != 0x5A4D)
-                               return false;
-
-                       // 1.2. Find the offset of the PE header
-                       peOffset = BitConverterLE.ToInt32 (fileblock, 60);
-                       if (peOffset > fileblock.Length) {
-                               // just in case (0.1%) this can actually happen
-                               string msg = String.Format (Locale.GetText (
-                                       "Header size too big (> {0} bytes)."),
-                                       fileblock.Length);
-                               throw new NotSupportedException (msg);
-                       }
-                       if (peOffset > fs.Length)
-                               return false;
-
-                       // 2. Read between DOS header and first part of PE header
-                       // 2.1. Check for magic PE at start of header
-                       //      PE - NT header ('P' 'E' 0x00 0x00)
-                       if (BitConverterLE.ToUInt32 (fileblock, peOffset) != 0x4550)
-                               return false;
-
-                       // 2.2. Locate IMAGE_DIRECTORY_ENTRY_SECURITY (offset and size)
-                       dirSecurityOffset = BitConverterLE.ToInt32 (fileblock, peOffset + 152);
-                       dirSecuritySize = BitConverterLE.ToInt32 (fileblock, peOffset + 156);
-
-                       // COFF symbol tables are deprecated - we'll strip them if we see them!
-                       // (otherwise the signature won't work on MS and we don't want to support COFF for that)
-                       coffSymbolTableOffset = BitConverterLE.ToInt32 (fileblock, peOffset + 12);
-
-                       return true;
-               }
-
-               internal byte[] GetSecurityEntry () 
-               {
-                       if (blockNo < 1)
-                               ReadFirstBlock ();
-
-                       if (dirSecuritySize > 8) {
-                               // remove header from size (not ASN.1 based)
-                               byte[] secEntry = new byte [dirSecuritySize - 8];
-                               // position after header and read entry
-                               fs.Position = dirSecurityOffset + 8;
-                               fs.Read (secEntry, 0, secEntry.Length);
-                               return secEntry;
-                       }
-                       return null;
-               }
-
-               internal byte[] GetHash (HashAlgorithm hash)
-               {
-                       if (blockNo < 1)
-                               ReadFirstBlock ();
-                       fs.Position = blockLength;
-
-                       // hash the rest of the file
-                       long n;
-                       int addsize = 0;
-                       // minus any authenticode signature (with 8 bytes header)
-                       if (dirSecurityOffset > 0) {
-                               // it is also possible that the signature block 
-                               // starts within the block in memory (small EXE)
-                               if (dirSecurityOffset < blockLength) {
-                                       blockLength = dirSecurityOffset;
-                                       n = 0;
-                               } else {
-                                       n = dirSecurityOffset - blockLength;
-                               }
-                       } else if (coffSymbolTableOffset > 0) {
-                               fileblock[PEOffset + 12] = 0;
-                               fileblock[PEOffset + 13] = 0;
-                               fileblock[PEOffset + 14] = 0;
-                               fileblock[PEOffset + 15] = 0;
-                               fileblock[PEOffset + 16] = 0;
-                               fileblock[PEOffset + 17] = 0;
-                               fileblock[PEOffset + 18] = 0;
-                               fileblock[PEOffset + 19] = 0;
-                               // it is also possible that the signature block 
-                               // starts within the block in memory (small EXE)
-                               if (coffSymbolTableOffset < blockLength) {
-                                       blockLength = coffSymbolTableOffset;
-                                       n = 0;
-                               } else {
-                                       n = coffSymbolTableOffset - blockLength;
-                               }
-                       } else {
-                               addsize = (int) (fs.Length & 7);
-                               if (addsize > 0)
-                                       addsize = 8 - addsize;
-                               
-                               n = fs.Length - blockLength;
-                       }
-
-                       // Authenticode(r) gymnastics
-                       // Hash from (generally) 0 to 215 (216 bytes)
-                       int pe = peOffset + 88;
-                       hash.TransformBlock (fileblock, 0, pe, fileblock, 0);
-                       // then skip 4 for checksum
-                       pe += 4;
-                       // Continue hashing from (generally) 220 to 279 (60 bytes)
-                       hash.TransformBlock (fileblock, pe, 60, fileblock, pe);
-                       // then skip 8 bytes for IMAGE_DIRECTORY_ENTRY_SECURITY
-                       pe += 68;
-
-                       // everything is present so start the hashing
-                       if (n == 0) {
-                               // hash the (only) block
-                               hash.TransformFinalBlock (fileblock, pe, blockLength - pe);
-                       }
-                       else {
-                               // hash the last part of the first (already in memory) block
-                               hash.TransformBlock (fileblock, pe, blockLength - pe, fileblock, pe);
-
-                               // hash by blocks of 4096 bytes
-                               long blocks = (n >> 12);
-                               int remainder = (int)(n - (blocks << 12));
-                               if (remainder == 0) {
-                                       blocks--;
-                                       remainder = 4096;
-                               }
-                               // blocks
-                               while (blocks-- > 0) {
-                                       fs.Read (fileblock, 0, fileblock.Length);
-                                       hash.TransformBlock (fileblock, 0, fileblock.Length, fileblock, 0);
-                               }
-                               // remainder
-                               if (fs.Read (fileblock, 0, remainder) != remainder)
-                                       return null;
-
-                               if (addsize > 0) {
-                                       hash.TransformBlock (fileblock, 0, remainder, fileblock, 0);
-                                       hash.TransformFinalBlock (new byte [addsize], 0, addsize);
-                               } else {
-                                       hash.TransformFinalBlock (fileblock, 0, remainder);
-                               }
-                       }
-                       return hash.Hash;
-               }
-
-               // for compatibility only
-               protected byte[] HashFile (string fileName, string hashName) 
-               {
-                       try {
-                               Open (fileName);
-                               HashAlgorithm hash = HashAlgorithm.Create (hashName);
-                               byte[] result = GetHash (hash);
-                               Close ();
-                               return result;
-                       }
-                       catch {
-                               return null;
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeDeformatter.cs b/mcs/class/corlib/Mono.Security.Authenticode/AuthenticodeDeformatter.cs
deleted file mode 100644 (file)
index a92affc..0000000
+++ /dev/null
@@ -1,456 +0,0 @@
-//
-// AuthenticodeDeformatter.cs: Authenticode signature validator
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.IO;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Cryptography;
-
-using Mono.Security.Cryptography;
-using Mono.Security.X509;
-
-namespace Mono.Security.Authenticode {
-
-       // References:
-       // a.   http://www.cs.auckland.ac.nz/~pgut001/pubs/authenticode.txt
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class AuthenticodeDeformatter : AuthenticodeBase {
-
-               private string filename;
-               private byte[] hash;
-               private X509CertificateCollection coll;
-               private ASN1 signedHash;
-               private DateTime timestamp;
-               private X509Certificate signingCertificate;
-               private int reason;
-               private bool trustedRoot;
-               private bool trustedTimestampRoot;
-               private byte[] entry;
-
-               private X509Chain signerChain;
-               private X509Chain timestampChain;
-
-               public AuthenticodeDeformatter () : base ()
-               {
-                       reason = -1;
-                       signerChain = new X509Chain ();
-                       timestampChain = new X509Chain ();
-               }
-
-               public AuthenticodeDeformatter (string fileName) : this () 
-               {
-                       FileName = fileName;
-               }
-
-               public string FileName {
-                       get { return filename; }
-                       set { 
-                               Reset ();
-                               try {
-                                       CheckSignature (value); 
-                               }
-                               catch (SecurityException) {
-                                       throw;
-                               }
-                               catch (Exception) {
-                                       reason = 1;
-                               }
-                       }
-               }
-
-               public byte[] Hash {
-                       get { 
-                               if (signedHash == null)
-                                       return null;
-                               return (byte[]) signedHash.Value.Clone ();
-                       }
-               }
-
-               public int Reason {
-                       get { 
-                               if (reason == -1)
-                                       IsTrusted ();
-                               return reason; 
-                       }
-               }
-
-               public bool IsTrusted ()
-               {
-                       if (entry == null) {
-                               reason = 1;
-                               return false;
-                       }
-
-                       if (signingCertificate == null) {
-                               reason = 7;
-                               return false;
-                       }
-
-                       if ((signerChain.Root == null) || !trustedRoot) {
-                               reason = 6;
-                               return false;
-                       }
-
-                       if (timestamp != DateTime.MinValue) {
-                               if ((timestampChain.Root == null) || !trustedTimestampRoot) {
-                                       reason = 6;
-                                       return false;
-                               }
-
-                               // check that file was timestamped when certificates were valid
-                               if (!signingCertificate.WasCurrent (Timestamp)) {
-                                       reason = 4;
-                                       return false;
-                               }
-                       }
-                       else if (!signingCertificate.IsCurrent) {
-                               // signature only valid if the certificate is valid
-                               reason = 8;
-                               return false;
-                       }
-
-                       if (reason == -1)
-                               reason = 0;
-                       return true;
-               }
-
-               public byte[] Signature {
-                       get {
-                               if (entry == null)
-                                       return null;
-                               return (byte[]) entry.Clone (); 
-                       }
-               }
-
-               public DateTime Timestamp {
-                       get { return timestamp; }
-               }
-
-               public X509CertificateCollection Certificates {
-                       get { return coll; }
-               }
-
-               public X509Certificate SigningCertificate {
-                       get { return signingCertificate; }
-               }
-
-               private bool CheckSignature (string fileName) 
-               {
-                       filename = fileName;
-                       Open (filename);
-                       entry = GetSecurityEntry ();
-                       if (entry == null) {
-                               // no signature is present
-                               reason = 1;
-                               Close ();
-                               return false;
-                       }
-
-                       PKCS7.ContentInfo ci = new PKCS7.ContentInfo (entry);
-                       if (ci.ContentType != PKCS7.Oid.signedData) {
-                               Close ();
-                               return false;
-                       }
-
-                       PKCS7.SignedData sd = new PKCS7.SignedData (ci.Content);
-                       if (sd.ContentInfo.ContentType != spcIndirectDataContext) {
-                               Close ();
-                               return false;
-                       }
-
-                       coll = sd.Certificates;
-
-                       ASN1 spc = sd.ContentInfo.Content;
-                       signedHash = spc [0][1][1];
-
-                       HashAlgorithm ha = null; 
-                       switch (signedHash.Length) {
-                               case 16:
-                                       ha = HashAlgorithm.Create ("MD5"); 
-                                       hash = GetHash (ha);
-                                       break;
-                               case 20:
-                                       ha = HashAlgorithm.Create ("SHA1");
-                                       hash = GetHash (ha);
-                                       break;
-                               default:
-                                       reason = 5;
-                                       Close ();
-                                       return false;
-                       }
-                       Close ();
-
-                       if (!signedHash.CompareValue (hash)) {
-                               reason = 2;
-                       }
-
-                       // messageDigest is a hash of spcIndirectDataContext (which includes the file hash)
-                       byte[] spcIDC = spc [0].Value;
-                       ha.Initialize (); // re-using hash instance
-                       byte[] messageDigest = ha.ComputeHash (spcIDC);
-
-                       bool sign = VerifySignature (sd, messageDigest, ha);
-                       return (sign && (reason == 0));
-               }
-
-               private bool CompareIssuerSerial (string issuer, byte[] serial, X509Certificate x509) 
-               {
-                       if (issuer != x509.IssuerName)
-                               return false;
-                       if (serial.Length != x509.SerialNumber.Length)
-                               return false;
-                       // MS shows the serial number inversed (so is Mono.Security.X509.X509Certificate)
-                       int n = serial.Length;
-                       for (int i=0; i < serial.Length; i++) {
-                               if (serial [i] != x509.SerialNumber [--n])
-                                       return false;
-                       }
-                       // must be true
-                       return true;
-               }
-
-               //private bool VerifySignature (ASN1 cs, byte[] calculatedMessageDigest, string hashName) 
-               private bool VerifySignature (PKCS7.SignedData sd, byte[] calculatedMessageDigest, HashAlgorithm ha) 
-               {
-                       string contentType = null;
-                       ASN1 messageDigest = null;
-//                     string spcStatementType = null;
-//                     string spcSpOpusInfo = null;
-
-                       for (int i=0; i < sd.SignerInfo.AuthenticatedAttributes.Count; i++) {
-                               ASN1 attr = (ASN1) sd.SignerInfo.AuthenticatedAttributes [i];
-                               string oid = ASN1Convert.ToOid (attr[0]);
-                               switch (oid) {
-                                       case "1.2.840.113549.1.9.3":
-                                               // contentType
-                                               contentType = ASN1Convert.ToOid (attr[1][0]);
-                                               break;
-                                       case "1.2.840.113549.1.9.4":
-                                               // messageDigest
-                                               messageDigest = attr[1][0];
-                                               break;
-                                       case "1.3.6.1.4.1.311.2.1.11":
-                                               // spcStatementType (Microsoft code signing)
-                                               // possible values
-                                               // - individualCodeSigning (1 3 6 1 4 1 311 2 1 21)
-                                               // - commercialCodeSigning (1 3 6 1 4 1 311 2 1 22)
-//                                             spcStatementType = ASN1Convert.ToOid (attr[1][0][0]);
-                                               break;
-                                       case "1.3.6.1.4.1.311.2.1.12":
-                                               // spcSpOpusInfo (Microsoft code signing)
-/*                                             try {
-                                                       spcSpOpusInfo = System.Text.Encoding.UTF8.GetString (attr[1][0][0][0].Value);
-                                               }
-                                               catch (NullReferenceException) {
-                                                       spcSpOpusInfo = null;
-                                               }*/
-                                               break;
-                                       default:
-                                               break;
-                               }
-                       }
-                       if (contentType != spcIndirectDataContext)
-                               return false;
-
-                       // verify message digest
-                       if (messageDigest == null)
-                               return false;
-                       if (!messageDigest.CompareValue (calculatedMessageDigest))
-                               return false;
-
-                       // verify signature
-                       string hashOID = CryptoConfig.MapNameToOID (ha.ToString ());
-                       
-                       // change to SET OF (not [0]) as per PKCS #7 1.5
-                       ASN1 aa = new ASN1 (0x31);
-                       foreach (ASN1 a in sd.SignerInfo.AuthenticatedAttributes)
-                               aa.Add (a);
-                       ha.Initialize ();
-                       byte[] p7hash = ha.ComputeHash (aa.GetBytes ());
-
-                       byte[] signature = sd.SignerInfo.Signature;
-                       // we need to find the specified certificate
-                       string issuer = sd.SignerInfo.IssuerName;
-                       byte[] serial = sd.SignerInfo.SerialNumber;
-                       foreach (X509Certificate x509 in coll) {
-                               if (CompareIssuerSerial (issuer, serial, x509)) {
-                                       // don't verify is key size don't match
-                                       if (x509.PublicKey.Length > (signature.Length >> 3)) {
-                                               // return the signing certificate even if the signature isn't correct
-                                               // (required behaviour for 2.0 support)
-                                               signingCertificate = x509;
-                                               RSACryptoServiceProvider rsa = (RSACryptoServiceProvider) x509.RSA;
-                                               if (rsa.VerifyHash (p7hash, hashOID, signature)) {
-                                                       signerChain.LoadCertificates (coll);
-                                                       trustedRoot = signerChain.Build (x509);
-                                                       break; 
-                                               }
-                                       }
-                               }
-                       }
-
-                       // timestamp signature is optional
-                       if (sd.SignerInfo.UnauthenticatedAttributes.Count == 0) {
-                               trustedTimestampRoot = true;
-                       }  else {
-                               for (int i = 0; i < sd.SignerInfo.UnauthenticatedAttributes.Count; i++) {
-                                       ASN1 attr = (ASN1) sd.SignerInfo.UnauthenticatedAttributes[i];
-                                       string oid = ASN1Convert.ToOid (attr[0]);
-                                       switch (oid) {
-                                       case PKCS7.Oid.countersignature:
-                                               // SEQUENCE {
-                                               //   OBJECT IDENTIFIER
-                                               //     countersignature (1 2 840 113549 1 9 6)
-                                               //   SET {
-                                               PKCS7.SignerInfo cs = new PKCS7.SignerInfo (attr[1]);
-                                               trustedTimestampRoot = VerifyCounterSignature (cs, signature);
-                                               break;
-                                       default:
-                                               // we don't support other unauthenticated attributes
-                                               break;
-                                       }
-                               }
-                       }
-
-                       return (trustedRoot && trustedTimestampRoot);
-               }
-
-               private bool VerifyCounterSignature (PKCS7.SignerInfo cs, byte[] signature) 
-               {
-                       // SEQUENCE {
-                       //   INTEGER 1
-                       if (cs.Version != 1)
-                               return false;
-                       //   SEQUENCE {
-                       //      SEQUENCE {
-
-                       string contentType = null;
-                       ASN1 messageDigest = null;
-                       for (int i=0; i < cs.AuthenticatedAttributes.Count; i++) {
-                               // SEQUENCE {
-                               //   OBJECT IDENTIFIER
-                               ASN1 attr = (ASN1) cs.AuthenticatedAttributes [i];
-                               string oid = ASN1Convert.ToOid (attr[0]);
-                               switch (oid) {
-                                       case "1.2.840.113549.1.9.3":
-                                               // contentType
-                                               contentType = ASN1Convert.ToOid (attr[1][0]);
-                                               break;
-                                       case "1.2.840.113549.1.9.4":
-                                               // messageDigest
-                                               messageDigest = attr[1][0];
-                                               break;
-                                       case "1.2.840.113549.1.9.5":
-                                               // SEQUENCE {
-                                               //   OBJECT IDENTIFIER
-                                               //     signingTime (1 2 840 113549 1 9 5)
-                                               //   SET {
-                                               //     UTCTime '030124013651Z'
-                                               //   }
-                                               // }
-                                               timestamp = ASN1Convert.ToDateTime (attr[1][0]);
-                                               break;
-                                       default:
-                                               break;
-                               }
-                       }
-
-                       if (contentType != PKCS7.Oid.data) 
-                               return false;
-
-                       // verify message digest
-                       if (messageDigest == null)
-                               return false;
-                       // TODO: must be read from the ASN.1 structure
-                       string hashName = null;
-                       switch (messageDigest.Length) {
-                               case 16:
-                                       hashName = "MD5";
-                                       break;
-                               case 20:
-                                       hashName = "SHA1";
-                                       break;
-                       }
-                       HashAlgorithm ha = HashAlgorithm.Create (hashName);
-                       if (!messageDigest.CompareValue (ha.ComputeHash (signature)))
-                               return false;
-
-                       // verify signature
-                       byte[] counterSignature = cs.Signature;
-
-                       // change to SET OF (not [0]) as per PKCS #7 1.5
-                       ASN1 aa = new ASN1 (0x31);
-                       foreach (ASN1 a in cs.AuthenticatedAttributes)
-                               aa.Add (a);
-                       byte[] p7hash = ha.ComputeHash (aa.GetBytes ());
-
-                       // we need to try all certificates
-                       string issuer = cs.IssuerName;
-                       byte[] serial = cs.SerialNumber;
-                       foreach (X509Certificate x509 in coll) {
-                               if (CompareIssuerSerial (issuer, serial, x509)) {
-                                       if (x509.PublicKey.Length > counterSignature.Length) {
-                                               RSACryptoServiceProvider rsa = (RSACryptoServiceProvider) x509.RSA;
-                                               // we need to HACK around bad (PKCS#1 1.5) signatures made by Verisign Timestamp Service
-                                               // and this means copying stuff into our own RSAManaged to get the required flexibility
-                                               RSAManaged rsam = new RSAManaged ();
-                                               rsam.ImportParameters (rsa.ExportParameters (false));
-                                               if (PKCS1.Verify_v15 (rsam, ha, p7hash, counterSignature, true)) {
-                                                       timestampChain.LoadCertificates (coll);
-                                                       return (timestampChain.Build (x509));
-                                               }
-                                       }
-                               }
-                       }
-                       // no certificate can verify this signature!
-                       return false;
-               }
-
-               private void Reset ()
-               {
-                       filename = null;
-                       entry = null;
-                       hash = null;
-                       signedHash = null;
-                       signingCertificate = null;
-                       reason = -1;
-                       trustedRoot = false;
-                       trustedTimestampRoot = false;
-                       signerChain.Reset ();
-                       timestampChain.Reset ();
-                       timestamp = DateTime.MinValue;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Authenticode/ChangeLog b/mcs/class/corlib/Mono.Security.Authenticode/ChangeLog
deleted file mode 100644 (file)
index 07ce4c9..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-2010-03-16  Jb Evain  <jbevain@novell.com>
-
-       * AuthenticodeBase.cs, AuthenticodeDeformatter.cs: use MOONLIGHT
-       symbol to disambiguate MonoTouch and Moonlight code.
-
-2009-04-30  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * AuthenticodeBase.cs, AuthenticodeDeformatter.cs: Remove from NET_2_1
-
-2008-01-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeDeformatter.cs: Use RSAManaged and the new overloaded
-       PKCS1.Verify_v15 with tryNonStandardEncoding == true when verifying
-       timestamping certificate signatures. Fix for #350958
-
-2007-04-26  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeBase.cs: Synch with latest Mono.Security version
-       * AuthenticodeDeformatter.cs: Synch with latest Mono.Security version
-
-2006-11-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeDeformatter.cs: Return (find) the SigningCertificate 
-       even if the signature isn't verifiable. This is the behaviour required
-       for 2.0.
-
-2006-06-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeBase.cs: Fix destination offset. Note that this works 
-       under MS but not under Mono.
-       * AuthenticodeDeformatter.cs: Report a more useful error if the file
-       hash doesn't match the signed hash.
-
-2005-03-24  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeDeformatter.cs: Don't hide the SecurityException (e.g. 
-       file access).
-
-2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeDeformatter.cs: Fixed warning (l4) for unused variables.
-
-2004-09-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeBase.cs: Merge from Mono.Security.dll. This version is 
-       less memory consuming (it works by 4kb blocks instead of loading the
-       entire assembly).
-       * AuthenticodeDeformatter.cs: Merge from Mono.Security.dll. Hash will
-       only be created if the assembly is signed. Benefits from Authenticode
-       Base changes.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * AuthenticodeBase.cs: In sync with Mono.Security.dll version.
-       * AuthenticodeDeformatter.cs: In sync with Mono.Security.dll version.
-
-2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
-
-       * AuthenticodeBase.cs: Use BitConverterLE
-
-2003-12-15  Sebastien Pouliot  <spouliot@videotron.ca> 
-
-       * AuthenticodeDeformatter.cs: Now throw a COMException for invalid 
-       signature. Added a SigningCertificate property (to be independant of
-       the certificate collection ordering).
-
-2003-10-12  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * AuthenticodeBase.cs: Added from Mono.Security assembly for 
-       Authenticode support in X509Certificate.CreateFromSignedFile
-       * AuthenticodeDeformatter.cs: Added from Mono.Security assembly for 
-       Authenticode support in X509Certificate.CreateFromSignedFile
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/CryptoConvert.cs b/mcs/class/corlib/Mono.Security.Cryptography/CryptoConvert.cs
deleted file mode 100644 (file)
index a56e94d..0000000
+++ /dev/null
@@ -1,754 +0,0 @@
-//
-// CryptoConvert.cs - Crypto Convertion Routines
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell Inc. (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Security.Cryptography;
-using System.Text;
-
-namespace Mono.Security.Cryptography {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       sealed class CryptoConvert {
-
-               private CryptoConvert () 
-               {
-               }
-
-               static private int ToInt32LE (byte [] bytes, int offset)
-               {
-                       return (bytes [offset+3] << 24) | (bytes [offset+2] << 16) | (bytes [offset+1] << 8) | bytes [offset];
-               }
-
-               static private uint ToUInt32LE (byte [] bytes, int offset)
-               {
-                       return (uint)((bytes [offset+3] << 24) | (bytes [offset+2] << 16) | (bytes [offset+1] << 8) | bytes [offset]);
-               }
-
-               static private byte [] GetBytesLE (int val)
-               {
-                       return new byte [] { 
-                               (byte) (val & 0xff), 
-                               (byte) ((val >> 8) & 0xff), 
-                               (byte) ((val >> 16) & 0xff), 
-                               (byte) ((val >> 24) & 0xff)
-                       };
-                }
-
-               static private byte[] Trim (byte[] array) 
-               {
-                       for (int i=0; i < array.Length; i++) {
-                               if (array [i] != 0x00) {
-                                       byte[] result = new byte [array.Length - i];
-                                       Buffer.BlockCopy (array, i, result, 0, result.Length);
-                                       return result;
-                               }
-                       }
-                       return null;
-               }
-
-               // convert the key from PRIVATEKEYBLOB to RSA
-               // http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/Security/private_key_blobs.asp
-               // e.g. SNK files, PVK files
-               static public RSA FromCapiPrivateKeyBlob (byte[] blob) 
-               {
-                       return FromCapiPrivateKeyBlob (blob, 0);
-               }
-
-               static public RSA FromCapiPrivateKeyBlob (byte[] blob, int offset) 
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       RSAParameters rsap = new RSAParameters ();
-                       try {
-                               if ((blob [offset]   != 0x07) ||                                // PRIVATEKEYBLOB (0x07)
-                                   (blob [offset+1] != 0x02) ||                                // Version (0x02)
-                                   (blob [offset+2] != 0x00) ||                                // Reserved (word)
-                                   (blob [offset+3] != 0x00) ||
-                                   (ToUInt32LE (blob, offset+8) != 0x32415352))        // DWORD magic = RSA2
-                                       throw new CryptographicException ("Invalid blob header");
-                               
-                               // ALGID (CALG_RSA_SIGN, CALG_RSA_KEYX, ...)
-                               // int algId = ToInt32LE (blob, offset+4);
-
-                               // DWORD bitlen
-                               int bitLen = ToInt32LE (blob, offset+12);
-
-                               // DWORD public exponent
-                               byte[] exp = new byte [4];
-                               Buffer.BlockCopy (blob, offset+16, exp, 0, 4);
-                               Array.Reverse (exp);
-                               rsap.Exponent = Trim (exp);
-                       
-                               int pos = offset+20;
-                               // BYTE modulus[rsapubkey.bitlen/8];
-                               int byteLen = (bitLen >> 3);
-                               rsap.Modulus = new byte [byteLen];
-                               Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
-                               Array.Reverse (rsap.Modulus);
-                               pos += byteLen;
-
-                               // BYTE prime1[rsapubkey.bitlen/16];
-                               int byteHalfLen = (byteLen >> 1);
-                               rsap.P = new byte [byteHalfLen];
-                               Buffer.BlockCopy (blob, pos, rsap.P, 0, byteHalfLen);
-                               Array.Reverse (rsap.P);
-                               pos += byteHalfLen;
-
-                               // BYTE prime2[rsapubkey.bitlen/16];
-                               rsap.Q = new byte [byteHalfLen];
-                               Buffer.BlockCopy (blob, pos, rsap.Q, 0, byteHalfLen);
-                               Array.Reverse (rsap.Q);
-                               pos += byteHalfLen;
-
-                               // BYTE exponent1[rsapubkey.bitlen/16];
-                               rsap.DP = new byte [byteHalfLen];
-                               Buffer.BlockCopy (blob, pos, rsap.DP, 0, byteHalfLen);
-                               Array.Reverse (rsap.DP);
-                               pos += byteHalfLen;
-
-                               // BYTE exponent2[rsapubkey.bitlen/16];
-                               rsap.DQ = new byte [byteHalfLen];
-                               Buffer.BlockCopy (blob, pos, rsap.DQ, 0, byteHalfLen);
-                               Array.Reverse (rsap.DQ);
-                               pos += byteHalfLen;
-
-                               // BYTE coefficient[rsapubkey.bitlen/16];
-                               rsap.InverseQ = new byte [byteHalfLen];
-                               Buffer.BlockCopy (blob, pos, rsap.InverseQ, 0, byteHalfLen);
-                               Array.Reverse (rsap.InverseQ);
-                               pos += byteHalfLen;
-
-                               // ok, this is hackish but CryptoAPI support it so...
-                               // note: only works because CRT is used by default
-                               // http://bugzilla.ximian.com/show_bug.cgi?id=57941
-                               rsap.D = new byte [byteLen]; // must be allocated
-                               if (pos + byteLen + offset <= blob.Length) {
-                                       // BYTE privateExponent[rsapubkey.bitlen/8];
-                                       Buffer.BlockCopy (blob, pos, rsap.D, 0, byteLen);
-                                       Array.Reverse (rsap.D);
-                               }
-                       }
-                       catch (Exception e) {
-                               throw new CryptographicException ("Invalid blob.", e);
-                       }
-
-#if NET_2_1
-                       RSA rsa = RSA.Create ();
-                       rsa.ImportParameters (rsap);
-#else
-                       RSA rsa = null;
-                       try {
-                               rsa = RSA.Create ();
-                               rsa.ImportParameters (rsap);
-                       }
-                       catch (CryptographicException ce) {
-                               // this may cause problem when this code is run under
-                               // the SYSTEM identity on Windows (e.g. ASP.NET). See
-                               // http://bugzilla.ximian.com/show_bug.cgi?id=77559
-                               try {
-                                       CspParameters csp = new CspParameters ();
-                                       csp.Flags = CspProviderFlags.UseMachineKeyStore;
-                                       rsa = new RSACryptoServiceProvider (csp);
-                                       rsa.ImportParameters (rsap);
-                               }
-                               catch {
-                                       // rethrow original, not the later, exception if this fails
-                                       throw ce;
-                               }
-                       }
-#endif
-                       return rsa;
-               }
-
-               static public DSA FromCapiPrivateKeyBlobDSA (byte[] blob)
-               {
-                       return FromCapiPrivateKeyBlobDSA (blob, 0);
-               }
-
-               static public DSA FromCapiPrivateKeyBlobDSA (byte[] blob, int offset)
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       DSAParameters dsap = new DSAParameters ();
-                       try {
-                               if ((blob [offset] != 0x07) ||                          // PRIVATEKEYBLOB (0x07)
-                                   (blob [offset + 1] != 0x02) ||                      // Version (0x02)
-                                   (blob [offset + 2] != 0x00) ||                      // Reserved (word)
-                                   (blob [offset + 3] != 0x00) ||
-                                   (ToUInt32LE (blob, offset + 8) != 0x32535344))      // DWORD magic
-                                       throw new CryptographicException ("Invalid blob header");
-
-                               int bitlen = ToInt32LE (blob, offset + 12);
-                               int bytelen = bitlen >> 3;
-                               int pos = offset + 16;
-
-                               dsap.P = new byte [bytelen];
-                               Buffer.BlockCopy (blob, pos, dsap.P, 0, bytelen);
-                               Array.Reverse (dsap.P);
-                               pos += bytelen;
-
-                               dsap.Q = new byte [20];
-                               Buffer.BlockCopy (blob, pos, dsap.Q, 0, 20);
-                               Array.Reverse (dsap.Q);
-                               pos += 20;
-
-                               dsap.G = new byte [bytelen];
-                               Buffer.BlockCopy (blob, pos, dsap.G, 0, bytelen);
-                               Array.Reverse (dsap.G);
-                               pos += bytelen;
-
-                               dsap.X = new byte [20];
-                               Buffer.BlockCopy (blob, pos, dsap.X, 0, 20);
-                               Array.Reverse (dsap.X);
-                               pos += 20;
-
-                               dsap.Counter = ToInt32LE (blob, pos);
-                               pos += 4;
-
-                               dsap.Seed = new byte [20];
-                               Buffer.BlockCopy (blob, pos, dsap.Seed, 0, 20);
-                               Array.Reverse (dsap.Seed);
-                               pos += 20;
-                       }
-                       catch (Exception e) {
-                               throw new CryptographicException ("Invalid blob.", e);
-                       }
-
-#if NET_2_1
-                       DSA dsa = (DSA)DSA.Create ();
-                       dsa.ImportParameters (dsap);
-#else
-                       DSA dsa = null;
-                       try {
-                               dsa = (DSA)DSA.Create ();
-                               dsa.ImportParameters (dsap);
-                       }
-                       catch (CryptographicException ce) {
-                               // this may cause problem when this code is run under
-                               // the SYSTEM identity on Windows (e.g. ASP.NET). See
-                               // http://bugzilla.ximian.com/show_bug.cgi?id=77559
-                               try {
-                                       CspParameters csp = new CspParameters ();
-                                       csp.Flags = CspProviderFlags.UseMachineKeyStore;
-                                       dsa = new DSACryptoServiceProvider (csp);
-                                       dsa.ImportParameters (dsap);
-                               }
-                               catch {
-                                       // rethrow original, not the later, exception if this fails
-                                       throw ce;
-                               }
-                       }
-#endif
-                       return dsa;
-               }
-
-               static public byte[] ToCapiPrivateKeyBlob (RSA rsa) 
-               {
-                       RSAParameters p = rsa.ExportParameters (true);
-                       int keyLength = p.Modulus.Length; // in bytes
-                       byte[] blob = new byte [20 + (keyLength << 2) + (keyLength >> 1)];
-
-                       blob [0] = 0x07;        // Type - PRIVATEKEYBLOB (0x07)
-                       blob [1] = 0x02;        // Version - Always CUR_BLOB_VERSION (0x02)
-                       // [2], [3]             // RESERVED - Always 0
-                       blob [5] = 0x24;        // ALGID - Always 00 24 00 00 (for CALG_RSA_SIGN)
-                       blob [8] = 0x52;        // Magic - RSA2 (ASCII in hex)
-                       blob [9] = 0x53;
-                       blob [10] = 0x41;
-                       blob [11] = 0x32;
-
-                       byte[] bitlen = GetBytesLE (keyLength << 3);
-                       blob [12] = bitlen [0]; // bitlen
-                       blob [13] = bitlen [1]; 
-                       blob [14] = bitlen [2]; 
-                       blob [15] = bitlen [3];
-
-                       // public exponent (DWORD)
-                       int pos = 16;
-                       int n = p.Exponent.Length;
-                       while (n > 0)
-                               blob [pos++] = p.Exponent [--n];
-                       // modulus
-                       pos = 20;
-                       byte[] part = p.Modulus;
-                       int len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-                       // private key
-                       part = p.P;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-
-                       part = p.Q;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-
-                       part = p.DP;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-
-                       part = p.DQ;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-
-                       part = p.InverseQ;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-
-                       part = p.D;
-                       len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-
-                       return blob;
-               }
-
-               static public byte[] ToCapiPrivateKeyBlob (DSA dsa)
-               {
-                       DSAParameters p = dsa.ExportParameters (true);
-                       int keyLength = p.P.Length; // in bytes
-
-                       // header + P + Q + G + X + count + seed
-                       byte[] blob = new byte [16 + keyLength + 20 + keyLength + 20 + 4 + 20];
-
-                       blob [0] = 0x07;        // Type - PRIVATEKEYBLOB (0x07)
-                       blob [1] = 0x02;        // Version - Always CUR_BLOB_VERSION (0x02)
-                       // [2], [3]             // RESERVED - Always 0
-                       blob [5] = 0x22;        // ALGID
-                       blob [8] = 0x44;        // Magic
-                       blob [9] = 0x53;
-                       blob [10] = 0x53;
-                       blob [11] = 0x32;
-
-                       byte[] bitlen = GetBytesLE (keyLength << 3);
-                       blob [12] = bitlen [0];
-                       blob [13] = bitlen [1];
-                       blob [14] = bitlen [2];
-                       blob [15] = bitlen [3];
-
-                       int pos = 16;
-                       byte[] part = p.P;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, keyLength);
-                       pos += keyLength;
-
-                       part = p.Q;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, 20);
-                       pos += 20;
-
-                       part = p.G;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, keyLength);
-                       pos += keyLength;
-
-                       part = p.X;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, 20);
-                       pos += 20;
-
-                       Buffer.BlockCopy (GetBytesLE (p.Counter), 0, blob, pos, 4);
-                       pos += 4;
-
-                       part = p.Seed;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, 20);
-
-                       return blob;
-               }
-
-               static public RSA FromCapiPublicKeyBlob (byte[] blob) 
-               {
-                       return FromCapiPublicKeyBlob (blob, 0);
-               }
-
-               static public RSA FromCapiPublicKeyBlob (byte[] blob, int offset) 
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       try {
-                               if ((blob [offset]   != 0x06) ||                                // PUBLICKEYBLOB (0x06)
-                                   (blob [offset+1] != 0x02) ||                                // Version (0x02)
-                                   (blob [offset+2] != 0x00) ||                                // Reserved (word)
-                                   (blob [offset+3] != 0x00) || 
-                                   (ToUInt32LE (blob, offset+8) != 0x31415352))        // DWORD magic = RSA1
-                                       throw new CryptographicException ("Invalid blob header");
-
-                               // ALGID (CALG_RSA_SIGN, CALG_RSA_KEYX, ...)
-                               // int algId = ToInt32LE (blob, offset+4);
-
-                               // DWORD bitlen
-                               int bitLen = ToInt32LE (blob, offset+12);
-
-                               // DWORD public exponent
-                               RSAParameters rsap = new RSAParameters ();
-                               rsap.Exponent = new byte [3];
-                               rsap.Exponent [0] = blob [offset+18];
-                               rsap.Exponent [1] = blob [offset+17];
-                               rsap.Exponent [2] = blob [offset+16];
-                       
-                               int pos = offset+20;
-                               // BYTE modulus[rsapubkey.bitlen/8];
-                               int byteLen = (bitLen >> 3);
-                               rsap.Modulus = new byte [byteLen];
-                               Buffer.BlockCopy (blob, pos, rsap.Modulus, 0, byteLen);
-                               Array.Reverse (rsap.Modulus);
-#if NET_2_1
-                               RSA rsa = RSA.Create ();
-                               rsa.ImportParameters (rsap);
-#else
-                               RSA rsa = null;
-                               try {
-                                       rsa = RSA.Create ();
-                                       rsa.ImportParameters (rsap);
-                               }
-                               catch (CryptographicException) {
-                                       // this may cause problem when this code is run under
-                                       // the SYSTEM identity on Windows (e.g. ASP.NET). See
-                                       // http://bugzilla.ximian.com/show_bug.cgi?id=77559
-                                       CspParameters csp = new CspParameters ();
-                                       csp.Flags = CspProviderFlags.UseMachineKeyStore;
-                                       rsa = new RSACryptoServiceProvider (csp);
-                                       rsa.ImportParameters (rsap);
-                               }
-#endif
-                               return rsa;
-                       }
-                       catch (Exception e) {
-                               throw new CryptographicException ("Invalid blob.", e);
-                       }
-               }
-
-               static public DSA FromCapiPublicKeyBlobDSA (byte[] blob)
-               {
-                       return FromCapiPublicKeyBlobDSA (blob, 0);
-               }
-
-               static public DSA FromCapiPublicKeyBlobDSA (byte[] blob, int offset)
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       try {
-                               if ((blob [offset] != 0x06) ||                          // PUBLICKEYBLOB (0x06)
-                                   (blob [offset + 1] != 0x02) ||                      // Version (0x02)
-                                   (blob [offset + 2] != 0x00) ||                      // Reserved (word)
-                                   (blob [offset + 3] != 0x00) ||
-                                   (ToUInt32LE (blob, offset + 8) != 0x31535344))      // DWORD magic
-                                       throw new CryptographicException ("Invalid blob header");
-
-                               int bitlen = ToInt32LE (blob, offset + 12);
-                               DSAParameters dsap = new DSAParameters ();
-                               int bytelen = bitlen >> 3;
-                               int pos = offset + 16;
-
-                               dsap.P = new byte [bytelen];
-                               Buffer.BlockCopy (blob, pos, dsap.P, 0, bytelen);
-                               Array.Reverse (dsap.P);
-                               pos += bytelen;
-
-                               dsap.Q = new byte [20];
-                               Buffer.BlockCopy (blob, pos, dsap.Q, 0, 20);
-                               Array.Reverse (dsap.Q);
-                               pos += 20;
-
-                               dsap.G = new byte [bytelen];
-                               Buffer.BlockCopy (blob, pos, dsap.G, 0, bytelen);
-                               Array.Reverse (dsap.G);
-                               pos += bytelen;
-
-                               dsap.Y = new byte [bytelen];
-                               Buffer.BlockCopy (blob, pos, dsap.Y, 0, bytelen);
-                               Array.Reverse (dsap.Y);
-                               pos += bytelen;
-
-                               dsap.Counter = ToInt32LE (blob, pos);
-                               pos += 4;
-
-                               dsap.Seed = new byte [20];
-                               Buffer.BlockCopy (blob, pos, dsap.Seed, 0, 20);
-                               Array.Reverse (dsap.Seed);
-                               pos += 20;
-
-                               DSA dsa = (DSA)DSA.Create ();
-                               dsa.ImportParameters (dsap);
-                               return dsa;
-                       }
-                       catch (Exception e) {
-                               throw new CryptographicException ("Invalid blob.", e);
-                       }
-               }
-
-               static public byte[] ToCapiPublicKeyBlob (RSA rsa) 
-               {
-                       RSAParameters p = rsa.ExportParameters (false);
-                       int keyLength = p.Modulus.Length; // in bytes
-                       byte[] blob = new byte [20 + keyLength];
-
-                       blob [0] = 0x06;        // Type - PUBLICKEYBLOB (0x06)
-                       blob [1] = 0x02;        // Version - Always CUR_BLOB_VERSION (0x02)
-                       // [2], [3]             // RESERVED - Always 0
-                       blob [5] = 0x24;        // ALGID - Always 00 24 00 00 (for CALG_RSA_SIGN)
-                       blob [8] = 0x52;        // Magic - RSA1 (ASCII in hex)
-                       blob [9] = 0x53;
-                       blob [10] = 0x41;
-                       blob [11] = 0x31;
-
-                       byte[] bitlen = GetBytesLE (keyLength << 3);
-                       blob [12] = bitlen [0]; // bitlen
-                       blob [13] = bitlen [1]; 
-                       blob [14] = bitlen [2]; 
-                       blob [15] = bitlen [3];
-
-                       // public exponent (DWORD)
-                       int pos = 16;
-                       int n = p.Exponent.Length;
-                       while (n > 0)
-                               blob [pos++] = p.Exponent [--n];
-                       // modulus
-                       pos = 20;
-                       byte[] part = p.Modulus;
-                       int len = part.Length;
-                       Array.Reverse (part, 0, len);
-                       Buffer.BlockCopy (part, 0, blob, pos, len);
-                       pos += len;
-                       return blob;
-               }
-
-               static public byte[] ToCapiPublicKeyBlob (DSA dsa)
-               {
-                       DSAParameters p = dsa.ExportParameters (false);
-                       int keyLength = p.P.Length; // in bytes
-
-                       // header + P + Q + G + Y + count + seed
-                       byte[] blob = new byte [16 + keyLength + 20 + keyLength + keyLength + 4 + 20];
-
-                       blob [0] = 0x06;        // Type - PUBLICKEYBLOB (0x06)
-                       blob [1] = 0x02;        // Version - Always CUR_BLOB_VERSION (0x02)
-                       // [2], [3]             // RESERVED - Always 0
-                       blob [5] = 0x22;        // ALGID
-                       blob [8] = 0x44;        // Magic
-                       blob [9] = 0x53;
-                       blob [10] = 0x53;
-                       blob [11] = 0x31;
-
-                       byte[] bitlen = GetBytesLE (keyLength << 3);
-                       blob [12] = bitlen [0];
-                       blob [13] = bitlen [1];
-                       blob [14] = bitlen [2];
-                       blob [15] = bitlen [3];
-
-                       int pos = 16;
-                       byte[] part;
-
-                       part = p.P;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, keyLength);
-                       pos += keyLength;
-
-                       part = p.Q;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, 20);
-                       pos += 20;
-
-                       part = p.G;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, keyLength);
-                       pos += keyLength;
-
-                       part = p.Y;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, keyLength);
-                       pos += keyLength;
-
-                       Buffer.BlockCopy (GetBytesLE (p.Counter), 0, blob, pos, 4);
-                       pos += 4;
-
-                       part = p.Seed;
-                       Array.Reverse (part);
-                       Buffer.BlockCopy (part, 0, blob, pos, 20);
-
-                       return blob;
-               }
-
-               // PRIVATEKEYBLOB
-               // PUBLICKEYBLOB
-               static public RSA FromCapiKeyBlob (byte[] blob) 
-               {
-                       return FromCapiKeyBlob (blob, 0);
-               }
-
-               static public RSA FromCapiKeyBlob (byte[] blob, int offset) 
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       switch (blob [offset]) {
-                               case 0x00:
-                                       // this could be a public key inside an header
-                                       // like "sn -e" would produce
-                                       if (blob [offset + 12] == 0x06) {
-                                               return FromCapiPublicKeyBlob (blob, offset + 12);
-                                       }
-                                       break;
-                               case 0x06:
-                                       return FromCapiPublicKeyBlob (blob, offset);
-                               case 0x07:
-                                       return FromCapiPrivateKeyBlob (blob, offset);
-                       }
-                       throw new CryptographicException ("Unknown blob format.");
-               }
-
-               static public DSA FromCapiKeyBlobDSA (byte[] blob)
-               {
-                       return FromCapiKeyBlobDSA (blob, 0);
-               }
-
-               static public DSA FromCapiKeyBlobDSA (byte[] blob, int offset)
-               {
-                       if (blob == null)
-                               throw new ArgumentNullException ("blob");
-                       if (offset >= blob.Length)
-                               throw new ArgumentException ("blob is too small.");
-
-                       switch (blob [offset]) {
-                               case 0x06:
-                                       return FromCapiPublicKeyBlobDSA (blob, offset);
-                               case 0x07:
-                                       return FromCapiPrivateKeyBlobDSA (blob, offset);
-                       }
-                       throw new CryptographicException ("Unknown blob format.");
-               }
-
-               static public byte[] ToCapiKeyBlob (AsymmetricAlgorithm keypair, bool includePrivateKey) 
-               {
-                       if (keypair == null)
-                               throw new ArgumentNullException ("keypair");
-
-                       // check between RSA and DSA (and potentially others like DH)
-                       if (keypair is RSA)
-                               return ToCapiKeyBlob ((RSA)keypair, includePrivateKey);
-                       else if (keypair is DSA)
-                               return ToCapiKeyBlob ((DSA)keypair, includePrivateKey);
-                       else
-                               return null;    // TODO
-               }
-
-               static public byte[] ToCapiKeyBlob (RSA rsa, bool includePrivateKey) 
-               {
-                       if (rsa == null)
-                               throw new ArgumentNullException ("rsa");
-
-                       if (includePrivateKey)
-                               return ToCapiPrivateKeyBlob (rsa);
-                       else
-                               return ToCapiPublicKeyBlob (rsa);
-               }
-
-               static public byte[] ToCapiKeyBlob (DSA dsa, bool includePrivateKey)
-               {
-                       if (dsa == null)
-                               throw new ArgumentNullException ("dsa");
-
-                       if (includePrivateKey)
-                               return ToCapiPrivateKeyBlob (dsa);
-                       else
-                               return ToCapiPublicKeyBlob (dsa);
-               }
-
-               static public string ToHex (byte[] input) 
-               {
-                       if (input == null)
-                               return null;
-
-                       StringBuilder sb = new StringBuilder (input.Length * 2);
-                       foreach (byte b in input) {
-                               sb.Append (b.ToString ("X2", CultureInfo.InvariantCulture));
-                       }
-                       return sb.ToString ();
-               }
-
-               static private byte FromHexChar (char c) 
-               {
-                       if ((c >= 'a') && (c <= 'f'))
-                               return (byte) (c - 'a' + 10);
-                       if ((c >= 'A') && (c <= 'F'))
-                               return (byte) (c - 'A' + 10);
-                       if ((c >= '0') && (c <= '9'))
-                               return (byte) (c - '0');
-                       throw new ArgumentException ("invalid hex char");
-               }
-
-               static public byte[] FromHex (string hex) 
-               {
-                       if (hex == null)
-                               return null;
-                       if ((hex.Length & 0x1) == 0x1)
-                               throw new ArgumentException ("Length must be a multiple of 2");
-
-                       byte[] result = new byte [hex.Length >> 1];
-                       int n = 0;
-                       int i = 0;
-                       while (n < result.Length) {
-                               result [n] = (byte) (FromHexChar (hex [i++]) << 4);
-                               result [n++] += FromHexChar (hex [i++]);
-                       }
-                       return result;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/CryptoTools.cs b/mcs/class/corlib/Mono.Security.Cryptography/CryptoTools.cs
deleted file mode 100644 (file)
index a528714..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-//
-// Mono.Security.Cryptography.CryptoTools
-//     Shared class for common cryptographic functionalities
-//
-// Authors:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004, 2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security.Cryptography;
-
-namespace Mono.Security.Cryptography {
-
-#if INSIDE_CORLIB || INSIDE_SYSCORE
-       internal
-#else
-       public
-#endif
-       sealed class KeyBuilder {
-       
-               static private RandomNumberGenerator rng;
-
-               private KeyBuilder ()
-               {
-               }
-
-               static RandomNumberGenerator Rng {
-                       get {
-                               if (rng == null)
-                                       rng = RandomNumberGenerator.Create ();
-                               return rng;
-                       }
-               }
-       
-               static public byte[] Key (int size) 
-               {
-                       byte[] key = new byte [size];
-                       Rng.GetBytes (key);
-                       return key;
-               }
-       
-               static public byte[] IV (int size) 
-               {
-                       byte[] iv = new byte [size];
-                       Rng.GetBytes (iv);
-                       return iv;
-               }
-       }
-       
-       // Process an array as a sequence of blocks
-#if INSIDE_CORLIB || INSIDE_SYSCORE
-       internal
-#else
-       public
-#endif
-       class BlockProcessor {
-               private ICryptoTransform transform;
-               private byte[] block;
-               private int blockSize;  // in bytes (not in bits)
-               private int blockCount;
-       
-               public BlockProcessor (ICryptoTransform transform) 
-                       : this (transform, transform.InputBlockSize) {} 
-       
-               // some Transforms (like HashAlgorithm descendant) return 1 for
-               // block size (which isn't their real internal block size)
-               public BlockProcessor (ICryptoTransform transform, int blockSize)
-               {
-                       this.transform = transform;
-                       this.blockSize = blockSize;
-                       block = new byte [blockSize];
-               }
-       
-               ~BlockProcessor () 
-               {
-                       // zeroize our block (so we don't retain any information)
-                       Array.Clear (block, 0, blockSize);
-               }
-       
-               public void Initialize ()
-               {
-                       Array.Clear (block, 0, blockSize);
-                       blockCount = 0;
-               }
-       
-               public void Core (byte[] rgb) 
-               {
-                       Core (rgb, 0, rgb.Length);
-               }
-       
-               public void Core (byte[] rgb, int ib, int cb) 
-               {
-                       // 1. fill the rest of the "block"
-                       int n = System.Math.Min (blockSize - blockCount, cb);
-                       Buffer.BlockCopy (rgb, ib, block, blockCount, n); 
-                       blockCount += n;
-       
-                       // 2. if block is full then transform it
-                       if (blockCount == blockSize) {
-                               transform.TransformBlock (block, 0, blockSize, block, 0);
-       
-                               // 3. transform any other full block in specified buffer
-                               int b = (int) ((cb - n) / blockSize);
-                               for (int i=0; i < b; i++) {
-                                       transform.TransformBlock (rgb, n + ib, blockSize, block, 0);
-                                       n += blockSize;
-                               }
-       
-                               // 4. if data is still present fill the "block" with the remainder
-                               blockCount = cb - n;
-                               if (blockCount > 0)
-                                       Buffer.BlockCopy (rgb, n + ib, block, 0, blockCount);
-                       }
-               }
-       
-               public byte[] Final () 
-               {
-                       return transform.TransformFinalBlock (block, 0, blockCount);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/KeyPairPersistence.cs b/mcs/class/corlib/Mono.Security.Cryptography/KeyPairPersistence.cs
deleted file mode 100644 (file)
index 0615770..0000000
+++ /dev/null
@@ -1,454 +0,0 @@
-//
-// KeyPairPersistence.cs: Keypair persistence
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.IO;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-using System.Security;
-using System.Security.Cryptography;
-using System.Security.Permissions;
-using System.Text;
-
-using Mono.Xml;
-
-namespace Mono.Security.Cryptography {
-
-       /* File name
-        * [type][unique name][key number].xml
-        * 
-        * where
-        *      type            CspParameters.ProviderType
-        *      unique name     A unique name for the keypair, which is
-        *                      a. default (for a provider default keypair)
-        *                      b. a GUID derived from
-        *                              i. random if no container name was
-        *                              specified at generation time
-        *                              ii. the MD5 hash of the container
-        *                              name (CspParameters.KeyContainerName)
-        *      key number      CspParameters.KeyNumber
-        * 
-        * File format
-        * <KeyPair>
-        *      <Properties>
-        *              <Provider Name="" Type=""/>
-        *              <Container Name=""/>
-        *      </Properties>
-        *      <KeyValue Id="">
-        *              RSAKeyValue, DSAKeyValue ...
-        *      </KeyValue>
-        * </KeyPair>
-        */
-
-       /* NOTES
-        * 
-        * - There's NO confidentiality / integrity built in this
-        * persistance mechanism. The container directories (both user and
-        * machine) are created with restrited ACL. The ACL is also checked
-        * when a key is accessed (so totally public keys won't be used).
-        * see /mono/mono/metadata/security.c for implementation
-        * 
-        * - As we do not use CSP we limit ourselves to provider types (not 
-        * names). This means that for a same type and container type, but 
-        * two different provider names) will return the same keypair. This
-        * should work as CspParameters always requires a csp type in its
-        * constructors.
-        * 
-        * - Assert (CAS) are used so only the OS permission will limit access
-        * to the keypair files. I.e. this will work even in high-security 
-        * scenarios where users do not have access to file system (e.g. web 
-        * application). We can allow this because the filename used is 
-        * TOTALLY under our control (no direct user input is used).
-        * 
-        * - You CAN'T changes properties of the keypair once it's been
-        * created (saved). You must remove the container than save it 
-        * back. This is the same behaviour as CSP under Windows.
-        */
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class KeyPairPersistence {
-       
-               private static bool _userPathExists; // check at 1st use
-               private static string _userPath;
-               
-               private static bool _machinePathExists; // check at 1st use
-               private static string _machinePath;
-
-               private CspParameters _params;
-               private string _keyvalue;
-               private string _filename;
-               private string _container;
-
-               // constructors
-
-               public KeyPairPersistence (CspParameters parameters) 
-                       : this (parameters, null)
-               {
-               }
-
-               public KeyPairPersistence (CspParameters parameters, string keyPair) 
-               {
-                       if (parameters == null)
-                               throw new ArgumentNullException ("parameters");
-
-                       _params = Copy (parameters);
-                       _keyvalue = keyPair;
-               }
-
-               // properties
-
-               public string Filename {
-                       get { 
-                               if (_filename == null) {
-                                       _filename = String.Format (CultureInfo.InvariantCulture,
-                                               "[{0}][{1}][{2}].xml", 
-                                               _params.ProviderType, 
-                                               this.ContainerName, 
-                                               _params.KeyNumber);
-                                       if (UseMachineKeyStore)
-                                               _filename = Path.Combine (MachinePath, _filename);
-                                       else
-                                               _filename = Path.Combine (UserPath, _filename);
-                               }
-                               return _filename; 
-                       }
-               }
-
-               public string KeyValue {
-                       get { return _keyvalue; }
-                       set { 
-                               if (this.CanChange)
-                                       _keyvalue = value; 
-                       }
-               }
-
-               // return a (read-only) copy
-               public CspParameters Parameters {
-                       get { return Copy (_params); }
-               }
-
-               // methods
-
-               public bool Load () 
-               {
-                       // see NOTES
-// FIXME               new FileIOPermission (FileIOPermissionAccess.Read, this.Filename).Assert ();
-
-                       bool result = File.Exists (this.Filename);
-                       if (result) {
-                               using (StreamReader sr = File.OpenText (this.Filename)) {
-                                       FromXml (sr.ReadToEnd ());
-                               }
-                       }
-                       return result;
-               }
-
-               public void Save () 
-               {
-                       // see NOTES
-// FIXME               new FileIOPermission (FileIOPermissionAccess.Write, this.Filename).Assert ();
-
-                       using (FileStream fs = File.Open (this.Filename, FileMode.Create)) {
-                               StreamWriter sw = new StreamWriter (fs, Encoding.UTF8);
-                               sw.Write (this.ToXml ());
-                               sw.Close ();
-                       }
-                       // apply protection to newly created files
-                       if (UseMachineKeyStore)
-                               ProtectMachine (Filename);
-                       else
-                               ProtectUser (Filename);
-               }
-
-               public void Remove () 
-               {
-                       // see NOTES
-// FIXME               new FileIOPermission (FileIOPermissionAccess.Write, this.Filename).Assert ();
-
-                       File.Delete (this.Filename);
-                       // it's now possible to change the keypair un the container
-               }
-
-               // private static stuff
-
-               static object lockobj = new object ();
-               
-               private static string UserPath {
-                       get {
-                               lock (lockobj) {
-                                       if ((_userPath == null) || (!_userPathExists)) {
-                                               _userPath = Path.Combine (
-                                                       Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData),
-                                                       ".mono");
-                                               _userPath = Path.Combine (_userPath, "keypairs");
-
-                                               _userPathExists = Directory.Exists (_userPath);
-                                               if (!_userPathExists) {
-                                                       try {
-                                                               Directory.CreateDirectory (_userPath);
-                                                               ProtectUser (_userPath);
-                                                               _userPathExists = true;
-                                                       }
-                                                       catch (Exception e) {
-                                                               string msg = Locale.GetText ("Could not create user key store '{0}'.");
-                                                               throw new CryptographicException (String.Format (msg, _userPath), e);
-                                                       }
-                                               }
-                                       }
-                               }
-                               // is it properly protected ?
-                               if (!IsUserProtected (_userPath)) {
-                                       string msg = Locale.GetText ("Improperly protected user's key pairs in '{0}'.");
-                                       throw new CryptographicException (String.Format (msg, _userPath));
-                               }
-                               return _userPath;
-                       }
-               }
-
-               private static string MachinePath {
-                       get {
-                               lock (lockobj) {
-                                       if ((_machinePath == null) || (!_machinePathExists)) {
-                                               _machinePath = Path.Combine (
-                                                       Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
-                                                       ".mono");
-                                               _machinePath = Path.Combine (_machinePath, "keypairs");
-
-                                               _machinePathExists = Directory.Exists (_machinePath);
-                                               if (!_machinePathExists) {
-                                                       try {
-                                                               Directory.CreateDirectory (_machinePath);
-                                                               ProtectMachine (_machinePath);
-                                                               _machinePathExists = true;
-                                                       }
-                                                       catch (Exception e) {
-                                                               string msg = Locale.GetText ("Could not create machine key store '{0}'.");
-                                                               throw new CryptographicException (String.Format (msg, _machinePath), e);
-                                                       }
-                                               }
-                                       }
-                               }
-                               // is it properly protected ?
-                               if (!IsMachineProtected (_machinePath)) {
-                                       string msg = Locale.GetText ("Improperly protected machine's key pairs in '{0}'.");
-                                       throw new CryptographicException (String.Format (msg, _machinePath));
-                               }
-                               return _machinePath;
-                       }
-               }
-
-#if INSIDE_CORLIB
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal static extern bool _CanSecure (string root);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal static extern bool _ProtectUser (string path);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal static extern bool _ProtectMachine (string path);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal static extern bool _IsUserProtected (string path);
-
-               [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               internal static extern bool _IsMachineProtected (string path);
-#else
-               // Mono.Security.dll assembly can't use the internal 
-               // call (and still run with other runtimes)
-
-               // Note: Class is only available in Mono.Security.dll as
-               // a management helper (e.g. build a GUI app)
-
-               internal static bool _CanSecure (string root) 
-               {
-                       return true;
-               }
-
-               internal static bool _ProtectUser (string path)
-               {
-                       return true;
-               }
-
-               internal static bool _ProtectMachine (string path)
-               {
-                       return true;
-               }
-
-               internal static bool _IsUserProtected (string path)
-               {
-                       return true;
-               }
-
-               internal static bool _IsMachineProtected (string path)
-               {
-                       return true;
-               }
-#endif
-               // private stuff
-
-               private static bool CanSecure (string path) 
-               {
-                       // we assume POSIX filesystems can always be secured
-
-                       // check for Unix platforms - see FAQ for more details
-                       // http://www.mono-project.com/FAQ:_Technical#How_to_detect_the_execution_platform_.3F
-                       int platform = (int) Environment.OSVersion.Platform;
-                       if ((platform == 4) || (platform == 128) || (platform == 6))
-                               return true;
-
-                       // while we ask the runtime for Windows OS
-                       return _CanSecure (Path.GetPathRoot (path));
-               }
-
-               private static bool ProtectUser (string path)
-               {
-                       // we cannot protect on some filsystem (like FAT)
-                       if (CanSecure (path)) {
-                               return _ProtectUser (path);
-                       }
-                       // but Mono still needs to run on them :(
-                       return true;
-               }
-
-               private static bool ProtectMachine (string path)
-               {
-                       // we cannot protect on some filsystem (like FAT)
-                       if (CanSecure (path)) {
-                               return _ProtectMachine (path);
-                       }
-                       // but Mono still needs to run on them :(
-                       return true;
-               }
-
-               private static bool IsUserProtected (string path)
-               {
-                       // we cannot protect on some filsystem (like FAT)
-                       if (CanSecure (path)) {
-                               return _IsUserProtected (path);
-                       }
-                       // but Mono still needs to run on them :(
-                       return true;
-               }
-
-               private static bool IsMachineProtected (string path)
-               {
-                       // we cannot protect on some filsystem (like FAT)
-                       if (CanSecure (path)) {
-                               return _IsMachineProtected (path);
-                       }
-                       // but Mono still needs to run on them :(
-                       return true;
-               }
-               
-               private bool CanChange {
-                       get { return (_keyvalue == null); }
-               }
-
-               private bool UseDefaultKeyContainer {
-                       get { return ((_params.Flags & CspProviderFlags.UseDefaultKeyContainer) == CspProviderFlags.UseDefaultKeyContainer); }
-               }
-
-               private bool UseMachineKeyStore {
-                       get { return ((_params.Flags & CspProviderFlags.UseMachineKeyStore) == CspProviderFlags.UseMachineKeyStore); }
-               }
-
-               private string ContainerName {
-                       get {
-                               if (_container == null) {
-                                       if (UseDefaultKeyContainer) {
-                                               // easy to spot
-                                               _container = "default";
-                                       }
-                                       else if ((_params.KeyContainerName == null) || (_params.KeyContainerName.Length == 0)) {
-                                               _container = Guid.NewGuid ().ToString ();
-                                       }
-                                       else {
-                                               // we don't want to trust the key container name as we don't control it
-                                               // anyway some characters may not be compatible with the file system
-                                               byte[] data = Encoding.UTF8.GetBytes (_params.KeyContainerName);
-                                               // Note: We use MD5 as it is faster than SHA1 and has the same length 
-                                               // as a GUID. Recent problems found in MD5 (like collisions) aren't a
-                                               // problem in this case.
-                                               MD5 hash = MD5.Create ();
-                                               byte[] result = hash.ComputeHash (data);
-                                               _container = new Guid (result).ToString ();
-                                       }
-                               }
-                               return _container;
-                       }
-               }
-
-               // we do not want any changes after receiving the csp informations
-               private CspParameters Copy (CspParameters p) 
-               {
-                       CspParameters copy = new CspParameters (p.ProviderType, p.ProviderName, p.KeyContainerName);
-                       copy.KeyNumber = p.KeyNumber;
-                       copy.Flags = p.Flags;
-                       return copy;
-               }
-
-               private void FromXml (string xml) 
-               {
-                       SecurityParser sp = new SecurityParser ();
-                       sp.LoadXml (xml);
-
-                       SecurityElement root = sp.ToXml ();
-                       if (root.Tag == "KeyPair") {
-                               //SecurityElement prop = root.SearchForChildByTag ("Properties");
-                               SecurityElement keyv = root.SearchForChildByTag ("KeyValue");
-                               if (keyv.Children.Count > 0)
-                                       _keyvalue = keyv.Children [0].ToString ();
-                               // Note: we do not read other stuff because 
-                               // it can't be changed after key creation
-                       }
-               }
-
-               private string ToXml () 
-               {
-                       // note: we do not use SecurityElement here because the
-                       // keypair is a XML string (requiring parsing)
-                       StringBuilder xml = new StringBuilder ();
-                       xml.AppendFormat ("<KeyPair>{0}\t<Properties>{0}\t\t<Provider ", Environment.NewLine);
-                       if ((_params.ProviderName != null) && (_params.ProviderName.Length != 0)) {
-                               xml.AppendFormat ("Name=\"{0}\" ", _params.ProviderName);
-                       }
-                       xml.AppendFormat ("Type=\"{0}\" />{1}\t\t<Container ", _params.ProviderType, Environment.NewLine);
-                       xml.AppendFormat ("Name=\"{0}\" />{1}\t</Properties>{1}\t<KeyValue", this.ContainerName, Environment.NewLine);
-                       if (_params.KeyNumber != -1) {
-                               xml.AppendFormat (" Id=\"{0}\" ", _params.KeyNumber);
-                       }
-                       xml.AppendFormat (">{1}\t\t{0}{1}\t</KeyValue>{1}</KeyPair>{1}", this.KeyValue, Environment.NewLine);
-                       return xml.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/PKCS1.cs b/mcs/class/corlib/Mono.Security.Cryptography/PKCS1.cs
deleted file mode 100644 (file)
index 3b3252d..0000000
+++ /dev/null
@@ -1,416 +0,0 @@
-//
-// PKCS1.cs - Implements PKCS#1 primitives.
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security.Cryptography;
-
-namespace Mono.Security.Cryptography { 
-
-       // References:
-       // a.   PKCS#1: RSA Cryptography Standard 
-       //      http://www.rsasecurity.com/rsalabs/pkcs/pkcs-1/index.html
-       
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       sealed class PKCS1 {
-
-               private PKCS1 () 
-               {
-               }
-
-               private static bool Compare (byte[] array1, byte[] array2) 
-               {
-                       bool result = (array1.Length == array2.Length);
-                       if (result) {
-                               for (int i=0; i < array1.Length; i++)
-                                       if (array1[i] != array2[i])
-                                               return false;
-                       }
-                       return result;
-               }
-       
-               private static byte[] xor (byte[] array1, byte[] array2) 
-               {
-                       byte[] result = new byte [array1.Length];
-                       for (int i=0; i < result.Length; i++)
-                               result[i] = (byte) (array1[i] ^ array2[i]);
-                       return result;
-               }
-       
-               private static byte[] emptySHA1   = { 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 };
-               private static byte[] emptySHA256 = { 0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55 };
-               private static byte[] emptySHA384 = { 0x38, 0xb0, 0x60, 0xa7, 0x51, 0xac, 0x96, 0x38, 0x4c, 0xd9, 0x32, 0x7e, 0xb1, 0xb1, 0xe3, 0x6a, 0x21, 0xfd, 0xb7, 0x11, 0x14, 0xbe, 0x07, 0x43, 0x4c, 0x0c, 0xc7, 0xbf, 0x63, 0xf6, 0xe1, 0xda, 0x27, 0x4e, 0xde, 0xbf, 0xe7, 0x6f, 0x65, 0xfb, 0xd5, 0x1a, 0xd2, 0xf1, 0x48, 0x98, 0xb9, 0x5b };
-               private static byte[] emptySHA512 = { 0xcf, 0x83, 0xe1, 0x35, 0x7e, 0xef, 0xb8, 0xbd, 0xf1, 0x54, 0x28, 0x50, 0xd6, 0x6d, 0x80, 0x07, 0xd6, 0x20, 0xe4, 0x05, 0x0b, 0x57, 0x15, 0xdc, 0x83, 0xf4, 0xa9, 0x21, 0xd3, 0x6c, 0xe9, 0xce, 0x47, 0xd0, 0xd1, 0x3c, 0x5d, 0x85, 0xf2, 0xb0, 0xff, 0x83, 0x18, 0xd2, 0x87, 0x7e, 0xec, 0x2f, 0x63, 0xb9, 0x31, 0xbd, 0x47, 0x41, 0x7a, 0x81, 0xa5, 0x38, 0x32, 0x7a, 0xf9, 0x27, 0xda, 0x3e };
-       
-               private static byte[] GetEmptyHash (HashAlgorithm hash) 
-               {
-                       if (hash is SHA1)
-                               return emptySHA1;
-                       else if (hash is SHA256)
-                               return emptySHA256;
-                       else if (hash is SHA384)
-                               return emptySHA384;
-                       else if (hash is SHA512)
-                               return emptySHA512;
-                       else
-                               return hash.ComputeHash ((byte[])null);
-               }
-       
-               // PKCS #1 v.2.1, Section 4.1
-               // I2OSP converts a non-negative integer to an octet string of a specified length.
-               public static byte[] I2OSP (int x, int size) 
-               {
-                       byte[] array = BitConverterLE.GetBytes (x);
-                       Array.Reverse (array, 0, array.Length);
-                       return I2OSP (array, size);
-               }
-       
-               public static byte[] I2OSP (byte[] x, int size) 
-               {
-                       byte[] result = new byte [size];
-                       Buffer.BlockCopy (x, 0, result, (result.Length - x.Length), x.Length);
-                       return result;
-               }
-       
-               // PKCS #1 v.2.1, Section 4.2
-               // OS2IP converts an octet string to a nonnegative integer.
-               public static byte[] OS2IP (byte[] x) 
-               {
-                       int i = 0;
-                       while ((x [i++] == 0x00) && (i < x.Length)) {
-                               // confuse compiler into reporting a warning with {}
-                       }
-                       i--;
-                       if (i > 0) {
-                               byte[] result = new byte [x.Length - i];
-                               Buffer.BlockCopy (x, i, result, 0, result.Length);
-                               return result;
-                       }
-                       else
-                               return x;
-               }
-       
-               // PKCS #1 v.2.1, Section 5.1.1
-               public static byte[] RSAEP (RSA rsa, byte[] m) 
-               {
-                       // c = m^e mod n
-                       return rsa.EncryptValue (m);
-               }
-       
-               // PKCS #1 v.2.1, Section 5.1.2
-               public static byte[] RSADP (RSA rsa, byte[] c) 
-               {
-                       // m = c^d mod n
-                       // Decrypt value may apply CRT optimizations
-                       return rsa.DecryptValue (c);
-               }
-       
-               // PKCS #1 v.2.1, Section 5.2.1
-               public static byte[] RSASP1 (RSA rsa, byte[] m) 
-               {
-                       // first form: s = m^d mod n
-                       // Decrypt value may apply CRT optimizations
-                       return rsa.DecryptValue (m);
-               }
-       
-               // PKCS #1 v.2.1, Section 5.2.2
-               public static byte[] RSAVP1 (RSA rsa, byte[] s) 
-               {
-                       // m = s^e mod n
-                       return rsa.EncryptValue (s);
-               }
-       
-               // PKCS #1 v.2.1, Section 7.1.1
-               // RSAES-OAEP-ENCRYPT ((n, e), M, L)
-               public static byte[] Encrypt_OAEP (RSA rsa, HashAlgorithm hash, RandomNumberGenerator rng, byte[] M) 
-               {
-                       int size = rsa.KeySize / 8;
-                       int hLen = hash.HashSize / 8;
-                       if (M.Length > size - 2 * hLen - 2)
-                               throw new CryptographicException ("message too long");
-                       // empty label L SHA1 hash
-                       byte[] lHash = GetEmptyHash (hash);
-                       int PSLength = (size - M.Length - 2 * hLen - 2);
-                       // DB = lHash || PS || 0x01 || M
-                       byte[] DB = new byte [lHash.Length + PSLength + 1 + M.Length];
-                       Buffer.BlockCopy (lHash, 0, DB, 0, lHash.Length);
-                       DB [(lHash.Length + PSLength)] = 0x01;
-                       Buffer.BlockCopy (M, 0, DB, (DB.Length - M.Length), M.Length);
-       
-                       byte[] seed = new byte [hLen];
-                       rng.GetBytes (seed);
-       
-                       byte[] dbMask = MGF1 (hash, seed, size - hLen - 1);
-                       byte[] maskedDB = xor (DB, dbMask);
-                       byte[] seedMask = MGF1 (hash, maskedDB, hLen);
-                       byte[] maskedSeed = xor (seed, seedMask);
-                       // EM = 0x00 || maskedSeed || maskedDB
-                       byte[] EM = new byte [maskedSeed.Length + maskedDB.Length + 1];
-                       Buffer.BlockCopy (maskedSeed, 0, EM, 1, maskedSeed.Length);
-                       Buffer.BlockCopy (maskedDB, 0, EM, maskedSeed.Length + 1, maskedDB.Length);
-       
-                       byte[] m = OS2IP (EM);
-                       byte[] c = RSAEP (rsa, m);
-                       return I2OSP (c, size);
-               }
-       
-               // PKCS #1 v.2.1, Section 7.1.2
-               // RSAES-OAEP-DECRYPT (K, C, L)
-               public static byte[] Decrypt_OAEP (RSA rsa, HashAlgorithm hash, byte[] C) 
-               {
-                       int size = rsa.KeySize / 8;
-                       int hLen = hash.HashSize / 8;
-                       if ((size < (2 * hLen + 2)) || (C.Length != size))
-                               throw new CryptographicException ("decryption error");
-       
-                       byte[] c = OS2IP (C);
-                       byte[] m = RSADP (rsa, c);
-                       byte[] EM = I2OSP (m, size);
-       
-                       // split EM = Y || maskedSeed || maskedDB
-                       byte[] maskedSeed = new byte [hLen];
-                       Buffer.BlockCopy (EM, 1, maskedSeed, 0, maskedSeed.Length);
-                       byte[] maskedDB = new byte [size - hLen - 1];
-                       Buffer.BlockCopy (EM, (EM.Length - maskedDB.Length), maskedDB, 0, maskedDB.Length);
-       
-                       byte[] seedMask = MGF1 (hash, maskedDB, hLen);
-                       byte[] seed = xor (maskedSeed, seedMask);
-                       byte[] dbMask = MGF1 (hash, seed, size - hLen - 1);
-                       byte[] DB = xor (maskedDB, dbMask);
-       
-                       byte[] lHash = GetEmptyHash (hash);
-                       // split DB = lHash' || PS || 0x01 || M
-                       byte[] dbHash = new byte [lHash.Length];
-                       Buffer.BlockCopy (DB, 0, dbHash, 0, dbHash.Length);
-                       bool h = Compare (lHash, dbHash);
-       
-                       // find separator 0x01
-                       int nPos = lHash.Length;
-                       while (DB[nPos] == 0)
-                               nPos++;
-       
-                       int Msize = DB.Length - nPos - 1;
-                       byte[] M = new byte [Msize];
-                       Buffer.BlockCopy (DB, (nPos + 1), M, 0, Msize);
-       
-                       // we could have returned EM[0] sooner but would be helping a timing attack
-                       if ((EM[0] != 0) || (!h) || (DB[nPos] != 0x01))
-                               return null;
-                       return M;
-               }
-       
-               // PKCS #1 v.2.1, Section 7.2.1
-               // RSAES-PKCS1-V1_5-ENCRYPT ((n, e), M)
-               public static byte[] Encrypt_v15 (RSA rsa, RandomNumberGenerator rng, byte[] M) 
-               {
-                       int size = rsa.KeySize / 8;
-                       if (M.Length > size - 11)
-                               throw new CryptographicException ("message too long");
-                       int PSLength = System.Math.Max (8, (size - M.Length - 3));
-                       byte[] PS = new byte [PSLength];
-                       rng.GetNonZeroBytes (PS);
-                       byte[] EM = new byte [size];
-                       EM [1] = 0x02;
-                       Buffer.BlockCopy (PS, 0, EM, 2, PSLength);
-                       Buffer.BlockCopy (M, 0, EM, (size - M.Length), M.Length);
-       
-                       byte[] m = OS2IP (EM);
-                       byte[] c = RSAEP (rsa, m);
-                       byte[] C = I2OSP (c, size);
-                       return C;
-               }
-       
-               // PKCS #1 v.2.1, Section 7.2.2
-               // RSAES-PKCS1-V1_5-DECRYPT (K, C)
-               public static byte[] Decrypt_v15 (RSA rsa, byte[] C) 
-               {
-                       int size = rsa.KeySize >> 3; // div by 8
-                       if ((size < 11) || (C.Length > size))
-                               throw new CryptographicException ("decryption error");
-                       byte[] c = OS2IP (C);
-                       byte[] m = RSADP (rsa, c);
-                       byte[] EM = I2OSP (m, size);
-       
-                       if ((EM [0] != 0x00) || (EM [1] != 0x02))
-                               return null;
-       
-                       int mPos = 10;
-                       // PS is a minimum of 8 bytes + 2 bytes for header
-                       while ((EM [mPos] != 0x00) && (mPos < EM.Length))
-                               mPos++;
-                       if (EM [mPos] != 0x00)
-                               return null;
-                       mPos++;
-                       byte[] M = new byte [EM.Length - mPos];
-                       Buffer.BlockCopy (EM, mPos, M, 0, M.Length);
-                       return M;
-               }
-       
-               // PKCS #1 v.2.1, Section 8.2.1
-               // RSASSA-PKCS1-V1_5-SIGN (K, M)
-               public static byte[] Sign_v15 (RSA rsa, HashAlgorithm hash, byte[] hashValue) 
-               {
-                       int size = (rsa.KeySize >> 3); // div 8
-                       byte[] EM = Encode_v15 (hash, hashValue, size);
-                       byte[] m = OS2IP (EM);
-                       byte[] s = RSASP1 (rsa, m);
-                       byte[] S = I2OSP (s, size);
-                       return S;
-               }
-       
-               // PKCS #1 v.2.1, Section 8.2.2
-               // RSASSA-PKCS1-V1_5-VERIFY ((n, e), M, S)
-               public static bool Verify_v15 (RSA rsa, HashAlgorithm hash, byte[] hashValue, byte[] signature) 
-               {
-                       return Verify_v15 (rsa, hash, hashValue, signature, false);
-               }
-
-               // DO NOT USE WITHOUT A VERY GOOD REASON
-               public static bool Verify_v15 (RSA rsa, HashAlgorithm hash, byte [] hashValue, byte [] signature, bool tryNonStandardEncoding)
-               {
-                       int size = (rsa.KeySize >> 3); // div 8
-                       byte[] s = OS2IP (signature);
-                       byte[] m = RSAVP1 (rsa, s);
-                       byte[] EM2 = I2OSP (m, size);
-                       byte[] EM = Encode_v15 (hash, hashValue, size);
-                       bool result = Compare (EM, EM2);
-                       if (result || !tryNonStandardEncoding)
-                               return result;
-
-                       // NOTE: some signatures don't include the hash OID (pretty lame but real)
-                       // and compatible with MS implementation. E.g. Verisign Authenticode Timestamps
-
-                       // we're making this "as safe as possible"
-                       if ((EM2 [0] != 0x00) || (EM2 [1] != 0x01))
-                               return false;
-                       int i;
-                       for (i = 2; i < EM2.Length - hashValue.Length - 1; i++) {
-                               if (EM2 [i] != 0xFF)
-                                       return false;
-                       }
-                       if (EM2 [i++] != 0x00)
-                               return false;
-
-                       byte [] decryptedHash = new byte [hashValue.Length];
-                       Buffer.BlockCopy (EM2, i, decryptedHash, 0, decryptedHash.Length);
-                       return Compare (decryptedHash, hashValue);
-               }
-       
-               // PKCS #1 v.2.1, Section 9.2
-               // EMSA-PKCS1-v1_5-Encode
-               public static byte[] Encode_v15 (HashAlgorithm hash, byte[] hashValue, int emLength) 
-               {
-                       if (hashValue.Length != (hash.HashSize >> 3))
-                               throw new CryptographicException ("bad hash length for " + hash.ToString ());
-
-                       // DigestInfo ::= SEQUENCE {
-                       //      digestAlgorithm AlgorithmIdentifier,
-                       //      digest OCTET STRING
-                       // }
-               
-                       byte[] t = null;
-
-                       string oid = CryptoConfig.MapNameToOID (hash.ToString ());
-                       if (oid != null)
-                       {
-                               ASN1 digestAlgorithm = new ASN1 (0x30);
-                               digestAlgorithm.Add (new ASN1 (CryptoConfig.EncodeOID (oid)));
-                               digestAlgorithm.Add (new ASN1 (0x05));          // NULL
-                               ASN1 digest = new ASN1 (0x04, hashValue);
-                               ASN1 digestInfo = new ASN1 (0x30);
-                               digestInfo.Add (digestAlgorithm);
-                               digestInfo.Add (digest);
-
-                               t = digestInfo.GetBytes ();
-                       }
-                       else
-                       {
-                               // There are no valid OID, in this case t = hashValue
-                               // This is the case of the MD5SHA hash algorithm
-                               t = hashValue;
-                       }
-
-                       Buffer.BlockCopy (hashValue, 0, t, t.Length - hashValue.Length, hashValue.Length);
-       
-                       int PSLength = System.Math.Max (8, emLength - t.Length - 3);
-                       // PS = PSLength of 0xff
-       
-                       // EM = 0x00 | 0x01 | PS | 0x00 | T
-                       byte[] EM = new byte [PSLength + t.Length + 3];
-                       EM [1] = 0x01;
-                       for (int i=2; i < PSLength + 2; i++)
-                               EM[i] = 0xff;
-                       Buffer.BlockCopy (t, 0, EM, PSLength + 3, t.Length);
-       
-                       return EM;
-               }
-       
-               // PKCS #1 v.2.1, Section B.2.1
-               public static byte[] MGF1 (HashAlgorithm hash, byte[] mgfSeed, int maskLen) 
-               {
-                       // 1. If maskLen > 2^32 hLen, output "mask too long" and stop.
-                       // easy - this is impossible by using a int (31bits) as parameter ;-)
-                       // BUT with a signed int we do have to check for negative values!
-                       if (maskLen < 0)
-                               throw new OverflowException();
-       
-                       int mgfSeedLength = mgfSeed.Length;
-                       int hLen = (hash.HashSize >> 3); // from bits to bytes
-                       int iterations = (maskLen / hLen);
-                       if (maskLen % hLen != 0)
-                               iterations++;
-                       // 2. Let T be the empty octet string.
-                       byte[] T = new byte [iterations * hLen];
-       
-                       byte[] toBeHashed = new byte [mgfSeedLength + 4];
-                       int pos = 0;
-                       // 3. For counter from 0 to \ceil (maskLen / hLen) - 1, do the following:
-                       for (int counter = 0; counter < iterations; counter++) {
-                               // a.   Convert counter to an octet string C of length 4 octets
-                               byte[] C = I2OSP (counter, 4); 
-       
-                               // b.   Concatenate the hash of the seed mgfSeed and C to the octet string T:
-                               //      T = T || Hash (mgfSeed || C)
-                               Buffer.BlockCopy (mgfSeed, 0, toBeHashed, 0, mgfSeedLength);
-                               Buffer.BlockCopy (C, 0, toBeHashed, mgfSeedLength, 4);
-                               byte[] output = hash.ComputeHash (toBeHashed);
-                               Buffer.BlockCopy (output, 0, T, pos, hLen);
-                               pos += hLen;
-                       }
-                       
-                       // 4. Output the leading maskLen octets of T as the octet string mask.
-                       byte[] mask = new byte [maskLen];
-                       Buffer.BlockCopy (T, 0, mask, 0, maskLen);
-                       return mask;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/PKCS8.cs b/mcs/class/corlib/Mono.Security.Cryptography/PKCS8.cs
deleted file mode 100644 (file)
index d26b85c..0000000
+++ /dev/null
@@ -1,500 +0,0 @@
-//
-// PKCS8.cs: PKCS #8 - Private-Key Information Syntax Standard
-//     ftp://ftp.rsasecurity.com/pub/pkcs/doc/pkcs-8.doc
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell Inc. (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Security.Cryptography;
-using System.Text;
-
-using Mono.Security.X509;
-
-namespace Mono.Security.Cryptography {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       sealed class PKCS8 {
-
-               public enum KeyInfo {
-                       PrivateKey,
-                       EncryptedPrivateKey,
-                       Unknown
-               }
-
-               private PKCS8 () 
-               {
-               }
-
-               static public KeyInfo GetType (byte[] data) 
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-
-                       KeyInfo ki = KeyInfo.Unknown;
-                       try {
-                               ASN1 top = new ASN1 (data);
-                               if ((top.Tag == 0x30) && (top.Count > 0)) {
-                                       ASN1 firstLevel = top [0];
-                                       switch (firstLevel.Tag) {
-                                               case 0x02:
-                                                       ki = KeyInfo.PrivateKey;
-                                                       break;
-                                               case 0x30:
-                                                       ki = KeyInfo.EncryptedPrivateKey;
-                                                       break;
-                                       }
-                               }
-                       }
-                       catch {
-                               throw new CryptographicException ("invalid ASN.1 data");
-                       }
-                       return ki;
-               }
-
-               /*
-                * PrivateKeyInfo ::= SEQUENCE {
-                *      version Version,
-                *      privateKeyAlgorithm PrivateKeyAlgorithmIdentifier,
-                *      privateKey PrivateKey,
-                *      attributes [0] IMPLICIT Attributes OPTIONAL 
-                * }
-                * 
-                * Version ::= INTEGER
-                * 
-                * PrivateKeyAlgorithmIdentifier ::= AlgorithmIdentifier
-                * 
-                * PrivateKey ::= OCTET STRING
-                * 
-                * Attributes ::= SET OF Attribute
-                */
-               public class PrivateKeyInfo {
-
-                       private int _version;
-                       private string _algorithm;
-                       private byte[] _key;
-                       private ArrayList _list;
-
-                       public PrivateKeyInfo () 
-                       {
-                               _version = 0;
-                               _list = new ArrayList ();
-                       }
-
-                       public PrivateKeyInfo (byte[] data) : this () 
-                       {
-                               Decode (data);
-                       }
-
-                       // properties
-
-                       public string Algorithm {
-                               get { return _algorithm; }
-                               set { _algorithm = value; }
-                       }
-
-                       public ArrayList Attributes {
-                               get { return _list; }
-                       }
-
-                       public byte[] PrivateKey {
-                               get {
-                                       if (_key == null)
-                                               return null;
-                                       return (byte[]) _key.Clone (); 
-                               }
-                               set { 
-                                       if (value == null)
-                                               throw new ArgumentNullException ("PrivateKey");
-                                       _key = (byte[]) value.Clone (); 
-                               }
-                       }
-
-                       public int Version {
-                               get { return _version; }
-                               set { 
-                                       if (value < 0)
-                                               throw new ArgumentOutOfRangeException ("negative version");
-                                       _version = value; 
-                               }
-                       }
-
-                       // methods
-
-                       private void Decode (byte[] data) 
-                       {
-                               ASN1 privateKeyInfo = new ASN1 (data);
-                               if (privateKeyInfo.Tag != 0x30)
-                                       throw new CryptographicException ("invalid PrivateKeyInfo");
-
-                               ASN1 version = privateKeyInfo [0];
-                               if (version.Tag != 0x02)
-                                       throw new CryptographicException ("invalid version");
-                               _version = version.Value [0];
-
-                               ASN1 privateKeyAlgorithm = privateKeyInfo [1];
-                               if (privateKeyAlgorithm.Tag != 0x30)
-                                       throw new CryptographicException ("invalid algorithm");
-                               
-                               ASN1 algorithm = privateKeyAlgorithm [0];
-                               if (algorithm.Tag != 0x06)
-                                       throw new CryptographicException ("missing algorithm OID");
-                               _algorithm = ASN1Convert.ToOid (algorithm);
-
-                               ASN1 privateKey = privateKeyInfo [2];
-                               _key = privateKey.Value;
-
-                               // attributes [0] IMPLICIT Attributes OPTIONAL
-                               if (privateKeyInfo.Count > 3) {
-                                       ASN1 attributes = privateKeyInfo [3];
-                                       for (int i=0; i < attributes.Count; i++) {
-                                               _list.Add (attributes [i]);
-                                       }
-                               }
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               ASN1 privateKeyAlgorithm = new ASN1 (0x30);
-                               privateKeyAlgorithm.Add (ASN1Convert.FromOid (_algorithm));
-                               privateKeyAlgorithm.Add (new ASN1 (0x05)); // ASN.1 NULL
-
-                               ASN1 pki = new ASN1 (0x30);
-                               pki.Add (new ASN1 (0x02, new byte [1] { (byte) _version }));
-                               pki.Add (privateKeyAlgorithm);
-                               pki.Add (new ASN1 (0x04, _key));
-
-                               if (_list.Count > 0) {
-                                       ASN1 attributes = new ASN1 (0xA0);
-                                       foreach (ASN1 attribute in _list) {
-                                               attributes.Add (attribute);
-                                       }
-                                       pki.Add (attributes);
-                               }
-
-                               return pki.GetBytes ();
-                       }
-
-                       // static methods
-
-                       static private byte[] RemoveLeadingZero (byte[] bigInt) 
-                       {
-                               int start = 0;
-                               int length = bigInt.Length;
-                               if (bigInt [0] == 0x00) {
-                                       start = 1;
-                                       length--;
-                               }
-                               byte[] bi = new byte [length];
-                               Buffer.BlockCopy (bigInt, start, bi, 0, length);
-                               return bi;
-                       }
-
-                       static private byte[] Normalize (byte[] bigInt, int length) 
-                       {
-                               if (bigInt.Length == length)
-                                       return bigInt;
-                               else if (bigInt.Length > length)
-                                       return RemoveLeadingZero (bigInt);
-                               else {
-                                       // pad with 0
-                                       byte[] bi = new byte [length];
-                                       Buffer.BlockCopy (bigInt, 0, bi, (length - bigInt.Length), bigInt.Length);
-                                       return bi;
-                               }
-                       }
-                       
-                       /*
-                        * RSAPrivateKey ::= SEQUENCE {
-                        *      version           Version, 
-                        *      modulus           INTEGER,  -- n
-                        *      publicExponent    INTEGER,  -- e
-                        *      privateExponent   INTEGER,  -- d
-                        *      prime1            INTEGER,  -- p
-                        *      prime2            INTEGER,  -- q
-                        *      exponent1         INTEGER,  -- d mod (p-1)
-                        *      exponent2         INTEGER,  -- d mod (q-1) 
-                        *      coefficient       INTEGER,  -- (inverse of q) mod p
-                        *      otherPrimeInfos   OtherPrimeInfos OPTIONAL 
-                        * }
-                        */
-                       static public RSA DecodeRSA (byte[] keypair) 
-                       {
-                               ASN1 privateKey = new ASN1 (keypair);
-                               if (privateKey.Tag != 0x30)
-                                       throw new CryptographicException ("invalid private key format");
-
-                               ASN1 version = privateKey [0];
-                               if (version.Tag != 0x02)
-                                       throw new CryptographicException ("missing version");
-
-                               if (privateKey.Count < 9)
-                                       throw new CryptographicException ("not enough key parameters");
-
-                               RSAParameters param = new RSAParameters ();
-                               // note: MUST remove leading 0 - else MS wont import the key
-                               param.Modulus = RemoveLeadingZero (privateKey [1].Value);
-                               int keysize = param.Modulus.Length;
-                               int keysize2 = (keysize >> 1); // half-size
-                               // size must be normalized - else MS wont import the key
-                               param.D = Normalize (privateKey [3].Value, keysize);
-                               param.DP = Normalize (privateKey [6].Value, keysize2);
-                               param.DQ = Normalize (privateKey [7].Value, keysize2);
-                               param.Exponent = RemoveLeadingZero (privateKey [2].Value);
-                               param.InverseQ = Normalize (privateKey [8].Value, keysize2);
-                               param.P = Normalize (privateKey [4].Value, keysize2);
-                               param.Q = Normalize (privateKey [5].Value, keysize2);
-                               RSA rsa = null;
-                               try {
-                                       rsa = RSA.Create ();
-                                       rsa.ImportParameters (param);
-                               }
-                               catch (CryptographicException) {
-                                       // this may cause problem when this code is run under
-                                       // the SYSTEM identity on Windows (e.g. ASP.NET). See
-                                       // http://bugzilla.ximian.com/show_bug.cgi?id=77559
-                                       CspParameters csp = new CspParameters ();
-                                       csp.Flags = CspProviderFlags.UseMachineKeyStore;
-                                       rsa = new RSACryptoServiceProvider (csp);
-                                       rsa.ImportParameters (param);
-                               }
-                               return rsa;
-                       }
-
-                       /*
-                        * RSAPrivateKey ::= SEQUENCE {
-                        *      version           Version, 
-                        *      modulus           INTEGER,  -- n
-                        *      publicExponent    INTEGER,  -- e
-                        *      privateExponent   INTEGER,  -- d
-                        *      prime1            INTEGER,  -- p
-                        *      prime2            INTEGER,  -- q
-                        *      exponent1         INTEGER,  -- d mod (p-1)
-                        *      exponent2         INTEGER,  -- d mod (q-1) 
-                        *      coefficient       INTEGER,  -- (inverse of q) mod p
-                        *      otherPrimeInfos   OtherPrimeInfos OPTIONAL 
-                        * }
-                        */
-                       static public byte[] Encode (RSA rsa) 
-                       {
-                               RSAParameters param = rsa.ExportParameters (true);
-
-                               ASN1 rsaPrivateKey = new ASN1 (0x30);
-                               rsaPrivateKey.Add (new ASN1 (0x02, new byte [1] { 0x00 }));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.Modulus));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.Exponent));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.D));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.P));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.Q));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.DP));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.DQ));
-                               rsaPrivateKey.Add (ASN1Convert.FromUnsignedBigInteger (param.InverseQ));
-
-                               return rsaPrivateKey.GetBytes ();
-                       }
-
-                       // DSA only encode it's X private key inside an ASN.1 INTEGER (Hint: Tag == 0x02)
-                       // which isn't enough for rebuilding the keypair. The other parameters
-                       // can be found (98% of the time) in the X.509 certificate associated
-                       // with the private key or (2% of the time) the parameters are in it's
-                       // issuer X.509 certificate (not supported in the .NET framework).
-                       static public DSA DecodeDSA (byte[] privateKey, DSAParameters dsaParameters) 
-                       {
-                               ASN1 pvk = new ASN1 (privateKey);
-                               if (pvk.Tag != 0x02)
-                                       throw new CryptographicException ("invalid private key format");
-
-                               // X is ALWAYS 20 bytes (no matter if the key length is 512 or 1024 bits)
-                               dsaParameters.X = Normalize (pvk.Value, 20);
-                               DSA dsa = DSA.Create ();
-                               dsa.ImportParameters (dsaParameters);
-                               return dsa;
-                       }
-
-                       static public byte[] Encode (DSA dsa) 
-                       {
-                               DSAParameters param = dsa.ExportParameters (true);
-                               return ASN1Convert.FromUnsignedBigInteger (param.X).GetBytes ();
-                       }
-
-                       static public byte[] Encode (AsymmetricAlgorithm aa) 
-                       {
-                               if (aa is RSA)
-                                       return Encode ((RSA)aa);
-                               else if (aa is DSA)
-                                       return Encode ((DSA)aa);
-                               else
-                                       throw new CryptographicException ("Unknown asymmetric algorithm {0}", aa.ToString ());
-                       }
-               }
-
-               /*
-                * EncryptedPrivateKeyInfo ::= SEQUENCE {
-                *      encryptionAlgorithm EncryptionAlgorithmIdentifier,
-                *      encryptedData EncryptedData 
-                * }
-                * 
-                * EncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-                * 
-                * EncryptedData ::= OCTET STRING
-                * 
-                * --
-                *  AlgorithmIdentifier  ::= SEQUENCE {
-                *      algorithm  OBJECT IDENTIFIER,
-                *      parameters ANY DEFINED BY algorithm OPTIONAL
-                * }
-                * 
-                * -- from PKCS#5
-                * PBEParameter ::= SEQUENCE {
-                *      salt OCTET STRING SIZE(8),
-                *      iterationCount INTEGER 
-                * }
-                */
-               public class EncryptedPrivateKeyInfo {
-
-                       private string _algorithm;
-                       private byte[] _salt;
-                       private int _iterations;
-                       private byte[] _data;
-
-                       public EncryptedPrivateKeyInfo () {}
-
-                       public EncryptedPrivateKeyInfo (byte[] data) : this () 
-                       {
-                               Decode (data);
-                       }
-
-                       // properties
-
-                       public string Algorithm {
-                               get { return _algorithm; }
-                               set { _algorithm = value; }
-                       }
-
-                       public byte[] EncryptedData {
-                               get { return (_data == null) ? null : (byte[]) _data.Clone (); }
-                               set { _data = (value == null) ? null : (byte[]) value.Clone (); }
-                       }
-
-                       public byte[] Salt {
-                               get { 
-                                       if (_salt == null) {
-                                               RandomNumberGenerator rng = RandomNumberGenerator.Create ();
-                                               _salt = new byte [8];
-                                               rng.GetBytes (_salt);
-                                       }
-                                       return (byte[]) _salt.Clone (); 
-                               }
-                               set { _salt = (byte[]) value.Clone (); }
-                       }
-
-                       public int IterationCount {
-                               get { return _iterations; }
-                               set { 
-                                       if (value < 0)
-                                               throw new ArgumentOutOfRangeException ("IterationCount", "Negative");
-                                       _iterations = value; 
-                               }
-                       }
-
-                       // methods
-
-                       private void Decode (byte[] data) 
-                       {
-                               ASN1 encryptedPrivateKeyInfo = new ASN1 (data);
-                               if (encryptedPrivateKeyInfo.Tag != 0x30)
-                                       throw new CryptographicException ("invalid EncryptedPrivateKeyInfo");
-
-                               ASN1 encryptionAlgorithm = encryptedPrivateKeyInfo [0];
-                               if (encryptionAlgorithm.Tag != 0x30)
-                                       throw new CryptographicException ("invalid encryptionAlgorithm");
-                               ASN1 algorithm = encryptionAlgorithm [0];
-                               if (algorithm.Tag != 0x06)
-                                       throw new CryptographicException ("invalid algorithm");
-                               _algorithm = ASN1Convert.ToOid (algorithm);
-                               // parameters ANY DEFINED BY algorithm OPTIONAL
-                               if (encryptionAlgorithm.Count > 1) {
-                                       ASN1 parameters = encryptionAlgorithm [1];
-                                       if (parameters.Tag != 0x30)
-                                               throw new CryptographicException ("invalid parameters");
-
-                                       ASN1 salt = parameters [0];
-                                       if (salt.Tag != 0x04)
-                                               throw new CryptographicException ("invalid salt");
-                                       _salt = salt.Value;
-
-                                       ASN1 iterationCount = parameters [1];
-                                       if (iterationCount.Tag != 0x02)
-                                               throw new CryptographicException ("invalid iterationCount");
-                                       _iterations = ASN1Convert.ToInt32 (iterationCount);
-                               }
-
-                               ASN1 encryptedData = encryptedPrivateKeyInfo [1];
-                               if (encryptedData.Tag != 0x04)
-                                       throw new CryptographicException ("invalid EncryptedData");
-                               _data = encryptedData.Value;
-                       }
-
-                       // Note: PKCS#8 doesn't define how to generate the key required for encryption
-                       // so you're on your own. Just don't try to copy the big guys too much ;)
-                       // Netscape:    http://www.cs.auckland.ac.nz/~pgut001/pubs/netscape.txt
-                       // Microsoft:   http://www.cs.auckland.ac.nz/~pgut001/pubs/breakms.txt
-                       public byte[] GetBytes ()
-                       {
-                               if (_algorithm == null)
-                                       throw new CryptographicException ("No algorithm OID specified");
-
-                               ASN1 encryptionAlgorithm = new ASN1 (0x30);
-                               encryptionAlgorithm.Add (ASN1Convert.FromOid (_algorithm));
-
-                               // parameters ANY DEFINED BY algorithm OPTIONAL
-                               if ((_iterations > 0) || (_salt != null)) {
-                                       ASN1 salt = new ASN1 (0x04, _salt);
-                                       ASN1 iterations = ASN1Convert.FromInt32 (_iterations);
-
-                                       ASN1 parameters = new ASN1 (0x30);
-                                       parameters.Add (salt);
-                                       parameters.Add (iterations);
-                                       encryptionAlgorithm.Add (parameters);
-                               }
-
-                               // encapsulates EncryptedData into an OCTET STRING
-                               ASN1 encryptedData = new ASN1 (0x04, _data);
-
-                               ASN1 encryptedPrivateKeyInfo = new ASN1 (0x30);
-                               encryptedPrivateKeyInfo.Add (encryptionAlgorithm);
-                               encryptedPrivateKeyInfo.Add (encryptedData);
-
-                               return encryptedPrivateKeyInfo.GetBytes ();
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/RSAManaged.cs b/mcs/class/corlib/Mono.Security.Cryptography/RSAManaged.cs
deleted file mode 100644 (file)
index 9c406a2..0000000
+++ /dev/null
@@ -1,506 +0,0 @@
-//
-// RSAManaged.cs - Implements the RSA algorithm.
-//
-// Authors:
-//     Sebastien Pouliot (sebastien@ximian.com)
-//     Ben Maurer (bmaurer@users.sf.net)
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Portions (C) 2003 Ben Maurer
-// Copyright (C) 2004,2006 Novell, Inc (http://www.novell.com)
-//
-// Key generation translated from Bouncy Castle JCE (http://www.bouncycastle.org/)
-// See bouncycastle.txt for license.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security.Cryptography;
-using System.Text;
-
-using Mono.Math;
-
-// Big chunks of code are coming from the original RSACryptoServiceProvider class.
-// The class was refactored to :
-// a.  ease integration of new hash algorithm (like MD2, RIPEMD160, ...);
-// b.  provide better support for the coming SSL implementation (requires 
-//     EncryptValue/DecryptValue) with, or without, Mono runtime/corlib;
-// c.  provide an alternative RSA implementation for all Windows (like using 
-//     OAEP without Windows XP).
-
-namespace Mono.Security.Cryptography {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class RSAManaged : RSA {
-
-               private const int defaultKeySize = 1024;
-
-               private bool isCRTpossible = false;
-               private bool keyBlinding = true;
-               private bool keypairGenerated = false;
-               private bool m_disposed = false;
-
-               private BigInteger d;
-               private BigInteger p;
-               private BigInteger q;
-               private BigInteger dp;
-               private BigInteger dq;
-               private BigInteger qInv;
-               private BigInteger n;           // modulus
-               private BigInteger e;
-
-               public RSAManaged () : this (defaultKeySize)
-               {
-               }
-
-               public RSAManaged (int keySize) 
-               {
-                       LegalKeySizesValue = new KeySizes [1];
-                       LegalKeySizesValue [0] = new KeySizes (384, 16384, 8);
-                       base.KeySize = keySize;
-               }
-
-               ~RSAManaged () 
-               {
-                       // Zeroize private key
-                       Dispose (false);
-               }
-
-               private void GenerateKeyPair () 
-               {
-                       // p and q values should have a length of half the strength in bits
-                       int pbitlength = ((KeySize + 1) >> 1);
-                       int qbitlength = (KeySize - pbitlength);
-                       const uint uint_e = 17;
-                       e = uint_e; // fixed
-       
-                       // generate p, prime and (p-1) relatively prime to e
-                       for (;;) {
-                               p = BigInteger.GeneratePseudoPrime (pbitlength);
-                               if (p % uint_e != 1)
-                                       break;
-                       }
-                       // generate a modulus of the required length
-                       for (;;) {
-                               // generate q, prime and (q-1) relatively prime to e,
-                               // and not equal to p
-                               for (;;) {
-                                       q = BigInteger.GeneratePseudoPrime (qbitlength);
-                                       if ((q % uint_e != 1) && (p != q))
-                                               break;
-                               }
-       
-                               // calculate the modulus
-                               n = p * q;
-                               if (n.BitCount () == KeySize)
-                                       break;
-       
-                               // if we get here our primes aren't big enough, make the largest
-                               // of the two p and try again
-                               if (p < q)
-                                       p = q;
-                       }
-       
-                       BigInteger pSub1 = (p - 1);
-                       BigInteger qSub1 = (q - 1);
-                       BigInteger phi = pSub1 * qSub1;
-       
-                       // calculate the private exponent
-                       d = e.ModInverse (phi);
-       
-                       // calculate the CRT factors
-                       dp = d % pSub1;
-                       dq = d % qSub1;
-                       qInv = q.ModInverse (p);
-       
-                       keypairGenerated = true;
-                       isCRTpossible = true;
-
-                       if (KeyGenerated != null)
-                               KeyGenerated (this, null);
-               }
-               
-               // overrides from RSA class
-
-               public override int KeySize {
-                       get { 
-                               // in case keypair hasn't been (yet) generated
-                               if (keypairGenerated) {
-                                       int ks = n.BitCount ();
-                                       if ((ks & 7) != 0)
-                                               ks = ks + (8 - (ks & 7));
-                                       return ks;
-                               }
-                               else
-                                       return base.KeySize;
-                       }
-               }
-               public override string KeyExchangeAlgorithm {
-                       get { return "RSA-PKCS1-KeyEx"; }
-               }
-
-               // note: when (if) we generate a keypair then it will have both
-               // the public and private keys
-               public bool PublicOnly {
-                       get { return (keypairGenerated && ((d == null) || (n == null))); }
-               }
-
-               public override string SignatureAlgorithm {
-                       get { return "http://www.w3.org/2000/09/xmldsig#rsa-sha1"; }
-               }
-
-               public override byte[] DecryptValue (byte[] rgb) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("private key");
-
-                       // decrypt operation is used for signature
-                       if (!keypairGenerated)
-                               GenerateKeyPair ();
-
-                       BigInteger input = new BigInteger (rgb);
-                       BigInteger r = null;
-
-                       // we use key blinding (by default) against timing attacks
-                       if (keyBlinding) {
-                               // x = (r^e * g) mod n 
-                               // *new* random number (so it's timing is also random)
-                               r = BigInteger.GenerateRandom (n.BitCount ());
-                               input = r.ModPow (e, n) * input % n;
-                       }
-
-                       BigInteger output;
-                       // decrypt (which uses the private key) can be 
-                       // optimized by using CRT (Chinese Remainder Theorem)
-                       if (isCRTpossible) {
-                               // m1 = c^dp mod p
-                               BigInteger m1 = input.ModPow (dp, p);
-                               // m2 = c^dq mod q
-                               BigInteger m2 = input.ModPow (dq, q);
-                               BigInteger h;
-                               if (m2 > m1) {
-                                       // thanks to benm!
-                                       h = p - ((m2 - m1) * qInv % p);
-                                       output = m2 + q * h;
-                               } else {
-                                       // h = (m1 - m2) * qInv mod p
-                                       h = (m1 - m2) * qInv % p;
-                                       // m = m2 + q * h;
-                                       output = m2 + q * h;
-                               }
-                       } else if (!PublicOnly) {
-                               // m = c^d mod n
-                               output = input.ModPow (d, n);
-                       } else {
-                               throw new CryptographicException (Locale.GetText ("Missing private key to decrypt value."));
-                       }
-
-                       if (keyBlinding) {
-                               // Complete blinding
-                               // x^e / r mod n
-                               output = output * r.ModInverse (n) % n;
-                               r.Clear ();
-                       }
-
-                       // it's sometimes possible for the results to be a byte short
-                       // and this can break some software (see #79502) so we 0x00 pad the result
-                       byte[] result = GetPaddedValue (output, (KeySize >> 3));
-                       // zeroize values
-                       input.Clear (); 
-                       output.Clear ();
-                       return result;
-               }
-
-               public override byte[] EncryptValue (byte[] rgb) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("public key");
-
-                       if (!keypairGenerated)
-                               GenerateKeyPair ();
-
-                       BigInteger input = new BigInteger (rgb);
-                       BigInteger output = input.ModPow (e, n);
-                       // it's sometimes possible for the results to be a byte short
-                       // and this can break some software (see #79502) so we 0x00 pad the result
-                       byte[] result = GetPaddedValue (output, (KeySize >> 3));
-                       // zeroize value
-                       input.Clear (); 
-                       output.Clear ();
-                       return result;
-               }
-
-
-
-               public override RSAParameters ExportParameters (bool includePrivateParameters) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException (Locale.GetText ("Keypair was disposed"));
-
-                       if (!keypairGenerated)
-                               GenerateKeyPair ();
-       
-                       RSAParameters param = new RSAParameters ();
-                       param.Exponent = e.GetBytes ();
-                       param.Modulus = n.GetBytes ();
-                       if (includePrivateParameters) {
-                               // some parameters are required for exporting the private key
-                               if (d == null)
-                                       throw new CryptographicException ("Missing private key");
-                               param.D = d.GetBytes ();
-                               // hack for bugzilla #57941 where D wasn't provided
-                               if (param.D.Length != param.Modulus.Length) {
-                                       byte[] normalizedD = new byte [param.Modulus.Length];
-                                       Buffer.BlockCopy (param.D, 0, normalizedD, (normalizedD.Length - param.D.Length), param.D.Length);
-                                       param.D = normalizedD;
-                               }
-                               // but CRT parameters are optionals
-                               if ((p != null) && (q != null) && (dp != null) && (dq != null) && (qInv != null)) {
-                                       // and we include them only if we have them all
-                                       int length = (KeySize >> 4);
-                                       param.P = GetPaddedValue (p, length);
-                                       param.Q = GetPaddedValue (q, length);
-                                       param.DP = GetPaddedValue (dp, length);
-                                       param.DQ = GetPaddedValue (dq, length);
-                                       param.InverseQ = GetPaddedValue (qInv, length);
-                               }
-                       }
-                       return param;
-               }
-
-               public override void ImportParameters (RSAParameters parameters) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException (Locale.GetText ("Keypair was disposed"));
-
-                       // if missing "mandatory" parameters
-                       if (parameters.Exponent == null) 
-                               throw new CryptographicException (Locale.GetText ("Missing Exponent"));
-                       if (parameters.Modulus == null)
-                               throw new CryptographicException (Locale.GetText ("Missing Modulus"));
-       
-                       e = new BigInteger (parameters.Exponent);
-                       n = new BigInteger (parameters.Modulus);
-                       // only if the private key is present
-                       if (parameters.D != null)
-                               d = new BigInteger (parameters.D);
-                       if (parameters.DP != null)
-                               dp = new BigInteger (parameters.DP);
-                       if (parameters.DQ != null)
-                               dq = new BigInteger (parameters.DQ);
-                       if (parameters.InverseQ != null)
-                               qInv = new BigInteger (parameters.InverseQ);
-                       if (parameters.P != null)
-                               p = new BigInteger (parameters.P);
-                       if (parameters.Q != null)
-                               q = new BigInteger (parameters.Q);
-
-                       // we now have a keypair
-                       keypairGenerated = true;
-                       bool privateKey = ((p != null) && (q != null) && (dp != null));
-                       isCRTpossible = (privateKey && (dq != null) && (qInv != null));
-
-                       // check if the public/private keys match
-                       // the way the check is made allows a bad D to work if CRT is available (like MS does, see unit tests)
-                       if (!privateKey)
-                               return;
-
-                       // always check n == p * q
-                       bool ok = (n == (p * q));
-                       if (ok) {
-                               // we now know that p and q are correct, so (p - 1), (q - 1) and phi will be ok too
-                               BigInteger pSub1 = (p - 1);
-                               BigInteger qSub1 = (q - 1);
-                               BigInteger phi = pSub1 * qSub1;
-                               // e is fairly static but anyway we can ensure it makes sense by recomputing d
-                               BigInteger dcheck = e.ModInverse (phi);
-
-                               // now if our new d(check) is different than the d we're provided then we cannot
-                               // be sure if 'd' or 'e' is invalid... (note that, from experience, 'd' is more 
-                               // likely to be invalid since it's twice as large as DP (or DQ) and sits at the
-                               // end of the structure (e.g. truncation).
-                               ok = (d == dcheck);
-
-                               // ... unless we have the pre-computed CRT parameters
-                               if (!ok && isCRTpossible) {
-                                       // we can override the previous decision since Mono always prefer, for 
-                                       // performance reasons, using the CRT algorithm
-                                       ok = (dp == (dcheck % pSub1)) && (dq == (dcheck % qSub1)) && 
-                                               (qInv == q.ModInverse (p));
-                               }
-                       }
-
-                       if (!ok)
-                               throw new CryptographicException (Locale.GetText ("Private/public key mismatch"));
-               }
-
-               protected override void Dispose (bool disposing) 
-               {
-                       if (!m_disposed) {
-                               // Always zeroize private key
-                               if (d != null) {
-                                       d.Clear (); 
-                                       d = null;
-                               }
-                               if (p != null) {
-                                       p.Clear (); 
-                                       p = null;
-                               }
-                               if (q != null) {
-                                       q.Clear (); 
-                                       q = null;
-                               }
-                               if (dp != null) {
-                                       dp.Clear (); 
-                                       dp = null;
-                               }
-                               if (dq != null) {
-                                       dq.Clear (); 
-                                       dq = null;
-                               }
-                               if (qInv != null) {
-                                       qInv.Clear (); 
-                                       qInv = null;
-                               }
-
-                               if (disposing) {
-                                       // clear public key
-                                       if (e != null) {
-                                               e.Clear (); 
-                                               e = null;
-                                       }
-                                       if (n != null) {
-                                               n.Clear (); 
-                                               n = null;
-                                       }
-                               }
-                       }
-                       // call base class 
-                       // no need as they all are abstract before us
-                       m_disposed = true;
-               }
-
-               public delegate void KeyGeneratedEventHandler (object sender, EventArgs e);
-
-               public event KeyGeneratedEventHandler KeyGenerated;
-
-               public override string ToXmlString (bool includePrivateParameters) 
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       RSAParameters rsaParams = ExportParameters (includePrivateParameters);
-                       try {
-                               sb.Append ("<RSAKeyValue>");
-                               
-                               sb.Append ("<Modulus>");
-                               sb.Append (Convert.ToBase64String (rsaParams.Modulus));
-                               sb.Append ("</Modulus>");
-
-                               sb.Append ("<Exponent>");
-                               sb.Append (Convert.ToBase64String (rsaParams.Exponent));
-                               sb.Append ("</Exponent>");
-
-                               if (includePrivateParameters) {
-                                       if (rsaParams.P != null) {
-                                               sb.Append ("<P>");
-                                               sb.Append (Convert.ToBase64String (rsaParams.P));
-                                               sb.Append ("</P>");
-                                       }
-                                       if (rsaParams.Q != null) {
-                                               sb.Append ("<Q>");
-                                               sb.Append (Convert.ToBase64String (rsaParams.Q));
-                                               sb.Append ("</Q>");
-                                       }
-                                       if (rsaParams.DP != null) {
-                                               sb.Append ("<DP>");
-                                               sb.Append (Convert.ToBase64String (rsaParams.DP));
-                                               sb.Append ("</DP>");
-                                       }
-                                       if (rsaParams.DQ != null) {
-                                               sb.Append ("<DQ>");
-                                               sb.Append (Convert.ToBase64String (rsaParams.DQ));
-                                               sb.Append ("</DQ>");
-                                       }
-                                       if (rsaParams.InverseQ != null) {
-                                               sb.Append ("<InverseQ>");
-                                               sb.Append (Convert.ToBase64String (rsaParams.InverseQ));
-                                               sb.Append ("</InverseQ>");
-                                       }
-                                       sb.Append ("<D>");
-                                       sb.Append (Convert.ToBase64String (rsaParams.D));
-                                       sb.Append ("</D>");
-                               }
-                               
-                               sb.Append ("</RSAKeyValue>");
-                       }
-                       catch {
-                               if (rsaParams.P != null)
-                                       Array.Clear (rsaParams.P, 0, rsaParams.P.Length);
-                               if (rsaParams.Q != null)
-                                       Array.Clear (rsaParams.Q, 0, rsaParams.Q.Length);
-                               if (rsaParams.DP != null)
-                                       Array.Clear (rsaParams.DP, 0, rsaParams.DP.Length);
-                               if (rsaParams.DQ != null)
-                                       Array.Clear (rsaParams.DQ, 0, rsaParams.DQ.Length);
-                               if (rsaParams.InverseQ != null)
-                                       Array.Clear (rsaParams.InverseQ, 0, rsaParams.InverseQ.Length);
-                               if (rsaParams.D != null)
-                                       Array.Clear (rsaParams.D, 0, rsaParams.D.Length);
-                               throw;
-                       }
-                       
-                       return sb.ToString ();
-               }
-
-               // internal for Mono 1.0.x in order to preserve public contract
-               // they are public for Mono 1.1.x (for 1.2) as the API isn't froze ATM
-
-               public bool UseKeyBlinding {
-                       get { return keyBlinding; }
-                       // you REALLY shoudn't touch this (true is fine ;-)
-                       set { keyBlinding = value; }
-               }
-
-               public bool IsCrtPossible {
-                       // either the key pair isn't generated (and will be 
-                       // generated with CRT parameters) or CRT is (or isn't)
-                       // possible (in case the key was imported)
-                       get { return (!keypairGenerated || isCRTpossible); }
-               }
-
-               private byte[] GetPaddedValue (BigInteger value, int length)
-               {
-                       byte[] result = value.GetBytes ();
-                       if (result.Length >= length)
-                               return result;
-
-                       // left-pad 0x00 value on the result (same integer, correct length)
-                       byte[] padded = new byte[length];
-                       Buffer.BlockCopy (result, 0, padded, (length - result.Length), result.Length);
-                       // temporary result may contain decrypted (plaintext) data, clear it
-                       Array.Clear (result, 0, result.Length);
-                       return padded;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.Cryptography/SymmetricTransform.cs b/mcs/class/corlib/Mono.Security.Cryptography/SymmetricTransform.cs
deleted file mode 100644 (file)
index 221f0fb..0000000
+++ /dev/null
@@ -1,491 +0,0 @@
-//
-// Mono.Security.Cryptography.SymmetricTransform implementation
-//
-// Authors:
-//     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// Portions (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2008 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security.Cryptography;
-
-namespace Mono.Security.Cryptography {
-
-       // This class implement most of the common code required for symmetric
-       // algorithm transforms, like:
-       // - CipherMode: Builds CBC and CFB on top of (descendant supplied) ECB
-       // - PaddingMode, transform properties, multiple blocks, reuse...
-       //
-       // Descendants MUST:
-       // - intialize themselves (like key expansion, ...)
-       // - override the ECB (Electronic Code Book) method which will only be
-       //   called using BlockSize byte[] array.
-       internal abstract class SymmetricTransform : ICryptoTransform {
-               protected SymmetricAlgorithm algo;
-               protected bool encrypt;
-               protected int BlockSizeByte;
-               protected byte[] temp;
-               protected byte[] temp2;
-               private byte[] workBuff;
-               private byte[] workout;
-               protected PaddingMode padmode;
-               // Silverlight 2.0 does not support any feedback mode
-               protected int FeedBackByte;
-               private bool m_disposed = false;
-               protected bool lastBlock;
-
-               public SymmetricTransform (SymmetricAlgorithm symmAlgo, bool encryption, byte[] rgbIV) 
-               {
-                       algo = symmAlgo;
-                       encrypt = encryption;
-                       BlockSizeByte = (algo.BlockSize >> 3);
-
-                       if (rgbIV == null) {
-                               rgbIV = KeyBuilder.IV (BlockSizeByte);
-                       } else {
-                               rgbIV = (byte[]) rgbIV.Clone ();
-                       }
-                       // compare the IV length with the "currently selected" block size and *ignore* IV that are too big
-                       if (rgbIV.Length < BlockSizeByte) {
-                               string msg = Locale.GetText ("IV is too small ({0} bytes), it should be {1} bytes long.",
-                                       rgbIV.Length, BlockSizeByte);
-                               throw new CryptographicException (msg);
-                       }
-                       padmode = algo.Padding;
-                       // mode buffers
-                       temp = new byte [BlockSizeByte];
-                       Buffer.BlockCopy (rgbIV, 0, temp, 0, System.Math.Min (BlockSizeByte, rgbIV.Length));
-                       temp2 = new byte [BlockSizeByte];
-                       FeedBackByte = (algo.FeedbackSize >> 3);
-                       // transform buffers
-                       workBuff = new byte [BlockSizeByte];
-                       workout =  new byte [BlockSizeByte];
-               }
-
-               ~SymmetricTransform () 
-               {
-                       Dispose (false);
-               }
-
-               void IDisposable.Dispose () 
-               {
-                       Dispose (true);
-                       GC.SuppressFinalize (this);  // Finalization is now unnecessary
-               }
-
-               // MUST be overriden by classes using unmanaged ressources
-               // the override method must call the base class
-               protected virtual void Dispose (bool disposing) 
-               {
-                       if (!m_disposed) {
-                               if (disposing) {
-                                       // dispose managed object: zeroize and free
-                                       Array.Clear (temp, 0, BlockSizeByte);
-                                       temp = null;
-                                       Array.Clear (temp2, 0, BlockSizeByte);
-                                       temp2 = null;
-                               }
-                               m_disposed = true;
-                       }
-               }
-
-               public virtual bool CanTransformMultipleBlocks {
-                       get { return true; }
-               }
-
-               public virtual bool CanReuseTransform {
-                       get { return false; }
-               }
-
-               public virtual int InputBlockSize {
-                       get { return BlockSizeByte; }
-               }
-
-               public virtual int OutputBlockSize {
-                       get { return BlockSizeByte; }
-               }
-
-               // note: Each block MUST be BlockSizeValue in size!!!
-               // i.e. Any padding must be done before calling this method
-               protected virtual void Transform (byte[] input, byte[] output) 
-               {
-                       switch (algo.Mode) {
-                       case CipherMode.ECB:
-                               ECB (input, output);
-                               break;
-                       case CipherMode.CBC:
-                               CBC (input, output);
-                               break;
-                       case CipherMode.CFB:
-                               CFB (input, output);
-                               break;
-                       case CipherMode.OFB:
-                               OFB (input, output);
-                               break;
-                       case CipherMode.CTS:
-                               CTS (input, output);
-                               break;
-                       default:
-                               throw new NotImplementedException ("Unkown CipherMode" + algo.Mode.ToString ());
-                       }
-               }
-
-               // Electronic Code Book (ECB)
-               protected abstract void ECB (byte[] input, byte[] output); 
-
-               // Cipher-Block-Chaining (CBC)
-               protected virtual void CBC (byte[] input, byte[] output) 
-               {
-                       if (encrypt) {
-                               for (int i = 0; i < BlockSizeByte; i++)
-                                       temp[i] ^= input[i];
-                               ECB (temp, output);
-                               Buffer.BlockCopy (output, 0, temp, 0, BlockSizeByte);
-                       }
-                       else {
-                               Buffer.BlockCopy (input, 0, temp2, 0, BlockSizeByte);
-                               ECB (input, output);
-                               for (int i = 0; i < BlockSizeByte; i++)
-                                       output[i] ^= temp[i];
-                               Buffer.BlockCopy (temp2, 0, temp, 0, BlockSizeByte);
-                       }
-               }
-
-               // Cipher-FeedBack (CFB)
-               // this is how *CryptoServiceProvider implements CFB
-               // only AesCryptoServiceProvider support CFB > 8
-               // RijndaelManaged is incompatible with this implementation (and overrides it in it's own transform)
-               protected virtual void CFB (byte[] input, byte[] output) 
-               {
-                       if (encrypt) {
-                               for (int x = 0; x < BlockSizeByte; x++) {
-                                       // temp is first initialized with the IV
-                                       ECB (temp, temp2);
-                                       output [x] = (byte) (temp2 [0] ^ input [x]);
-                                       Buffer.BlockCopy (temp, 1, temp, 0, BlockSizeByte - 1);
-                                       Buffer.BlockCopy (output, x, temp, BlockSizeByte - 1, 1);
-                               }
-                       }
-                       else {
-                               for (int x = 0; x < BlockSizeByte; x++) {
-                                       // we do not really decrypt this data!
-                                       encrypt = true;
-                                       // temp is first initialized with the IV
-                                       ECB (temp, temp2);
-                                       encrypt = false;
-
-                                       Buffer.BlockCopy (temp, 1, temp, 0, BlockSizeByte - 1);
-                                       Buffer.BlockCopy (input, x, temp, BlockSizeByte - 1, 1);
-                                       output [x] = (byte) (temp2 [0] ^ input [x]);
-                               }
-                       }
-               }
-
-               // Output-FeedBack (OFB)
-               protected virtual void OFB (byte[] input, byte[] output) 
-               {
-                       throw new CryptographicException ("OFB isn't supported by the framework");
-               }
-
-               // Cipher Text Stealing (CTS)
-               protected virtual void CTS (byte[] input, byte[] output) 
-               {
-                       throw new CryptographicException ("CTS isn't supported by the framework");
-               }
-
-               private void CheckInput (byte[] inputBuffer, int inputOffset, int inputCount)
-               {
-                       if (inputBuffer == null)
-                               throw new ArgumentNullException ("inputBuffer");
-                       if (inputOffset < 0)
-                               throw new ArgumentOutOfRangeException ("inputOffset", "< 0");
-                       if (inputCount < 0)
-                               throw new ArgumentOutOfRangeException ("inputCount", "< 0");
-                       // ordered to avoid possible integer overflow
-                       if (inputOffset > inputBuffer.Length - inputCount)
-                               throw new ArgumentException ("inputBuffer", Locale.GetText ("Overflow"));
-               }
-
-               // this method may get called MANY times so this is the one to optimize
-               public virtual int TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("Object is disposed");
-                       CheckInput (inputBuffer, inputOffset, inputCount);
-                       // check output parameters
-                       if (outputBuffer == null)
-                               throw new ArgumentNullException ("outputBuffer");
-                       if (outputOffset < 0)
-                               throw new ArgumentOutOfRangeException ("outputOffset", "< 0");
-
-                       // ordered to avoid possible integer overflow
-                       int len = outputBuffer.Length - inputCount - outputOffset;
-                       if (!encrypt && (0 > len) && ((padmode == PaddingMode.None) || (padmode == PaddingMode.Zeros))) {
-                               throw new CryptographicException ("outputBuffer", Locale.GetText ("Overflow"));
-                       } else if (KeepLastBlock) {
-                               if (0 > len + BlockSizeByte) {
-                                       throw new CryptographicException ("outputBuffer", Locale.GetText ("Overflow"));
-                               }
-                       } else {
-                               if (0 > len) {
-                                       // there's a special case if this is the end of the decryption process
-                                       if (inputBuffer.Length - inputOffset - outputBuffer.Length == BlockSizeByte)
-                                               inputCount = outputBuffer.Length - outputOffset;
-                                       else
-                                               throw new CryptographicException ("outputBuffer", Locale.GetText ("Overflow"));
-                               }
-                       }
-                       return InternalTransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
-               }
-
-               private bool KeepLastBlock {
-                       get {
-                               return ((!encrypt) && (padmode != PaddingMode.None) && (padmode != PaddingMode.Zeros));
-                       }
-               }
-
-               private int InternalTransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset) 
-               {
-                       int offs = inputOffset;
-                       int full;
-
-                       // this way we don't do a modulo every time we're called
-                       // and we may save a division
-                       if (inputCount != BlockSizeByte) {
-                               if ((inputCount % BlockSizeByte) != 0)
-                                       throw new CryptographicException ("Invalid input block size.");
-
-                               full = inputCount / BlockSizeByte;
-                       }
-                       else
-                               full = 1;
-
-                       if (KeepLastBlock)
-                               full--;
-
-                       int total = 0;
-
-                       if (lastBlock) {
-                               Transform (workBuff, workout);
-                               Buffer.BlockCopy (workout, 0, outputBuffer, outputOffset, BlockSizeByte);
-                               outputOffset += BlockSizeByte;
-                               total += BlockSizeByte;
-                               lastBlock = false;
-                       }
-
-                       for (int i = 0; i < full; i++) {
-                               Buffer.BlockCopy (inputBuffer, offs, workBuff, 0, BlockSizeByte);
-                               Transform (workBuff, workout);
-                               Buffer.BlockCopy (workout, 0, outputBuffer, outputOffset, BlockSizeByte);
-                               offs += BlockSizeByte;
-                               outputOffset += BlockSizeByte;
-                               total += BlockSizeByte;
-                       }
-
-                       if (KeepLastBlock) {
-                               Buffer.BlockCopy (inputBuffer, offs, workBuff, 0, BlockSizeByte);
-                               lastBlock = true;
-                       }
-
-                       return total;
-               }
-
-               RandomNumberGenerator _rng;
-
-               private void Random (byte[] buffer, int start, int length)
-               {
-                       if (_rng == null) {
-                               _rng = RandomNumberGenerator.Create ();
-                       }
-                       byte[] random = new byte [length];
-                       _rng.GetBytes (random);
-                       Buffer.BlockCopy (random, 0, buffer, start, length);
-               }
-
-               private void ThrowBadPaddingException (PaddingMode padding, int length, int position)
-               {
-                       string msg = String.Format (Locale.GetText ("Bad {0} padding."), padding);
-                       if (length >= 0)
-                               msg += String.Format (Locale.GetText (" Invalid length {0}."), length);
-                       if (position >= 0)
-                               msg += String.Format (Locale.GetText (" Error found at position {0}."), position);
-                       throw new CryptographicException (msg);
-               }
-
-               protected virtual byte[] FinalEncrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
-               {
-                       // are there still full block to process ?
-                       int full = (inputCount / BlockSizeByte) * BlockSizeByte;
-                       int rem = inputCount - full;
-                       int total = full;
-
-                       switch (padmode) {
-                       case PaddingMode.ANSIX923:
-                       case PaddingMode.ISO10126:
-                       case PaddingMode.PKCS7:
-                               // we need to add an extra block for padding
-                               total += BlockSizeByte;
-                               break;
-                       default:
-                               if (inputCount == 0)
-                                       return new byte [0];
-                               if (rem != 0) {
-                                       if (padmode == PaddingMode.None)
-                                               throw new CryptographicException ("invalid block length");
-                                       // zero padding the input (by adding a block for the partial data)
-                                       byte[] paddedInput = new byte [full + BlockSizeByte];
-                                       Buffer.BlockCopy (inputBuffer, inputOffset, paddedInput, 0, inputCount);
-                                       inputBuffer = paddedInput;
-                                       inputOffset = 0;
-                                       inputCount = paddedInput.Length;
-                                       total = inputCount;
-                               }
-                               break;
-                       }
-
-                       byte[] res = new byte [total];
-                       int outputOffset = 0;
-
-                       // process all blocks except the last (final) block
-                       while (total > BlockSizeByte) {
-                               InternalTransformBlock (inputBuffer, inputOffset, BlockSizeByte, res, outputOffset);
-                               inputOffset += BlockSizeByte;
-                               outputOffset += BlockSizeByte;
-                               total -= BlockSizeByte;
-                       }
-
-                       // now we only have a single last block to encrypt
-                       byte padding = (byte) (BlockSizeByte - rem);
-                       switch (padmode) {
-                       case PaddingMode.ANSIX923:
-                               // XX 00 00 00 00 00 00 07 (zero + padding length)
-                               res [res.Length - 1] = padding;
-                               Buffer.BlockCopy (inputBuffer, inputOffset, res, full, rem);
-                               // the last padded block will be transformed in-place
-                               InternalTransformBlock (res, full, BlockSizeByte, res, full);
-                               break;
-                       case PaddingMode.ISO10126:
-                               // XX 3F 52 2A 81 AB F7 07 (random + padding length)
-                               Random (res, res.Length - padding, padding - 1);
-                               res [res.Length - 1] = padding;
-                               Buffer.BlockCopy (inputBuffer, inputOffset, res, full, rem);
-                               // the last padded block will be transformed in-place
-                               InternalTransformBlock (res, full, BlockSizeByte, res, full);
-                               break;
-                       case PaddingMode.PKCS7:
-                               // XX 07 07 07 07 07 07 07 (padding length)
-                               for (int i = res.Length; --i >= (res.Length - padding);) 
-                                       res [i] = padding;
-                               Buffer.BlockCopy (inputBuffer, inputOffset, res, full, rem);
-                               // the last padded block will be transformed in-place
-                               InternalTransformBlock (res, full, BlockSizeByte, res, full);
-                               break;
-                       default:
-                               InternalTransformBlock (inputBuffer, inputOffset, BlockSizeByte, res, outputOffset);
-                               break;
-                       }
-                       return res;
-               }
-
-               protected virtual byte[] FinalDecrypt (byte[] inputBuffer, int inputOffset, int inputCount) 
-               {
-                       int full = inputCount;
-                       int total = inputCount;
-                       if (lastBlock)
-                               total += BlockSizeByte;
-
-                       byte[] res = new byte [total];
-                       int outputOffset = 0;
-
-                       while (full > 0) {
-                               int len = InternalTransformBlock (inputBuffer, inputOffset, BlockSizeByte, res, outputOffset);
-                               inputOffset += BlockSizeByte;
-                               outputOffset += len;
-                               full -= BlockSizeByte;
-                       }
-
-                       if (lastBlock) {
-                               Transform (workBuff, workout);
-                               Buffer.BlockCopy (workout, 0, res, outputOffset, BlockSizeByte);
-                               outputOffset += BlockSizeByte;
-                               lastBlock = false;
-                       }
-
-                       // total may be 0 (e.g. PaddingMode.None)
-                       byte padding = ((total > 0) ? res [total - 1] : (byte) 0);
-                       switch (padmode) {
-                       case PaddingMode.ANSIX923:
-                               if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (padmode, padding, -1);
-                               for (int i = padding - 1; i > 0; i--) {
-                                       if (res [total - 1 - i] != 0x00)
-                                               ThrowBadPaddingException (padmode, -1, i);
-                               }
-                               total -= padding;
-                               break;
-                       case PaddingMode.ISO10126:
-                               if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (padmode, padding, -1);
-                               total -= padding;
-                               break;
-                       case PaddingMode.PKCS7:
-                               if ((padding == 0) || (padding > BlockSizeByte))
-                                       ThrowBadPaddingException (padmode, padding, -1);
-                               for (int i = padding - 1; i > 0; i--) {
-                                       if (res [total - 1 - i] != padding)
-                                               ThrowBadPaddingException (padmode, -1, i);
-                               }
-                               total -= padding;
-                               break;
-                       case PaddingMode.None:  // nothing to do - it's a multiple of block size
-                       case PaddingMode.Zeros: // nothing to do - user must unpad himself
-                               break;
-                       }
-
-                       // return output without padding
-                       if (total > 0) {
-                               byte[] data = new byte [total];
-                               Buffer.BlockCopy (res, 0, data, 0, total);
-                               // zeroize decrypted data (copy with padding)
-                               Array.Clear (res, 0, res.Length);
-                               return data;
-                       }
-                       else
-                               return new byte [0];
-               }
-
-               public virtual byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount) 
-               {
-                       if (m_disposed)
-                               throw new ObjectDisposedException ("Object is disposed");
-                       CheckInput (inputBuffer, inputOffset, inputCount);
-
-                       if (encrypt)
-                               return FinalEncrypt (inputBuffer, inputOffset, inputCount);
-                       else
-                               return FinalDecrypt (inputBuffer, inputOffset, inputCount);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509.Extensions/BasicConstraintsExtension.cs b/mcs/class/corlib/Mono.Security.X509.Extensions/BasicConstraintsExtension.cs
deleted file mode 100644 (file)
index 335fe92..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// BasicConstraintsExtension.cs: Handles X.509 BasicConstrains extensions.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-using Mono.Security.X509;
-
-namespace Mono.Security.X509.Extensions {
-
-       // References:
-       // 1.   RFC 3280: Internet X.509 Public Key Infrastructure, Section 4.2.1.10
-       //      http://www.ietf.org/rfc/rfc3280.txt
-
-       /* id-ce-basicConstraints OBJECT IDENTIFIER ::=  { id-ce 19 }
-        * 
-        * BasicConstraints ::= SEQUENCE {
-        *      cA                      BOOLEAN DEFAULT FALSE,
-        *      pathLenConstraint       INTEGER (0..MAX) OPTIONAL 
-        * }
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class BasicConstraintsExtension : X509Extension {
-
-               public const int NoPathLengthConstraint = -1;
-
-               private bool cA;
-               private int pathLenConstraint;
-
-               public BasicConstraintsExtension () : base () 
-               {
-                       extnOid = "2.5.29.19";
-                       pathLenConstraint = NoPathLengthConstraint;
-               }
-
-               public BasicConstraintsExtension (ASN1 asn1) : base (asn1) {}
-
-               public BasicConstraintsExtension (X509Extension extension) : base (extension) {}
-
-               protected override void Decode () 
-               {
-                       // default values
-                       cA = false;
-                       pathLenConstraint = NoPathLengthConstraint;
-
-                       ASN1 sequence = new ASN1 (extnValue.Value);
-                       if (sequence.Tag != 0x30)
-                               throw new ArgumentException ("Invalid BasicConstraints extension");
-                       int n = 0;
-                       ASN1 a = sequence [n++];
-                       if ((a != null) && (a.Tag == 0x01)) {
-                               cA = (a.Value [0] == 0xFF);
-                               a = sequence [n++];
-                       }
-                       if ((a != null) && (a.Tag == 0x02))
-                               pathLenConstraint = ASN1Convert.ToInt32 (a);
-               }
-
-               protected override void Encode () 
-               {
-                       ASN1 seq = new ASN1 (0x30);
-                       if (cA)
-                               seq.Add (new ASN1 (0x01, new byte[] { 0xFF }));
-                       // CAs MUST NOT include the pathLenConstraint field unless the cA boolean is asserted
-                       if (cA && (pathLenConstraint >= 0))
-                               seq.Add (ASN1Convert.FromInt32 (pathLenConstraint));
-
-                       extnValue = new ASN1 (0x04);
-                       extnValue.Add (seq);
-               }
-
-               public bool CertificateAuthority {
-                       get { return cA; }
-                       set { cA = value; }
-               }
-
-               public override string Name {
-                       get { return "Basic Constraints"; }
-               }
-
-               public int PathLenConstraint {
-                       get { return pathLenConstraint; }
-                       set {
-                               if (value < NoPathLengthConstraint) {
-                                       string msg = Locale.GetText ("PathLenConstraint must be positive or -1 for none ({0}).", value);
-                                       throw new ArgumentOutOfRangeException (msg);
-                               }
-                               pathLenConstraint = value;
-                       }
-               }
-
-               public override string ToString () 
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       sb.Append ("Subject Type=");
-                       sb.Append ((cA) ? "CA" : "End Entity");
-                       sb.Append (Environment.NewLine);
-                       sb.Append ("Path Length Constraint=");
-                       if (pathLenConstraint == NoPathLengthConstraint)
-                               sb.Append ("None");
-                       else
-                               sb.Append (pathLenConstraint.ToString (CultureInfo.InvariantCulture));
-                       sb.Append (Environment.NewLine);
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509.Extensions/ChangeLog b/mcs/class/corlib/Mono.Security.X509.Extensions/ChangeLog
deleted file mode 100644 (file)
index e07075f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-2006-01-04  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BasicConstraintsExtension.cs: Keep in sync with Mono.Security.dll.
-       * KeyUsageExtension.cs: Keep in sync with Mono.Security.dll.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * BasicConstaintExtension.cs: New in corlib. In sync with 
-       Mono.Security.dll version.
-       * KeyUsageExtension.cs: New in corlib. In sync with Mono.Security.dll
-       version.
-       * SubjectKeyIdentifierExtension.cs: New in corlib. In sync with 
-       Mono.Security.dll version.
diff --git a/mcs/class/corlib/Mono.Security.X509.Extensions/KeyUsageExtension.cs b/mcs/class/corlib/Mono.Security.X509.Extensions/KeyUsageExtension.cs
deleted file mode 100644 (file)
index d0ad93c..0000000
+++ /dev/null
@@ -1,197 +0,0 @@
-//
-// KeyUsageExtension.cs: Handles X.509 KeyUsage extensions.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-using Mono.Security.X509;
-
-namespace Mono.Security.X509.Extensions {
-
-       /*
-        * id-ce-keyUsage OBJECT IDENTIFIER ::=  { id-ce 15 }
-        * 
-        * KeyUsage ::= BIT STRING {
-        *      digitalSignature        (0),
-        *      nonRepudiation          (1),
-        *      keyEncipherment         (2),
-        *      dataEncipherment        (3),
-        *      keyAgreement            (4),
-        *      keyCertSign             (5),
-        *      cRLSign                 (6),
-        *      encipherOnly            (7),
-        *      decipherOnly            (8) 
-        * }
-        */
-       // note: because nothing is simple in ASN.1 bits are reversed
-       [Flags]
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       enum KeyUsages {
-               digitalSignature = 0x80,
-                nonRepudiation = 0x40,
-               keyEncipherment = 0x20,
-               dataEncipherment = 0x10,
-               keyAgreement = 0x08,
-               keyCertSign = 0x04,
-               cRLSign = 0x02,
-               encipherOnly = 0x01,
-               decipherOnly = 0x800,
-               none = 0x0
-       }
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class KeyUsageExtension : X509Extension {
-
-               private int kubits;
-
-               public KeyUsageExtension (ASN1 asn1) : base (asn1) {}
-
-               public KeyUsageExtension (X509Extension extension) : base (extension) {}
-
-               public KeyUsageExtension () : base ()
-               {
-                       extnOid = "2.5.29.15";
-               }
-
-               protected override void Decode () 
-               {
-                       ASN1 bitString = new ASN1 (extnValue.Value);
-                       if (bitString.Tag != 0x03)
-                               throw new ArgumentException ("Invalid KeyUsage extension");
-                       int i = 1; // byte zero has the number of unused bits (ASN1's BITSTRING)
-                       while (i < bitString.Value.Length)
-                               kubits = (kubits << 8) + bitString.Value [i++];
-               }
-
-               protected override void Encode ()
-               {
-                       extnValue = new ASN1 (0x04);
-
-                       ushort ku = (ushort) kubits;
-                       byte unused = 16;
-                       if (ku > 0) {
-                               // count the unused bits
-                               for (unused = 15; unused > 0; unused--) {
-                                       if ((ku & 0x8000) == 0x8000)
-                                               break;
-                                       ku <<= 1;
-                               }
-
-                               if (kubits > Byte.MaxValue) {
-                                       unused -= 8;
-                                       extnValue.Add (new ASN1 (0x03, new byte[] { unused, (byte) kubits, (byte) (kubits >> 8) }));
-                               } else {
-                                       extnValue.Add (new ASN1 (0x03, new byte[] { unused, (byte) kubits }));
-                               }
-                       } else {
-                               // note: a BITSTRING with a 0 length is invalid (in ASN.1), so would an
-                               // empty OCTETSTRING (at the parent level) so we're encoding a 0
-                               extnValue.Add (new ASN1 (0x03, new byte[] { 7, 0 }));
-                       }
-               }
-
-               public KeyUsages KeyUsage {
-                       get { return (KeyUsages) kubits; }
-                       set { kubits = Convert.ToInt32 (value, CultureInfo.InvariantCulture); }
-               }
-
-               public override string Name {
-                       get { return "Key Usage"; }
-               }
-
-               public bool Support (KeyUsages usage) 
-               {
-                       int x = Convert.ToInt32 (usage, CultureInfo.InvariantCulture);
-                       return ((x & kubits) == x);
-               }
-
-               public override string ToString () 
-               {
-                       const string separator = " , ";
-                       StringBuilder sb = new StringBuilder ();
-                       if (Support (KeyUsages.digitalSignature))
-                               sb.Append ("Digital Signature");
-                       if (Support (KeyUsages.nonRepudiation)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Non-Repudiation");
-                       }
-                       if (Support (KeyUsages.keyEncipherment)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Key Encipherment");
-                       }
-                       if (Support (KeyUsages.dataEncipherment)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Data Encipherment");
-                       }
-                       if (Support (KeyUsages.keyAgreement)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Key Agreement");            
-                       }
-                       if (Support (KeyUsages.keyCertSign)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Certificate Signing");
-                       }
-                       if (Support (KeyUsages.cRLSign)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("CRL Signing");
-                       }
-                       if (Support (KeyUsages.encipherOnly)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Encipher Only ");   // ???
-                       }
-                       if (Support (KeyUsages.decipherOnly)) {
-                               if (sb.Length > 0)
-                                       sb.Append (separator);
-                               sb.Append ("Decipher Only");    // ???
-                       }
-                       sb.Append ("(");
-                       sb.Append (kubits.ToString ("X2", CultureInfo.InvariantCulture));
-                       sb.Append (")");
-                       sb.Append (Environment.NewLine);
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs b/mcs/class/corlib/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs
deleted file mode 100644 (file)
index 878c3cc..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-//
-// SubjectKeyIdentifierExtension.cs: Handles X.509 SubjectKeyIdentifier extensions.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-using Mono.Security.X509;
-
-namespace Mono.Security.X509.Extensions {
-
-       /*
-        * id-ce-subjectKeyIdentifier OBJECT IDENTIFIER ::=  { id-ce 14 }
-        * 
-        * SubjectKeyIdentifier ::= KeyIdentifier
-        * 
-        * KeyIdentifier ::= OCTET STRING
-        */
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class SubjectKeyIdentifierExtension : X509Extension {
-
-               private byte[] ski;
-
-               public SubjectKeyIdentifierExtension () : base () 
-               {
-                       extnOid = "2.5.29.14";
-               }
-
-               public SubjectKeyIdentifierExtension (ASN1 asn1) : base (asn1)
-               {
-               }
-
-               public SubjectKeyIdentifierExtension (X509Extension extension) : base (extension)
-               {
-               }
-
-               protected override void Decode () 
-               {
-                       ASN1 sequence = new ASN1 (extnValue.Value);
-                       if (sequence.Tag != 0x04)
-                               throw new ArgumentException ("Invalid SubjectKeyIdentifier extension");
-                       ski = sequence.Value;
-               }
-
-               public override string Name {
-                       get { return "Subject Key Identifier"; }
-               }
-
-               public byte[] Identifier {
-                       get { 
-                               if (ski == null)
-                                       return null;
-                               return (byte[]) ski.Clone (); 
-                       }
-               }
-
-               public override string ToString () 
-               {
-                       if (ski == null)
-                               return null;
-
-                       StringBuilder sb = new StringBuilder ();
-                       int x = 0;
-                       while (x < ski.Length) {
-                               sb.Append (ski [x].ToString ("X2", CultureInfo.InvariantCulture));
-                               if (x % 2 == 1)
-                                       sb.Append (" ");
-                               x++;
-                       }
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/ChangeLog b/mcs/class/corlib/Mono.Security.X509/ChangeLog
deleted file mode 100644 (file)
index 39c5b85..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-2010-05-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509CertificateCollection.cs:
-       * X509Certificate.cs:
-       * X509Extension.cs:
-       * X509Extensions.cs:
-               Keep them public for Moonlight. Other types in other
-               assemblies needs it and the linker will eventually 
-               internalize everything.
-
-2010-03-16  Jb Evain  <jbevain@novell.com>
-
-       * X509Certificate.cs: use MOONLIGHT symbol to disambiguate
-       MonoTouch and Moonlight code.
-
-2009-04-30  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * X509Certificate.cs: Adapt to work with only [DSA|RSA]Managed when
-       built for NET_2_1, i.e. remove use of [DSA|RSA]CryptoServiceProvider
-
-2008-09-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS12.cs, X509Store.cs: Use File.Create instead of OpenWrite to
-       make sure nothing else if left at the end of the file. Issue reported
-       by Christophe Chevalier.
-
-2008-06-03  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Accept text before the PEM certificate itself.
-       [Fix bug #396486]
-
-2008-01-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS12.cs, X509Certificate.cs, X509Chain.cs, X509Extension.cs:
-       Synchronize/update with Mono.Security assembly
-
-2006-12-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X501Name.cs: Added support for (some cases of) T.61 strings, like
-       the latin-1 encoded accentued characters founds in some DN. Fix bug 
-       #77295.
-
-2006-12-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS12.cs: Synchronize source with Mono.Security.dll
-       * X501Name.cs: Synchronize source with Mono.Security.dll
-       * X509Certificate.cs: Synchronize source with Mono.Security.dll
-       * X509CRL.cs: Synchronize source with Mono.Security.dll
-       * X509Store.cs: Synchronize source with Mono.Security.dll
-       * X509Stores.cs: Synchronize source with Mono.Security.dll
-       * X520Attributes.cs: Synchronize source with Mono.Security.dll
-
-2006-11-13  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Add support for PEM encoded (base64) x.509 
-       certificates (supported in 2.0).
-
-2006-11-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X501Name.cs: Refactor ToString method to allow most options available 
-       when using fx 2.0.
-       * X509Certificate.cs: Add methods to retrieve the Issuer and Subject
-       Distinguished Names in binary (ASN.1) form. Reverse (actually correct)
-       the text representation of Issuer and Subject for 2.0.
-       * X520Attributes.cs: Keep in sync with latest version from 
-       Mono.Security.dll assembly (required for X501Name update).
-
-2006-10-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS12.cs: Synch implementation with Mono.Security.dll. Fix bug
-       #79617.
-
-2006-09-05  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Keep in sync with Mono.Security.dll (#79262).
-
-2006-01-04  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Extension.cs: Keep in sync with Mono.Security.dll.
-
-2005-11-18  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * X509Extension.cs: Keep in sync with Mono.Security.dll.
-
-2005-10-11  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Fixed bug #76407. ValidFrom and ValidUntil are
-       local date/time so IsCurrent most also use a local date/time.
-       * X509CRL.cs: Updated from Mono.Security.dll (same IsCurrent problem
-       and another previously fixed bug).
-
-2005-09-09  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Fixed version property (bug #76012). Added
-       ISerializable (for 2.0 so we're not breaking current compatibility).
-
-2005-04-27  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS12.cs: New. Copied from Mono.Security.dll to allow support of
-       PKCS#12 files in X509Certificate for 2.0.
-       * X509Certificate.cs: Added new features required to support 2.0.
-
-2005-02-25  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X501Name.cs: In sync with Mono.Security.dll version.
-       * X520Attributes.cs: In sync with Mono.Security.dll version.
-
-2005-01-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Fixed NullReferenceException when asking for
-       data that wasn't a proper X.509 certificate.
-
-2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Fixed warning (l4) for unused variable.
-       * X509Extension.cs: Fixed warning (l4) for unused variable.
-
-2004-09-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Chain.cs: Merge from Mono.Security. Fix two bugs (chain 
-       construction from collection) and Reset-ing empty chain.
-
-2004-05-27  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X509Certificate.cs: Rethrow original exception when parsing X.509 
-       certificates (inside a CryptographicException) so people can see if 
-       their changes affects certificate decoding.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * X501Name.cs: In sync with Mono.Security.dll version.
-       * X509CRL.cs: New in corlib. In sync with Mono.Security.dll version.
-       * X509Certificate.cs: In sync with Mono.Security.dll version.
-       * X509CertificateCollection.cs: In sync with Mono.Security.dll version.
-       * X509Chain.cs: In sync with Mono.Security.dll version.
-       * X509ChainStatusFlag.cs: New in corlib. In sync with Mono.Security.dll
-       version.
-       * X509Extension.cs: In sync with Mono.Security.dll version.
-       * X509Extensions.cs: In sync with Mono.Security.dll version.
-       * X509Store.cs: New in corlib. In sync with Mono.Security.dll version.
-       * X509StoreManager.cs: New in corlib. In sync with Mono.Security.dll version.
-       * X509Stores.cs: New in corlib. In sync with Mono.Security.dll version.
-       * X520Attributes.cs: In sync with Mono.Security.dll version.
-
-2003-12-15  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * TrustAnchors.cs: Added a new trusted root, Thawte, for code signing.
-
-2003-10-12  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * ITrustAnchors.cs: Added from Mono.Security assembly to
-       support Authenticode in X509Certificate.CreateFromSignedFile
-       * TestAnchors.cs: Added from Mono.Security assembly to
-       support Authenticode in X509Certificate.CreateFromSignedFile
-       * TrustAnchors.cs: Added from Mono.Security assembly to
-       support Authenticode in X509Certificate.CreateFromSignedFile
-       * X509CertificateCollection.cs: Added from Mono.Security assembly to
-       support Authenticode in X509Certificate.CreateFromSignedFile
-       * X509Chain.cs: Added from Mono.Security assembly to
-       support Authenticode in X509Certificate.CreateFromSignedFile
-
-2003-05-16  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * X509Certificate.cs: Added support for "really" NULL key parameters
-       (i.e. not ASN.1 encoded NULL).
-
-2003-03-15  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * X501Name.cs: New. X.501 Distinguished Names stuff
-       * X509Certificate.cs: New. A more complete class to handle X.509
-       certificates.
-       * X509Extension.cs: New. A base class for all X.509 extensions.
-       * X509Extensions.cs: New. X509Extension collection.
-       * X520Attributes.cs: New. X.520 attributes (mainly for X501 names)
diff --git a/mcs/class/corlib/Mono.Security.X509/ITrustAnchors.cs b/mcs/class/corlib/Mono.Security.X509/ITrustAnchors.cs
deleted file mode 100644 (file)
index a73d272..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// ITrustAnchors.cs: Trust Anchors Interface
-//
-// Author:
-//     Sebastien Pouliot (spouliot@motus.com)
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       interface ITrustAnchors
-       {
-               X509CertificateCollection Anchors { get; }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/PKCS12.cs b/mcs/class/corlib/Mono.Security.X509/PKCS12.cs
deleted file mode 100644 (file)
index 848ce80..0000000
+++ /dev/null
@@ -1,1972 +0,0 @@
-//
-// PKCS12.cs: PKCS 12 - Personal Information Exchange Syntax
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004,2005,2006 Novell Inc. (http://www.novell.com)
-//
-// Key derivation translated from Bouncy Castle JCE (http://www.bouncycastle.org/)
-// See bouncycastle.txt for license.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Security.Cryptography;
-using System.Text;
-
-using Mono.Security;
-using Mono.Security.Cryptography;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class PKCS5 {
-
-               public const string pbeWithMD2AndDESCBC = "1.2.840.113549.1.5.1";
-               public const string pbeWithMD5AndDESCBC = "1.2.840.113549.1.5.3";
-               public const string pbeWithMD2AndRC2CBC = "1.2.840.113549.1.5.4";
-               public const string pbeWithMD5AndRC2CBC = "1.2.840.113549.1.5.6";
-               public const string pbeWithSHA1AndDESCBC = "1.2.840.113549.1.5.10";
-               public const string pbeWithSHA1AndRC2CBC = "1.2.840.113549.1.5.11";
-
-               public PKCS5 () {}
-       }
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class PKCS9 {
-
-               public const string friendlyName = "1.2.840.113549.1.9.20";
-               public const string localKeyId = "1.2.840.113549.1.9.21";
-
-               public PKCS9 () {}
-       }
-
-
-       internal class SafeBag {
-               private string _bagOID;
-               private ASN1 _asn1;
-
-               public SafeBag(string bagOID, ASN1 asn1) {
-                       _bagOID = bagOID;
-                       _asn1 = asn1;
-               }
-
-               public string BagOID {
-                       get { return _bagOID; }
-               }
-
-               public ASN1 ASN1 {
-                       get { return _asn1; }
-               }
-       }
-
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class PKCS12 : ICloneable {
-
-               public const string pbeWithSHAAnd128BitRC4 = "1.2.840.113549.1.12.1.1";
-               public const string pbeWithSHAAnd40BitRC4 = "1.2.840.113549.1.12.1.2";
-               public const string pbeWithSHAAnd3KeyTripleDESCBC = "1.2.840.113549.1.12.1.3";
-               public const string pbeWithSHAAnd2KeyTripleDESCBC = "1.2.840.113549.1.12.1.4";
-               public const string pbeWithSHAAnd128BitRC2CBC = "1.2.840.113549.1.12.1.5";
-               public const string pbeWithSHAAnd40BitRC2CBC = "1.2.840.113549.1.12.1.6";
-
-               // bags
-               public const string keyBag  = "1.2.840.113549.1.12.10.1.1";
-               public const string pkcs8ShroudedKeyBag  = "1.2.840.113549.1.12.10.1.2";
-               public const string certBag  = "1.2.840.113549.1.12.10.1.3";
-               public const string crlBag  = "1.2.840.113549.1.12.10.1.4";
-               public const string secretBag  = "1.2.840.113549.1.12.10.1.5";
-               public const string safeContentsBag  = "1.2.840.113549.1.12.10.1.6";
-
-               // types
-               public const string x509Certificate = "1.2.840.113549.1.9.22.1";
-               public const string sdsiCertificate = "1.2.840.113549.1.9.22.2";
-               public const string x509Crl = "1.2.840.113549.1.9.23.1";
-
-               // Adapted from BouncyCastle PKCS12ParametersGenerator.java
-               public class DeriveBytes {
-
-                       public enum Purpose {
-                               Key,
-                               IV,
-                               MAC
-                       }
-
-                       static private byte[] keyDiversifier = { 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 };
-                       static private byte[] ivDiversifier  = { 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 };
-                       static private byte[] macDiversifier = { 3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3 };
-
-                       private string _hashName;
-                       private int _iterations;
-                       private byte[] _password;
-                       private byte[] _salt;
-
-                       public DeriveBytes () {}
-
-                       public string HashName {
-                               get { return _hashName; } 
-                               set { _hashName = value; }
-                       }
-
-                       public int IterationCount {
-                               get { return _iterations; }
-                               set { _iterations = value; }
-                       }
-
-                       public byte[] Password {
-                               get { return (byte[]) _password.Clone (); }
-                               set { 
-                                       if (value == null)
-                                               _password = new byte [0];
-                                       else
-                                               _password = (byte[]) value.Clone ();
-                               }
-                       }
-
-                       public byte[] Salt {
-                               get { return (byte[]) _salt.Clone ();  }
-                               set {
-                                       if (value != null)
-                                               _salt = (byte[]) value.Clone ();
-                                       else
-                                               _salt = null;
-                               }
-                       }
-
-                       private void Adjust (byte[] a, int aOff, byte[] b) 
-                       {
-                               int x = (b[b.Length - 1] & 0xff) + (a [aOff + b.Length - 1] & 0xff) + 1;
-
-                               a [aOff + b.Length - 1] = (byte) x;
-                               x >>= 8;
-
-                               for (int i = b.Length - 2; i >= 0; i--) {
-                                       x += (b [i] & 0xff) + (a [aOff + i] & 0xff);
-                                       a [aOff + i] = (byte) x;
-                                       x >>= 8;
-                               }
-                       }
-
-                       private byte[] Derive (byte[] diversifier, int n) 
-                       {
-                               HashAlgorithm digest = HashAlgorithm.Create (_hashName);
-                               int u = (digest.HashSize >> 3); // div 8
-                               int v = 64;
-                               byte[] dKey = new byte [n];
-
-                               byte[] S;
-                               if ((_salt != null) && (_salt.Length != 0)) {
-                                       S = new byte[v * ((_salt.Length + v - 1) / v)];
-
-                                       for (int i = 0; i != S.Length; i++) {
-                                               S[i] = _salt[i % _salt.Length];
-                                       }
-                               }
-                               else {
-                                       S = new byte[0];
-                               }
-
-                               byte[] P;
-                               if ((_password != null) && (_password.Length != 0)) {
-                                       P = new byte[v * ((_password.Length + v - 1) / v)];
-
-                                       for (int i = 0; i != P.Length; i++) {
-                                               P[i] = _password[i % _password.Length];
-                                       }
-                               }
-                               else {
-                                       P = new byte[0];
-                               }
-
-                               byte[] I = new byte [S.Length + P.Length];
-
-                               Buffer.BlockCopy (S, 0, I, 0, S.Length);
-                               Buffer.BlockCopy (P, 0, I, S.Length, P.Length);
-
-                               byte[]  B = new byte[v];
-                               int     c = (n + u - 1) / u;
-
-                               for (int i = 1; i <= c; i++) {
-                                       digest.TransformBlock (diversifier, 0, diversifier.Length, diversifier, 0);
-                                       digest.TransformFinalBlock (I, 0, I.Length);
-                                       byte[] A = digest.Hash;
-                                       digest.Initialize ();
-                                       for (int j = 1; j != _iterations; j++) {
-                                               A = digest.ComputeHash (A, 0, A.Length);
-                                       }
-
-                                       for (int j = 0; j != B.Length; j++) {
-                                               B [j] = A [j % A.Length];
-                                       }
-
-                                       for (int j = 0; j != I.Length / v; j++) {
-                                               Adjust (I, j * v, B);
-                                       }
-
-                                       if (i == c) {
-                                               Buffer.BlockCopy(A, 0, dKey, (i - 1) * u, dKey.Length - ((i - 1) * u));
-                                       }
-                                       else {
-                                               Buffer.BlockCopy(A, 0, dKey, (i - 1) * u, A.Length);
-                                       }
-                               }
-
-                               return dKey;
-                       }
-
-                       public byte[] DeriveKey (int size) 
-                       {
-                               return Derive (keyDiversifier, size);
-                       }
-
-                       public byte[] DeriveIV (int size) 
-                       {
-                               return Derive (ivDiversifier, size);
-                       }
-
-                       public byte[] DeriveMAC (int size) 
-                       {
-                               return Derive (macDiversifier, size);
-                       }
-               }
-
-               const int recommendedIterationCount = 2000;
-
-               //private int _version;
-               private byte[] _password;
-               private ArrayList _keyBags;
-               private ArrayList _secretBags;
-               private X509CertificateCollection _certs;
-               private bool _keyBagsChanged;
-               private bool _secretBagsChanged;
-               private bool _certsChanged;
-               private int _iterations;
-               private ArrayList _safeBags;
-               private RandomNumberGenerator _rng;
-
-               // constructors
-
-               public PKCS12 () 
-               {
-                       _iterations = recommendedIterationCount;
-                       _keyBags = new ArrayList ();
-                       _secretBags = new ArrayList ();
-                       _certs = new X509CertificateCollection ();
-                       _keyBagsChanged = false;
-                       _secretBagsChanged = false;
-                       _certsChanged = false;
-                       _safeBags = new ArrayList ();
-               }
-
-               public PKCS12 (byte[] data)
-                       : this ()
-               {
-                       Password = null;
-                       Decode (data);
-               }
-
-               /*
-                * PFX ::= SEQUENCE {
-                *      version INTEGER {v3(3)}(v3,...),
-                *      authSafe ContentInfo,
-                *      macData MacData OPTIONAL
-                * }
-                * 
-                * MacData ::= SEQUENCE {
-                *      mac DigestInfo,
-                *      macSalt OCTET STRING,
-                *      iterations INTEGER DEFAULT 1
-                *      -- Note: The default is for historical reasons and its use is deprecated. A higher
-                *      -- value, like 1024 is recommended.
-                * }
-                * 
-                * SafeContents ::= SEQUENCE OF SafeBag
-                * 
-                * SafeBag ::= SEQUENCE {
-                *      bagId BAG-TYPE.&id ({PKCS12BagSet}),
-                *      bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}),
-                *      bagAttributes SET OF PKCS12Attribute OPTIONAL
-                * }
-                */
-               public PKCS12 (byte[] data, string password)
-                       : this ()
-               {
-                       Password = password;
-                       Decode (data);
-               }
-
-               public PKCS12 (byte[] data, byte[] password)
-                       : this ()
-               {
-                       _password = password;
-                       Decode (data);
-               }
-
-               private void Decode (byte[] data)
-               {
-                       ASN1 pfx = new ASN1 (data);
-                       if (pfx.Tag != 0x30)
-                               throw new ArgumentException ("invalid data");
-                       
-                       ASN1 version = pfx [0];
-                       if (version.Tag != 0x02)
-                               throw new ArgumentException ("invalid PFX version");
-                       //_version = version.Value [0];
-
-                       PKCS7.ContentInfo authSafe = new PKCS7.ContentInfo (pfx [1]);
-                       if (authSafe.ContentType != PKCS7.Oid.data)
-                               throw new ArgumentException ("invalid authenticated safe");
-
-                       // now that we know it's a PKCS#12 file, check the (optional) MAC
-                       // before decoding anything else in the file
-                       if (pfx.Count > 2) {
-                               ASN1 macData = pfx [2];
-                               if (macData.Tag != 0x30)
-                                       throw new ArgumentException ("invalid MAC");
-                               
-                               ASN1 mac = macData [0];
-                               if (mac.Tag != 0x30)
-                                       throw new ArgumentException ("invalid MAC");
-                               ASN1 macAlgorithm = mac [0];
-                               string macOid = ASN1Convert.ToOid (macAlgorithm [0]);
-                               if (macOid != "1.3.14.3.2.26")
-                                       throw new ArgumentException ("unsupported HMAC");
-                               byte[] macValue = mac [1].Value;
-
-                               ASN1 macSalt = macData [1];
-                               if (macSalt.Tag != 0x04)
-                                       throw new ArgumentException ("missing MAC salt");
-
-                               _iterations = 1; // default value
-                               if (macData.Count > 2) {
-                                       ASN1 iters = macData [2];
-                                       if (iters.Tag != 0x02)
-                                               throw new ArgumentException ("invalid MAC iteration");
-                                       _iterations = ASN1Convert.ToInt32 (iters);
-                               }
-
-                               byte[] authSafeData = authSafe.Content [0].Value;
-                               byte[] calculatedMac = MAC (_password, macSalt.Value, _iterations, authSafeData);
-                               if (!Compare (macValue, calculatedMac))
-                                       throw new CryptographicException ("Invalid MAC - file may have been tampered!");
-                       }
-
-                       // we now returns to our original presentation - PFX
-                       ASN1 authenticatedSafe = new ASN1 (authSafe.Content [0].Value);
-                       for (int i=0; i < authenticatedSafe.Count; i++) {
-                               PKCS7.ContentInfo ci = new PKCS7.ContentInfo (authenticatedSafe [i]);
-                               switch (ci.ContentType) {
-                                       case PKCS7.Oid.data:
-                                               // unencrypted (by PKCS#12)
-                                               ASN1 safeContents = new ASN1 (ci.Content [0].Value);
-                                               for (int j=0; j < safeContents.Count; j++) {
-                                                       ASN1 safeBag = safeContents [j];
-                                                       ReadSafeBag (safeBag);
-                                               }
-                                               break;
-                                       case PKCS7.Oid.encryptedData:
-                                               // password encrypted
-                                               PKCS7.EncryptedData ed = new PKCS7.EncryptedData (ci.Content [0]);
-                                               ASN1 decrypted = new ASN1 (Decrypt (ed));
-                                               for (int j=0; j < decrypted.Count; j++) {
-                                                       ASN1 safeBag = decrypted [j];
-                                                       ReadSafeBag (safeBag);
-                                               }
-                                               break;
-                                       case PKCS7.Oid.envelopedData:
-                                               // public key encrypted
-                                               throw new NotImplementedException ("public key encrypted");
-                                       default:
-                                               throw new ArgumentException ("unknown authenticatedSafe");
-                               }
-                       }
-               }
-
-               ~PKCS12 () 
-               {
-                       if (_password != null) {
-                               Array.Clear (_password, 0, _password.Length);
-                       }
-                       _password = null;
-               }
-
-               // properties
-
-               public string Password {
-                       set {
-                               if (value != null) {
-                                       if (value.Length > 0) {
-                                               int size = value.Length;
-                                               int nul = 0;
-                                               if (size < MaximumPasswordLength) {
-                                                       // if not present, add space for a NULL (0x00) character
-                                                       if (value[size - 1] != 0x00)
-                                                               nul = 1;
-                                               } else {
-                                                       size = MaximumPasswordLength;
-                                               }
-                                               _password = new byte[(size + nul) << 1]; // double for unicode
-                                               Encoding.BigEndianUnicode.GetBytes (value, 0, size, _password, 0);
-                                       } else {
-                                               // double-byte (Unicode) NULL (0x00) - see bug #79617
-                                               _password = new byte[2];
-                                       }
-                               } else {
-                                       // no password
-                                       _password = null;
-                               }
-                       }
-               }
-
-               public int IterationCount {
-                       get { return _iterations; }
-                       set { _iterations = value; }
-               }
-
-               public ArrayList Keys {
-                       get {
-                               if (_keyBagsChanged) {
-                                       _keyBags.Clear ();
-                                       foreach (SafeBag sb in _safeBags) {
-                                               if (sb.BagOID.Equals (keyBag)) {
-                                                       ASN1 safeBag = sb.ASN1;
-                                                       ASN1 bagValue = safeBag [1];
-                                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (bagValue.Value);
-                                                       byte[] privateKey = pki.PrivateKey;
-                                                       switch (privateKey [0]) {
-                                                       case 0x02:
-                                                               DSAParameters p = new DSAParameters (); // FIXME
-                                                               _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p));
-                                                               break;
-                                                       case 0x30:
-                                                               _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeRSA (privateKey));
-                                                               break;
-                                                       default:
-                                                               break;
-                                                       }
-                                                       Array.Clear (privateKey, 0, privateKey.Length);
-
-                                               } else if (sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                                       ASN1 safeBag = sb.ASN1;
-                                                       ASN1 bagValue = safeBag [1];
-                                                       PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                                       byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (decrypted);
-                                                       byte[] privateKey = pki.PrivateKey;
-                                                       switch (privateKey [0]) {
-                                                       case 0x02:
-                                                               DSAParameters p = new DSAParameters (); // FIXME
-                                                               _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p));
-                                                               break;
-                                                       case 0x30:
-                                                               _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeRSA (privateKey));
-                                                               break;
-                                                       default:
-                                                               break;
-                                                       }
-                                                       Array.Clear (privateKey, 0, privateKey.Length);
-                                                       Array.Clear (decrypted, 0, decrypted.Length);
-                                               }
-                                       }
-                                       _keyBagsChanged = false;
-                               }
-                               return ArrayList.ReadOnly(_keyBags);
-                       }
-               }
-
-               public ArrayList Secrets {
-                       get {
-                               if (_secretBagsChanged) {
-                                       _secretBags.Clear ();
-                                       foreach (SafeBag sb in _safeBags) {
-                                               if (sb.BagOID.Equals (secretBag)) {
-                                                       ASN1 safeBag = sb.ASN1;
-                                                       ASN1 bagValue = safeBag [1];
-                                                       byte[] secret = bagValue.Value;
-                                                       _secretBags.Add(secret);
-                                               }
-                                       }
-                                       _secretBagsChanged = false;
-                               }
-                               return ArrayList.ReadOnly(_secretBags);
-                       }
-               }
-
-               public X509CertificateCollection Certificates {
-                       get {
-                               if (_certsChanged) {
-                                       _certs.Clear ();
-                                       foreach (SafeBag sb in _safeBags) {
-                                               if (sb.BagOID.Equals (certBag)) {
-                                                       ASN1 safeBag = sb.ASN1;
-                                                       ASN1 bagValue = safeBag [1];
-                                                       PKCS7.ContentInfo cert = new PKCS7.ContentInfo (bagValue.Value);
-                                                       _certs.Add (new X509Certificate (cert.Content [0].Value));
-                                               }
-                                       }
-                                       _certsChanged = false;
-                               }
-                               return _certs;
-                       }
-               }
-
-               internal RandomNumberGenerator RNG {
-                       get {
-                               if (_rng == null)
-                                       _rng = RandomNumberGenerator.Create ();
-                               return _rng;
-                       }
-               }
-
-               // private methods
-
-               private bool Compare (byte[] expected, byte[] actual) 
-               {
-                       bool compare = false;
-                       if (expected.Length == actual.Length) {
-                               for (int i=0; i < expected.Length; i++) {
-                                       if (expected [i] != actual [i])
-                                               return false;
-                               }
-                               compare = true;
-                       }
-                       return compare;
-               }
-
-               private SymmetricAlgorithm GetSymmetricAlgorithm (string algorithmOid, byte[] salt, int iterationCount)
-               {
-                       string algorithm = null;
-                       int keyLength = 8;      // 64 bits (default)
-                       int ivLength = 8;       // 64 bits (default)
-
-                       PKCS12.DeriveBytes pd = new PKCS12.DeriveBytes ();
-                       pd.Password = _password; 
-                       pd.Salt = salt;
-                       pd.IterationCount = iterationCount;
-
-                       switch (algorithmOid) {
-                               case PKCS5.pbeWithMD2AndDESCBC:                 // no unit test available
-                                       pd.HashName = "MD2";
-                                       algorithm = "DES";
-                                       break;
-                               case PKCS5.pbeWithMD5AndDESCBC:                 // no unit test available
-                                       pd.HashName = "MD5";
-                                       algorithm = "DES";
-                                       break;
-                               case PKCS5.pbeWithMD2AndRC2CBC:                 // no unit test available
-                                       // TODO - RC2-CBC-Parameter (PKCS5)
-                                       // if missing default to 32 bits !!!
-                                       pd.HashName = "MD2";
-                                       algorithm = "RC2";
-                                       keyLength = 4;          // default
-                                       break;
-                               case PKCS5.pbeWithMD5AndRC2CBC:                 // no unit test available
-                                       // TODO - RC2-CBC-Parameter (PKCS5)
-                                       // if missing default to 32 bits !!!
-                                       pd.HashName = "MD5";
-                                       algorithm = "RC2";
-                                       keyLength = 4;          // default
-                                       break;
-                               case PKCS5.pbeWithSHA1AndDESCBC:                // no unit test available
-                                       pd.HashName = "SHA1";
-                                       algorithm = "DES";
-                                       break;
-                               case PKCS5.pbeWithSHA1AndRC2CBC:                // no unit test available
-                                       // TODO - RC2-CBC-Parameter (PKCS5)
-                                       // if missing default to 32 bits !!!
-                                       pd.HashName = "SHA1";
-                                       algorithm = "RC2";
-                                       keyLength = 4;          // default
-                                       break;
-                               case PKCS12.pbeWithSHAAnd128BitRC4:             // no unit test available
-                                       pd.HashName = "SHA1";
-                                       algorithm = "RC4";
-                                       keyLength = 16;
-                                       ivLength = 0;           // N/A
-                                       break;
-                               case PKCS12.pbeWithSHAAnd40BitRC4:              // no unit test available
-                                       pd.HashName = "SHA1";
-                                       algorithm = "RC4";
-                                       keyLength = 5;
-                                       ivLength = 0;           // N/A
-                                       break;
-                               case PKCS12.pbeWithSHAAnd3KeyTripleDESCBC: 
-                                       pd.HashName = "SHA1";
-                                       algorithm = "TripleDES";
-                                       keyLength = 24;
-                                       break;
-                               case PKCS12.pbeWithSHAAnd2KeyTripleDESCBC:      // no unit test available
-                                       pd.HashName = "SHA1";
-                                       algorithm = "TripleDES";
-                                       keyLength = 16;
-                                       break;
-                               case PKCS12.pbeWithSHAAnd128BitRC2CBC:          // no unit test available
-                                       pd.HashName = "SHA1";
-                                       algorithm = "RC2";
-                                       keyLength = 16;
-                                       break;
-                               case PKCS12.pbeWithSHAAnd40BitRC2CBC: 
-                                       pd.HashName = "SHA1";
-                                       algorithm = "RC2";
-                                       keyLength = 5;
-                                       break;
-                               default:
-                                       throw new NotSupportedException ("unknown oid " + algorithm);
-                       }
-
-                       SymmetricAlgorithm sa = SymmetricAlgorithm.Create (algorithm);
-                       sa.Key = pd.DeriveKey (keyLength);
-                       // IV required only for block ciphers (not stream ciphers)
-                       if (ivLength > 0) {
-                               sa.IV = pd.DeriveIV (ivLength);
-                               sa.Mode = CipherMode.CBC;
-                       }
-                       return sa;
-               }
-
-               public byte[] Decrypt (string algorithmOid, byte[] salt, int iterationCount, byte[] encryptedData) 
-               {
-                       SymmetricAlgorithm sa = null;
-                       byte[] result = null;
-                       try {
-                               sa = GetSymmetricAlgorithm (algorithmOid, salt, iterationCount);
-                               ICryptoTransform ct = sa.CreateDecryptor ();
-                               result = ct.TransformFinalBlock (encryptedData, 0, encryptedData.Length);
-                       }
-                       finally {
-                               if (sa != null)
-                                       sa.Clear ();
-                       }
-                       return result;
-               }
-
-               public byte[] Decrypt (PKCS7.EncryptedData ed)
-               {
-                       return Decrypt (ed.EncryptionAlgorithm.ContentType, 
-                               ed.EncryptionAlgorithm.Content [0].Value, 
-                               ASN1Convert.ToInt32 (ed.EncryptionAlgorithm.Content [1]),
-                               ed.EncryptedContent);
-               }
-
-               public byte[] Encrypt (string algorithmOid, byte[] salt, int iterationCount, byte[] data) 
-               {
-                       byte[] result = null;
-                       using (SymmetricAlgorithm sa = GetSymmetricAlgorithm (algorithmOid, salt, iterationCount)) {
-                               ICryptoTransform ct = sa.CreateEncryptor ();
-                               result = ct.TransformFinalBlock (data, 0, data.Length);
-                       }
-                       return result;
-               }
-
-               private DSAParameters GetExistingParameters (out bool found)
-               {
-                       foreach (X509Certificate cert in Certificates) {
-                               // FIXME: that won't work if parts of the parameters are missing
-                               if (cert.KeyAlgorithmParameters != null) {
-                                       DSA dsa = cert.DSA;
-                                       if (dsa != null) {
-                                               found = true;
-                                               return dsa.ExportParameters (false);
-                                       }
-                               }
-                       }
-                       found = false;
-                       return new DSAParameters ();
-               }
-
-               private void AddPrivateKey (PKCS8.PrivateKeyInfo pki) 
-               {
-                       byte[] privateKey = pki.PrivateKey;
-                       switch (privateKey [0]) {
-                               case 0x02:
-                                       bool found;
-                                       DSAParameters p = GetExistingParameters (out found);
-                                       if (found) {
-                                               _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p));
-                                       }
-                                       break;
-                               case 0x30:
-                                       _keyBags.Add (PKCS8.PrivateKeyInfo.DecodeRSA (privateKey));
-                                       break;
-                               default:
-                                       Array.Clear (privateKey, 0, privateKey.Length);
-                                       throw new CryptographicException ("Unknown private key format");
-                       }
-                       Array.Clear (privateKey, 0, privateKey.Length);
-               }
-
-               private void ReadSafeBag (ASN1 safeBag) 
-               {
-                       if (safeBag.Tag != 0x30)
-                               throw new ArgumentException ("invalid safeBag");
-
-                       ASN1 bagId = safeBag [0];
-                       if (bagId.Tag != 0x06)
-                               throw new ArgumentException ("invalid safeBag id");
-
-                       ASN1 bagValue = safeBag [1];
-                       string oid = ASN1Convert.ToOid (bagId);
-                       switch (oid) {
-                               case keyBag:
-                                       // NEED UNIT TEST
-                                       AddPrivateKey (new PKCS8.PrivateKeyInfo (bagValue.Value));
-                                       break;
-                               case pkcs8ShroudedKeyBag:
-                                       PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                       byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                       AddPrivateKey (new PKCS8.PrivateKeyInfo (decrypted));
-                                       Array.Clear (decrypted, 0, decrypted.Length);
-                                       break;
-                               case certBag:
-                                       PKCS7.ContentInfo cert = new PKCS7.ContentInfo (bagValue.Value);
-                                       if (cert.ContentType != x509Certificate)
-                                               throw new NotSupportedException ("unsupport certificate type");
-                                       X509Certificate x509 = new X509Certificate (cert.Content [0].Value);
-                                       _certs.Add (x509);
-                                       break;
-                               case crlBag:
-                                       // TODO
-                                       break;
-                               case secretBag: 
-                                       byte[] secret = bagValue.Value;
-                                       _secretBags.Add(secret);
-                                       break;
-                               case safeContentsBag:
-                                       // TODO - ? recurse ?
-                                       break;
-                               default:
-                                       throw new ArgumentException ("unknown safeBag oid");
-                       }
-
-                       if (safeBag.Count > 2) {
-                               ASN1 bagAttributes = safeBag [2];
-                               if (bagAttributes.Tag != 0x31)
-                                       throw new ArgumentException ("invalid safeBag attributes id");
-
-                               for (int i = 0; i < bagAttributes.Count; i++) {
-                                       ASN1 pkcs12Attribute = bagAttributes[i];
-                                               
-                                       if (pkcs12Attribute.Tag != 0x30)
-                                               throw new ArgumentException ("invalid PKCS12 attributes id");
-
-                                       ASN1 attrId = pkcs12Attribute [0];
-                                       if (attrId.Tag != 0x06)
-                                               throw new ArgumentException ("invalid attribute id");
-                                               
-                                       string attrOid = ASN1Convert.ToOid (attrId);
-
-                                       ASN1 attrValues = pkcs12Attribute[1];
-                                       for (int j = 0; j < attrValues.Count; j++) {
-                                               ASN1 attrValue = attrValues[j];
-
-                                               switch (attrOid) {
-                                               case PKCS9.friendlyName:
-                                                       if (attrValue.Tag != 0x1e)
-                                                               throw new ArgumentException ("invalid attribute value id");
-                                                       break;
-                                               case PKCS9.localKeyId:
-                                                       if (attrValue.Tag != 0x04)
-                                                               throw new ArgumentException ("invalid attribute value id");
-                                                       break;
-                                               default:
-                                                       // Unknown OID -- don't check Tag
-                                                       break;
-                                               }
-                                       }
-                               }
-                       }
-
-                       _safeBags.Add (new SafeBag(oid, safeBag));
-               }
-
-               private ASN1 Pkcs8ShroudedKeyBagSafeBag (AsymmetricAlgorithm aa, IDictionary attributes) 
-               {
-                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo ();
-                       if (aa is RSA) {
-                               pki.Algorithm = "1.2.840.113549.1.1.1";
-                               pki.PrivateKey = PKCS8.PrivateKeyInfo.Encode ((RSA)aa);
-                       }
-                       else if (aa is DSA) {
-                               pki.Algorithm = null;
-                               pki.PrivateKey = PKCS8.PrivateKeyInfo.Encode ((DSA)aa);
-                       }
-                       else
-                               throw new CryptographicException ("Unknown asymmetric algorithm {0}", aa.ToString ());
-
-                       PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo ();
-                       epki.Algorithm = pbeWithSHAAnd3KeyTripleDESCBC;
-                       epki.IterationCount = _iterations;
-                       epki.EncryptedData = Encrypt (pbeWithSHAAnd3KeyTripleDESCBC, epki.Salt, _iterations, pki.GetBytes ());
-
-                       ASN1 safeBag = new ASN1 (0x30);
-                       safeBag.Add (ASN1Convert.FromOid (pkcs8ShroudedKeyBag));
-                       ASN1 bagValue = new ASN1 (0xA0);
-                       bagValue.Add (new ASN1 (epki.GetBytes ()));
-                       safeBag.Add (bagValue);
-
-                       if (attributes != null) {
-                               ASN1 bagAttributes = new ASN1 (0x31);
-                               IDictionaryEnumerator de = attributes.GetEnumerator ();
-
-                               while (de.MoveNext ()) {
-                                       string oid = (string)de.Key;
-                                       switch (oid) {
-                                       case PKCS9.friendlyName:
-                                               ArrayList names = (ArrayList)de.Value;
-                                               if (names.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.friendlyName));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] name in names) {
-                                                               ASN1 attrValue = new ASN1 (0x1e);
-                                                               attrValue.Value = name;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       case PKCS9.localKeyId:
-                                               ArrayList keys = (ArrayList)de.Value;
-                                               if (keys.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.localKeyId));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] key in keys) {
-                                                               ASN1 attrValue = new ASN1 (0x04);
-                                                               attrValue.Value = key;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       default:
-                                               break;
-                                       }
-                               }
-
-                               if (bagAttributes.Count > 0) {
-                                       safeBag.Add (bagAttributes);
-                               }
-                       }
-
-                       return safeBag;
-               }
-
-               private ASN1 KeyBagSafeBag (AsymmetricAlgorithm aa, IDictionary attributes) 
-               {
-                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo ();
-                       if (aa is RSA) {
-                               pki.Algorithm = "1.2.840.113549.1.1.1";
-                               pki.PrivateKey = PKCS8.PrivateKeyInfo.Encode ((RSA)aa);
-                       }
-                       else if (aa is DSA) {
-                               pki.Algorithm = null;
-                               pki.PrivateKey = PKCS8.PrivateKeyInfo.Encode ((DSA)aa);
-                       }
-                       else
-                               throw new CryptographicException ("Unknown asymmetric algorithm {0}", aa.ToString ());
-
-                       ASN1 safeBag = new ASN1 (0x30);
-                       safeBag.Add (ASN1Convert.FromOid (keyBag));
-                       ASN1 bagValue = new ASN1 (0xA0);
-                       bagValue.Add (new ASN1 (pki.GetBytes ()));
-                       safeBag.Add (bagValue);
-
-                       if (attributes != null) {
-                               ASN1 bagAttributes = new ASN1 (0x31);
-                               IDictionaryEnumerator de = attributes.GetEnumerator ();
-
-                               while (de.MoveNext ()) {
-                                       string oid = (string)de.Key;
-                                       switch (oid) {
-                                       case PKCS9.friendlyName:
-                                               ArrayList names = (ArrayList)de.Value;
-                                               if (names.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.friendlyName));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] name in names) {
-                                                               ASN1 attrValue = new ASN1 (0x1e);
-                                                               attrValue.Value = name;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       case PKCS9.localKeyId:
-                                               ArrayList keys = (ArrayList)de.Value;
-                                               if (keys.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.localKeyId));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] key in keys) {
-                                                               ASN1 attrValue = new ASN1 (0x04);
-                                                               attrValue.Value = key;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       default:
-                                               break;
-                                       }
-                               }
-
-                               if (bagAttributes.Count > 0) {
-                                       safeBag.Add (bagAttributes);
-                               }
-                       }
-
-                       return safeBag;
-               }
-
-               private ASN1 SecretBagSafeBag (byte[] secret, IDictionary attributes) 
-               {
-                       ASN1 safeBag = new ASN1 (0x30);
-                       safeBag.Add (ASN1Convert.FromOid (secretBag));
-                       ASN1 bagValue = new ASN1 (0x80, secret);
-                       safeBag.Add (bagValue);
-
-                       if (attributes != null) {
-                               ASN1 bagAttributes = new ASN1 (0x31);
-                               IDictionaryEnumerator de = attributes.GetEnumerator ();
-
-                               while (de.MoveNext ()) {
-                                       string oid = (string)de.Key;
-                                       switch (oid) {
-                                       case PKCS9.friendlyName:
-                                               ArrayList names = (ArrayList)de.Value;
-                                               if (names.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.friendlyName));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] name in names) {
-                                                               ASN1 attrValue = new ASN1 (0x1e);
-                                                               attrValue.Value = name;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       case PKCS9.localKeyId:
-                                               ArrayList keys = (ArrayList)de.Value;
-                                               if (keys.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.localKeyId));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] key in keys) {
-                                                               ASN1 attrValue = new ASN1 (0x04);
-                                                               attrValue.Value = key;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       default:
-                                               break;
-                                       }
-                               }
-
-                               if (bagAttributes.Count > 0) {
-                                       safeBag.Add (bagAttributes);
-                               }
-                       }
-
-                       return safeBag;
-               }
-
-               private ASN1 CertificateSafeBag (X509Certificate x509, IDictionary attributes) 
-               {
-                       ASN1 encapsulatedCertificate = new ASN1 (0x04, x509.RawData);
-
-                       PKCS7.ContentInfo ci = new PKCS7.ContentInfo ();
-                       ci.ContentType = x509Certificate;
-                       ci.Content.Add (encapsulatedCertificate);
-
-                       ASN1 bagValue = new ASN1 (0xA0);
-                       bagValue.Add (ci.ASN1);
-
-                       ASN1 safeBag = new ASN1 (0x30);
-                       safeBag.Add (ASN1Convert.FromOid (certBag));
-                       safeBag.Add (bagValue);
-
-                       if (attributes != null) {
-                               ASN1 bagAttributes = new ASN1 (0x31);
-                               IDictionaryEnumerator de = attributes.GetEnumerator ();
-
-                               while (de.MoveNext ()) {
-                                       string oid = (string)de.Key;
-                                       switch (oid) {
-                                       case PKCS9.friendlyName:
-                                               ArrayList names = (ArrayList)de.Value;
-                                               if (names.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.friendlyName));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] name in names) {
-                                                               ASN1 attrValue = new ASN1 (0x1e);
-                                                               attrValue.Value = name;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       case PKCS9.localKeyId:
-                                               ArrayList keys = (ArrayList)de.Value;
-                                               if (keys.Count > 0) {
-                                                       ASN1 pkcs12Attribute = new ASN1 (0x30);
-                                                       pkcs12Attribute.Add (ASN1Convert.FromOid (PKCS9.localKeyId));
-                                                       ASN1 attrValues = new ASN1 (0x31);
-                                                       foreach (byte[] key in keys) {
-                                                               ASN1 attrValue = new ASN1 (0x04);
-                                                               attrValue.Value = key;
-                                                               attrValues.Add (attrValue);
-                                                       }
-                                                       pkcs12Attribute.Add (attrValues);
-                                                       bagAttributes.Add (pkcs12Attribute);
-                                               }
-                                               break;
-                                       default:
-                                               break;
-                                       }
-                               }
-
-                               if (bagAttributes.Count > 0) {
-                                       safeBag.Add (bagAttributes);
-                               }
-                       }
-
-                       return safeBag;
-               }
-
-               private byte[] MAC (byte[] password, byte[] salt, int iterations, byte[] data) 
-               {
-                       PKCS12.DeriveBytes pd = new PKCS12.DeriveBytes ();
-                       pd.HashName = "SHA1";
-                       pd.Password = password;
-                       pd.Salt = salt;
-                       pd.IterationCount = iterations;
-
-                       HMACSHA1 hmac = (HMACSHA1) HMACSHA1.Create ();
-                       hmac.Key = pd.DeriveMAC (20);
-                       return hmac.ComputeHash (data, 0, data.Length);
-               }
-
-               /*
-                * SafeContents ::= SEQUENCE OF SafeBag
-                * 
-                * SafeBag ::= SEQUENCE {
-                *      bagId BAG-TYPE.&id ({PKCS12BagSet}),
-                *      bagValue [0] EXPLICIT BAG-TYPE.&Type({PKCS12BagSet}{@bagId}),
-                *      bagAttributes SET OF PKCS12Attribute OPTIONAL
-                * }
-                */
-               public byte[] GetBytes () 
-               {
-                       // TODO (incomplete)
-                       ASN1 safeBagSequence = new ASN1 (0x30);
-
-                       // Sync Safe Bag list since X509CertificateCollection may be updated
-                       ArrayList scs = new ArrayList ();
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (certBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-                                       ASN1 bagValue = safeBag [1];
-                                       PKCS7.ContentInfo cert = new PKCS7.ContentInfo (bagValue.Value);
-                                       scs.Add (new X509Certificate (cert.Content [0].Value));
-                               }
-                       }
-
-                       ArrayList addcerts = new ArrayList ();
-                       ArrayList removecerts = new ArrayList ();
-
-                       foreach (X509Certificate c in Certificates) {
-                               bool found = false;
-
-                               foreach (X509Certificate lc in scs) {
-                                       if (Compare (c.RawData, lc.RawData)) {
-                                               found = true;
-                                       }
-                               }
-
-                               if (!found) {
-                                       addcerts.Add (c);
-                               }
-                       }
-                       foreach (X509Certificate c in scs) {
-                               bool found = false;
-
-                               foreach (X509Certificate lc in Certificates) {
-                                       if (Compare (c.RawData, lc.RawData)) {
-                                               found = true;
-                                       }
-                               }
-
-                               if (!found) {
-                                       removecerts.Add (c);
-                               }
-                       }
-
-                       foreach (X509Certificate c in removecerts) {
-                               RemoveCertificate (c);
-                       }
-
-                       foreach (X509Certificate c in addcerts) {
-                               AddCertificate (c);
-                       }
-                       // Sync done
-
-                       if (_safeBags.Count > 0) {
-                               ASN1 certsSafeBag = new ASN1 (0x30);
-                               foreach (SafeBag sb in _safeBags) {
-                                       if (sb.BagOID.Equals (certBag)) {
-                                               certsSafeBag.Add (sb.ASN1);
-                                       }
-                               }
-
-                               if (certsSafeBag.Count > 0) {
-                                       PKCS7.ContentInfo contentInfo = EncryptedContentInfo (certsSafeBag, pbeWithSHAAnd3KeyTripleDESCBC);
-                                       safeBagSequence.Add (contentInfo.ASN1);
-                               }
-                       }
-
-                       if (_safeBags.Count > 0) {
-                               ASN1 safeContents = new ASN1 (0x30);
-                               foreach (SafeBag sb in _safeBags) {
-                                       if (sb.BagOID.Equals (keyBag) ||
-                                           sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                               safeContents.Add (sb.ASN1);
-                                       }
-                               }
-                               if (safeContents.Count > 0) {
-                                       ASN1 content = new ASN1 (0xA0);
-                                       content.Add (new ASN1 (0x04, safeContents.GetBytes ()));
-                               
-                                       PKCS7.ContentInfo keyBag = new PKCS7.ContentInfo (PKCS7.Oid.data);
-                                       keyBag.Content = content;
-                                       safeBagSequence.Add (keyBag.ASN1);
-                               }
-                       }
-
-                       // Doing SecretBags separately in case we want to change their encryption independently.
-                       if (_safeBags.Count > 0) {
-                               ASN1 secretsSafeBag = new ASN1 (0x30);
-                               foreach (SafeBag sb in _safeBags) {
-                                       if (sb.BagOID.Equals (secretBag)) {
-                                               secretsSafeBag.Add (sb.ASN1);
-                                       }
-                               }
-
-                               if (secretsSafeBag.Count > 0) {
-                                       PKCS7.ContentInfo contentInfo = EncryptedContentInfo (secretsSafeBag, pbeWithSHAAnd3KeyTripleDESCBC);
-                                       safeBagSequence.Add (contentInfo.ASN1);
-                               }
-                       }
-
-
-                       ASN1 encapsulates = new ASN1 (0x04, safeBagSequence.GetBytes ());
-                       ASN1 ci = new ASN1 (0xA0);
-                       ci.Add (encapsulates);
-                       PKCS7.ContentInfo authSafe = new PKCS7.ContentInfo (PKCS7.Oid.data);
-                       authSafe.Content = ci;
-                       
-                       ASN1 macData = new ASN1 (0x30);
-                       if (_password != null) {
-                               // only for password based encryption
-                               byte[] salt = new byte [20];
-                               RNG.GetBytes (salt);
-                               byte[] macValue = MAC (_password, salt, _iterations, authSafe.Content [0].Value);
-                               ASN1 oidSeq = new ASN1 (0x30);
-                               oidSeq.Add (ASN1Convert.FromOid ("1.3.14.3.2.26"));     // SHA1
-                               oidSeq.Add (new ASN1 (0x05));
-
-                               ASN1 mac = new ASN1 (0x30);
-                               mac.Add (oidSeq);
-                               mac.Add (new ASN1 (0x04, macValue));
-
-                               macData.Add (mac);
-                               macData.Add (new ASN1 (0x04, salt));
-                               macData.Add (ASN1Convert.FromInt32 (_iterations));
-                       }
-                       
-                       ASN1 version = new ASN1 (0x02, new byte [1] { 0x03 });
-                       
-                       ASN1 pfx = new ASN1 (0x30);
-                       pfx.Add (version);
-                       pfx.Add (authSafe.ASN1);
-                       if (macData.Count > 0) {
-                               // only for password based encryption
-                               pfx.Add (macData);
-                       }
-
-                       return pfx.GetBytes ();
-               }
-
-               // Creates an encrypted PKCS#7 ContentInfo with safeBags as its SafeContents.  Used in GetBytes(), above.
-               private PKCS7.ContentInfo EncryptedContentInfo(ASN1 safeBags, string algorithmOid)
-               {
-                       byte[] salt = new byte [8];
-                       RNG.GetBytes (salt);
-
-                       ASN1 seqParams = new ASN1 (0x30);
-                       seqParams.Add (new ASN1 (0x04, salt));
-                       seqParams.Add (ASN1Convert.FromInt32 (_iterations));
-
-                       ASN1 seqPbe = new ASN1 (0x30);
-                       seqPbe.Add (ASN1Convert.FromOid (algorithmOid));
-                       seqPbe.Add (seqParams);
-
-                       byte[] encrypted = Encrypt (algorithmOid, salt, _iterations, safeBags.GetBytes ());
-                       ASN1 encryptedContent = new ASN1 (0x80, encrypted);
-
-                       ASN1 seq = new ASN1 (0x30);
-                       seq.Add (ASN1Convert.FromOid (PKCS7.Oid.data));
-                       seq.Add (seqPbe);
-                       seq.Add (encryptedContent);
-
-                       ASN1 version = new ASN1 (0x02, new byte [1] { 0x00 });
-                       ASN1 encData = new ASN1 (0x30);
-                       encData.Add (version);
-                       encData.Add (seq);
-
-                       ASN1 finalContent = new ASN1 (0xA0);
-                       finalContent.Add (encData);
-
-                       PKCS7.ContentInfo bag = new PKCS7.ContentInfo (PKCS7.Oid.encryptedData);
-                       bag.Content = finalContent;
-                       return bag;
-               }
-
-               public void AddCertificate (X509Certificate cert)
-               {
-                       AddCertificate (cert, null);
-               }
-
-               public void AddCertificate (X509Certificate cert, IDictionary attributes)
-               {
-                       bool found = false;
-
-                       for (int i = 0; !found && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (certBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-                                       ASN1 bagValue = safeBag [1];
-                                       PKCS7.ContentInfo crt = new PKCS7.ContentInfo (bagValue.Value);
-                                       X509Certificate c = new X509Certificate (crt.Content [0].Value);
-                                       if (Compare (cert.RawData, c.RawData)) {
-                                               found = true;
-                                       }
-                               }
-                       }
-
-                       if (!found) {
-                               _safeBags.Add (new SafeBag (certBag, CertificateSafeBag (cert, attributes)));
-                               _certsChanged = true;
-                       }
-               }
-
-               public void RemoveCertificate (X509Certificate cert)
-               {
-                       RemoveCertificate (cert, null);
-               }
-
-               public void RemoveCertificate (X509Certificate cert, IDictionary attrs)
-               {
-                       int certIndex = -1;
-
-                       for (int i = 0; certIndex == -1 && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (certBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-                                       ASN1 bagValue = safeBag [1];
-                                       PKCS7.ContentInfo crt = new PKCS7.ContentInfo (bagValue.Value);
-                                       X509Certificate c = new X509Certificate (crt.Content [0].Value);
-                                       if (Compare (cert.RawData, c.RawData)) {
-                                               if (attrs != null) {
-                                                       if (safeBag.Count == 3) {
-                                                               ASN1 bagAttributes = safeBag [2];
-                                                               int bagAttributesFound = 0;
-                                                               for (int j = 0; j < bagAttributes.Count; j++) {
-                                                                       ASN1 pkcs12Attribute = bagAttributes [j];
-                                                                       ASN1 attrId = pkcs12Attribute [0];
-                                                                       string ao = ASN1Convert.ToOid (attrId);
-                                                                       ArrayList dattrValues = (ArrayList)attrs [ao];
-
-                                                                       if (dattrValues != null) {
-                                                                               ASN1 attrValues = pkcs12Attribute [1];
-
-                                                                               if (dattrValues.Count == attrValues.Count) {
-                                                                                       int attrValuesFound = 0;
-                                                                                       for (int k = 0; k < attrValues.Count; k++) {
-                                                                                               ASN1 attrValue = attrValues [k];
-                                                                                               byte[] value = (byte[])dattrValues [k];
-                                                                       
-                                                                                               if (Compare (value, attrValue.Value)) {
-                                                                                                       attrValuesFound += 1;
-                                                                                               }
-                                                                                       }
-                                                                                       if (attrValuesFound == attrValues.Count) {
-                                                                                               bagAttributesFound += 1;
-                                                                                       }
-                                                                               }
-                                                                       }
-                                                               }
-                                                               if (bagAttributesFound == bagAttributes.Count) {
-                                                                       certIndex = i;
-                                                               }
-                                                       }
-                                               } else {
-                                                       certIndex = i;
-                                               }
-                                       }
-                               }
-                       }
-
-                       if (certIndex != -1) {
-                               _safeBags.RemoveAt (certIndex);
-                               _certsChanged = true;
-                       }
-               }
-
-               private bool CompareAsymmetricAlgorithm (AsymmetricAlgorithm a1, AsymmetricAlgorithm a2)
-               {
-                       // fast path
-                       if (a1.KeySize != a2.KeySize)
-                               return false;
-                       // compare public keys - if they match we can assume the private match too
-                       return (a1.ToXmlString (false) == a2.ToXmlString (false));
-               }
-
-               public void AddPkcs8ShroudedKeyBag (AsymmetricAlgorithm aa)
-               {
-                       AddPkcs8ShroudedKeyBag (aa, null);
-               }
-
-               public void AddPkcs8ShroudedKeyBag (AsymmetricAlgorithm aa, IDictionary attributes)
-               {
-                       bool found = false;
-
-                       for (int i = 0; !found && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                       byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (decrypted);
-                                       byte[] privateKey = pki.PrivateKey;
-
-                                       AsymmetricAlgorithm saa = null;
-                                       switch (privateKey [0]) {
-                                       case 0x02:
-                                               DSAParameters p = new DSAParameters (); // FIXME
-                                               saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                               break;
-                                       case 0x30:
-                                               saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                               break;
-                                       default:
-                                               Array.Clear (decrypted, 0, decrypted.Length);
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                               throw new CryptographicException ("Unknown private key format");
-                                       }
-
-                                       Array.Clear (decrypted, 0, decrypted.Length);
-                                       Array.Clear (privateKey, 0, privateKey.Length);
-
-                                       if (CompareAsymmetricAlgorithm (aa , saa)) {
-                                               found = true;
-                                       }
-                               }
-                       }
-
-                       if (!found) {
-                               _safeBags.Add (new SafeBag (pkcs8ShroudedKeyBag, Pkcs8ShroudedKeyBagSafeBag (aa, attributes)));
-                               _keyBagsChanged = true;
-                       }
-               }
-
-               public void RemovePkcs8ShroudedKeyBag (AsymmetricAlgorithm aa)
-               {
-                       int aaIndex = -1;
-
-                       for (int i = 0; aaIndex == -1 && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                       byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (decrypted);
-                                       byte[] privateKey = pki.PrivateKey;
-
-                                       AsymmetricAlgorithm saa = null;
-                                       switch (privateKey [0]) {
-                                       case 0x02:
-                                               DSAParameters p = new DSAParameters (); // FIXME
-                                               saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                               break;
-                                       case 0x30:
-                                               saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                               break;
-                                       default:
-                                               Array.Clear (decrypted, 0, decrypted.Length);
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                               throw new CryptographicException ("Unknown private key format");
-                                       }
-
-                                       Array.Clear (decrypted, 0, decrypted.Length);
-                                       Array.Clear (privateKey, 0, privateKey.Length);
-
-                                       if (CompareAsymmetricAlgorithm (aa, saa)) {
-                                               aaIndex = i;
-                                       }
-                               }
-                       }
-
-                       if (aaIndex != -1) {
-                               _safeBags.RemoveAt (aaIndex);
-                               _keyBagsChanged = true;
-                       }
-               }
-
-               public void AddKeyBag (AsymmetricAlgorithm aa)
-               {
-                       AddKeyBag (aa, null);
-               }
-
-               public void AddKeyBag (AsymmetricAlgorithm aa, IDictionary attributes)
-               {
-                       bool found = false;
-
-                       for (int i = 0; !found && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (keyBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (bagValue.Value);
-                                       byte[] privateKey = pki.PrivateKey;
-
-                                       AsymmetricAlgorithm saa = null;
-                                       switch (privateKey [0]) {
-                                       case 0x02:
-                                               DSAParameters p = new DSAParameters (); // FIXME
-                                               saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                               break;
-                                       case 0x30:
-                                               saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                               break;
-                                       default:
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                               throw new CryptographicException ("Unknown private key format");
-                                       }
-
-                                       Array.Clear (privateKey, 0, privateKey.Length);
-
-                                       if (CompareAsymmetricAlgorithm (aa, saa)) {
-                                               found = true;
-                                       }
-                               }
-                       }
-
-                       if (!found) {
-                               _safeBags.Add (new SafeBag (keyBag, KeyBagSafeBag (aa, attributes)));
-                               _keyBagsChanged = true;
-                       }
-               }
-
-               public void RemoveKeyBag (AsymmetricAlgorithm aa)
-               {
-                       int aaIndex = -1;
-
-                       for (int i = 0; aaIndex == -1 && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (keyBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (bagValue.Value);
-                                       byte[] privateKey = pki.PrivateKey;
-
-                                       AsymmetricAlgorithm saa = null;
-                                       switch (privateKey [0]) {
-                                       case 0x02:
-                                               DSAParameters p = new DSAParameters (); // FIXME
-                                               saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                               break;
-                                       case 0x30:
-                                               saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                               break;
-                                       default:
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                               throw new CryptographicException ("Unknown private key format");
-                                       }
-
-                                       Array.Clear (privateKey, 0, privateKey.Length);
-
-                                       if (CompareAsymmetricAlgorithm (aa, saa)) {
-                                               aaIndex = i;
-                                       }
-                               }
-                       }
-
-                       if (aaIndex != -1) {
-                               _safeBags.RemoveAt (aaIndex);
-                               _keyBagsChanged = true;
-                       }
-               }
-
-               public void AddSecretBag (byte[] secret)
-               {
-                       AddSecretBag (secret, null);
-               }
-
-               public void AddSecretBag (byte[] secret, IDictionary attributes)
-               {
-                       bool found = false;
-
-                       for (int i = 0; !found && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (secretBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       byte[] ssecret = bagValue.Value;
-
-                                       if (Compare (secret, ssecret)) {
-                                               found = true;
-                                       }
-                               }
-                       }
-
-                       if (!found) {
-                               _safeBags.Add (new SafeBag (secretBag, SecretBagSafeBag (secret, attributes)));
-                               _secretBagsChanged = true;
-                       }
-               }
-
-               public void RemoveSecretBag (byte[] secret)
-               {
-                       int sIndex = -1;
-
-                       for (int i = 0; sIndex == -1 && i < _safeBags.Count; i++) {
-                               SafeBag sb = (SafeBag)_safeBags [i];
-
-                               if (sb.BagOID.Equals (secretBag)) {
-                                       ASN1 bagValue = sb.ASN1 [1];
-                                       byte[] ssecret = bagValue.Value;
-
-                                       if (Compare (secret, ssecret)) {
-                                               sIndex = i;
-                                       }
-                               }
-                       }
-
-                       if (sIndex != -1) {
-                               _safeBags.RemoveAt (sIndex);
-                               _secretBagsChanged = true;
-                       }
-               }
-
-               public AsymmetricAlgorithm GetAsymmetricAlgorithm (IDictionary attrs)
-               {
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (keyBag) || sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-
-                                       if (safeBag.Count == 3) {
-                                               ASN1 bagAttributes = safeBag [2];
-
-                                               int bagAttributesFound = 0;
-                                               for (int i = 0; i < bagAttributes.Count; i++) {
-                                                       ASN1 pkcs12Attribute = bagAttributes [i];
-                                                       ASN1 attrId = pkcs12Attribute [0];
-                                                       string ao = ASN1Convert.ToOid (attrId);
-                                                       ArrayList dattrValues = (ArrayList)attrs [ao];
-
-                                                       if (dattrValues != null) {
-                                                               ASN1 attrValues = pkcs12Attribute [1];
-
-                                                               if (dattrValues.Count == attrValues.Count) {
-                                                                       int attrValuesFound = 0;
-                                                                       for (int j = 0; j < attrValues.Count; j++) {
-                                                                               ASN1 attrValue = attrValues [j];
-                                                                               byte[] value = (byte[])dattrValues [j];
-                                                                       
-                                                                               if (Compare (value, attrValue.Value)) {
-                                                                                       attrValuesFound += 1;
-                                                                               }
-                                                                       }
-                                                                       if (attrValuesFound == attrValues.Count) {
-                                                                               bagAttributesFound += 1;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                               if (bagAttributesFound == bagAttributes.Count) {
-                                                       ASN1 bagValue = safeBag [1];
-                                                       AsymmetricAlgorithm aa = null;
-                                                       if (sb.BagOID.Equals (keyBag)) {
-                                                               PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (bagValue.Value);
-                                                               byte[] privateKey = pki.PrivateKey;
-                                                               switch (privateKey [0]) {
-                                                               case 0x02:
-                                                                       DSAParameters p = new DSAParameters (); // FIXME
-                                                                       aa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                                                       break;
-                                                               case 0x30:
-                                                                       aa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                                                       break;
-                                                               default:
-                                                                       break;
-                                                               }
-                                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                                       } else if (sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                                               PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                                               byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                                               PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (decrypted);
-                                                               byte[] privateKey = pki.PrivateKey;
-                                                               switch (privateKey [0]) {
-                                                               case 0x02:
-                                                                       DSAParameters p = new DSAParameters (); // FIXME
-                                                                       aa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                                                       break;
-                                                               case 0x30:
-                                                                       aa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                                                       break;
-                                                               default:
-                                                                       break;
-                                                               }
-                                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                                               Array.Clear (decrypted, 0, decrypted.Length);
-                                                       }
-                                                       return aa;
-                                               }
-                                       }
-                               }
-                       }
-
-                       return null;
-               }
-
-               public byte[] GetSecret (IDictionary attrs)
-               {
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (secretBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-
-                                       if (safeBag.Count == 3) {
-                                               ASN1 bagAttributes = safeBag [2];
-
-                                               int bagAttributesFound = 0;
-                                               for (int i = 0; i < bagAttributes.Count; i++) {
-                                                       ASN1 pkcs12Attribute = bagAttributes [i];
-                                                       ASN1 attrId = pkcs12Attribute [0];
-                                                       string ao = ASN1Convert.ToOid (attrId);
-                                                       ArrayList dattrValues = (ArrayList)attrs [ao];
-
-                                                       if (dattrValues != null) {
-                                                               ASN1 attrValues = pkcs12Attribute [1];
-
-                                                               if (dattrValues.Count == attrValues.Count) {
-                                                                       int attrValuesFound = 0;
-                                                                       for (int j = 0; j < attrValues.Count; j++) {
-                                                                               ASN1 attrValue = attrValues [j];
-                                                                               byte[] value = (byte[])dattrValues [j];
-                                                                       
-                                                                               if (Compare (value, attrValue.Value)) {
-                                                                                       attrValuesFound += 1;
-                                                                               }
-                                                                       }
-                                                                       if (attrValuesFound == attrValues.Count) {
-                                                                               bagAttributesFound += 1;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                               if (bagAttributesFound == bagAttributes.Count) {
-                                                       ASN1 bagValue = safeBag [1];
-                                                       return bagValue.Value;
-                                               }
-                                       }
-                               }
-                       }
-
-                       return null;
-               }
-
-               public X509Certificate GetCertificate (IDictionary attrs)
-               {
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (certBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-
-                                       if (safeBag.Count == 3) {
-                                               ASN1 bagAttributes = safeBag [2];
-
-                                               int bagAttributesFound = 0;
-                                               for (int i = 0; i < bagAttributes.Count; i++) {
-                                                       ASN1 pkcs12Attribute = bagAttributes [i];
-                                                       ASN1 attrId = pkcs12Attribute [0];
-                                                       string ao = ASN1Convert.ToOid (attrId);
-                                                       ArrayList dattrValues = (ArrayList)attrs [ao];
-
-                                                       if (dattrValues != null) {
-                                                               ASN1 attrValues = pkcs12Attribute [1];
-                                                               
-                                                               if (dattrValues.Count == attrValues.Count) {
-                                                                       int attrValuesFound = 0;
-                                                                       for (int j = 0; j < attrValues.Count; j++) {
-                                                                               ASN1 attrValue = attrValues [j];
-                                                                               byte[] value = (byte[])dattrValues [j];
-                                                                       
-                                                                               if (Compare (value, attrValue.Value)) {
-                                                                                       attrValuesFound += 1;
-                                                                               }
-                                                                       }
-                                                                       if (attrValuesFound == attrValues.Count) {
-                                                                               bagAttributesFound += 1;
-                                                                       }
-                                                               }
-                                                       }
-                                               }
-                                               if (bagAttributesFound == bagAttributes.Count) {
-                                                       ASN1 bagValue = safeBag [1];
-                                                       PKCS7.ContentInfo crt = new PKCS7.ContentInfo (bagValue.Value);
-                                                       return new X509Certificate (crt.Content [0].Value);
-                                               }
-                                       }
-                               }
-                       }
-
-                       return null;
-               }
-
-               public IDictionary GetAttributes (AsymmetricAlgorithm aa)
-               {
-                       IDictionary result = new Hashtable ();
-
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (keyBag) || sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-
-                                       ASN1 bagValue = safeBag [1];
-                                       AsymmetricAlgorithm saa = null;
-                                       if (sb.BagOID.Equals (keyBag)) {
-                                               PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (bagValue.Value);
-                                               byte[] privateKey = pki.PrivateKey;
-                                               switch (privateKey [0]) {
-                                               case 0x02:
-                                                       DSAParameters p = new DSAParameters (); // FIXME
-                                                       saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                                       break;
-                                               case 0x30:
-                                                       saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                                       break;
-                                               default:
-                                                       break;
-                                               }
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                       } else if (sb.BagOID.Equals (pkcs8ShroudedKeyBag)) {
-                                               PKCS8.EncryptedPrivateKeyInfo epki = new PKCS8.EncryptedPrivateKeyInfo (bagValue.Value);
-                                               byte[] decrypted = Decrypt (epki.Algorithm, epki.Salt, epki.IterationCount, epki.EncryptedData);
-                                               PKCS8.PrivateKeyInfo pki = new PKCS8.PrivateKeyInfo (decrypted);
-                                               byte[] privateKey = pki.PrivateKey;
-                                               switch (privateKey [0]) {
-                                               case 0x02:
-                                                       DSAParameters p = new DSAParameters (); // FIXME
-                                                       saa = PKCS8.PrivateKeyInfo.DecodeDSA (privateKey, p);
-                                                       break;
-                                               case 0x30:
-                                                       saa = PKCS8.PrivateKeyInfo.DecodeRSA (privateKey);
-                                                       break;
-                                               default:
-                                                       break;
-                                               }
-                                               Array.Clear (privateKey, 0, privateKey.Length);
-                                               Array.Clear (decrypted, 0, decrypted.Length);
-                                       }
-
-                                       if (saa != null && CompareAsymmetricAlgorithm (saa, aa)) {
-                                               if (safeBag.Count == 3) {
-                                                       ASN1 bagAttributes = safeBag [2];
-                                                       
-                                                       for (int i = 0; i < bagAttributes.Count; i++) {
-                                                               ASN1 pkcs12Attribute = bagAttributes [i];
-                                                               ASN1 attrId = pkcs12Attribute [0];
-                                                               string aOid = ASN1Convert.ToOid (attrId);
-                                                               ArrayList aValues = new ArrayList ();
-
-                                                               ASN1 attrValues = pkcs12Attribute [1];
-                                                                       
-                                                               for (int j = 0; j < attrValues.Count; j++) {
-                                                                       ASN1 attrValue = attrValues [j];
-                                                                       aValues.Add (attrValue.Value);
-                                                               }
-                                                               result.Add (aOid, aValues);
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-
-                       return result;
-               }
-
-               public IDictionary GetAttributes (X509Certificate cert)
-               {
-                       IDictionary result = new Hashtable ();
-
-                       foreach (SafeBag sb in _safeBags) {
-                               if (sb.BagOID.Equals (certBag)) {
-                                       ASN1 safeBag = sb.ASN1;
-                                       ASN1 bagValue = safeBag [1];
-                                       PKCS7.ContentInfo crt = new PKCS7.ContentInfo (bagValue.Value);
-                                       X509Certificate xc = new X509Certificate (crt.Content [0].Value);
-
-                                       if (Compare (cert.RawData, xc.RawData)) {
-                                               if (safeBag.Count == 3) {
-                                                       ASN1 bagAttributes = safeBag [2];
-
-                                                       for (int i = 0; i < bagAttributes.Count; i++) {
-                                                               ASN1 pkcs12Attribute = bagAttributes [i];
-                                                               ASN1 attrId = pkcs12Attribute [0];
-
-                                                               string aOid = ASN1Convert.ToOid (attrId);
-                                                               ArrayList aValues = new ArrayList ();
-
-                                                               ASN1 attrValues = pkcs12Attribute [1];
-                                                                       
-                                                               for (int j = 0; j < attrValues.Count; j++) {
-                                                                       ASN1 attrValue = attrValues [j];
-                                                                       aValues.Add (attrValue.Value);
-                                                               }
-                                                               result.Add (aOid, aValues);
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-
-                       return result;
-               }
-
-               public void SaveToFile (string filename)
-               {
-                       if (filename == null)
-                               throw new ArgumentNullException ("filename");
-
-                       using (FileStream fs = File.Create (filename)) {
-                               byte[] data = GetBytes ();
-                               fs.Write (data, 0, data.Length);
-                       }
-               }
-
-               public object Clone ()
-               {
-                       PKCS12 clone = null;
-                       if (_password != null) {
-                               clone = new PKCS12 (GetBytes (), Encoding.BigEndianUnicode.GetString (_password));
-                       } else {
-                               clone = new PKCS12 (GetBytes ());
-                       }
-                       clone.IterationCount = this.IterationCount;
-
-                       return clone;
-               }
-
-               // static
-
-               public const int CryptoApiPasswordLimit = 32;
-               
-               static private int password_max_length = Int32.MaxValue;
-
-               // static properties
-               
-               // MS CryptoAPI limits the password to a maximum of 31 characters
-               // other implementations, like OpenSSL, have no such limitation.
-               // Setting a maximum value will truncate the password length to 
-               // ensure compatibility with MS's PFXImportCertStore API.
-               static public int MaximumPasswordLength {
-                       get { return password_max_length; }
-                       set {
-                               if (value < CryptoApiPasswordLimit) {
-                                       string msg = Locale.GetText ("Maximum password length cannot be less than {0}.", CryptoApiPasswordLimit);
-                                       throw new ArgumentOutOfRangeException (msg);
-                               }
-                               password_max_length = value;
-                       }
-               }
-
-               // static methods
-
-               static private byte[] LoadFile (string filename) 
-               {
-                       byte[] data = null;
-                       using (FileStream fs = File.OpenRead (filename)) {
-                               data = new byte [fs.Length];
-                               fs.Read (data, 0, data.Length);
-                               fs.Close ();
-                       }
-                       return data;
-               }
-
-               static public PKCS12 LoadFromFile (string filename) 
-               {
-                       if (filename == null)
-                               throw new ArgumentNullException ("filename");
-
-                       return new PKCS12 (LoadFile (filename));
-               }
-
-               static public PKCS12 LoadFromFile (string filename, string password) 
-               {
-                       if (filename == null)
-                               throw new ArgumentNullException ("filename");
-
-                       return new PKCS12 (LoadFile (filename), password);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/TestAnchors.cs b/mcs/class/corlib/Mono.Security.X509/TestAnchors.cs
deleted file mode 100644 (file)
index 2319f28..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// TestAnchors.cs: Trust Anchors for development and debugging
-//     include test certificates for Microsoft (root agency) and Mono
-//
-// Author:
-//     Sebastien Pouliot (spouliot@motus.com)
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class TestAnchors : TrustAnchors {
-
-               static byte[] rootagency = { 
-                       0x30, 0x82, 0x01, 0xCA, 0x30, 0x82, 0x01, 0x74, 0xA0, 0x03, 0x02, 0x01, 
-                       0x02, 0x02, 0x10, 0x06, 0x37, 0x6C, 0x00, 0xAA, 0x00, 0x64, 0x8A, 0x11, 
-                       0xCF, 0xB8, 0xD4, 0xAA, 0x5C, 0x35, 0xF4, 0x30, 0x0D, 0x06, 0x09, 0x2A, 
-                       0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x30, 0x16, 
-                       0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0B, 0x52, 
-                       0x6F, 0x6F, 0x74, 0x20, 0x41, 0x67, 0x65, 0x6E, 0x63, 0x79, 0x30, 0x1E, 
-                       0x17, 0x0D, 0x39, 0x36, 0x30, 0x35, 0x32, 0x38, 0x32, 0x32, 0x30, 0x32, 
-                       0x35, 0x39, 0x5A, 0x17, 0x0D, 0x33, 0x39, 0x31, 0x32, 0x33, 0x31, 0x32, 
-                       0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x16, 0x31, 0x14, 0x30, 0x12, 
-                       0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0B, 0x52, 0x6F, 0x6F, 0x74, 0x20, 
-                       0x41, 0x67, 0x65, 0x6E, 0x63, 0x79, 0x30, 0x5B, 0x30, 0x0D, 0x06, 0x09, 
-                       0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 
-                       0x4A, 0x00, 0x30, 0x47, 0x02, 0x40, 0x81, 0x55, 0x22, 0xB9, 0x8A, 0xA4, 
-                       0x6F, 0xED, 0xD6, 0xE7, 0xD9, 0x66, 0x0F, 0x55, 0xBC, 0xD7, 0xCD, 0xD5, 
-                       0xBC, 0x4E, 0x40, 0x02, 0x21, 0xA2, 0xB1, 0xF7, 0x87, 0x30, 0x85, 0x5E, 
-                       0xD2, 0xF2, 0x44, 0xB9, 0xDC, 0x9B, 0x75, 0xB6, 0xFB, 0x46, 0x5F, 0x42, 
-                       0xB6, 0x9D, 0x23, 0x36, 0x0B, 0xDE, 0x54, 0x0F, 0xCD, 0xBD, 0x1F, 0x99, 
-                       0x2A, 0x10, 0x58, 0x11, 0xCB, 0x40, 0xCB, 0xB5, 0xA7, 0x41, 0x02, 0x03, 
-                       0x01, 0x00, 0x01, 0xA3, 0x81, 0x9E, 0x30, 0x81, 0x9B, 0x30, 0x50, 0x06, 
-                       0x03, 0x55, 0x04, 0x03, 0x04, 0x49, 0x13, 0x47, 0x46, 0x6F, 0x72, 0x20, 
-                       0x54, 0x65, 0x73, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x50, 0x75, 0x72, 0x70, 
-                       0x6F, 0x73, 0x65, 0x73, 0x20, 0x4F, 0x6E, 0x6C, 0x79, 0x20, 0x53, 0x61, 
-                       0x6D, 0x70, 0x6C, 0x65, 0x20, 0x53, 0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 
-                       0x65, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x73, 0x68, 0x69, 0x6E, 0x67, 
-                       0x20, 0x43, 0x72, 0x65, 0x64, 0x65, 0x6E, 0x74, 0x69, 0x61, 0x6C, 0x73, 
-                       0x20, 0x41, 0x67, 0x65, 0x6E, 0x63, 0x79, 0x30, 0x47, 0x06, 0x03, 0x55, 
-                       0x1D, 0x01, 0x04, 0x40, 0x30, 0x3E, 0x80, 0x10, 0x12, 0xE4, 0x09, 0x2D, 
-                       0x06, 0x1D, 0x1D, 0x4F, 0x00, 0x8D, 0x61, 0x21, 0xDC, 0x16, 0x64, 0x63, 
-                       0xA1, 0x18, 0x30, 0x16, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 
-                       0x03, 0x13, 0x0B, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x41, 0x67, 0x65, 0x6E, 
-                       0x63, 0x79, 0x82, 0x10, 0x06, 0x37, 0x6C, 0x00, 0xAA, 0x00, 0x64, 0x8A, 
-                       0x11, 0xCF, 0xB8, 0xD4, 0xAA, 0x5C, 0x35, 0xF4, 0x30, 0x0D, 0x06, 0x09, 
-                       0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x03, 
-                       0x41, 0x00, 0x2D, 0x2E, 0x3E, 0x7B, 0x89, 0x42, 0x89, 0x3F, 0xA8, 0x21, 
-                       0x17, 0xFA, 0xF0, 0xF5, 0xC3, 0x95, 0xDB, 0x62, 0x69, 0x5B, 0xC9, 0xDC, 
-                       0xC1, 0xB3, 0xFA, 0xF0, 0xC4, 0x6F, 0x6F, 0x64, 0x9A, 0xBD, 0xE7, 0x1B, 
-                       0x25, 0x68, 0x72, 0x83, 0x67, 0xBD, 0x56, 0xB0, 0x8D, 0x01, 0xBD, 0x2A, 
-                       0xF7, 0xCC, 0x4B, 0xBD, 0x87, 0xA5, 0xBA, 0x87, 0x20, 0x4C, 0x42, 0x11, 
-                       0x41, 0xAD, 0x10, 0x17, 0x3B, 0x8C };
-
-               static byte[] monoTestRoot = { 
-                       0x30, 0x82, 0x01, 0xC2, 0x30, 0x82, 0x01, 0x2B, 0xA0, 0x03, 0x02, 0x01, 
-                       0x02, 0x02, 0x10, 0x28, 0xF4, 0x76, 0x38, 0x91, 0x74, 0x0E, 0x48, 0x85, 
-                       0xC7, 0x6E, 0x88, 0x4F, 0xE1, 0xB0, 0x69, 0x30, 0x0D, 0x06, 0x09, 0x2A, 
-                       0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x30, 0x20, 
-                       0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x15, 0x4D, 
-                       0x6F, 0x6E, 0x6F, 0x20, 0x54, 0x65, 0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 
-                       0x74, 0x20, 0x41, 0x67, 0x65, 0x6E, 0x63, 0x79, 0x30, 0x1E, 0x17, 0x0D, 
-                       0x30, 0x33, 0x30, 0x39, 0x30, 0x31, 0x31, 0x35, 0x35, 0x35, 0x34, 0x38, 
-                       0x5A, 0x17, 0x0D, 0x33, 0x39, 0x31, 0x32, 0x33, 0x31, 0x31, 0x38, 0x35, 
-                       0x39, 0x35, 0x39, 0x5A, 0x30, 0x20, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 
-                       0x55, 0x04, 0x03, 0x13, 0x15, 0x4D, 0x6F, 0x6E, 0x6F, 0x20, 0x54, 0x65, 
-                       0x73, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x41, 0x67, 0x65, 0x6E, 
-                       0x63, 0x79, 0x30, 0x81, 0x9E, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 
-                       0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8C, 0x00, 
-                       0x30, 0x81, 0x88, 0x02, 0x81, 0x80, 0xBF, 0xFE, 0x27, 0x00, 0xB0, 0x71, 
-                       0x08, 0x4F, 0xBD, 0x26, 0x01, 0x02, 0xD0, 0xB9, 0xC3, 0x52, 0xF2, 0xA1, 
-                       0xE9, 0xEF, 0x7A, 0x3F, 0x04, 0xE9, 0x37, 0x84, 0x63, 0xFA, 0xF5, 0xA7, 
-                       0xA8, 0xA4, 0xFB, 0x20, 0x0A, 0x75, 0x88, 0xAF, 0xC9, 0x8E, 0xEA, 0xAF, 
-                       0x02, 0x0E, 0x83, 0x43, 0x6B, 0xD3, 0x7E, 0xFD, 0x1D, 0x4E, 0x5A, 0x9F, 
-                       0x7E, 0x61, 0xC7, 0xE7, 0x53, 0xB2, 0x8A, 0x8A, 0x6B, 0x71, 0x3E, 0x67, 
-                       0xCF, 0x17, 0x12, 0x4E, 0xC6, 0x5B, 0xFF, 0xD8, 0xDC, 0x1D, 0x27, 0x06, 
-                       0xD2, 0xCD, 0xFF, 0x15, 0x12, 0x16, 0x9D, 0x77, 0x8B, 0x93, 0xF7, 0xE0, 
-                       0x9B, 0xB9, 0x92, 0x62, 0x18, 0xD4, 0x68, 0x73, 0x48, 0xD2, 0x6D, 0x7F, 
-                       0x35, 0x34, 0xE4, 0xB6, 0x2A, 0x62, 0x72, 0x32, 0xB1, 0xA3, 0xBD, 0x61, 
-                       0x18, 0x88, 0x3D, 0xAA, 0xE7, 0x02, 0x5A, 0x70, 0xEE, 0x9B, 0xE2, 0xAB, 
-                       0x87, 0xF9, 0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 
-                       0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x03, 0x81, 
-                       0x81, 0x00, 0x8E, 0x08, 0xD7, 0x0F, 0x30, 0xB2, 0xFD, 0x3A, 0x5C, 0x94, 
-                       0xA9, 0x56, 0xBE, 0x44, 0x77, 0xE3, 0xA3, 0x92, 0xBC, 0xB9, 0xE4, 0x95, 
-                       0x68, 0xD4, 0xF4, 0xF9, 0x24, 0x4B, 0x2A, 0x79, 0x93, 0x57, 0x7E, 0x84, 
-                       0x50, 0x3F, 0xA9, 0xC8, 0xDA, 0x9E, 0x08, 0x9C, 0x21, 0xE1, 0x10, 0xFC, 
-                       0x1C, 0x5C, 0x4B, 0x60, 0x97, 0xBA, 0x55, 0xCB, 0x7C, 0xEA, 0xC3, 0x04, 
-                       0x2F, 0x55, 0xBB, 0x16, 0x26, 0xCD, 0x87, 0x90, 0x30, 0x7F, 0xE0, 0xCF, 
-                       0x24, 0x27, 0xB4, 0x3A, 0xD0, 0x9F, 0xC7, 0x55, 0xF8, 0x7C, 0xC9, 0xA0, 
-                       0x72, 0xE4, 0x06, 0xF1, 0x4A, 0x5B, 0xBB, 0x71, 0x84, 0x8B, 0x76, 0x23, 
-                       0x65, 0x1F, 0x1B, 0xEA, 0x96, 0x85, 0x13, 0x84, 0x0C, 0x8C, 0xCD, 0xDA, 
-                       0x3D, 0x1F, 0xEB, 0xA9, 0xA7, 0xDF, 0xE0, 0xD1, 0xDC, 0x93, 0x21, 0x7A, 
-                       0x10, 0xA7, 0x92, 0x63, 0x5D, 0xAB, 0xA2, 0x13, 0x37, 0xA4 };
-
-               static TestAnchors ()
-               {
-                       // add Microsoft Test Root for people who used MS makecert to create
-                       // their Authenticode(tm) test certificates
-                       coll.Add (new X509Certificate (rootagency));
-
-                       // add Mono Test Root for people who used Mono makecert to create
-                       // their Authenticode(tm) test certificates
-                       coll.Add (new X509Certificate (monoTestRoot));
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/TrustAnchors.cs b/mcs/class/corlib/Mono.Security.X509/TrustAnchors.cs
deleted file mode 100644 (file)
index 26832a4..0000000
+++ /dev/null
@@ -1,381 +0,0 @@
-//
-// TrustAnchors.cs: "Official" default Trust Anchors for Mono
-//
-// Author:
-//     Sebastien Pouliot (spouliot@motus.com)
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class TrustAnchors : ITrustAnchors {
-
-               static byte[] msroot = { 
-                       0x30, 0x82, 0x04, 0x12, 0x30, 0x82, 0x02, 0xFA, 0xA0, 0x03, 0x02, 0x01, 
-                       0x02, 0x02, 0x0F, 0x00, 0xC1, 0x00, 0x8B, 0x3C, 0x3C, 0x88, 0x11, 0xD1, 
-                       0x3E, 0xF6, 0x63, 0xEC, 0xDF, 0x40, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 
-                       0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x30, 0x70, 0x31, 
-                       0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x22, 0x43, 0x6F, 
-                       0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 
-                       0x31, 0x39, 0x39, 0x37, 0x20, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 
-                       0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x2E, 0x31, 0x1E, 0x30, 0x1C, 
-                       0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 
-                       0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 
-                       0x74, 0x69, 0x6F, 0x6E, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 
-                       0x03, 0x13, 0x18, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 
-                       0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 
-                       0x69, 0x74, 0x79, 0x30, 0x1E, 0x17, 0x0D, 0x39, 0x37, 0x30, 0x31, 0x31, 
-                       0x30, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x30, 
-                       0x31, 0x32, 0x33, 0x31, 0x30, 0x37, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x30, 
-                       0x70, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x22, 
-                       0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x63, 
-                       0x29, 0x20, 0x31, 0x39, 0x39, 0x37, 0x20, 0x4D, 0x69, 0x63, 0x72, 0x6F, 
-                       0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x2E, 0x31, 0x1E, 
-                       0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x15, 0x4D, 0x69, 0x63, 
-                       0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 
-                       0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 
-                       0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 
-                       0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x41, 0x75, 0x74, 0x68, 
-                       0x6F, 0x72, 0x69, 0x74, 0x79, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 
-                       0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 
-                       0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 
-                       0x01, 0x00, 0xA9, 0x02, 0xBD, 0xC1, 0x70, 0xE6, 0x3B, 0xF2, 0x4E, 0x1B, 
-                       0x28, 0x9F, 0x97, 0x78, 0x5E, 0x30, 0xEA, 0xA2, 0xA9, 0x8D, 0x25, 0x5F, 
-                       0xF8, 0xFE, 0x95, 0x4C, 0xA3, 0xB7, 0xFE, 0x9D, 0xA2, 0x20, 0x3E, 0x7C, 
-                       0x51, 0xA2, 0x9B, 0xA2, 0x8F, 0x60, 0x32, 0x6B, 0xD1, 0x42, 0x64, 0x79, 
-                       0xEE, 0xAC, 0x76, 0xC9, 0x54, 0xDA, 0xF2, 0xEB, 0x9C, 0x86, 0x1C, 0x8F, 
-                       0x9F, 0x84, 0x66, 0xB3, 0xC5, 0x6B, 0x7A, 0x62, 0x23, 0xD6, 0x1D, 0x3C, 
-                       0xDE, 0x0F, 0x01, 0x92, 0xE8, 0x96, 0xC4, 0xBF, 0x2D, 0x66, 0x9A, 0x9A, 
-                       0x68, 0x26, 0x99, 0xD0, 0x3A, 0x2C, 0xBF, 0x0C, 0xB5, 0x58, 0x26, 0xC1, 
-                       0x46, 0xE7, 0x0A, 0x3E, 0x38, 0x96, 0x2C, 0xA9, 0x28, 0x39, 0xA8, 0xEC, 
-                       0x49, 0x83, 0x42, 0xE3, 0x84, 0x0F, 0xBB, 0x9A, 0x6C, 0x55, 0x61, 0xAC, 
-                       0x82, 0x7C, 0xA1, 0x60, 0x2D, 0x77, 0x4C, 0xE9, 0x99, 0xB4, 0x64, 0x3B, 
-                       0x9A, 0x50, 0x1C, 0x31, 0x08, 0x24, 0x14, 0x9F, 0xA9, 0xE7, 0x91, 0x2B, 
-                       0x18, 0xE6, 0x3D, 0x98, 0x63, 0x14, 0x60, 0x58, 0x05, 0x65, 0x9F, 0x1D, 
-                       0x37, 0x52, 0x87, 0xF7, 0xA7, 0xEF, 0x94, 0x02, 0xC6, 0x1B, 0xD3, 0xBF, 
-                       0x55, 0x45, 0xB3, 0x89, 0x80, 0xBF, 0x3A, 0xEC, 0x54, 0x94, 0x4E, 0xAE, 
-                       0xFD, 0xA7, 0x7A, 0x6D, 0x74, 0x4E, 0xAF, 0x18, 0xCC, 0x96, 0x09, 0x28, 
-                       0x21, 0x00, 0x57, 0x90, 0x60, 0x69, 0x37, 0xBB, 0x4B, 0x12, 0x07, 0x3C, 
-                       0x56, 0xFF, 0x5B, 0xFB, 0xA4, 0x66, 0x0A, 0x08, 0xA6, 0xD2, 0x81, 0x56, 
-                       0x57, 0xEF, 0xB6, 0x3B, 0x5E, 0x16, 0x81, 0x77, 0x04, 0xDA, 0xF6, 0xBE, 
-                       0xAE, 0x80, 0x95, 0xFE, 0xB0, 0xCD, 0x7F, 0xD6, 0xA7, 0x1A, 0x72, 0x5C, 
-                       0x3C, 0xCA, 0xBC, 0xF0, 0x08, 0xA3, 0x22, 0x30, 0xB3, 0x06, 0x85, 0xC9, 
-                       0xB3, 0x20, 0x77, 0x13, 0x85, 0xDF, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 
-                       0x81, 0xA8, 0x30, 0x81, 0xA5, 0x30, 0x81, 0xA2, 0x06, 0x03, 0x55, 0x1D, 
-                       0x01, 0x04, 0x81, 0x9A, 0x30, 0x81, 0x97, 0x80, 0x10, 0x5B, 0xD0, 0x70, 
-                       0xEF, 0x69, 0x72, 0x9E, 0x23, 0x51, 0x7E, 0x14, 0xB2, 0x4D, 0x8E, 0xFF, 
-                       0xCB, 0xA1, 0x72, 0x30, 0x70, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 
-                       0x04, 0x0B, 0x13, 0x22, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 
-                       0x74, 0x20, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x37, 0x20, 0x4D, 
-                       0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 
-                       0x70, 0x2E, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 
-                       0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 
-                       0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, 0x21, 
-                       0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x4D, 0x69, 0x63, 
-                       0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 
-                       0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x82, 0x0F, 0x00, 
-                       0xC1, 0x00, 0x8B, 0x3C, 0x3C, 0x88, 0x11, 0xD1, 0x3E, 0xF6, 0x63, 0xEC, 
-                       0xDF, 0x40, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 
-                       0x01, 0x01, 0x04, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x95, 0xE8, 
-                       0x0B, 0xC0, 0x8D, 0xF3, 0x97, 0x18, 0x35, 0xED, 0xB8, 0x01, 0x24, 0xD8, 
-                       0x77, 0x11, 0xF3, 0x5C, 0x60, 0x32, 0x9F, 0x9E, 0x0B, 0xCB, 0x3E, 0x05, 
-                       0x91, 0x88, 0x8F, 0xC9, 0x3A, 0xE6, 0x21, 0xF2, 0xF0, 0x57, 0x93, 0x2C, 
-                       0xB5, 0xA0, 0x47, 0xC8, 0x62, 0xEF, 0xFC, 0xD7, 0xCC, 0x3B, 0x3B, 0x5A, 
-                       0xA9, 0x36, 0x54, 0x69, 0xFE, 0x24, 0x6D, 0x3F, 0xC9, 0xCC, 0xAA, 0xDE, 
-                       0x05, 0x7C, 0xDD, 0x31, 0x8D, 0x3D, 0x9F, 0x10, 0x70, 0x6A, 0xBB, 0xFE, 
-                       0x12, 0x4F, 0x18, 0x69, 0xC0, 0xFC, 0xD0, 0x43, 0xE3, 0x11, 0x5A, 0x20, 
-                       0x4F, 0xEA, 0x62, 0x7B, 0xAF, 0xAA, 0x19, 0xC8, 0x2B, 0x37, 0x25, 0x2D, 
-                       0xBE, 0x65, 0xA1, 0x12, 0x8A, 0x25, 0x0F, 0x63, 0xA3, 0xF7, 0x54, 0x1C, 
-                       0xF9, 0x21, 0xC9, 0xD6, 0x15, 0xF3, 0x52, 0xAC, 0x6E, 0x43, 0x32, 0x07, 
-                       0xFD, 0x82, 0x17, 0xF8, 0xE5, 0x67, 0x6C, 0x0D, 0x51, 0xF6, 0xBD, 0xF1, 
-                       0x52, 0xC7, 0xBD, 0xE7, 0xC4, 0x30, 0xFC, 0x20, 0x31, 0x09, 0x88, 0x1D, 
-                       0x95, 0x29, 0x1A, 0x4D, 0xD5, 0x1D, 0x02, 0xA5, 0xF1, 0x80, 0xE0, 0x03, 
-                       0xB4, 0x5B, 0xF4, 0xB1, 0xDD, 0xC8, 0x57, 0xEE, 0x65, 0x49, 0xC7, 0x52, 
-                       0x54, 0xB6, 0xB4, 0x03, 0x28, 0x12, 0xFF, 0x90, 0xD6, 0xF0, 0x08, 0x8F, 
-                       0x7E, 0xB8, 0x97, 0xC5, 0xAB, 0x37, 0x2C, 0xE4, 0x7A, 0xE4, 0xA8, 0x77, 
-                       0xE3, 0x76, 0xA0, 0x00, 0xD0, 0x6A, 0x3F, 0xC1, 0xD2, 0x36, 0x8A, 0xE0, 
-                       0x41, 0x12, 0xA8, 0x35, 0x6A, 0x1B, 0x6A, 0xDB, 0x35, 0xE1, 0xD4, 0x1C, 
-                       0x04, 0xE4, 0xA8, 0x45, 0x04, 0xC8, 0x5A, 0x33, 0x38, 0x6E, 0x4D, 0x1C, 
-                       0x0D, 0x62, 0xB7, 0x0A, 0xA2, 0x8C, 0xD3, 0xD5, 0x54, 0x3F, 0x46, 0xCD, 
-                       0x1C, 0x55, 0xA6, 0x70, 0xDB, 0x12, 0x3A, 0x87, 0x93, 0x75, 0x9F, 0xA7, 
-                       0xD2, 0xA0 };
-
-               static byte[] verisign = { 
-                       0x30, 0x82, 0x02, 0x40, 0x30, 0x82, 0x01, 0xA9, 0x02, 0x10, 0x03, 0xC7, 
-                       0x8F, 0x37, 0xDB, 0x92, 0x28, 0xDF, 0x3C, 0xBB, 0x1A, 0xAD, 0x82, 0xFA, 
-                       0x67, 0x10, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 
-                       0x01, 0x01, 0x02, 0x05, 0x00, 0x30, 0x61, 0x31, 0x11, 0x30, 0x0F, 0x06, 
-                       0x03, 0x55, 0x04, 0x07, 0x13, 0x08, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 
-                       0x65, 0x74, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 
-                       0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 
-                       0x6E, 0x63, 0x2E, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0B, 
-                       0x13, 0x2A, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 
-                       0x6F, 0x6D, 0x6D, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x53, 0x6F, 
-                       0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 
-                       0x73, 0x68, 0x65, 0x72, 0x73, 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 
-                       0x39, 0x36, 0x30, 0x34, 0x30, 0x39, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 
-                       0x5A, 0x17, 0x0D, 0x30, 0x34, 0x30, 0x31, 0x30, 0x37, 0x32, 0x33, 0x35, 
-                       0x39, 0x35, 0x39, 0x5A, 0x30, 0x61, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 
-                       0x55, 0x04, 0x07, 0x13, 0x08, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 0x65, 
-                       0x74, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0E, 
-                       0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 
-                       0x63, 0x2E, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 
-                       0x2A, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 0x6F, 
-                       0x6D, 0x6D, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x53, 0x6F, 0x66, 
-                       0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 0x73, 
-                       0x68, 0x65, 0x72, 0x73, 0x20, 0x43, 0x41, 0x30, 0x81, 0x9F, 0x30, 0x0D, 
-                       0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 
-                       0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 
-                       0xC3, 0xD3, 0x69, 0x65, 0x52, 0x01, 0x94, 0x54, 0xAB, 0x28, 0xC6, 0x62, 
-                       0x18, 0xB3, 0x54, 0x55, 0xC5, 0x44, 0x87, 0x45, 0x4A, 0x3B, 0xC2, 0x7E, 
-                       0xD8, 0xD3, 0xD7, 0xC8, 0x80, 0x86, 0x8D, 0xD8, 0x0C, 0xF1, 0x16, 0x9C, 
-                       0xCC, 0x6B, 0xA9, 0x29, 0xB2, 0x8F, 0x76, 0x73, 0x92, 0xC8, 0xC5, 0x62, 
-                       0xA6, 0x3C, 0xED, 0x1E, 0x05, 0x75, 0xF0, 0x13, 0x00, 0x6C, 0x14, 0x4D, 
-                       0xD4, 0x98, 0x90, 0x07, 0xBE, 0x69, 0x73, 0x81, 0xB8, 0x62, 0x4E, 0x31, 
-                       0x1E, 0xD1, 0xFC, 0xC9, 0x0C, 0xEB, 0x7D, 0x90, 0xBF, 0xAE, 0xB4, 0x47, 
-                       0x51, 0xEC, 0x6F, 0xCE, 0x64, 0x35, 0x02, 0xD6, 0x7D, 0x67, 0x05, 0x77, 
-                       0xE2, 0x8F, 0xD9, 0x51, 0xD7, 0xFB, 0x97, 0x19, 0xBC, 0x3E, 0xD7, 0x77, 
-                       0x81, 0xC6, 0x43, 0xDD, 0xF2, 0xDD, 0xDF, 0xCA, 0xA3, 0x83, 0x8B, 0xCB, 
-                       0x41, 0xC1, 0x3D, 0x22, 0x48, 0x48, 0xA6, 0x19, 0x02, 0x03, 0x01, 0x00, 
-                       0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 
-                       0x01, 0x02, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0xB5, 0xBC, 0xB0, 0x75, 
-                       0x6A, 0x89, 0xA2, 0x86, 0xBD, 0x64, 0x78, 0xC3, 0xA7, 0x32, 0x75, 0x72, 
-                       0x11, 0xAA, 0x26, 0x02, 0x17, 0x60, 0x30, 0x4C, 0xE3, 0x48, 0x34, 0x19, 
-                       0xB9, 0x52, 0x4A, 0x51, 0x18, 0x80, 0xFE, 0x53, 0x2D, 0x7B, 0xD5, 0x31, 
-                       0x8C, 0xC5, 0x65, 0x99, 0x41, 0x41, 0x2F, 0xF2, 0xAE, 0x63, 0x7A, 0xE8, 
-                       0x73, 0x99, 0x15, 0x90, 0x1A, 0x1F, 0x7A, 0x8B, 0x41, 0xD0, 0x8E, 0x3A, 
-                       0xD0, 0xCD, 0x38, 0x34, 0x44, 0xD0, 0x75, 0xF8, 0xEA, 0x71, 0xC4, 0x81, 
-                       0x19, 0x38, 0x17, 0x35, 0x4A, 0xAE, 0xC5, 0x3E, 0x32, 0xE6, 0x21, 0xB8, 
-                       0x05, 0xC0, 0x93, 0xE1, 0xC7, 0x38, 0x5C, 0xD8, 0xF7, 0x93, 0x38, 0x64, 
-                       0x90, 0xED, 0x54, 0xCE, 0xCA, 0xD3, 0xD3, 0xD0, 0x5F, 0xEF, 0x04, 0x9B, 
-                       0xDE, 0x02, 0x82, 0xDD, 0x88, 0x29, 0xB1, 0xC3, 0x4F, 0xA5, 0xCD, 0x71, 
-                       0x64, 0x31, 0x3C, 0x3C };
-
-               static byte[] verisign_ts_root = { 
-                       0x30, 0x82, 0x02, 0xBC, 0x30, 0x82, 0x02, 0x25, 0x02, 0x10, 0x4A, 0x19, 
-                       0xD2, 0x38, 0x8C, 0x82, 0x59, 0x1C, 0xA5, 0x5D, 0x73, 0x5F, 0x15, 0x5D, 
-                       0xDC, 0xA3, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 
-                       0x01, 0x01, 0x04, 0x05, 0x00, 0x30, 0x81, 0x9E, 0x31, 0x1F, 0x30, 0x1D, 
-                       0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 
-                       0x69, 0x67, 0x6E, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 0x65, 
-                       0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 
-                       0x04, 0x0B, 0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 
-                       0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x2C, 0x30, 0x2A, 0x06, 0x03, 
-                       0x55, 0x04, 0x0B, 0x13, 0x23, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 
-                       0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6D, 0x70, 
-                       0x69, 0x6E, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x20, 
-                       0x52, 0x6F, 0x6F, 0x74, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 
-                       0x0B, 0x13, 0x2B, 0x4E, 0x4F, 0x20, 0x4C, 0x49, 0x41, 0x42, 0x49, 0x4C, 
-                       0x49, 0x54, 0x59, 0x20, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 
-                       0x2C, 0x20, 0x28, 0x63, 0x29, 0x39, 0x37, 0x20, 0x56, 0x65, 0x72, 0x69, 
-                       0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x30, 0x1E, 
-                       0x17, 0x0D, 0x39, 0x37, 0x30, 0x35, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, 
-                       0x30, 0x30, 0x5A, 0x17, 0x0D, 0x30, 0x34, 0x30, 0x31, 0x30, 0x37, 0x32, 
-                       0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x81, 0x9E, 0x31, 0x1F, 0x30, 
-                       0x1D, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 
-                       0x53, 0x69, 0x67, 0x6E, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4E, 
-                       0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 
-                       0x55, 0x04, 0x0B, 0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 
-                       0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x31, 0x2C, 0x30, 0x2A, 0x06, 
-                       0x03, 0x55, 0x04, 0x0B, 0x13, 0x23, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 
-                       0x67, 0x6E, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6D, 
-                       0x70, 0x69, 0x6E, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 
-                       0x20, 0x52, 0x6F, 0x6F, 0x74, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 
-                       0x04, 0x0B, 0x13, 0x2B, 0x4E, 0x4F, 0x20, 0x4C, 0x49, 0x41, 0x42, 0x49, 
-                       0x4C, 0x49, 0x54, 0x59, 0x20, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 
-                       0x44, 0x2C, 0x20, 0x28, 0x63, 0x29, 0x39, 0x37, 0x20, 0x56, 0x65, 0x72, 
-                       0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x30, 
-                       0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 
-                       0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 
-                       0x02, 0x81, 0x81, 0x00, 0xD3, 0x2E, 0x20, 0xF0, 0x68, 0x7C, 0x2C, 0x2D, 
-                       0x2E, 0x81, 0x1C, 0xB1, 0x06, 0xB2, 0xA7, 0x0B, 0xB7, 0x11, 0x0D, 0x57, 
-                       0xDA, 0x53, 0xD8, 0x75, 0xE3, 0xC9, 0x33, 0x2A, 0xB2, 0xD4, 0xF6, 0x09, 
-                       0x5B, 0x34, 0xF3, 0xE9, 0x90, 0xFE, 0x09, 0x0C, 0xD0, 0xDB, 0x1B, 0x5A, 
-                       0xB9, 0xCD, 0xE7, 0xF6, 0x88, 0xB1, 0x9D, 0xC0, 0x87, 0x25, 0xEB, 0x7D, 
-                       0x58, 0x10, 0x73, 0x6A, 0x78, 0xCB, 0x71, 0x15, 0xFD, 0xC6, 0x58, 0xF6, 
-                       0x29, 0xAB, 0x58, 0x5E, 0x96, 0x04, 0xFD, 0x2D, 0x62, 0x11, 0x58, 0x81, 
-                       0x1C, 0xCA, 0x71, 0x94, 0xD5, 0x22, 0x58, 0x2F, 0xD5, 0xCC, 0x14, 0x05, 
-                       0x84, 0x36, 0xBA, 0x94, 0xAA, 0xB4, 0x4D, 0x4A, 0xE9, 0xEE, 0x3B, 0x22, 
-                       0xAD, 0x56, 0x99, 0x7E, 0x21, 0x9C, 0x6C, 0x86, 0xC0, 0x4A, 0x47, 0x97, 
-                       0x6A, 0xB4, 0xA6, 0x36, 0xD5, 0xFC, 0x09, 0x2D, 0xD3, 0xB4, 0x39, 0x9B, 
-                       0x02, 0x03, 0x01, 0x00, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 
-                       0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 
-                       0x61, 0x55, 0x0E, 0x3E, 0x7B, 0xC7, 0x92, 0x12, 0x7E, 0x11, 0x10, 0x8E, 
-                       0x22, 0xCC, 0xD4, 0xB3, 0x13, 0x2B, 0x5B, 0xE8, 0x44, 0xE4, 0x0B, 0x78, 
-                       0x9E, 0xA4, 0x7E, 0xF3, 0xA7, 0x07, 0x72, 0x1E, 0xE2, 0x59, 0xEF, 0xCC, 
-                       0x84, 0xE3, 0x89, 0x94, 0x4C, 0xDB, 0x4E, 0x61, 0xEF, 0xB3, 0xA4, 0xFB, 
-                       0x46, 0x3D, 0x50, 0x34, 0x0B, 0x9F, 0x70, 0x56, 0xF6, 0x8E, 0x2A, 0x7F, 
-                       0x17, 0xCE, 0xE5, 0x63, 0xBF, 0x79, 0x69, 0x07, 0x73, 0x2E, 0xB0, 0x95, 
-                       0x28, 0x8A, 0xF5, 0xED, 0xAA, 0xA9, 0xD2, 0x5D, 0xCD, 0x0A, 0xCA, 0x10, 
-                       0x09, 0x8F, 0xCE, 0xB3, 0xAF, 0x28, 0x96, 0xC4, 0x79, 0x29, 0x84, 0x92, 
-                       0xDC, 0xFF, 0xBA, 0x67, 0x42, 0x48, 0xA6, 0x90, 0x10, 0xE4, 0xBF, 0x61, 
-                       0xF8, 0x9C, 0x53, 0xE5, 0x93, 0xD1, 0x73, 0x3F, 0xF8, 0xFD, 0x9D, 0x4F, 
-                       0x84, 0xAC, 0x55, 0xD1, 0xFD, 0x11, 0x63, 0x63 };
-
-               // old verisign code signing certificate (96-99) using MD2
-               // still valid because of the timestamps
-               static byte[] oldverisign = { 
-                       0x30, 0x82, 0x02, 0x35, 0x30, 0x82, 0x01, 0x9E, 0x02, 0x05, 0x02, 0xB4, 
-                       0x00, 0x00, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 
-                       0x0D, 0x01, 0x01, 0x02, 0x05, 0x00, 0x30, 0x61, 0x31, 0x11, 0x30, 0x0F, 
-                       0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x08, 0x49, 0x6E, 0x74, 0x65, 0x72, 
-                       0x6E, 0x65, 0x74, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0A, 
-                       0x13, 0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 
-                       0x49, 0x6E, 0x63, 0x2E, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 
-                       0x0B, 0x13, 0x2A, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 
-                       0x43, 0x6F, 0x6D, 0x6D, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x53, 
-                       0x6F, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6C, 
-                       0x69, 0x73, 0x68, 0x65, 0x72, 0x73, 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 
-                       0x0D, 0x39, 0x36, 0x30, 0x34, 0x30, 0x39, 0x30, 0x39, 0x33, 0x35, 0x35, 
-                       0x39, 0x5A, 0x17, 0x0D, 0x39, 0x39, 0x31, 0x32, 0x33, 0x31, 0x30, 0x39, 
-                       0x33, 0x35, 0x35, 0x38, 0x5A, 0x30, 0x61, 0x31, 0x11, 0x30, 0x0F, 0x06, 
-                       0x03, 0x55, 0x04, 0x07, 0x13, 0x08, 0x49, 0x6E, 0x74, 0x65, 0x72, 0x6E, 
-                       0x65, 0x74, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 
-                       0x0E, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x2C, 0x20, 0x49, 
-                       0x6E, 0x63, 0x2E, 0x31, 0x33, 0x30, 0x31, 0x06, 0x03, 0x55, 0x04, 0x0B, 
-                       0x13, 0x2A, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6E, 0x20, 0x43, 
-                       0x6F, 0x6D, 0x6D, 0x65, 0x72, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x53, 0x6F, 
-                       0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x50, 0x75, 0x62, 0x6C, 0x69, 
-                       0x73, 0x68, 0x65, 0x72, 0x73, 0x20, 0x43, 0x41, 0x30, 0x81, 0x9F, 0x30, 
-                       0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 
-                       0x05, 0x00, 0x03, 0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 
-                       0x00, 0xC3, 0xD3, 0x69, 0x65, 0x52, 0x01, 0x94, 0x54, 0xAB, 0x28, 0xC6, 
-                       0x62, 0x18, 0xB3, 0x54, 0x55, 0xC5, 0x44, 0x87, 0x45, 0x4A, 0x3B, 0xC2, 
-                       0x7E, 0xD8, 0xD3, 0xD7, 0xC8, 0x80, 0x86, 0x8D, 0xD8, 0x0C, 0xF1, 0x16, 
-                       0x9C, 0xCC, 0x6B, 0xA9, 0x29, 0xB2, 0x8F, 0x76, 0x73, 0x92, 0xC8, 0xC5, 
-                       0x62, 0xA6, 0x3C, 0xED, 0x1E, 0x05, 0x75, 0xF0, 0x13, 0x00, 0x6C, 0x14, 
-                       0x4D, 0xD4, 0x98, 0x90, 0x07, 0xBE, 0x69, 0x73, 0x81, 0xB8, 0x62, 0x4E, 
-                       0x31, 0x1E, 0xD1, 0xFC, 0xC9, 0x0C, 0xEB, 0x7D, 0x90, 0xBF, 0xAE, 0xB4, 
-                       0x47, 0x51, 0xEC, 0x6F, 0xCE, 0x64, 0x35, 0x02, 0xD6, 0x7D, 0x67, 0x05, 
-                       0x77, 0xE2, 0x8F, 0xD9, 0x51, 0xD7, 0xFB, 0x97, 0x19, 0xBC, 0x3E, 0xD7, 
-                       0x77, 0x81, 0xC6, 0x43, 0xDD, 0xF2, 0xDD, 0xDF, 0xCA, 0xA3, 0x83, 0x8B, 
-                       0xCB, 0x41, 0xC1, 0x3D, 0x22, 0x48, 0x48, 0xA6, 0x19, 0x02, 0x03, 0x01, 
-                       0x00, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 
-                       0x01, 0x01, 0x02, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x31, 0xBB, 0x30, 
-                       0xC5, 0x6F, 0xA7, 0xBE, 0x23, 0x26, 0x6D, 0xA5, 0x99, 0x76, 0x68, 0xC5, 
-                       0x2A, 0x03, 0x28, 0x4B, 0xF3, 0x89, 0xB0, 0x99, 0x03, 0x32, 0x5B, 0x94, 
-                       0xA1, 0x7B, 0xC1, 0xC8, 0x19, 0xD7, 0xF4, 0x95, 0x6C, 0xAC, 0x73, 0x24, 
-                       0x0A, 0xCB, 0x44, 0x05, 0x7D, 0x78, 0xEE, 0xFA, 0xF6, 0xA7, 0x9F, 0x87, 
-                       0xA4, 0x7F, 0xE8, 0xF3, 0x4B, 0x4F, 0x32, 0x30, 0x30, 0x15, 0x08, 0x17, 
-                       0x01, 0xB2, 0x80, 0xFC, 0xA1, 0xD9, 0x24, 0x87, 0xA5, 0x00, 0x5F, 0xCD, 
-                       0xDD, 0x29, 0xC8, 0xA1, 0xA5, 0xCA, 0x58, 0x75, 0x39, 0x60, 0x45, 0x1F, 
-                       0xDE, 0x8D, 0xD6, 0x57, 0x08, 0xD3, 0xC0, 0x1B, 0x81, 0xC2, 0xD9, 0xE2, 
-                       0x00, 0x8C, 0xEC, 0x0A, 0x91, 0x02, 0xC6, 0x9D, 0x36, 0x74, 0x9A, 0x83, 
-                       0x6B, 0xEF, 0x7C, 0x8C, 0xD2, 0xA5, 0x2A, 0x6A, 0xC9, 0x7E, 0xDB, 0xA9, 
-                       0xBD, 0x2B, 0x22, 0xFF, 0x1C };
-
-               static byte[] thawte = { 
-                       0x30, 0x82, 0x03, 0x13, 0x30, 0x82, 0x02, 0x7C, 0xA0, 0x03, 0x02, 0x01, 
-                       0x02, 0x02, 0x01, 0x01, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 
-                       0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x30, 0x81, 0xC4, 0x31, 0x0B, 
-                       0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x5A, 0x41, 0x31, 
-                       0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0C, 0x57, 0x65, 
-                       0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 0x65, 0x31, 0x12, 
-                       0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x43, 0x61, 0x70, 
-                       0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x31, 0x1D, 0x30, 0x1B, 0x06, 0x03, 
-                       0x55, 0x04, 0x0A, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 
-                       0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x63, 
-                       0x63, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x1F, 
-                       0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 
-                       0x6E, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 
-                       0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x31, 0x19, 0x30, 0x17, 0x06, 
-                       0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 
-                       0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x31, 0x26, 
-                       0x30, 0x24, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 
-                       0x01, 0x16, 0x17, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2D, 0x63, 0x65, 
-                       0x72, 0x74, 0x73, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2E, 0x63, 
-                       0x6F, 0x6D, 0x30, 0x1E, 0x17, 0x0D, 0x39, 0x36, 0x30, 0x38, 0x30, 0x31, 
-                       0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x30, 0x31, 
-                       0x32, 0x33, 0x31, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x81, 
-                       0xC4, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 
-                       0x5A, 0x41, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 
-                       0x0C, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6E, 0x20, 0x43, 0x61, 0x70, 
-                       0x65, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 
-                       0x43, 0x61, 0x70, 0x65, 0x20, 0x54, 0x6F, 0x77, 0x6E, 0x31, 0x1D, 0x30, 
-                       0x1B, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77, 
-                       0x74, 0x65, 0x20, 0x43, 0x6F, 0x6E, 0x73, 0x75, 0x6C, 0x74, 0x69, 0x6E, 
-                       0x67, 0x20, 0x63, 0x63, 0x31, 0x28, 0x30, 0x26, 0x06, 0x03, 0x55, 0x04, 
-                       0x0B, 0x13, 0x1F, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 
-                       0x74, 0x69, 0x6F, 0x6E, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 
-                       0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6F, 0x6E, 0x31, 0x19, 
-                       0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x10, 0x54, 0x68, 0x61, 
-                       0x77, 0x74, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 
-                       0x41, 0x31, 0x26, 0x30, 0x24, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 
-                       0x0D, 0x01, 0x09, 0x01, 0x16, 0x17, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 
-                       0x2D, 0x63, 0x65, 0x72, 0x74, 0x73, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 
-                       0x65, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x81, 0x9F, 0x30, 0x0D, 0x06, 0x09, 
-                       0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 
-                       0x81, 0x8D, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xD3, 0xA4, 
-                       0x50, 0x6E, 0xC8, 0xFF, 0x56, 0x6B, 0xE6, 0xCF, 0x5D, 0xB6, 0xEA, 0x0C, 
-                       0x68, 0x75, 0x47, 0xA2, 0xAA, 0xC2, 0xDA, 0x84, 0x25, 0xFC, 0xA8, 0xF4, 
-                       0x47, 0x51, 0xDA, 0x85, 0xB5, 0x20, 0x74, 0x94, 0x86, 0x1E, 0x0F, 0x75, 
-                       0xC9, 0xE9, 0x08, 0x61, 0xF5, 0x06, 0x6D, 0x30, 0x6E, 0x15, 0x19, 0x02, 
-                       0xE9, 0x52, 0xC0, 0x62, 0xDB, 0x4D, 0x99, 0x9E, 0xE2, 0x6A, 0x0C, 0x44, 
-                       0x38, 0xCD, 0xFE, 0xBE, 0xE3, 0x64, 0x09, 0x70, 0xC5, 0xFE, 0xB1, 0x6B, 
-                       0x29, 0xB6, 0x2F, 0x49, 0xC8, 0x3B, 0xD4, 0x27, 0x04, 0x25, 0x10, 0x97, 
-                       0x2F, 0xE7, 0x90, 0x6D, 0xC0, 0x28, 0x42, 0x99, 0xD7, 0x4C, 0x43, 0xDE, 
-                       0xC3, 0xF5, 0x21, 0x6D, 0x54, 0x9F, 0x5D, 0xC3, 0x58, 0xE1, 0xC0, 0xE4, 
-                       0xD9, 0x5B, 0xB0, 0xB8, 0xDC, 0xB4, 0x7B, 0xDF, 0x36, 0x3A, 0xC2, 0xB5, 
-                       0x66, 0x22, 0x12, 0xD6, 0x87, 0x0D, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 
-                       0x13, 0x30, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 
-                       0xFF, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x0D, 0x06, 0x09, 
-                       0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x04, 0x05, 0x00, 0x03, 
-                       0x81, 0x81, 0x00, 0x07, 0xFA, 0x4C, 0x69, 0x5C, 0xFB, 0x95, 0xCC, 0x46, 
-                       0xEE, 0x85, 0x83, 0x4D, 0x21, 0x30, 0x8E, 0xCA, 0xD9, 0xA8, 0x6F, 0x49, 
-                       0x1A, 0xE6, 0xDA, 0x51, 0xE3, 0x60, 0x70, 0x6C, 0x84, 0x61, 0x11, 0xA1, 
-                       0x1A, 0xC8, 0x48, 0x3E, 0x59, 0x43, 0x7D, 0x4F, 0x95, 0x3D, 0xA1, 0x8B, 
-                       0xB7, 0x0B, 0x62, 0x98, 0x7A, 0x75, 0x8A, 0xDD, 0x88, 0x4E, 0x4E, 0x9E, 
-                       0x40, 0xDB, 0xA8, 0xCC, 0x32, 0x74, 0xB9, 0x6F, 0x0D, 0xC6, 0xE3, 0xB3, 
-                       0x44, 0x0B, 0xD9, 0x8A, 0x6F, 0x9A, 0x29, 0x9B, 0x99, 0x18, 0x28, 0x3B, 
-                       0xD1, 0xE3, 0x40, 0x28, 0x9A, 0x5A, 0x3C, 0xD5, 0xB5, 0xE7, 0x20, 0x1B, 
-                       0x8B, 0xCA, 0xA4, 0xAB, 0x8D, 0xE9, 0x51, 0xD9, 0xE2, 0x4C, 0x2C, 0x59, 
-                       0xA9, 0xDA, 0xB9, 0xB2, 0x75, 0x1B, 0xF6, 0x42, 0xF2, 0xEF, 0xC7, 0xF2, 
-                       0x18, 0xF9, 0x89, 0xBC, 0xA3, 0xFF, 0x8A, 0x23, 0x2E, 0x70, 0x47 };
-
-               static internal X509CertificateCollection coll;
-
-               static TrustAnchors () 
-               {
-                       coll = new X509CertificateCollection ();
-                       coll.Add (new X509Certificate (msroot));
-                       coll.Add (new X509Certificate (verisign));
-                       coll.Add (new X509Certificate (verisign_ts_root));
-                       coll.Add (new X509Certificate (thawte));
-               }
-
-               public X509CertificateCollection Anchors {
-                       get { return coll; }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X501Name.cs b/mcs/class/corlib/Mono.Security.X509/X501Name.cs
deleted file mode 100644 (file)
index 8343e5f..0000000
+++ /dev/null
@@ -1,400 +0,0 @@
-//
-// X501Name.cs: X.501 Distinguished Names stuff 
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-using Mono.Security.Cryptography;
-
-namespace Mono.Security.X509 {
-
-       // References:
-       // 1.   Information technology - Open Systems Interconnection - The Directory: Models
-       //      http://www.itu.int/rec/recommendation.asp?type=items&lang=e&parent=T-REC-X.501-200102-I
-       // 2.   RFC2253: Lightweight Directory Access Protocol (v3): UTF-8 String Representation of Distinguished Names
-       //      http://www.ietf.org/rfc/rfc2253.txt
-
-       /*
-        * Name ::= CHOICE { RDNSequence }
-        * 
-        * RDNSequence ::= SEQUENCE OF RelativeDistinguishedName
-        * 
-        * RelativeDistinguishedName ::= SET OF AttributeTypeAndValue
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       sealed class X501 {
-
-               static byte[] countryName = { 0x55, 0x04, 0x06 };
-               static byte[] organizationName = { 0x55, 0x04, 0x0A };
-               static byte[] organizationalUnitName = { 0x55, 0x04, 0x0B };
-               static byte[] commonName = { 0x55, 0x04, 0x03 };
-               static byte[] localityName = { 0x55, 0x04, 0x07 };
-               static byte[] stateOrProvinceName = { 0x55, 0x04, 0x08 };
-               static byte[] streetAddress = { 0x55, 0x04, 0x09 };
-               //static byte[] serialNumber = { 0x55, 0x04, 0x05 };
-               static byte[] domainComponent = { 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x19 };
-               static byte[] userid = { 0x09, 0x92, 0x26, 0x89, 0x93, 0xF2, 0x2C, 0x64, 0x01, 0x01 };
-               static byte[] email = { 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x01 };
-               static byte[] dnQualifier = { 0x55, 0x04, 0x2E };
-               static byte[] title = { 0x55, 0x04, 0x0C };
-               static byte[] surname = { 0x55, 0x04, 0x04 };
-               static byte[] givenName = { 0x55, 0x04, 0x2A };
-               static byte[] initial = { 0x55, 0x04, 0x2B };
-
-               private X501 () 
-               {
-               }
-
-               static public string ToString (ASN1 seq) 
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       for (int i = 0; i < seq.Count; i++) {
-                               ASN1 entry = seq [i];
-                               AppendEntry (sb, entry, true);
-
-                               // separator (not on last iteration)
-                               if (i < seq.Count - 1)
-                                       sb.Append (", ");
-                       }
-                       return sb.ToString ();
-               }
-
-               static public string ToString (ASN1 seq, bool reversed, string separator, bool quotes)
-               {
-                       StringBuilder sb = new StringBuilder ();
-
-                       if (reversed) {
-                               for (int i = seq.Count - 1; i >= 0; i--) {
-                                       ASN1 entry = seq [i];
-                                       AppendEntry (sb, entry, quotes);
-
-                                       // separator (not on last iteration)
-                                       if (i > 0)
-                                               sb.Append (separator);
-                               }
-                       } else {
-                               for (int i = 0; i < seq.Count; i++) {
-                                       ASN1 entry = seq [i];
-                                       AppendEntry (sb, entry, quotes);
-
-                                       // separator (not on last iteration)
-                                       if (i < seq.Count - 1)
-                                               sb.Append (separator);
-                               }
-                       }
-                       return sb.ToString ();
-               }
-
-               static private void AppendEntry (StringBuilder sb, ASN1 entry, bool quotes)
-               {
-                       // multiple entries are valid
-                       for (int k = 0; k < entry.Count; k++) {
-                               ASN1 pair = entry [k];
-                               ASN1 s = pair [1];
-                               if (s == null)
-                                       continue;
-
-                               ASN1 poid = pair [0];
-                               if (poid == null)
-                                       continue;
-
-                               if (poid.CompareValue (countryName))
-                                       sb.Append ("C=");
-                               else if (poid.CompareValue (organizationName))
-                                       sb.Append ("O=");
-                               else if (poid.CompareValue (organizationalUnitName))
-                                       sb.Append ("OU=");
-                               else if (poid.CompareValue (commonName))
-                                       sb.Append ("CN=");
-                               else if (poid.CompareValue (localityName))
-                                       sb.Append ("L=");
-                               else if (poid.CompareValue (stateOrProvinceName))
-                                       sb.Append ("S=");       // NOTE: RFC2253 uses ST=
-                               else if (poid.CompareValue (streetAddress))
-                                       sb.Append ("STREET=");
-                               else if (poid.CompareValue (domainComponent))
-                                       sb.Append ("DC=");
-                               else if (poid.CompareValue (userid))
-                                       sb.Append ("UID=");
-                               else if (poid.CompareValue (email))
-                                       sb.Append ("E=");       // NOTE: Not part of RFC2253
-                               else if (poid.CompareValue (dnQualifier))
-                                       sb.Append ("dnQualifier=");
-                               else if (poid.CompareValue (title))
-                                       sb.Append ("T=");
-                               else if (poid.CompareValue (surname))
-                                       sb.Append ("SN=");
-                               else if (poid.CompareValue (givenName))
-                                       sb.Append ("G=");
-                               else if (poid.CompareValue (initial))
-                                       sb.Append ("I=");
-                               else {
-                                       // unknown OID
-                                       sb.Append ("OID.");     // NOTE: Not present as RFC2253
-                                       sb.Append (ASN1Convert.ToOid (poid));
-                                       sb.Append ("=");
-                               }
-
-                               string sValue = null;
-                               // 16bits or 8bits string ? TODO not complete (+special chars!)
-                               if (s.Tag == 0x1E) {
-                                       // BMPSTRING
-                                       StringBuilder sb2 = new StringBuilder ();
-                                       for (int j = 1; j < s.Value.Length; j += 2)
-                                               sb2.Append ((char)s.Value[j]);
-                                       sValue = sb2.ToString ();
-                               } else {
-                                       if (s.Tag == 0x14)
-                                               sValue = Encoding.UTF7.GetString (s.Value);
-                                       else
-                                               sValue = Encoding.UTF8.GetString (s.Value);
-                                       // in some cases we must quote (") the value
-                                       // Note: this doesn't seems to conform to RFC2253
-                                       char[] specials = { ',', '+', '"', '\\', '<', '>', ';' };
-                                       if (quotes) {
-                                               if ((sValue.IndexOfAny (specials, 0, sValue.Length) > 0) ||
-                                                   sValue.StartsWith (" ") || (sValue.EndsWith (" ")))
-                                                       sValue = "\"" + sValue + "\"";
-                                       }
-                               }
-
-                               sb.Append (sValue);
-
-                               // separator (not on last iteration)
-                               if (k < entry.Count - 1)
-                                       sb.Append (", ");
-                       }
-               }
-
-               static private X520.AttributeTypeAndValue GetAttributeFromOid (string attributeType) 
-               {
-                       string s = attributeType.ToUpper (CultureInfo.InvariantCulture).Trim ();
-                       switch (s) {
-                               case "C":
-                                       return new X520.CountryName ();
-                               case "O":
-                                       return new X520.OrganizationName ();
-                               case "OU":
-                                       return new X520.OrganizationalUnitName ();
-                               case "CN":
-                                       return new X520.CommonName ();
-                               case "L":
-                                       return new X520.LocalityName ();
-                               case "S":       // Microsoft
-                               case "ST":      // RFC2253
-                                       return new X520.StateOrProvinceName ();
-                               case "E":       // NOTE: Not part of RFC2253
-                                       return new X520.EmailAddress ();
-                               case "DC":      // RFC2247
-                                       return new X520.DomainComponent ();
-                               case "UID":     // RFC1274
-                                       return new X520.UserId ();
-                               case "DNQUALIFIER":
-                                       return new X520.DnQualifier ();
-                               case "T":
-                                       return new X520.Title ();
-                               case "SN":
-                                       return new X520.Surname ();
-                               case "G":
-                                       return new X520.GivenName ();
-                               case "I":
-                                       return new X520.Initial ();
-                               default:
-                                       if (s.StartsWith ("OID.")) {
-                                               // MUST support it but it OID may be without it
-                                               return new X520.Oid (s.Substring (4));
-                                       } else {
-                                               if (IsOid (s))
-                                                       return new X520.Oid (s);
-                                               else
-                                                       return null;
-                                       }
-                       }
-               }
-
-               static private bool IsOid (string oid)
-               {
-                       try {
-                               ASN1 asn = ASN1Convert.FromOid (oid);
-                               return (asn.Tag == 0x06);
-                       }
-                       catch {
-                               return false;
-                       }
-               }
-
-               // no quote processing
-               static private X520.AttributeTypeAndValue ReadAttribute (string value, ref int pos)
-               {
-                       while ((value[pos] == ' ') && (pos < value.Length))
-                               pos++;
-
-                       // get '=' position in substring
-                       int equal = value.IndexOf ('=', pos);
-                       if (equal == -1) {
-                               string msg = Locale.GetText ("No attribute found.");
-                               throw new FormatException (msg);
-                       }
-
-                       string s = value.Substring (pos, equal - pos);
-                       X520.AttributeTypeAndValue atv = GetAttributeFromOid (s);
-                       if (atv == null) {
-                               string msg = Locale.GetText ("Unknown attribute '{0}'.");
-                               throw new FormatException (String.Format (msg, s));
-                       }
-                       pos = equal + 1; // skip the '='
-                       return atv;
-               }
-
-               static private bool IsHex (char c)
-               {
-                       if (Char.IsDigit (c))
-                               return true;
-                       char up = Char.ToUpper (c, CultureInfo.InvariantCulture);
-                       return ((up >= 'A') && (up <= 'F'));
-               }
-
-               static string ReadHex (string value, ref int pos)
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       // it is (at least an) 8 bits char
-                       sb.Append (value[pos++]);
-                       sb.Append (value[pos]);
-                       // look ahead for a 16 bits char
-                       if ((pos < value.Length - 4) && (value[pos+1] == '\\') && IsHex (value[pos+2])) {
-                               pos += 2; // pass last char and skip \
-                               sb.Append (value[pos++]);
-                               sb.Append (value[pos]);
-                       }
-                       byte[] data = CryptoConvert.FromHex (sb.ToString ());
-                       return Encoding.UTF8.GetString (data);
-               }
-
-               static private int ReadEscaped (StringBuilder sb, string value, int pos)
-               {
-                       switch (value[pos]) {
-                       case '\\':
-                       case '"':
-                       case '=':
-                       case ';':
-                       case '<':
-                       case '>':
-                       case '+':
-                       case '#':
-                       case ',':
-                               sb.Append (value[pos]);
-                               return pos;
-                       default:
-                               if (pos >= value.Length - 2) {
-                                       string msg = Locale.GetText ("Malformed escaped value '{0}'.");
-                                       throw new FormatException (string.Format (msg, value.Substring (pos)));
-                               }
-                               // it's either a 8 bits or 16 bits char
-                               sb.Append (ReadHex (value, ref pos));
-                               return pos;
-                       }
-               }
-
-               static private int ReadQuoted (StringBuilder sb, string value, int pos)
-               {
-                       int original = pos;
-                       while (pos <= value.Length) {
-                               switch (value[pos]) {
-                               case '"':
-                                       return pos;
-                               case '\\':
-                                       return ReadEscaped (sb, value, pos);
-                               default:
-                                       sb.Append (value[pos]);
-                                       pos++;
-                                       break;
-                               }
-                       }
-                       string msg = Locale.GetText ("Malformed quoted value '{0}'.");
-                       throw new FormatException (string.Format (msg, value.Substring (original)));
-               }
-
-               static private string ReadValue (string value, ref int pos)
-               {
-                       int original = pos;
-                       StringBuilder sb = new StringBuilder ();
-                       while (pos < value.Length) {
-                               switch (value [pos]) {
-                               case '\\':
-                                       pos = ReadEscaped (sb, value, ++pos);
-                                       break;
-                               case '"':
-                                       pos = ReadQuoted (sb, value, ++pos);
-                                       break;
-                               case '=':
-                               case ';':
-                               case '<':
-                               case '>':
-                                       string msg = Locale.GetText ("Malformed value '{0}' contains '{1}' outside quotes.");
-                                       throw new FormatException (string.Format (msg, value.Substring (original), value[pos]));
-                               case '+':
-                               case '#':
-                                       throw new NotImplementedException ();
-                               case ',':
-                                       pos++;
-                                       return sb.ToString ();
-                               default:
-                                       sb.Append (value[pos]);
-                                       break;
-                               }
-                               pos++;
-                       }
-                       return sb.ToString ();
-               }
-
-               static public ASN1 FromString (string rdn) 
-               {
-                       if (rdn == null)
-                               throw new ArgumentNullException ("rdn");
-
-                       int pos = 0;
-                       ASN1 asn1 = new ASN1 (0x30);
-                       while (pos < rdn.Length) {
-                               X520.AttributeTypeAndValue atv = ReadAttribute (rdn, ref pos);
-                               atv.Value = ReadValue (rdn, ref pos);
-
-                               ASN1 sequence = new ASN1 (0x31);
-                               sequence.Add (atv.GetASN1 ());
-                               asn1.Add (sequence); 
-                       }
-                       return asn1;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509CRL.cs b/mcs/class/corlib/Mono.Security.X509/X509CRL.cs
deleted file mode 100644 (file)
index ca33845..0000000
+++ /dev/null
@@ -1,424 +0,0 @@
-//
-// X509CRL.cs: Handles X.509 certificates revocation lists.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// Copyright (C) 2004,2006 Novell Inc. (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.IO;
-using System.Security.Cryptography;
-
-using Mono.Security.X509.Extensions;
-
-namespace Mono.Security.X509 {
-       /*
-        * CertificateList  ::=  SEQUENCE  {
-        *      tbsCertList          TBSCertList,
-        *      signatureAlgorithm   AlgorithmIdentifier,
-        *      signature            BIT STRING  
-        * }
-        * 
-        * TBSCertList  ::=  SEQUENCE  {
-        *      version                 Version OPTIONAL,
-        *              -- if present, MUST be v2
-        *      signature               AlgorithmIdentifier,
-        *      issuer                  Name,
-        *      thisUpdate              Time,
-        *      nextUpdate              Time OPTIONAL,
-        *      revokedCertificates     SEQUENCE OF SEQUENCE  {
-        *              userCertificate         CertificateSerialNumber,
-        *              revocationDate          Time,
-        *              crlEntryExtensions      Extensions OPTIONAL
-        *                      -- if present, MUST be v2
-        *      }  OPTIONAL,
-        *      crlExtensions           [0] Extensions OPTIONAL }
-        *              -- if present, MUST be v2
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509Crl {
-
-               public class X509CrlEntry {
-
-                       private byte[] sn;
-                       private DateTime revocationDate;
-                       private X509ExtensionCollection extensions;
-
-                       internal X509CrlEntry (byte[] serialNumber, DateTime revocationDate, X509ExtensionCollection extensions) 
-                       {
-                               sn = serialNumber;
-                               this.revocationDate = revocationDate;
-                               if (extensions == null)
-                                       this.extensions = new X509ExtensionCollection ();
-                               else
-                                       this.extensions = extensions;
-                       }
-
-                       internal X509CrlEntry (ASN1 entry) 
-                       {
-                               sn = entry [0].Value;
-                               Array.Reverse (sn);
-                               revocationDate = ASN1Convert.ToDateTime (entry [1]);
-                               extensions = new X509ExtensionCollection (entry [2]);
-                       }
-
-                       public byte[] SerialNumber {
-                               get { return (byte[]) sn.Clone (); }
-                       }
-
-                       public DateTime RevocationDate {
-                               get { return revocationDate; }
-                       }
-
-                       public X509ExtensionCollection Extensions {
-                               get { return extensions; }
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               ASN1 sequence = new ASN1 (0x30);
-                               sequence.Add (new ASN1 (0x02, sn));
-                               sequence.Add (ASN1Convert.FromDateTime (revocationDate));
-                               if (extensions.Count > 0)
-                                       sequence.Add (new ASN1 (extensions.GetBytes ()));
-                               return sequence.GetBytes ();
-                       }
-               }
-
-               private string issuer;
-               private byte version;
-               private DateTime thisUpdate;
-               private DateTime nextUpdate;
-               private ArrayList entries;
-               private string signatureOID;
-               private byte[] signature;
-               private X509ExtensionCollection extensions;
-               private byte[] encoded;
-               private byte[] hash_value;
-
-               public X509Crl (byte[] crl) 
-               {
-                       if (crl == null)
-                               throw new ArgumentNullException ("crl");
-                       encoded = (byte[]) crl.Clone ();
-                       Parse (encoded);
-               }
-
-               private void Parse (byte[] crl) 
-               {
-                       string e = "Input data cannot be coded as a valid CRL.";
-                       try {
-                               // CertificateList  ::=  SEQUENCE  {
-                               ASN1 encodedCRL = new ASN1 (encoded);
-                               if ((encodedCRL.Tag != 0x30) || (encodedCRL.Count != 3))
-                                       throw new CryptographicException (e);
-
-                               // CertificateList / TBSCertList,
-                               ASN1 toBeSigned = encodedCRL [0];
-                               if ((toBeSigned.Tag != 0x30) || (toBeSigned.Count < 3))
-                                       throw new CryptographicException (e);
-
-                               int n = 0;
-                               // CertificateList / TBSCertList / Version OPTIONAL, -- if present, MUST be v2
-                               if (toBeSigned [n].Tag == 0x02) {
-                                       version = (byte) (toBeSigned [n++].Value [0] + 1);
-                               }
-                               else
-                                       version = 1; // DEFAULT
-                               // CertificateList / TBSCertList / AlgorithmIdentifier,
-                               signatureOID = ASN1Convert.ToOid (toBeSigned [n++][0]);
-                               // CertificateList / TBSCertList / Name,
-                               issuer = X501.ToString (toBeSigned [n++]);
-                               // CertificateList / TBSCertList / Time,
-                               thisUpdate = ASN1Convert.ToDateTime (toBeSigned [n++]);
-                               // CertificateList / TBSCertList / Time OPTIONAL,
-                               ASN1 next = toBeSigned [n++];
-                               if ((next.Tag == 0x17) || (next.Tag == 0x18)) {
-                                       nextUpdate = ASN1Convert.ToDateTime (next);
-                                       next = toBeSigned [n++];
-                               }
-                               // CertificateList / TBSCertList / revokedCertificates  SEQUENCE OF SEQUENCE  {
-                               entries = new ArrayList ();
-                               // this is OPTIONAL so it may not be present if no entries exists
-                               if ((next != null) && (next.Tag == 0x30)) {
-                                       ASN1 revokedCertificates = next;
-                                       for (int i=0; i < revokedCertificates.Count; i++) {
-                                               entries.Add (new X509CrlEntry (revokedCertificates [i]));
-                                       }
-                               } else {
-                                       n--;
-                               }
-                               // CertificateList / TBSCertList / crlExtensions [0] Extensions OPTIONAL }
-                               ASN1 extns = toBeSigned [n];
-                               if ((extns != null) && (extns.Tag == 0xA0) && (extns.Count == 1))
-                                       extensions = new X509ExtensionCollection (extns [0]);
-                               else
-                                       extensions = new X509ExtensionCollection (null); // result in a read only object
-                               // CertificateList / AlgorithmIdentifier
-                               string signatureAlgorithm = ASN1Convert.ToOid (encodedCRL [1][0]);
-                               if (signatureOID != signatureAlgorithm)
-                                       throw new CryptographicException (e + " [Non-matching signature algorithms in CRL]");
-
-                               // CertificateList / BIT STRING 
-                               byte[] bitstring = encodedCRL [2].Value;
-                               // first byte contains unused bits in first byte
-                               signature = new byte [bitstring.Length - 1];
-                               Buffer.BlockCopy (bitstring, 1, signature, 0, signature.Length);
-                       }
-                       catch {
-                               throw new CryptographicException (e);
-                       }
-               }
-
-               public ArrayList Entries {
-                       get { return ArrayList.ReadOnly (entries); }
-               }
-
-               public X509CrlEntry this [int index] {
-                       get { return (X509CrlEntry) entries [index]; }
-               }
-
-               public X509CrlEntry this [byte[] serialNumber] {
-                       get { return GetCrlEntry (serialNumber); }
-               }
-
-               public X509ExtensionCollection Extensions {
-                       get { return extensions; }
-               }
-
-               public byte[] Hash {
-                       get {
-                               if (hash_value == null) {
-                                       ASN1 encodedCRL = new ASN1 (encoded);
-                                       byte[] toBeSigned = encodedCRL [0].GetBytes ();
-                                       HashAlgorithm ha = HashAlgorithm.Create (GetHashName ());
-                                       hash_value = ha.ComputeHash (toBeSigned);
-                               }
-                               return hash_value;
-                       }
-               }
-
-               public string IssuerName {
-                       get { return issuer; }
-               }
-
-               public DateTime NextUpdate {
-                       get { return nextUpdate; }
-               }
-
-               public DateTime ThisUpdate {
-                       get { return thisUpdate; }
-               }
-
-               public string SignatureAlgorithm {
-                       get { return signatureOID; }
-               }
-
-               public byte[] Signature {
-                       get { 
-                               if (signature == null)
-                                       return null;
-                               return (byte[]) signature.Clone ();
-                       }
-               }
-
-               public byte[] RawData {
-                       get { return (byte[]) encoded.Clone (); }
-               }
-
-               public byte Version {
-                       get { return version; }
-               }
-
-               public bool IsCurrent {
-                       get { return WasCurrent (DateTime.Now); }
-               }
-
-               public bool WasCurrent (DateTime instant) 
-               {
-                       if (nextUpdate == DateTime.MinValue)
-                               return (instant >= thisUpdate);
-                       else
-                               return ((instant >= thisUpdate) && (instant <= nextUpdate));
-               }
-
-               public byte[] GetBytes () 
-               {
-                       return (byte[]) encoded.Clone ();
-               }
-
-               private bool Compare (byte[] array1, byte[] array2) 
-               {
-                       if ((array1 == null) && (array2 == null))
-                               return true;
-                       if ((array1 == null) || (array2 == null))
-                               return false;
-                       if (array1.Length != array2.Length)
-                               return false;
-                       for (int i=0; i < array1.Length; i++) {
-                               if (array1 [i] != array2 [i])
-                                       return false;
-                       }
-                       return true;
-               }
-
-               public X509CrlEntry GetCrlEntry (X509Certificate x509) 
-               {
-                       if (x509 == null)
-                               throw new ArgumentNullException ("x509");
-
-                       return GetCrlEntry (x509.SerialNumber);
-               }
-
-               public X509CrlEntry GetCrlEntry (byte[] serialNumber) 
-               {
-                       if (serialNumber == null)
-                               throw new ArgumentNullException ("serialNumber");
-
-                       for (int i=0; i < entries.Count; i++) {
-                               X509CrlEntry entry = (X509CrlEntry) entries [i];
-                               if (Compare (serialNumber, entry.SerialNumber))
-                                       return entry;
-                       }
-                       return null;
-               }
-
-               public bool VerifySignature (X509Certificate x509) 
-               {
-                       if (x509 == null)
-                               throw new ArgumentNullException ("x509");
-
-                       // 1. x509 certificate must be a CA certificate (unknown for v1 or v2 certs)
-                       if (x509.Version >= 3) {
-                               // 1.1. Check for "cRLSign" bit in KeyUsage extension
-                               X509Extension ext = x509.Extensions ["2.5.29.15"];
-                               if (ext != null) {
-                                       KeyUsageExtension keyUsage = new KeyUsageExtension (ext);
-                                       if (!keyUsage.Support (KeyUsages.cRLSign))
-                                               return false;
-                               }
-                               // 1.2. Check for ca = true in BasicConstraint
-                               ext = x509.Extensions ["2.5.29.19"];
-                               if (ext != null) {
-                                       BasicConstraintsExtension basicConstraints = new BasicConstraintsExtension (ext);
-                                       if (!basicConstraints.CertificateAuthority)
-                                               return false;
-                               }
-                       }
-                       // 2. CRL issuer must match CA subject name
-                       if (issuer != x509.SubjectName)
-                               return false;
-                       // 3. Check the CRL signature with the CA certificate public key
-                       switch (signatureOID) {
-                               case "1.2.840.10040.4.3":
-                                       return VerifySignature (x509.DSA);
-                               default:
-                                       return VerifySignature (x509.RSA);
-                       }
-               }
-
-               private string GetHashName ()
-               {
-                       switch (signatureOID) {
-                       // MD2 with RSA encryption 
-                       case "1.2.840.113549.1.1.2":
-                               // maybe someone installed MD2 ?
-                               return "MD2";
-                       // MD5 with RSA encryption 
-                       case "1.2.840.113549.1.1.4":
-                               return "MD5";
-                       // SHA-1 with DSA
-                       case "1.2.840.10040.4.3":
-                       // SHA-1 with RSA Encryption 
-                       case "1.2.840.113549.1.1.5":
-                               return "SHA1";
-                       default:
-                               throw new CryptographicException ("Unsupported hash algorithm: " + signatureOID);
-                       }
-               }
-
-               internal bool VerifySignature (DSA dsa) 
-               {
-                       if (signatureOID != "1.2.840.10040.4.3")
-                               throw new CryptographicException ("Unsupported hash algorithm: " + signatureOID);
-                       DSASignatureDeformatter v = new DSASignatureDeformatter (dsa);
-                       // only SHA-1 is supported
-                       v.SetHashAlgorithm ("SHA1");
-                       ASN1 sign = new ASN1 (signature);
-                       if ((sign == null) || (sign.Count != 2))
-                               return false;
-                       // parts may be less than 20 bytes (i.e. first bytes were 0x00)
-                       byte[] part1 = sign [0].Value;
-                       byte[] part2 = sign [1].Value;
-                       byte[] sig = new byte [40];
-                       // parts may be less than 20 bytes (i.e. first bytes were 0x00)
-                       // parts may be more than 20 bytes (i.e. first byte > 0x80, negative)
-                       int s1 = System.Math.Max (0, part1.Length - 20);
-                       int e1 = System.Math.Max (0, 20 - part1.Length);
-                       Buffer.BlockCopy (part1, s1, sig, e1, part1.Length - s1);
-                       int s2 = System.Math.Max (0, part2.Length - 20);
-                       int e2 = System.Math.Max (20, 40 - part2.Length);
-                       Buffer.BlockCopy (part2, s2, sig, e2, part2.Length - s2);
-                       return v.VerifySignature (Hash, sig);
-               }
-
-               internal bool VerifySignature (RSA rsa) 
-               {
-                       RSAPKCS1SignatureDeformatter v = new RSAPKCS1SignatureDeformatter (rsa);
-                       v.SetHashAlgorithm (GetHashName ());
-                       return v.VerifySignature (Hash, signature);
-               }
-
-               public bool VerifySignature (AsymmetricAlgorithm aa) 
-               {
-                       if (aa == null)
-                               throw new ArgumentNullException ("aa");
-
-                       // only validate the signature (in case we don't have the CA certificate)
-                       if (aa is RSA)
-                               return VerifySignature (aa as RSA);
-                       else if (aa is DSA)
-                               return VerifySignature (aa as DSA);
-                       else
-                               throw new NotSupportedException ("Unknown Asymmetric Algorithm " + aa.ToString ());
-               }
-
-               static public X509Crl CreateFromFile (string filename) 
-               {
-                       byte[] crl = null;
-                       using (FileStream fs = File.Open (filename, FileMode.Open, FileAccess.Read, FileShare.Read)) {
-                               crl = new byte [fs.Length];
-                               fs.Read (crl, 0, crl.Length);
-                               fs.Close ();
-                       }
-                       return new X509Crl (crl);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Certificate.cs b/mcs/class/corlib/Mono.Security.X509/X509Certificate.cs
deleted file mode 100644 (file)
index 5131e99..0000000
+++ /dev/null
@@ -1,583 +0,0 @@
-//
-// X509Certificates.cs: Handles X.509 certificates.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Runtime.Serialization;
-using System.Security.Cryptography;
-using SSCX = System.Security.Cryptography.X509Certificates;
-using System.Security.Permissions;
-using System.Text;
-
-using Mono.Security.Cryptography;
-
-namespace Mono.Security.X509 {
-
-       // References:
-       // a.   Internet X.509 Public Key Infrastructure Certificate and CRL Profile
-       //      http://www.ietf.org/rfc/rfc3280.txt
-       // b.   ITU ASN.1 standards (free download)
-       //      http://www.itu.int/ITU-T/studygroups/com17/languages/
-
-#if INSIDE_CORLIB
-       internal class X509Certificate : ISerializable {
-#else
-       public class X509Certificate : ISerializable {
-#endif
-               const string encoding_error = "Input data cannot be coded as a valid certificate.";
-
-               private ASN1 decoder;
-
-               private byte[] m_encodedcert;
-               private DateTime m_from;
-               private DateTime m_until;
-               private ASN1 issuer;
-               private string m_issuername;
-               private string m_keyalgo;
-               private byte[] m_keyalgoparams;
-               private ASN1 subject;
-               private string m_subject;
-               private byte[] m_publickey;
-               private byte[] signature;
-               private string m_signaturealgo;
-               private byte[] m_signaturealgoparams;
-               private byte[] certhash;
-               private RSA _rsa;
-               private DSA _dsa;
-               
-               // from http://www.ietf.org/rfc/rfc2459.txt
-               //
-               //Certificate  ::=  SEQUENCE  {
-               //     tbsCertificate       TBSCertificate,
-               //     signatureAlgorithm   AlgorithmIdentifier,
-               //     signature            BIT STRING  }
-               //
-               //TBSCertificate  ::=  SEQUENCE  {
-               //     version         [0]  Version DEFAULT v1,
-               //     serialNumber         CertificateSerialNumber,
-               //     signature            AlgorithmIdentifier,
-               //     issuer               Name,
-               //     validity             Validity,
-               //     subject              Name,
-               //     subjectPublicKeyInfo SubjectPublicKeyInfo,
-               //     issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
-               //                          -- If present, version shall be v2 or v3
-               //     subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
-               //                          -- If present, version shall be v2 or v3
-               //     extensions      [3]  Extensions OPTIONAL
-               //                          -- If present, version shall be v3 --  }
-               private int version;
-               private byte[] serialnumber;
-
-               private byte[] issuerUniqueID;
-               private byte[] subjectUniqueID;
-               private X509ExtensionCollection extensions;
-
-               // that's were the real job is!
-               private void Parse (byte[] data) 
-               {
-                       try {
-                               decoder = new ASN1 (data);
-                               // Certificate 
-                               if (decoder.Tag != 0x30)
-                                       throw new CryptographicException (encoding_error);
-                               // Certificate / TBSCertificate
-                               if (decoder [0].Tag != 0x30)
-                                       throw new CryptographicException (encoding_error);
-
-                               ASN1 tbsCertificate = decoder [0];
-
-                               int tbs = 0;
-                               // Certificate / TBSCertificate / Version
-                               ASN1 v = decoder [0][tbs];
-                               version = 1;                    // DEFAULT v1
-                               if ((v.Tag == 0xA0) && (v.Count > 0)) {
-                                       // version (optional) is present only in v2+ certs
-                                       version += v [0].Value [0];     // zero based
-                                       tbs++;
-                               }
-
-                               // Certificate / TBSCertificate / CertificateSerialNumber
-                               ASN1 sn = decoder [0][tbs++];
-                               if (sn.Tag != 0x02) 
-                                       throw new CryptographicException (encoding_error);
-                               serialnumber = sn.Value;
-                               Array.Reverse (serialnumber, 0, serialnumber.Length);
-               
-                               // Certificate / TBSCertificate / AlgorithmIdentifier
-                               tbs++;
-                               // ASN1 signatureAlgo = tbsCertificate.Element (tbs++, 0x30); 
-               
-                               issuer = tbsCertificate.Element (tbs++, 0x30); 
-                               m_issuername = X501.ToString (issuer);
-               
-                               ASN1 validity = tbsCertificate.Element (tbs++, 0x30);
-                               ASN1 notBefore = validity [0];
-                               m_from = ASN1Convert.ToDateTime (notBefore);
-                               ASN1 notAfter = validity [1];
-                               m_until = ASN1Convert.ToDateTime (notAfter);
-               
-                               subject = tbsCertificate.Element (tbs++, 0x30);
-                               m_subject = X501.ToString (subject);
-               
-                               ASN1 subjectPublicKeyInfo = tbsCertificate.Element (tbs++, 0x30);
-               
-                               ASN1 algorithm = subjectPublicKeyInfo.Element (0, 0x30);
-                               ASN1 algo = algorithm.Element (0, 0x06);
-                               m_keyalgo = ASN1Convert.ToOid (algo);
-                               // parameters ANY DEFINED BY algorithm OPTIONAL
-                               // so we dont ask for a specific (Element) type and return DER
-                               ASN1 parameters = algorithm [1];
-                               m_keyalgoparams = ((algorithm.Count > 1) ? parameters.GetBytes () : null);
-               
-                               ASN1 subjectPublicKey = subjectPublicKeyInfo.Element (1, 0x03); 
-                               // we must drop th first byte (which is the number of unused bits
-                               // in the BITSTRING)
-                               int n = subjectPublicKey.Length - 1;
-                               m_publickey = new byte [n];
-                               Buffer.BlockCopy (subjectPublicKey.Value, 1, m_publickey, 0, n);
-
-                               // signature processing
-                               byte[] bitstring = decoder [2].Value;
-                               // first byte contains unused bits in first byte
-                               signature = new byte [bitstring.Length - 1];
-                               Buffer.BlockCopy (bitstring, 1, signature, 0, signature.Length);
-
-                               algorithm = decoder [1];
-                               algo = algorithm.Element (0, 0x06);
-                               m_signaturealgo = ASN1Convert.ToOid (algo);
-                               parameters = algorithm [1];
-                               if (parameters != null)
-                                       m_signaturealgoparams = parameters.GetBytes ();
-                               else
-                                       m_signaturealgoparams = null;
-
-                               // Certificate / TBSCertificate / issuerUniqueID
-                               ASN1 issuerUID = tbsCertificate.Element (tbs, 0x81);
-                               if (issuerUID != null) {
-                                       tbs++;
-                                       issuerUniqueID = issuerUID.Value;
-                               }
-
-                               // Certificate / TBSCertificate / subjectUniqueID
-                               ASN1 subjectUID = tbsCertificate.Element (tbs, 0x82);
-                               if (subjectUID != null) {
-                                       tbs++;
-                                       subjectUniqueID = subjectUID.Value;
-                               }
-
-                               // Certificate / TBSCertificate / Extensions
-                               ASN1 extns = tbsCertificate.Element (tbs, 0xA3);
-                               if ((extns != null) && (extns.Count == 1))
-                                       extensions = new X509ExtensionCollection (extns [0]);
-                               else
-                                       extensions = new X509ExtensionCollection (null);
-
-                               // keep a copy of the original data
-                               m_encodedcert = (byte[]) data.Clone ();
-                       }
-                       catch (Exception ex) {
-                               throw new CryptographicException (encoding_error, ex);
-                       }
-               }
-
-               // constructors
-
-               public X509Certificate (byte[] data) 
-               {
-                       if (data != null) {
-                               // does it looks like PEM ?
-                               if ((data.Length > 0) && (data [0] != 0x30)) {
-                                       try {
-                                               data = PEM ("CERTIFICATE", data);
-                                       }
-                                       catch (Exception ex) {
-                                               throw new CryptographicException (encoding_error, ex);
-                                       }
-                               }
-                               Parse (data);
-                       }
-               }
-
-               private byte[] GetUnsignedBigInteger (byte[] integer) 
-               {
-                       if (integer [0] == 0x00) {
-                               // this first byte is added so we're sure it's an unsigned integer
-                               // however we can't feed it into RSAParameters or DSAParameters
-                               int length = integer.Length - 1;
-                               byte[] uinteger = new byte [length];
-                               Buffer.BlockCopy (integer, 1, uinteger, 0, length);
-                               return uinteger;
-                       }
-                       else
-                               return integer;
-               }
-
-               // public methods
-
-               public DSA DSA {
-                       get {
-                               if (m_keyalgoparams == null)
-                                       throw new CryptographicException ("Missing key algorithm parameters.");
-
-                               if (_dsa == null) {
-                                       DSAParameters dsaParams = new DSAParameters ();
-                                       // for DSA m_publickey contains 1 ASN.1 integer - Y
-                                       ASN1 pubkey = new ASN1 (m_publickey);
-                                       if ((pubkey == null) || (pubkey.Tag != 0x02))
-                                               return null;
-                                       dsaParams.Y = GetUnsignedBigInteger (pubkey.Value);
-
-                                       ASN1 param = new ASN1 (m_keyalgoparams);
-                                       if ((param == null) || (param.Tag != 0x30) || (param.Count < 3))
-                                               return null;
-                                       if ((param [0].Tag != 0x02) || (param [1].Tag != 0x02) || (param [2].Tag != 0x02))
-                                               return null;
-                                       dsaParams.P = GetUnsignedBigInteger (param [0].Value);
-                                       dsaParams.Q = GetUnsignedBigInteger (param [1].Value);
-                                       dsaParams.G = GetUnsignedBigInteger (param [2].Value);
-
-                                       // BUG: MS BCL 1.0 can't import a key which 
-                                       // isn't the same size as the one present in
-                                       // the container.
-                                       _dsa = (DSA) new DSACryptoServiceProvider (dsaParams.Y.Length << 3);
-                                       _dsa.ImportParameters (dsaParams);
-                               }
-                               return _dsa; 
-                       }
-
-                       set {
-                               _dsa = value;
-                               if (value != null)
-                                       _rsa = null;
-                       }
-               }
-
-               public X509ExtensionCollection Extensions {
-                       get { return extensions; }
-               }
-
-               public byte[] Hash {
-                       get {
-                               if (certhash == null) {
-                                       HashAlgorithm hash = null;
-                                       switch (m_signaturealgo) {
-                                               case "1.2.840.113549.1.1.2":    // MD2 with RSA encryption 
-                                                       // maybe someone installed MD2 ?
-#if INSIDE_CORLIB
-                                                       hash = HashAlgorithm.Create ("MD2");
-#else
-                                                       hash = Mono.Security.Cryptography.MD2.Create ();
-#endif
-                                                       break;
-                                               case "1.2.840.113549.1.1.4":    // MD5 with RSA encryption 
-                                                       hash = MD5.Create ();
-                                                       break;
-                                               case "1.2.840.113549.1.1.5":    // SHA-1 with RSA Encryption 
-                                               case "1.3.14.3.2.29":           // SHA1 with RSA signature 
-                                               case "1.2.840.10040.4.3":       // SHA1-1 with DSA
-                                                       hash = SHA1.Create ();
-                                                       break;
-                                               default:
-                                                       return null;
-                                       }
-                                       if ((decoder == null) || (decoder.Count < 1))
-                                               return null;
-                                       byte[] toBeSigned = decoder [0].GetBytes ();
-                                       certhash = hash.ComputeHash (toBeSigned, 0, toBeSigned.Length);
-                               }
-                               return (byte[]) certhash.Clone ();
-                       }
-               }
-
-               public virtual string IssuerName {
-                       get { return m_issuername; }
-               }
-
-               public virtual string KeyAlgorithm {
-                       get { return m_keyalgo; }
-               }
-
-               public virtual byte[] KeyAlgorithmParameters {
-                       get {
-                               if (m_keyalgoparams == null)
-                                       return null;
-                               return (byte[]) m_keyalgoparams.Clone (); 
-                       }
-                       set { m_keyalgoparams = value; }
-               }
-
-               public virtual byte[] PublicKey {
-                       get { 
-                               if (m_publickey == null)
-                                       return null;
-                               return (byte[]) m_publickey.Clone ();
-                       }
-               }
-
-               public virtual RSA RSA {
-                       get {
-                               if (_rsa == null) {
-                                       RSAParameters rsaParams = new RSAParameters ();
-                                       // for RSA m_publickey contains 2 ASN.1 integers
-                                       // the modulus and the public exponent
-                                       ASN1 pubkey = new ASN1 (m_publickey);
-                                       ASN1 modulus = pubkey [0];
-                                       if ((modulus == null) || (modulus.Tag != 0x02))
-                                               return null;
-                                       ASN1 exponent = pubkey [1];
-                                       if (exponent.Tag != 0x02)
-                                               return null;
-
-                                       rsaParams.Modulus = GetUnsignedBigInteger (modulus.Value);
-                                       rsaParams.Exponent = exponent.Value;
-
-                                       // BUG: MS BCL 1.0 can't import a key which 
-                                       // isn't the same size as the one present in
-                                       // the container.
-                                       int keySize = (rsaParams.Modulus.Length << 3);
-                                       _rsa = (RSA) new RSACryptoServiceProvider (keySize);
-                                       _rsa.ImportParameters (rsaParams);
-                               }
-                               return _rsa; 
-                       }
-
-                       set {
-                               if (value != null)
-                                       _dsa = null;
-                               _rsa = value;
-                       }
-               }
-               
-               public virtual byte[] RawData {
-                       get {
-                               if (m_encodedcert == null)
-                                       return null;
-                               return (byte[]) m_encodedcert.Clone ();
-                       }
-               }
-
-               public virtual byte[] SerialNumber {
-                       get { 
-                               if (serialnumber == null)
-                                       return null;
-                               return (byte[]) serialnumber.Clone (); 
-                       }
-               }
-
-               public virtual byte[] Signature {
-                       get { 
-                               if (signature == null)
-                                       return null;
-
-                               switch (m_signaturealgo) {
-                                       case "1.2.840.113549.1.1.2":    // MD2 with RSA encryption 
-                                       case "1.2.840.113549.1.1.4":    // MD5 with RSA encryption 
-                                       case "1.2.840.113549.1.1.5":    // SHA-1 with RSA Encryption 
-                                       case "1.3.14.3.2.29":           // SHA1 with RSA signature
-                                               return (byte[]) signature.Clone ();
-
-                                       case "1.2.840.10040.4.3":       // SHA-1 with DSA
-                                               ASN1 sign = new ASN1 (signature);
-                                               if ((sign == null) || (sign.Count != 2))
-                                                       return null;
-                                               byte[] part1 = sign [0].Value;
-                                               byte[] part2 = sign [1].Value;
-                                               byte[] sig = new byte [40];
-                                               // parts may be less than 20 bytes (i.e. first bytes were 0x00)
-                                               // parts may be more than 20 bytes (i.e. first byte > 0x80, negative)
-                                               int s1 = System.Math.Max (0, part1.Length - 20);
-                                               int e1 = System.Math.Max (0, 20 - part1.Length);
-                                               Buffer.BlockCopy (part1, s1, sig, e1, part1.Length - s1);
-                                               int s2 = System.Math.Max (0, part2.Length - 20);
-                                               int e2 = System.Math.Max (20, 40 - part2.Length);
-                                               Buffer.BlockCopy (part2, s2, sig, e2, part2.Length - s2);
-                                               return sig;
-
-                                       default:
-                                               throw new CryptographicException ("Unsupported hash algorithm: " + m_signaturealgo);
-                               }
-                       }
-               }
-
-               public virtual string SignatureAlgorithm {
-                       get { return m_signaturealgo; }
-               }
-
-               public virtual byte[] SignatureAlgorithmParameters {
-                       get { 
-                               if (m_signaturealgoparams == null)
-                                       return m_signaturealgoparams;
-                               return (byte[]) m_signaturealgoparams.Clone ();
-                       }
-               }
-
-               public virtual string SubjectName {
-                       get { return m_subject; }
-               }
-
-               public virtual DateTime ValidFrom {
-                       get { return m_from; }
-               }
-
-               public virtual DateTime ValidUntil {
-                       get { return m_until; }
-               }
-
-               public int Version {
-                       get { return version; }
-               }
-
-               public bool IsCurrent {
-                       get { return WasCurrent (DateTime.UtcNow); }
-               }
-
-               public bool WasCurrent (DateTime instant) 
-               {
-                       return ((instant > ValidFrom) && (instant <= ValidUntil));
-               }
-
-               // uncommon v2 "extension"
-               public byte[] IssuerUniqueIdentifier {
-                       get {
-                               if (issuerUniqueID == null)
-                                       return null;
-                               return (byte[]) issuerUniqueID.Clone ();
-                       }
-               }
-
-               // uncommon v2 "extension"
-               public byte[] SubjectUniqueIdentifier {
-                       get {
-                               if (subjectUniqueID == null)
-                                       return null;
-                               return (byte[]) subjectUniqueID.Clone ();
-                       }
-               }
-
-               internal bool VerifySignature (DSA dsa) 
-               {
-                       // signatureOID is check by both this.Hash and this.Signature
-                       DSASignatureDeformatter v = new DSASignatureDeformatter (dsa);
-                       // only SHA-1 is supported
-                       v.SetHashAlgorithm ("SHA1");
-                       return v.VerifySignature (this.Hash, this.Signature);
-               }
-
-               internal string GetHashNameFromOID (string oid)
-               {
-                       switch (oid) {
-                       // MD2 with RSA encryption 
-                       case "1.2.840.113549.1.1.2":
-                               // maybe someone installed MD2 ?
-                               return "MD2";
-                       // MD5 with RSA encryption 
-                       case "1.2.840.113549.1.1.4":
-                               return "MD5";
-                       // SHA-1 with RSA Encryption 
-                       case "1.2.840.113549.1.1.5":
-                       case "1.3.14.3.2.29":
-                               return "SHA1";
-                       default:
-                               return null;
-                       }
-               }
-
-               internal bool VerifySignature (RSA rsa) 
-               {
-                       RSAPKCS1SignatureDeformatter v = new RSAPKCS1SignatureDeformatter (rsa);
-                       string hashName = GetHashNameFromOID (m_signaturealgo);
-                       if (hashName == null)
-                               throw new CryptographicException ("Unsupported hash algorithm: " + m_signaturealgo);
-
-                       v.SetHashAlgorithm (hashName);
-                       return v.VerifySignature (this.Hash, this.Signature);
-               }
-
-               public bool VerifySignature (AsymmetricAlgorithm aa) 
-               {
-                       if (aa == null)
-                               throw new ArgumentNullException ("aa");
-
-                       if (aa is RSA)
-                               return VerifySignature (aa as RSA);
-                       else if (aa is DSA)
-                               return VerifySignature (aa as DSA);
-                       else 
-                               throw new NotSupportedException ("Unknown Asymmetric Algorithm " + aa.ToString ());
-               }
-
-               public bool CheckSignature (byte[] hash, string hashAlgorithm, byte[] signature) 
-               {
-                       RSACryptoServiceProvider r = (RSACryptoServiceProvider) RSA;
-                       return r.VerifyHash (hash, hashAlgorithm, signature);
-               }
-
-               public bool IsSelfSigned {
-                       get { 
-                               if (m_issuername == m_subject)
-                                       return VerifySignature (RSA); 
-                               else
-                                       return false;
-                       }
-               }
-
-               public ASN1 GetIssuerName ()
-               {
-                       return issuer;
-               }
-
-               public ASN1 GetSubjectName ()
-               {
-                       return subject;
-               }
-
-               protected X509Certificate (SerializationInfo info, StreamingContext context)
-               {
-                       Parse ((byte[]) info.GetValue ("raw", typeof (byte[])));
-               }
-
-               [SecurityPermission (SecurityAction.Demand, SerializationFormatter = true)]
-               public virtual void GetObjectData (SerializationInfo info, StreamingContext context)
-               {
-                       info.AddValue ("raw", m_encodedcert);
-                       // note: we NEVER serialize the private key
-               }
-
-               static byte[] PEM (string type, byte[] data) 
-               {
-                       string pem = Encoding.ASCII.GetString (data);
-                       string header = String.Format ("-----BEGIN {0}-----", type);
-                       string footer = String.Format ("-----END {0}-----", type);
-                       int start = pem.IndexOf (header) + header.Length;
-                       int end = pem.IndexOf (footer, start);
-                       string base64 = pem.Substring (start, (end - start));
-                       return Convert.FromBase64String (base64);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509CertificateCollection.cs b/mcs/class/corlib/Mono.Security.X509/X509CertificateCollection.cs
deleted file mode 100644 (file)
index 1b7b840..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-//
-// Based on System.Security.Cryptography.X509Certificates.X509CertificateCollection
-//     in System assembly
-//
-// Authors:
-//     Lawrence Pit (loz@cable.a2000.nl)
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-namespace Mono.Security.X509 {
-
-       [Serializable]
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509CertificateCollection : CollectionBase, IEnumerable {
-               
-               public X509CertificateCollection () 
-               {
-               }
-               
-               public X509CertificateCollection (X509Certificate [] value) 
-               {
-                       AddRange (value);
-               }
-               
-               public X509CertificateCollection (X509CertificateCollection value)
-               {
-                       AddRange (value);
-               }
-               
-               // Properties
-               
-               public X509Certificate this [int index] {
-                       get { return (X509Certificate) InnerList [index]; }
-                       set { InnerList [index] = value; }
-               }
-               
-               // Methods
-
-               public int Add (X509Certificate value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-                       
-                       return InnerList.Add (value);
-               }
-               
-               public void AddRange (X509Certificate [] value) 
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       for (int i = 0; i < value.Length; i++) 
-                               InnerList.Add (value [i]);
-               }
-               
-               public void AddRange (X509CertificateCollection value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       for (int i = 0; i < value.InnerList.Count; i++) 
-                               InnerList.Add (value [i]);
-               }
-               
-               public bool Contains (X509Certificate value) 
-               {
-                       return (IndexOf (value) != -1);
-               }
-
-               public void CopyTo (X509Certificate[] array, int index)
-               {
-                       InnerList.CopyTo (array, index);
-               }
-               
-               public new X509CertificateEnumerator GetEnumerator ()
-               {
-                       return new X509CertificateEnumerator (this);
-               }
-               
-               IEnumerator IEnumerable.GetEnumerator ()
-               {
-                       return InnerList.GetEnumerator ();
-               }
-               
-               public override int GetHashCode () 
-               {
-                       return InnerList.GetHashCode ();
-               }
-               
-               public int IndexOf (X509Certificate value)
-               {
-                       if (value == null)
-                               throw new ArgumentNullException ("value");
-
-                       byte[] hash = value.Hash;
-                       for (int i=0; i < InnerList.Count; i++) {
-                               X509Certificate x509 = (X509Certificate) InnerList [i];
-                               if (Compare (x509.Hash, hash))
-                                       return i;
-                       }
-                       return -1;
-               }
-               
-               public void Insert (int index, X509Certificate value)
-               {
-                       InnerList.Insert (index, value);
-               }
-               
-               public void Remove (X509Certificate value)
-               {
-                       InnerList.Remove (value);
-               }
-
-               // private stuff
-
-               private bool Compare (byte[] array1, byte[] array2) 
-               {
-                       if ((array1 == null) && (array2 == null))
-                               return true;
-                       if ((array1 == null) || (array2 == null))
-                               return false;
-                       if (array1.Length != array2.Length)
-                               return false;
-                       for (int i=0; i < array1.Length; i++) {
-                               if (array1 [i] != array2 [i])
-                                       return false;
-                       }
-                       return true;
-               }
-
-               // Inner Class
-               
-               public class X509CertificateEnumerator : IEnumerator {
-
-                       private IEnumerator enumerator;
-
-                       // Constructors
-                       
-                       public X509CertificateEnumerator (X509CertificateCollection mappings)
-                       {
-                               enumerator = ((IEnumerable) mappings).GetEnumerator ();
-                       }
-
-                       // Properties
-                       
-                       public X509Certificate Current {
-                               get { return (X509Certificate) enumerator.Current; }
-                       }
-                       
-                       object IEnumerator.Current {
-                               get { return enumerator.Current; }
-                       }
-
-                       // Methods
-                       
-                       bool IEnumerator.MoveNext ()
-                       {
-                               return enumerator.MoveNext ();
-                       }
-                       
-                       void IEnumerator.Reset () 
-                       {
-                               enumerator.Reset ();
-                       }
-                       
-                       public bool MoveNext () 
-                       {
-                               return enumerator.MoveNext ();
-                       }
-                       
-                       public void Reset ()
-                       {
-                               enumerator.Reset ();
-                       }
-               }               
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Chain.cs b/mcs/class/corlib/Mono.Security.X509/X509Chain.cs
deleted file mode 100644 (file)
index 6edd5fe..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-//
-// X509Chain.cs: X.509 Certificate Path
-//     This is a VERY simplified and minimal version
-//     used for
-//             Authenticode support
-//             TLS/SSL support
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Security;
-using System.Security.Permissions;
-
-#if !INSIDE_CORLIB
-using System.Net;
-#endif
-
-using Mono.Security.X509.Extensions;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509Chain {
-
-               private X509CertificateCollection roots;
-               private X509CertificateCollection certs;
-               private X509Certificate _root;
-
-               private X509CertificateCollection _chain;
-               private X509ChainStatusFlags _status;
-
-               // constructors
-
-               public X509Chain ()
-               {
-                       certs = new X509CertificateCollection ();
-               }
-
-               // get a pre-builded chain
-               public X509Chain (X509CertificateCollection chain) : this ()
-               {
-                       _chain = new X509CertificateCollection ();
-                       _chain.AddRange (chain);
-               }
-
-               // properties
-
-               public X509CertificateCollection Chain {
-                       get { return _chain; }
-               }
-
-               // the root of the specified certificate (may not be trusted!)
-               public X509Certificate Root {
-                       get { return _root; }
-               }
-
-               public X509ChainStatusFlags Status {
-                       get { return _status; }
-               }
-
-               public X509CertificateCollection TrustAnchors {
-                       get { 
-                               if (roots == null) {
-                                       roots = new X509CertificateCollection ();
-                                       roots.AddRange (X509StoreManager.TrustedRootCertificates);
-                                       return roots;
-                               }
-                               return roots;
-                       }
-                       [SecurityPermission (SecurityAction.Demand, Flags=SecurityPermissionFlag.ControlPolicy)]
-                       set { roots = value; }
-               }
-
-               // methods
-
-               public void LoadCertificate (X509Certificate x509) 
-               {
-                       certs.Add (x509);
-               }
-
-               public void LoadCertificates (X509CertificateCollection collection) 
-               {
-                       certs.AddRange (collection);
-               }
-
-               public X509Certificate FindByIssuerName (string issuerName) 
-               {
-                       foreach (X509Certificate x in certs) {
-                               if (x.IssuerName == issuerName)
-                                       return x;
-                       }
-                       return null;
-               }
-
-               public bool Build (X509Certificate leaf) 
-               {
-                       _status = X509ChainStatusFlags.NoError;
-                       if (_chain == null) {
-                               // chain not supplied - we must build it ourselve
-                               _chain = new X509CertificateCollection ();
-                               X509Certificate x = leaf;
-                               X509Certificate tmp = x;
-                               while ((x != null) && (!x.IsSelfSigned)) {
-                                       tmp = x; // last valid
-                                       _chain.Add (x);
-                                       x = FindCertificateParent (x);
-                               }
-                               // find a trusted root
-                               _root = FindCertificateRoot (tmp);
-                       }
-                       else {
-                               // chain supplied - still have to check signatures!
-                               int last = _chain.Count;
-                               if (last > 0) {
-                                       if (IsParent (leaf, _chain [0])) {
-                                               int i = 1;
-                                               for (; i < last; i++) {
-                                                       if (!IsParent (_chain [i-1], _chain [i]))
-                                                               break;
-                                               }
-                                               if (i == last)
-                                                       _root = FindCertificateRoot (_chain [last - 1]);
-                                       }
-                               }
-                               else {
-                                       // is the leaf a root ? (trusted or untrusted)
-                                       _root = FindCertificateRoot (leaf);
-                               }
-                       }
-
-                       // validate the chain
-                       if ((_chain != null) && (_status == X509ChainStatusFlags.NoError)) {
-                               foreach (X509Certificate x in _chain) {
-                                       // validate dates for each certificate in the chain
-                                       // note: we DO NOT check for nested date/time
-                                       if (!IsValid (x)) {
-                                               return false;
-                                       }
-                               }
-                               // check leaf
-                               if (!IsValid (leaf)) {
-                                       // switch status code if the failure is expiration
-                                       if (_status == X509ChainStatusFlags.NotTimeNested)
-                                               _status = X509ChainStatusFlags.NotTimeValid;
-                                       return false;
-                               }
-                               // check root
-                               if ((_root != null) && !IsValid (_root)) {
-                                       return false;
-                               }
-                       }
-                       return (_status == X509ChainStatusFlags.NoError);
-               }
-
-               //
-
-               public void Reset () 
-               {
-                       _status = X509ChainStatusFlags.NoError;
-                       roots = null; // this force a reload
-                       certs.Clear ();
-                       if (_chain != null)
-                               _chain.Clear ();
-               }
-
-               // private stuff
-
-               private bool IsValid (X509Certificate cert) 
-               {
-                       if (!cert.IsCurrent) {
-                               // FIXME: nesting isn't very well implemented
-                               _status = X509ChainStatusFlags.NotTimeNested;
-                               return false;
-                       }
-
-                       // TODO - we should check for CRITICAL but unknown extensions
-                       // X509ChainStatusFlags.InvalidExtension
-#if !INSIDE_CORLIB
-                       if (ServicePointManager.CheckCertificateRevocationList) {
-                               // TODO - check revocation (CRL, OCSP ...)
-                               // X509ChainStatusFlags.RevocationStatusUnknown
-                               // X509ChainStatusFlags.Revoked
-                       }
-#endif
-                       return true;
-               }
-
-               private X509Certificate FindCertificateParent (X509Certificate child) 
-               {
-                       foreach (X509Certificate potentialParent in certs) {
-                               if (IsParent (child, potentialParent))
-                                       return potentialParent;
-                       }
-                       return null;
-               }
-
-               private X509Certificate FindCertificateRoot (X509Certificate potentialRoot) 
-               {
-                       if (potentialRoot == null) {
-                               _status = X509ChainStatusFlags.PartialChain;
-                               return null;
-                       }
-
-                       // if the trusted root is in the chain
-                       if (IsTrusted (potentialRoot)) {
-                               return potentialRoot;
-                       }
-
-                       // if the root isn't in the chain
-                       foreach (X509Certificate root in TrustAnchors) {
-                               if (IsParent (potentialRoot, root)) {
-                                       return root;
-                               }
-                       }
-
-                       // is it a (untrusted) root ?
-                       if (potentialRoot.IsSelfSigned) {
-                               _status = X509ChainStatusFlags.UntrustedRoot;
-                               return potentialRoot;
-                       }
-
-                       _status = X509ChainStatusFlags.PartialChain;
-                       return null;
-               }
-
-               private bool IsTrusted (X509Certificate potentialTrusted) 
-               {
-                       return TrustAnchors.Contains (potentialTrusted);
-               }
-
-               private bool IsParent (X509Certificate child, X509Certificate parent) 
-               {
-                       if (child.IssuerName != parent.SubjectName)
-                               return false;
-
-                       // parent MUST have the Basic Constraint CA=true (except for trusted roots)
-                       // see why at http://www.microsoft.com/technet/security/bulletin/MS02-050.asp
-                       if ((parent.Version > 2) && (!IsTrusted (parent))) {
-                               // TODO: we do not support pathLenConstraint
-                               X509Extension ext = parent.Extensions ["2.5.29.19"];
-                               if (ext != null) {
-                                       BasicConstraintsExtension bc = new BasicConstraintsExtension (ext);
-                                       if (!bc.CertificateAuthority)
-                                               _status = X509ChainStatusFlags.InvalidBasicConstraints;
-                               }
-                               else
-                                       _status = X509ChainStatusFlags.InvalidBasicConstraints;
-                       }
-
-                       if (!child.VerifySignature (parent.RSA)) {
-                               _status = X509ChainStatusFlags.NotSignatureValid;
-                               return false;
-                       }
-                       return true;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509ChainStatusFlags.cs b/mcs/class/corlib/Mono.Security.X509/X509ChainStatusFlags.cs
deleted file mode 100644 (file)
index f72660c..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// X509ChainStatusFlags.cs: X.509 Chain Status
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Security.X509 {
-
-       // definitions from Fx 1.2
-       // commented flags aren't implemented in X509Chain
-
-       [Serializable]
-       [Flags]
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       enum X509ChainStatusFlags {
-//             CtlNotSignatureValid = 262144,
-//             CtlNotTimeValid = 131072,
-//             CtlNotValidForUsage = 524288,
-//             Cyclic = 128,
-//             HasExcludedNameConstraint = 32768,
-//             HasNotDefinedNameConstraint = 8192,
-//             HasNotPermittedNameConstraint = 16384,
-//             HasNotSupportedNameConstraint = 4096,
-               InvalidBasicConstraints = 1024,
-//             InvalidExtension = 256,
-//             InvalidNameConstraints = 2048,
-//             InvalidPolicyConstraints = 512,
-               NoError = 0,
-//             NoIssuanceChainPolicy = 33554432,
-               NotSignatureValid = 8,
-               NotTimeNested = 2,
-               NotTimeValid = 1,
-//             NotValidForUsage = 16,
-//             OfflineRevocation = 16777216,
-               PartialChain = 65536,
-//             RevocationStatusUnknown = 64,
-//             Revoked = 4,
-               UntrustedRoot = 32
-       } 
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Extension.cs b/mcs/class/corlib/Mono.Security.X509/X509Extension.cs
deleted file mode 100644 (file)
index 637e74b..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-//
-// X509Extension.cs: Base class for all X.509 extensions.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-
-namespace Mono.Security.X509 {
-       /*
-        * Extension  ::=  SEQUENCE  {
-        *      extnID      OBJECT IDENTIFIER,
-        *      critical    BOOLEAN DEFAULT FALSE,
-        *      extnValue   OCTET STRING  
-        * }
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509Extension {
-
-               protected string extnOid;
-               protected bool extnCritical;
-               protected ASN1 extnValue;
-
-               protected X509Extension () 
-               {
-                       extnCritical = false;
-               }
-
-               public X509Extension (ASN1 asn1) 
-               {
-                       if ((asn1.Tag != 0x30) || (asn1.Count < 2))
-                               throw new ArgumentException (Locale.GetText ("Invalid X.509 extension."));
-                       if (asn1[0].Tag != 0x06)
-                               throw new ArgumentException (Locale.GetText ("Invalid X.509 extension."));
-
-                       extnOid = ASN1Convert.ToOid (asn1[0]);
-                       extnCritical = ((asn1[1].Tag == 0x01) && (asn1[1].Value[0] == 0xFF));
-                       // last element is an octet string which may need to be decoded
-                       extnValue = asn1 [asn1.Count - 1];
-                       if ((extnValue.Tag == 0x04) && (extnValue.Length > 0) && (extnValue.Count == 0)) {
-                               try {
-                                       ASN1 encapsulated = new ASN1 (extnValue.Value);
-                                       extnValue.Value = null;
-                                       extnValue.Add (encapsulated);
-                               }
-                               catch {
-                                       // data isn't ASN.1
-                               }
-                       }
-                       Decode ();
-               }
-
-               public X509Extension (X509Extension extension)
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-                       if ((extension.Value == null) || (extension.Value.Tag != 0x04) || (extension.Value.Count != 1))
-                               throw new ArgumentException (Locale.GetText ("Invalid X.509 extension."));
-
-                       extnOid = extension.Oid;
-                       extnCritical = extension.Critical;
-                       extnValue = extension.Value;
-                       Decode ();
-               }
-
-               // encode the extension *into* an OCTET STRING
-               protected virtual void Decode () 
-               {
-               }
-
-               // decode the extension from *inside* an OCTET STRING
-               protected virtual void Encode ()
-               {
-               }
-
-               public ASN1 ASN1 {
-                       get {
-                               ASN1 extension = new ASN1 (0x30);
-                               extension.Add (ASN1Convert.FromOid (extnOid));
-                               if (extnCritical)
-                                       extension.Add (new ASN1 (0x01, new byte [1] { 0xFF }));
-                               Encode ();
-                               extension.Add (extnValue);
-                               return extension;
-                       }
-               }
-
-               public string Oid {
-                       get { return extnOid; }
-               }
-
-               public bool Critical {
-                       get { return extnCritical; }
-                       set { extnCritical = value; }
-               }
-
-               // this gets overrided with more meaningful names
-               public virtual string Name {
-                       get { return extnOid; }
-               }
-
-               public ASN1 Value {
-                       get {
-                               if (extnValue == null) {
-                                       Encode ();
-                               }
-                               return extnValue;
-                       }
-               }
-
-               public override bool Equals (object obj) 
-               {
-                       if (obj == null)
-                               return false;
-                       
-                       X509Extension ex = (obj as X509Extension);
-                       if (ex == null)
-                               return false;
-
-                       if (extnCritical != ex.extnCritical)
-                               return false;
-                       if (extnOid != ex.extnOid)
-                               return false;
-                       if (extnValue.Length != ex.extnValue.Length)
-                               return false;
-                       
-                        for (int i=0; i < extnValue.Length; i++) {
-                               if (extnValue [i] != ex.extnValue [i])
-                                       return false;
-                       }
-                       return true;
-               }
-
-               public byte[] GetBytes () 
-               {
-                       return ASN1.GetBytes ();
-               }
-
-               public override int GetHashCode () 
-               {
-                       // OID should be unique in a collection of extensions
-                       return extnOid.GetHashCode ();
-               }
-
-               private void WriteLine (StringBuilder sb, int n, int pos) 
-               {
-                       byte[] value = extnValue.Value;
-                       int p = pos;
-                       for (int j=0; j < 8; j++) {
-                               if (j < n) {
-                                       sb.Append (value [p++].ToString ("X2", CultureInfo.InvariantCulture));
-                                       sb.Append (" ");
-                               }
-                               else
-                                       sb.Append ("   ");
-                       }
-                       sb.Append ("  ");
-                       p = pos;
-                       for (int j=0; j < n; j++) {
-                               byte b = value [p++];
-                               if (b < 0x20)
-                                       sb.Append (".");
-                               else
-                                       sb.Append (Convert.ToChar (b));
-                       }
-                       sb.Append (Environment.NewLine);
-               }
-
-               public override string ToString () 
-               {
-                       StringBuilder sb = new StringBuilder ();
-                       int div = (extnValue.Length >> 3);
-                       int rem = (extnValue.Length - (div << 3));
-                       int x = 0;
-                       for (int i=0; i < div; i++) {
-                               WriteLine (sb, 8, x);
-                               x += 8;
-                       }
-                       WriteLine (sb, rem, x);
-                       return sb.ToString ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Extensions.cs b/mcs/class/corlib/Mono.Security.X509/X509Extensions.cs
deleted file mode 100644 (file)
index da2de3c..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-//
-// X509Extensions.cs: Handles X.509 extensions.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-
-using Mono.Security;
-
-namespace Mono.Security.X509 {
-       /*
-        * Extensions  ::=  SEQUENCE SIZE (1..MAX) OF Extension
-        * 
-        * Note: 1..MAX -> There shouldn't be 0 Extensions in the ASN1 structure
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       sealed class X509ExtensionCollection : CollectionBase, IEnumerable {
-
-               private bool readOnly;
-
-               public X509ExtensionCollection () : base ()
-               {
-               }
-
-               public X509ExtensionCollection (ASN1 asn1) : this ()
-               {
-                       readOnly = true;
-                       if (asn1 == null)
-                               return;
-                       if (asn1.Tag != 0x30)
-                               throw new Exception ("Invalid extensions format");
-                       for (int i=0; i < asn1.Count; i++) {
-                               X509Extension extension = new X509Extension (asn1 [i]);
-                               InnerList.Add (extension);
-                       }
-               }
-
-               public int Add (X509Extension extension) 
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-                       if (readOnly)
-                               throw new NotSupportedException ("Extensions are read only");
-               
-                       return InnerList.Add (extension);
-               }
-
-               public void AddRange (X509Extension[] extension) 
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-                       if (readOnly)
-                               throw new NotSupportedException ("Extensions are read only");
-
-                       for (int i = 0; i < extension.Length; i++) 
-                               InnerList.Add (extension [i]);
-               }
-       
-               public void AddRange (X509ExtensionCollection collection) 
-               {
-                       if (collection == null)
-                               throw new ArgumentNullException ("collection");
-                       if (readOnly)
-                               throw new NotSupportedException ("Extensions are read only");
-
-                       for (int i = 0; i < collection.InnerList.Count; i++) 
-                               InnerList.Add (collection [i]);
-               }
-
-               public bool Contains (X509Extension extension) 
-               {
-                       return (IndexOf (extension) != -1);
-               }
-
-               public bool Contains (string oid) 
-               {
-                       return (IndexOf (oid) != -1);
-               }
-
-               public void CopyTo (X509Extension[] extensions, int index) 
-               {
-                       if (extensions == null)
-                               throw new ArgumentNullException ("extensions");
-
-                       InnerList.CopyTo (extensions, index);
-               }
-
-               public int IndexOf (X509Extension extension) 
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-
-                       for (int i=0; i < InnerList.Count; i++) {
-                               X509Extension ex = (X509Extension) InnerList [i];
-                               if (ex.Equals (extension))
-                                       return i;
-                       }
-                       return -1;
-               }
-
-               public int IndexOf (string oid) 
-               {
-                       if (oid == null)
-                               throw new ArgumentNullException ("oid");
-
-                       for (int i=0; i < InnerList.Count; i++) {
-                               X509Extension ex = (X509Extension) InnerList [i];
-                               if (ex.Oid == oid)
-                                       return i;
-                       }
-                       return -1;
-               }
-
-               public void Insert (int index, X509Extension extension) 
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-
-                       InnerList.Insert (index, extension);
-               }
-
-               public void Remove (X509Extension extension) 
-               {
-                       if (extension == null)
-                               throw new ArgumentNullException ("extension");
-
-                       InnerList.Remove (extension);
-               }
-
-               public void Remove (string oid) 
-               {
-                       if (oid == null)
-                               throw new ArgumentNullException ("oid");
-
-                       int index = IndexOf (oid);
-                       if (index != -1)
-                               InnerList.RemoveAt (index);
-               }
-
-               IEnumerator IEnumerable.GetEnumerator () 
-               {
-                       return InnerList.GetEnumerator ();
-               }
-
-               public X509Extension this [int index] {
-                       get { return (X509Extension) InnerList [index]; }
-               }
-
-               public X509Extension this [string oid] {
-                       get {
-                               int index = IndexOf (oid);
-                               if (index == -1)
-                                       return null;
-                               return (X509Extension) InnerList [index];
-                       }
-               }
-
-               public byte[] GetBytes () 
-               {
-                       if (InnerList.Count < 1)
-                               return null;
-                       ASN1 sequence = new ASN1 (0x30);
-                       for (int i=0; i < InnerList.Count; i++) {
-                               X509Extension x = (X509Extension) InnerList [i];
-                               sequence.Add (x.ASN1);
-                       }
-                       return sequence.GetBytes ();
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Store.cs b/mcs/class/corlib/Mono.Security.X509/X509Store.cs
deleted file mode 100644 (file)
index c4bb4b9..0000000
+++ /dev/null
@@ -1,355 +0,0 @@
-//
-// X509Store.cs: Handles a X.509 certificates/CRLs store
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//     Pablo Ruiz <pruiz@netway.org>
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// (C) 2010 Pablo Ruiz.
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.IO;
-using System.Text;
-using System.Security.Cryptography;
-
-using Mono.Security.Cryptography;
-using Mono.Security.X509.Extensions;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509Store {
-
-               private string _storePath;
-               private X509CertificateCollection _certificates;
-               private ArrayList _crls;
-               private bool _crl;
-               private string _name;
-
-               internal X509Store (string path, bool crl) 
-               {
-                       _storePath = path;
-                       _crl = crl;
-               }
-
-               // properties
-
-               public X509CertificateCollection Certificates {
-                       get { 
-                               if (_certificates == null) {
-                                       _certificates = BuildCertificatesCollection (_storePath);
-                               }
-                               return _certificates; 
-                       }
-               }
-
-               public ArrayList Crls {
-                       get {
-                               // CRL aren't applicable to all stores
-                               // but returning null is a little rude
-                               if (!_crl) {
-                                       _crls = new ArrayList ();
-                               }
-                               if (_crls == null) {
-                                       _crls = BuildCrlsCollection (_storePath);
-                               }
-                               return _crls; 
-                       }
-               }
-
-               public string Name {
-                       get {
-                               if (_name == null) {
-                                       int n = _storePath.LastIndexOf (Path.DirectorySeparatorChar);
-                                       _name = _storePath.Substring (n+1);
-                               }
-                               return _name;
-                       }
-               }
-
-               // methods
-
-               public void Clear () 
-               {
-                       if (_certificates != null)
-                               _certificates.Clear ();
-                       _certificates = null;
-                       if (_crls != null)
-                               _crls.Clear ();
-                       _crls = null;
-               }
-
-               public void Import (X509Certificate certificate) 
-               {
-                       CheckStore (_storePath, true);
-
-                       string filename = Path.Combine (_storePath, GetUniqueName (certificate));
-                       if (!File.Exists (filename)) {
-                               using (FileStream fs = File.Create (filename)) {
-                                       byte[] data = certificate.RawData;
-                                       fs.Write (data, 0, data.Length);
-                                       fs.Close ();
-                               }
-                       }
-#if !NET_2_1
-                       // Try to save privateKey if available..
-                       CspParameters cspParams = new CspParameters ();
-                       cspParams.KeyContainerName = CryptoConvert.ToHex (certificate.Hash);
-
-                       // Right now this seems to be the best way to know if we should use LM store.. ;)
-                       if (_storePath.StartsWith (X509StoreManager.LocalMachinePath))
-                               cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
-
-                       ImportPrivateKey (certificate, cspParams);
-#endif
-               }
-
-               public void Import (X509Crl crl) 
-               {
-                       CheckStore (_storePath, true);
-
-                       string filename = Path.Combine (_storePath, GetUniqueName (crl));
-                       if (!File.Exists (filename)) {
-                               using (FileStream fs = File.Create (filename)) {
-                                       byte[] data = crl.RawData;
-                                       fs.Write (data, 0, data.Length);
-                               }
-                       }
-               }
-
-               public void Remove (X509Certificate certificate) 
-               {
-                       string filename = Path.Combine (_storePath, GetUniqueName (certificate));
-                       if (File.Exists (filename)) {
-                               File.Delete (filename);
-                       }
-               }
-
-               public void Remove (X509Crl crl) 
-               {
-                       string filename = Path.Combine (_storePath, GetUniqueName (crl));
-                       if (File.Exists (filename)) {
-                               File.Delete (filename);
-                       }
-               }
-
-               // private stuff
-
-               private string GetUniqueName (X509Certificate certificate) 
-               {
-                       string method;
-                       byte[] name = GetUniqueName (certificate.Extensions);
-                       if (name == null) {
-                               method = "tbp"; // thumbprint
-                               name = certificate.Hash;
-                       } else {
-                               method = "ski";
-                       }
-                       return GetUniqueName (method, name, ".cer");
-               }
-
-               private string GetUniqueName (X509Crl crl) 
-               {
-                       string method;
-                       byte[] name = GetUniqueName (crl.Extensions);
-                       if (name == null) {
-                               method = "tbp"; // thumbprint
-                               name = crl.Hash;
-                       } else {
-                               method = "ski";
-                       }
-                       return GetUniqueName (method, name, ".crl");
-               }
-
-               private byte[] GetUniqueName (X509ExtensionCollection extensions) 
-               {
-                       // We prefer Subject Key Identifier as the unique name
-                       // as it will provide faster lookups
-                       X509Extension ext = extensions ["2.5.29.14"];
-                       if (ext == null)
-                               return null;
-
-                       SubjectKeyIdentifierExtension ski = new SubjectKeyIdentifierExtension (ext);
-                       return ski.Identifier;
-               }
-
-               private string GetUniqueName (string method, byte[] name, string fileExtension) 
-               {
-                       StringBuilder sb = new StringBuilder (method);
-                       
-                       sb.Append ("-");
-                       foreach (byte b in name) {
-                               sb.Append (b.ToString ("X2", CultureInfo.InvariantCulture));
-                       }
-                       sb.Append (fileExtension);
-
-                       return sb.ToString ();
-               }
-
-               private byte[] Load (string filename) 
-               {
-                       byte[] data = null;
-                       using (FileStream fs = File.OpenRead (filename)) {
-                               data = new byte [fs.Length];
-                               fs.Read (data, 0, data.Length);
-                               fs.Close ();
-                       }
-                       return data;
-               }
-
-               private X509Certificate LoadCertificate (string filename) 
-               {
-                       byte[] data = Load (filename);
-                       X509Certificate cert = new X509Certificate (data);
-#if !NET_2_1
-                       // If privateKey it's available, load it too..
-                       CspParameters cspParams = new CspParameters ();
-                       cspParams.KeyContainerName = CryptoConvert.ToHex (cert.Hash);
-                       if (_storePath.StartsWith (X509StoreManager.LocalMachinePath))
-                               cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
-                       KeyPairPersistence kpp = new KeyPairPersistence (cspParams);
-
-                       if (!kpp.Load ())
-                               return cert;
-
-                       if (cert.RSA != null)
-                               cert.RSA = new RSACryptoServiceProvider (cspParams);
-                       else if (cert.DSA != null)
-                               cert.DSA = new DSACryptoServiceProvider (cspParams);
-#endif
-                       return cert;
-               }
-
-               private X509Crl LoadCrl (string filename) 
-               {
-                       byte[] data = Load (filename);
-                       X509Crl crl = new X509Crl (data);
-                       return crl;
-               }
-
-               private bool CheckStore (string path, bool throwException)
-               {
-                       try {
-                               if (Directory.Exists (path))
-                                       return true;
-                               Directory.CreateDirectory (path);
-                               return Directory.Exists (path);
-                       }
-                       catch {
-                               if (throwException)
-                                       throw;
-                               return false;
-                       }
-               }
-
-               private X509CertificateCollection BuildCertificatesCollection (string storeName) 
-               {
-                       X509CertificateCollection coll = new X509CertificateCollection ();
-                       string path = Path.Combine (_storePath, storeName);
-                       if (!CheckStore (path, false))
-                               return coll;    // empty collection
-
-                       string[] files = Directory.GetFiles (path, "*.cer");
-                       if ((files != null) && (files.Length > 0)) {
-                               foreach (string file in files) {
-                                       try {
-                                               X509Certificate cert = LoadCertificate (file);
-                                               coll.Add (cert);
-                                       }
-                                       catch {
-                                               // in case someone is dumb enough
-                                               // (like me) to include a base64
-                                               // encoded certs (or other junk 
-                                               // into the store).
-                                       }
-                               }
-                       }
-                       return coll;
-               }
-
-               private ArrayList BuildCrlsCollection (string storeName) 
-               {
-                       ArrayList list = new ArrayList ();
-                       string path = Path.Combine (_storePath, storeName);
-                       if (!CheckStore (path, false))
-                               return list;    // empty list
-
-                       string[] files = Directory.GetFiles (path, "*.crl");
-                       if ((files != null) && (files.Length > 0)) {
-                               foreach (string file in files) {
-                                       try {
-                                               X509Crl crl = LoadCrl (file);
-                                               list.Add (crl);
-                                       }
-                                       catch {
-                                               // junk catcher
-                                       }
-                               }
-                       }
-                       return list;
-               }
-#if !NET_2_1
-               private void ImportPrivateKey (X509Certificate certificate, CspParameters cspParams)
-               {
-                       RSACryptoServiceProvider rsaCsp = certificate.RSA as RSACryptoServiceProvider;
-                       if (rsaCsp != null) {
-                               if (rsaCsp.PublicOnly)
-                                       return;
-
-                               RSACryptoServiceProvider csp = new RSACryptoServiceProvider(cspParams);
-                               csp.ImportParameters(rsaCsp.ExportParameters(true));
-                               csp.PersistKeyInCsp = true;
-                               return;
-                       }
-
-                       RSAManaged rsaMng = certificate.RSA as RSAManaged;
-                       if (rsaMng != null) {
-                               if (rsaMng.PublicOnly)
-                                       return;
-
-                               RSACryptoServiceProvider csp = new RSACryptoServiceProvider(cspParams);
-                               csp.ImportParameters(rsaMng.ExportParameters(true));
-                               csp.PersistKeyInCsp = true;
-                               return;
-                       }
-
-                       DSACryptoServiceProvider dsaCsp = certificate.DSA as DSACryptoServiceProvider;
-                       if (dsaCsp != null) {
-                               if (dsaCsp.PublicOnly)
-                                       return;
-
-                               DSACryptoServiceProvider csp = new DSACryptoServiceProvider(cspParams);
-                               csp.ImportParameters(dsaCsp.ExportParameters(true));
-                               csp.PersistKeyInCsp = true;
-                       }
-               }
-#endif
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs b/mcs/class/corlib/Mono.Security.X509/X509StoreManager.cs
deleted file mode 100644 (file)
index db73583..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-//
-// X509StoreManager.cs: X.509 store manager.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-
-using Mono.Security.X509.Extensions;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       sealed class X509StoreManager {
-
-               static private string _userPath;
-               static private string _localMachinePath;
-               static private X509Stores _userStore;
-               static private X509Stores _machineStore;
-
-               private X509StoreManager ()
-               {
-               }
-
-               internal static string CurrentUserPath {
-                       get {
-                               if (_userPath == null) {
-                                       _userPath = Path.Combine(
-                                                       Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData),
-                                                       ".mono");
-                                       _userPath = Path.Combine(_userPath, "certs");
-                               }
-                               return _userPath;
-                       }
-               }
-
-               internal static string LocalMachinePath {
-                       get {
-                               if (_localMachinePath == null) {
-                                       _localMachinePath = Path.Combine (
-                                               Environment.GetFolderPath (Environment.SpecialFolder.CommonApplicationData),
-                                               ".mono");
-                                       _localMachinePath = Path.Combine (_localMachinePath, "certs");
-                               }
-                               return _localMachinePath;
-                       }
-               }
-
-               static public X509Stores CurrentUser {
-                       get { 
-                               if (_userStore == null)
-                                       _userStore = new X509Stores(CurrentUserPath);
-                               
-                               return _userStore;
-                       }
-               }
-
-               static public X509Stores LocalMachine {
-                       get {
-                               if (_machineStore == null) 
-                                       _machineStore = new X509Stores (LocalMachinePath);
-
-                               return _machineStore;
-                       }
-               }
-
-               // Merged stores collections
-               // we need to look at both the user and the machine (entreprise)
-               // certificates/CRLs when building/validating a chain
-
-               static public X509CertificateCollection IntermediateCACertificates {
-                       get { 
-                               X509CertificateCollection intermediateCerts = new X509CertificateCollection ();
-                               intermediateCerts.AddRange (CurrentUser.IntermediateCA.Certificates);
-                               intermediateCerts.AddRange (LocalMachine.IntermediateCA.Certificates);
-                               return intermediateCerts; 
-                       }
-               }
-
-               static public ArrayList IntermediateCACrls {
-                       get { 
-                               ArrayList intermediateCRLs = new ArrayList ();
-                               intermediateCRLs.AddRange (CurrentUser.IntermediateCA.Crls);
-                               intermediateCRLs.AddRange (LocalMachine.IntermediateCA.Crls);
-                               return intermediateCRLs; 
-                       }
-               }
-
-               static public X509CertificateCollection TrustedRootCertificates {
-                       get { 
-                               X509CertificateCollection trustedCerts = new X509CertificateCollection ();
-                               trustedCerts.AddRange (CurrentUser.TrustedRoot.Certificates);
-                               trustedCerts.AddRange (LocalMachine.TrustedRoot.Certificates);
-                               return trustedCerts; 
-                       }
-               }
-
-               static public ArrayList TrustedRootCACrls {
-                       get { 
-                               ArrayList trustedCRLs = new ArrayList ();
-                               trustedCRLs.AddRange (CurrentUser.TrustedRoot.Crls);
-                               trustedCRLs.AddRange (LocalMachine.TrustedRoot.Crls);
-                               return trustedCRLs; 
-                       }
-               }
-
-               static public X509CertificateCollection UntrustedCertificates {
-                       get { 
-                               X509CertificateCollection untrustedCerts = new X509CertificateCollection ();
-                               untrustedCerts.AddRange (CurrentUser.Untrusted.Certificates);
-                               untrustedCerts.AddRange (LocalMachine.Untrusted.Certificates);
-                               return untrustedCerts; 
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X509Stores.cs b/mcs/class/corlib/Mono.Security.X509/X509Stores.cs
deleted file mode 100644 (file)
index bfe7451..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-//
-// X509Stores.cs: Handles X.509 certificates/CRLs stores group.
-//
-// Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-
-using Mono.Security.X509.Extensions;
-
-namespace Mono.Security.X509 {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X509Stores {
-
-               private string _storePath;
-               private X509Store _personal;
-               private X509Store _other;
-               private X509Store _intermediate;
-               private X509Store _trusted;
-               private X509Store _untrusted;
-
-               internal X509Stores (string path) 
-               {
-                       _storePath = path;
-               }
-
-               // properties
-
-               public X509Store Personal {
-                       get { 
-                               if (_personal == null) {
-                                       string path = Path.Combine (_storePath, Names.Personal);
-                                       _personal = new X509Store (path, false);
-                               }
-                               return _personal; 
-                       }
-               }
-
-               public X509Store OtherPeople {
-                       get { 
-                               if (_other == null) {
-                                       string path = Path.Combine (_storePath, Names.OtherPeople);
-                                       _other = new X509Store (path, false);
-                               }
-                               return _other; 
-                       }
-               }
-
-               public X509Store IntermediateCA {
-                       get { 
-                               if (_intermediate == null) {
-                                       string path = Path.Combine (_storePath, Names.IntermediateCA);
-                                       _intermediate = new X509Store (path, true);
-                               }
-                               return _intermediate; 
-                       }
-               }
-
-               public X509Store TrustedRoot {
-                       get { 
-                               if (_trusted == null) {
-                                       string path = Path.Combine (_storePath, Names.TrustedRoot);
-                                       _trusted = new X509Store (path, true);
-                               }
-                               return _trusted; 
-                       }
-               }
-
-               public X509Store Untrusted {
-                       get { 
-                               if (_untrusted == null) {
-                                       string path = Path.Combine (_storePath, Names.Untrusted);
-                                       _untrusted = new X509Store (path, false);
-                               }
-                               return _untrusted; 
-                       }
-               }
-
-               // methods
-
-               public void Clear () 
-               {
-                       // this will force a reload of all stores
-                       if (_personal != null)
-                               _personal.Clear ();
-                       _personal = null;
-                       if (_other != null)
-                               _other.Clear ();
-                       _other = null;
-                       if (_intermediate != null)
-                               _intermediate.Clear ();
-                       _intermediate = null;
-                       if (_trusted != null)
-                               _trusted.Clear ();
-                       _trusted = null;
-                       if (_untrusted != null)
-                               _untrusted.Clear ();
-                       _untrusted = null;
-               }
-
-               public X509Store Open (string storeName, bool create)
-               {
-                       if (storeName == null)
-                               throw new ArgumentNullException ("storeName");
-
-                       string path = Path.Combine (_storePath, storeName);
-                       if (!create && !Directory.Exists (path))
-                               return null;
-
-                       return new X509Store (path, true);
-               }
-
-               // names
-
-               public class Names {
-
-                       // do not translate
-                       public const string Personal = "My";
-                       public const string OtherPeople = "AddressBook";
-                       public const string IntermediateCA = "CA";
-                       public const string TrustedRoot = "Trust";
-                       public const string Untrusted = "Disallowed";
-                       
-                       public Names () {}
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security.X509/X520Attributes.cs b/mcs/class/corlib/Mono.Security.X509/X520Attributes.cs
deleted file mode 100644 (file)
index b8506aa..0000000
+++ /dev/null
@@ -1,353 +0,0 @@
-//
-// X520.cs: X.520 related stuff (attributes, RDN)
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Globalization;
-using System.Text;
-
-using Mono.Security;
-
-namespace Mono.Security.X509 {
-
-       // References:
-       // 1.   Information technology - Open Systems Interconnection - The Directory: Selected attribute types 
-       //      http://www.itu.int/rec/recommendation.asp?type=folders&lang=e&parent=T-REC-X.520 
-       // 2.   Internet X.509 Public Key Infrastructure Certificate and CRL Profile
-       //      http://www.ietf.org/rfc/rfc3280.txt
-       // 3.   A Summary of the X.500(96) User Schema for use with LDAPv3
-       //      http://www.faqs.org/rfcs/rfc2256.html
-       // 4.   RFC 2247 - Using Domains in LDAP/X.500 Distinguished Names
-       //      http://www.faqs.org/rfcs/rfc2247.html
-
-       /* 
-        * AttributeTypeAndValue ::= SEQUENCE {
-        *      type     AttributeType,
-        *      value    AttributeValue 
-        * }
-        * 
-        * AttributeType ::= OBJECT IDENTIFIER
-        * 
-        * AttributeValue ::= ANY DEFINED BY AttributeType
-        */
-#if INSIDE_CORLIB
-       internal
-#else
-       public 
-#endif
-       class X520 {
-
-               public abstract class AttributeTypeAndValue {
-                       private string oid;
-                       private string attrValue;
-                       private int upperBound;
-                       private byte encoding;
-
-                       protected AttributeTypeAndValue (string oid, int upperBound)
-                       {
-                               this.oid = oid;
-                               this.upperBound = upperBound;
-                               this.encoding = 0xFF;
-                       }
-
-                       protected AttributeTypeAndValue (string oid, int upperBound, byte encoding) 
-                       {
-                               this.oid = oid;
-                               this.upperBound = upperBound;
-                               this.encoding = encoding;
-                       }
-
-                       public string Value {
-                               get { return attrValue; }
-                               set { 
-                                       if ((attrValue != null) && (attrValue.Length > upperBound)) {
-                                               string msg = Locale.GetText ("Value length bigger than upperbound ({0}).");
-                                               throw new FormatException (String.Format (msg, upperBound));
-                                       }
-                                       attrValue = value; 
-                               }
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1 (); }
-                       }
-
-                       internal ASN1 GetASN1 (byte encoding) 
-                       {
-                               byte encode = encoding;
-                               if (encode == 0xFF)
-                                       encode = SelectBestEncoding ();
-                                       
-                               ASN1 asn1 = new ASN1 (0x30);
-                               asn1.Add (ASN1Convert.FromOid (oid));
-                               switch (encode) {
-                                       case 0x13:
-                                               // PRINTABLESTRING
-                                               asn1.Add (new ASN1 (0x13, Encoding.ASCII.GetBytes (attrValue)));
-                                               break;
-                                       case 0x16:
-                                               // IA5STRING
-                                               asn1.Add (new ASN1 (0x16, Encoding.ASCII.GetBytes (attrValue)));
-                                               break;
-                                       case 0x1E:
-                                               // BMPSTRING
-                                               asn1.Add (new ASN1 (0x1E, Encoding.BigEndianUnicode.GetBytes (attrValue)));
-                                               break;
-                               }
-                               return asn1;
-                       }
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               return GetASN1 (encoding);
-                       }
-
-                       public byte[] GetBytes (byte encoding) 
-                       {
-                               return GetASN1 (encoding) .GetBytes ();
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               return GetASN1 () .GetBytes ();
-                       }
-
-                       private byte SelectBestEncoding ()
-                       {
-                               foreach (char c in attrValue) {
-                                       switch (c) {
-                                       case '@':
-                                       case '_':
-                                               return 0x1E; // BMPSTRING
-                                       default:
-                                               if (c > 127)
-                                                       return 0x1E; // BMPSTRING
-                                               break;
-                                       }
-                               }
-                               return 0x13; // PRINTABLESTRING
-                       }
-               }
-
-               public class Name : AttributeTypeAndValue {
-
-                       public Name () : base ("2.5.4.41", 32768) 
-                       {
-                       }
-               }
-
-               public class CommonName : AttributeTypeAndValue {
-
-                       public CommonName () : base ("2.5.4.3", 64) 
-                       {
-                       }
-               }
-
-               // RFC2256, Section 5.6
-               public class SerialNumber : AttributeTypeAndValue {
-
-                       // max length 64 bytes, Printable String only
-                       public SerialNumber ()
-                               : base ("2.5.4.5", 64, 0x13)
-                       {
-                       }
-               }
-
-               public class LocalityName : AttributeTypeAndValue {
-
-                       public LocalityName () : base ("2.5.4.7", 128)
-                       {
-                       }
-               }
-
-               public class StateOrProvinceName : AttributeTypeAndValue {
-
-                       public StateOrProvinceName () : base ("2.5.4.8", 128) 
-                       {
-                       }
-               }
-                
-               public class OrganizationName : AttributeTypeAndValue {
-
-                       public OrganizationName () : base ("2.5.4.10", 64)
-                       {
-                       }
-               }
-                
-               public class OrganizationalUnitName : AttributeTypeAndValue {
-
-                       public OrganizationalUnitName () : base ("2.5.4.11", 64)
-                       {
-                       }
-               }
-
-               // NOTE: Not part of RFC2253
-               public class EmailAddress : AttributeTypeAndValue {
-
-                       public EmailAddress () : base ("1.2.840.113549.1.9.1", 128, 0x16)
-                       {
-                       }
-               }
-
-               // RFC2247, Section 4
-               public class DomainComponent : AttributeTypeAndValue {
-
-                       // no maximum length defined
-                       public DomainComponent ()
-                               : base ("0.9.2342.19200300.100.1.25", Int32.MaxValue, 0x16)
-                       {
-                       }
-               }
-
-               // RFC1274, Section 9.3.1
-               public class UserId : AttributeTypeAndValue {
-
-                       public UserId ()
-                               : base ("0.9.2342.19200300.100.1.1", 256)
-                       {
-                       }
-               }
-
-               public class Oid : AttributeTypeAndValue {
-
-                       public Oid (string oid)
-                               : base (oid, Int32.MaxValue)
-                       {
-                       }
-               }
-
-               /* -- Naming attributes of type X520Title
-                * id-at-title             AttributeType ::= { id-at 12 }
-                * 
-                * X520Title ::= CHOICE {
-                *       teletexString     TeletexString   (SIZE (1..ub-title)),
-                *       printableString   PrintableString (SIZE (1..ub-title)),
-                *       universalString   UniversalString (SIZE (1..ub-title)),
-                *       utf8String        UTF8String      (SIZE (1..ub-title)),
-                *       bmpString         BMPString       (SIZE (1..ub-title)) 
-                * }
-                */
-               public class Title : AttributeTypeAndValue {
-
-                       public Title () : base ("2.5.4.12", 64)
-                       {
-                       }
-               }
-
-               public class CountryName : AttributeTypeAndValue {
-
-                       // (0x13) PRINTABLESTRING
-                       public CountryName () : base ("2.5.4.6", 2, 0x13) 
-                       {
-                       }
-               }
-
-               public class DnQualifier : AttributeTypeAndValue {
-
-                       // (0x13) PRINTABLESTRING
-                       public DnQualifier () : base ("2.5.4.46", 2, 0x13) 
-                       {
-                       }
-               }
-
-               public class Surname : AttributeTypeAndValue {
-
-                       public Surname () : base ("2.5.4.4", 32768) 
-                       {
-                       }
-               }
-
-               public class GivenName : AttributeTypeAndValue {
-
-                       public GivenName () : base ("2.5.4.42", 16) 
-                       {
-                       }
-               }
-
-               public class Initial : AttributeTypeAndValue {
-
-                       public Initial () : base ("2.5.4.43", 5) 
-                       {
-                       }
-               }
-
-       }
-        
-       /* From RFC3280
-        * --  specifications of Upper Bounds MUST be regarded as mandatory
-        * --  from Annex B of ITU-T X.411 Reference Definition of MTS Parameter
-        * 
-        * --  Upper Bounds
-        * 
-        * ub-name INTEGER ::= 32768
-        * ub-common-name INTEGER ::= 64
-        * ub-locality-name INTEGER ::= 128
-        * ub-state-name INTEGER ::= 128
-        * ub-organization-name INTEGER ::= 64
-        * ub-organizational-unit-name INTEGER ::= 64
-        * ub-title INTEGER ::= 64
-        * ub-serial-number INTEGER ::= 64
-        * ub-match INTEGER ::= 128
-        * ub-emailaddress-length INTEGER ::= 128
-        * ub-common-name-length INTEGER ::= 64
-        * ub-country-name-alpha-length INTEGER ::= 2
-        * ub-country-name-numeric-length INTEGER ::= 3
-        * ub-domain-defined-attributes INTEGER ::= 4
-        * ub-domain-defined-attribute-type-length INTEGER ::= 8
-        * ub-domain-defined-attribute-value-length INTEGER ::= 128
-        * ub-domain-name-length INTEGER ::= 16
-        * ub-extension-attributes INTEGER ::= 256
-        * ub-e163-4-number-length INTEGER ::= 15
-        * ub-e163-4-sub-address-length INTEGER ::= 40
-        * ub-generation-qualifier-length INTEGER ::= 3
-        * ub-given-name-length INTEGER ::= 16
-        * ub-initials-length INTEGER ::= 5
-        * ub-integer-options INTEGER ::= 256
-        * ub-numeric-user-id-length INTEGER ::= 32
-        * ub-organization-name-length INTEGER ::= 64
-        * ub-organizational-unit-name-length INTEGER ::= 32
-        * ub-organizational-units INTEGER ::= 4
-        * ub-pds-name-length INTEGER ::= 16
-        * ub-pds-parameter-length INTEGER ::= 30
-        * ub-pds-physical-address-lines INTEGER ::= 6
-        * ub-postal-code-length INTEGER ::= 16
-        * ub-pseudonym INTEGER ::= 128
-        * ub-surname-length INTEGER ::= 40
-        * ub-terminal-id-length INTEGER ::= 24
-        * ub-unformatted-address-length INTEGER ::= 180
-        * ub-x121-address-length INTEGER ::= 16
-        * 
-        * -- Note - upper bounds on string types, such as TeletexString, are
-        * -- measured in characters.  Excepting PrintableString or IA5String, a
-        * -- significantly greater number of octets will be required to hold
-        * -- such a value.  As a minimum, 16 octets, or twice the specified
-        * -- upper bound, whichever is the larger, should be allowed for
-        * -- TeletexString.  For UTF8String or UniversalString at least four
-        * -- times the upper bound should be allowed.
-        */
-}
diff --git a/mcs/class/corlib/Mono.Security/ASN1.cs b/mcs/class/corlib/Mono.Security/ASN1.cs
deleted file mode 100644 (file)
index 2d65670..0000000
+++ /dev/null
@@ -1,343 +0,0 @@
-//
-// ASN1.cs: Abstract Syntax Notation 1 - micro-parser and generator
-//
-// Authors:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//     Jesper Pedersen  <jep@itplus.dk>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-// (C) 2004 IT+ A/S (http://www.itplus.dk)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.IO;
-using System.Text;
-
-namespace Mono.Security {
-
-       // References:
-       // a.   ITU ASN.1 standards (free download)
-       //      http://www.itu.int/ITU-T/studygroups/com17/languages/
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       class ASN1 {
-
-               private byte m_nTag;
-               private byte[] m_aValue;
-               private ArrayList elist;
-
-               public ASN1 () : this (0x00, null) {}
-
-               public ASN1 (byte tag) : this (tag, null) {}
-
-               public ASN1 (byte tag, byte[] data) 
-               {
-                       m_nTag = tag;
-                       m_aValue = data;
-               }
-
-               public ASN1 (byte[] data) 
-               {
-                       m_nTag = data [0];
-
-                       int nLenLength = 0;
-                       int nLength = data [1];
-
-                       if (nLength > 0x80) {
-                               // composed length
-                               nLenLength = nLength - 0x80;
-                               nLength = 0;
-                               for (int i = 0; i < nLenLength; i++) {
-                                       nLength *= 256;
-                                       nLength += data [i + 2];
-                               }
-                       }
-                       else if (nLength == 0x80) {
-                               // undefined length encoding
-                               throw new NotSupportedException ("Undefined length encoding.");
-                       }
-
-                       m_aValue = new byte [nLength];
-                       Buffer.BlockCopy (data, (2 + nLenLength), m_aValue, 0, nLength);
-
-                       if ((m_nTag & 0x20) == 0x20) {
-                               int nStart = (2 + nLenLength);
-                               Decode (data, ref nStart, data.Length);
-                       }
-               }
-
-               public int Count {
-                       get { 
-                               if (elist == null)
-                                       return 0;
-                               return elist.Count; 
-                       }
-               }
-
-               public byte Tag {
-                       get { return m_nTag; }
-               }
-
-               public int Length {
-                       get { 
-                               if (m_aValue != null)
-                                       return m_aValue.Length; 
-                               else
-                                       return 0;
-                       }
-               }
-
-               public byte[] Value {
-                       get { 
-                               if (m_aValue == null)
-                                       GetBytes ();
-                               return (byte[]) m_aValue.Clone (); 
-                       }
-                       set { 
-                               if (value != null)
-                                       m_aValue = (byte[]) value.Clone (); 
-                       }
-               }
-
-               private bool CompareArray (byte[] array1, byte[] array2)
-               {
-                       bool bResult = (array1.Length == array2.Length);
-                       if (bResult) {
-                               for (int i = 0; i < array1.Length; i++) {
-                                       if (array1[i] != array2[i])
-                                               return false;
-                               }
-                       }
-                       return bResult;
-               }
-
-               public bool Equals (byte[] asn1) 
-               {
-                       return CompareArray (this.GetBytes (), asn1);
-               }
-
-               public bool CompareValue (byte[] value) 
-               {
-                       return CompareArray (m_aValue, value);
-               }
-
-               public ASN1 Add (ASN1 asn1) 
-               {
-                       if (asn1 != null) {
-                               if (elist == null)
-                                       elist = new ArrayList ();
-                               elist.Add (asn1);
-                       }
-                       return asn1;
-               }
-
-               public virtual byte[] GetBytes () 
-               {
-                       byte[] val = null;
-                       
-                       if (Count > 0) {
-                               int esize = 0;
-                               ArrayList al = new ArrayList ();
-                               foreach (ASN1 a in elist) {
-                                       byte[] item = a.GetBytes ();
-                                       al.Add (item);
-                                       esize += item.Length;
-                               }
-                               val = new byte [esize];
-                               int pos = 0;
-                               for (int i=0; i < elist.Count; i++) {
-                                       byte[] item = (byte[]) al[i];
-                                       Buffer.BlockCopy (item, 0, val, pos, item.Length);
-                                       pos += item.Length;
-                               }
-                       } else if (m_aValue != null) {
-                               val = m_aValue;
-                       }
-
-                       byte[] der;
-                       int nLengthLen = 0;
-
-                       if (val != null) {
-                               int nLength = val.Length;
-                               // special for length > 127
-                               if (nLength > 127) {
-                                       if (nLength <= Byte.MaxValue) {
-                                               der = new byte [3 + nLength];
-                                               Buffer.BlockCopy (val, 0, der, 3, nLength);
-                                               nLengthLen = 0x81;
-                                               der[2] = (byte)(nLength);
-                                       }
-                                       else if (nLength <= UInt16.MaxValue) {
-                                               der = new byte [4 + nLength];
-                                               Buffer.BlockCopy (val, 0, der, 4, nLength);
-                                               nLengthLen = 0x82;
-                                               der[2] = (byte)(nLength >> 8);
-                                               der[3] = (byte)(nLength);
-                                       }
-                                       else if (nLength <= 0xFFFFFF) {
-                                               // 24 bits
-                                               der = new byte [5 + nLength];
-                                               Buffer.BlockCopy (val, 0, der, 5, nLength);
-                                               nLengthLen = 0x83;
-                                               der [2] = (byte)(nLength >> 16);
-                                               der [3] = (byte)(nLength >> 8);
-                                               der [4] = (byte)(nLength);
-                                       }
-                                       else {
-                                               // max (Length is an integer) 32 bits
-                                               der = new byte [6 + nLength];
-                                               Buffer.BlockCopy (val, 0, der, 6, nLength);
-                                               nLengthLen = 0x84;
-                                               der [2] = (byte)(nLength >> 24);
-                                               der [3] = (byte)(nLength >> 16);
-                                               der [4] = (byte)(nLength >> 8);
-                                               der [5] = (byte)(nLength);
-                                       }
-                               }
-                               else {
-                                       // basic case (no encoding)
-                                       der = new byte [2 + nLength];
-                                       Buffer.BlockCopy (val, 0, der, 2, nLength);
-                                       nLengthLen = nLength;
-                               }
-                               if (m_aValue == null)
-                                       m_aValue = val;
-                       }
-                       else
-                               der = new byte[2];
-
-                       der[0] = m_nTag;
-                       der[1] = (byte)nLengthLen;
-
-                       return der;
-               }
-
-               // Note: Recursive
-               protected void Decode (byte[] asn1, ref int anPos, int anLength) 
-               {
-                       byte nTag;
-                       int nLength;
-                       byte[] aValue;
-
-                       // minimum is 2 bytes (tag + length of 0)
-                       while (anPos < anLength - 1) {
-                               DecodeTLV (asn1, ref anPos, out nTag, out nLength, out aValue);
-                               // sometimes we get trailing 0
-                               if (nTag == 0)
-                                       continue;
-
-                               ASN1 elm = Add (new ASN1 (nTag, aValue));
-
-                               if ((nTag & 0x20) == 0x20) {
-                                       int nConstructedPos = anPos;
-                                       elm.Decode (asn1, ref nConstructedPos, nConstructedPos + nLength);
-                               }
-                               anPos += nLength; // value length
-                       }
-               }
-
-               // TLV : Tag - Length - Value
-               protected void DecodeTLV (byte[] asn1, ref int pos, out byte tag, out int length, out byte[] content) 
-               {
-                       tag = asn1 [pos++];
-                       length = asn1 [pos++];
-
-                       // special case where L contains the Length of the Length + 0x80
-                       if ((length & 0x80) == 0x80) {
-                               int nLengthLen = length & 0x7F;
-                               length = 0;
-                               for (int i = 0; i < nLengthLen; i++)
-                                       length = length * 256 + asn1 [pos++];
-                       }
-
-                       content = new byte [length];
-                       Buffer.BlockCopy (asn1, pos, content, 0, length);
-               }
-
-               public ASN1 this [int index] {
-                       get {           
-                               try {
-                                       if ((elist == null) || (index >= elist.Count))
-                                               return null;
-                                       return (ASN1) elist [index];
-                               }
-                               catch (ArgumentOutOfRangeException) {
-                                       return null;
-                               }
-                       }
-               }
-
-               public ASN1 Element (int index, byte anTag) 
-               {
-                       try {
-                               if ((elist == null) || (index >= elist.Count))
-                                       return null;
-
-                               ASN1 elm = (ASN1) elist [index];
-                               if (elm.Tag == anTag)
-                                       return elm;
-                               else
-                                       return null;
-                       }
-                       catch (ArgumentOutOfRangeException) {
-                               return null;
-                       }
-               }
-
-               public override string ToString()
-               {
-                       StringBuilder hexLine = new StringBuilder ();
-            
-                       // Add tag
-                       hexLine.AppendFormat ("Tag: {0} {1}", m_nTag.ToString ("X2"), Environment.NewLine);
-
-                       // Add length
-                       hexLine.AppendFormat ("Length: {0} {1}", Value.Length, Environment.NewLine);
-
-                       // Add value
-                       hexLine.Append ("Value: ");
-                       hexLine.Append (Environment.NewLine);
-                       for (int i = 0; i < Value.Length; i++) {
-                               hexLine.AppendFormat ("{0} ", Value [i].ToString ("X2"));
-                               if ((i+1) % 16 == 0)
-                                       hexLine.AppendFormat (Environment.NewLine);
-                       }
-                       return hexLine.ToString ();
-               }
-
-               public void SaveToFile (string filename)
-               {
-                       if (filename == null)
-                               throw new ArgumentNullException ("filename");
-
-                       using (FileStream fs = File.Create (filename)) {
-                               byte[] data = GetBytes ();
-                               fs.Write (data, 0, data.Length);
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security/ASN1Convert.cs b/mcs/class/corlib/Mono.Security/ASN1Convert.cs
deleted file mode 100644 (file)
index 3a1cf93..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-//
-// ASN1Convert.cs: Abstract Syntax Notation 1 convertion routines
-//
-// Authors:
-//     Sebastien Pouliot  <sebastien@ximian.com>
-//     Jesper Pedersen  <jep@itplus.dk>
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// (C) 2004 IT+ A/S (http://www.itplus.dk)
-// Copyright (C) 2004-2007 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Globalization;
-using System.Security.Cryptography;
-using System.Text;
-
-namespace Mono.Security {
-
-       // References:
-       // a.   ITU ASN.1 standards (free download)
-       //      http://www.itu.int/ITU-T/studygroups/com17/languages/
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       static class ASN1Convert {
-               // RFC3280, section 4.2.1.5
-               // CAs conforming to this profile MUST always encode certificate
-               // validity dates through the year 2049 as UTCTime; certificate validity
-               // dates in 2050 or later MUST be encoded as GeneralizedTime.
-
-               // Under 1.x this API requires a Local datetime to be provided
-               // Under 2.0 it will also accept a Utc datetime
-               static public ASN1 FromDateTime (DateTime dt) 
-               {
-                       if (dt.Year < 2050) {
-                               // UTCTIME
-                               return new ASN1 (0x17, Encoding.ASCII.GetBytes (
-                                       dt.ToUniversalTime ().ToString ("yyMMddHHmmss",
-                                       CultureInfo.InvariantCulture) + "Z"));
-                       }
-                       else {
-                               // GENERALIZEDTIME
-                               return new ASN1 (0x18, Encoding.ASCII.GetBytes (
-                                       dt.ToUniversalTime ().ToString ("yyyyMMddHHmmss", 
-                                       CultureInfo.InvariantCulture) + "Z"));
-                       }
-               }
-
-               static public ASN1 FromInt32 (Int32 value) 
-               {
-                       byte[] integer = BitConverterLE.GetBytes (value);
-                       Array.Reverse (integer);
-                       int x = 0;
-                       while ((x < integer.Length) && (integer [x] == 0x00))
-                               x++;
-                       ASN1 asn1 = new ASN1 (0x02);
-                       switch (x) {
-                       case 0:
-                               asn1.Value = integer;
-                               break;
-                       case 4:
-                               asn1.Value = new byte [1];
-                               break;
-                       default:
-                               byte[] smallerInt = new byte [4 - x];
-                               Buffer.BlockCopy (integer, x, smallerInt, 0, smallerInt.Length);
-                               asn1.Value = smallerInt;
-                               break;
-                       }
-                       return asn1;
-               }
-
-               static public ASN1 FromOid (string oid) 
-               {
-                       if (oid == null)
-                               throw new ArgumentNullException ("oid");
-
-                       return new ASN1 (CryptoConfig.EncodeOID (oid));
-               }
-
-               static public ASN1 FromUnsignedBigInteger (byte[] big) 
-               {
-                       if (big == null)
-                               throw new ArgumentNullException ("big");
-
-                       // check for numbers that could be interpreted as negative (first bit)
-                       if (big [0] >= 0x80) {
-                               // in thie cas we add a new, empty, byte (position 0) so we're
-                               // sure this will always be interpreted an unsigned integer.
-                               // However we can't feed it into RSAParameters or DSAParameters
-                               int length = big.Length + 1;
-                               byte[] uinteger = new byte [length];
-                               Buffer.BlockCopy (big, 0, uinteger, 1, length - 1);
-                               big = uinteger;
-                       }
-                       return new ASN1 (0x02, big);
-               }
-
-               static public int ToInt32 (ASN1 asn1) 
-               {
-                       if (asn1 == null)
-                               throw new ArgumentNullException ("asn1");
-                       if (asn1.Tag != 0x02)
-                               throw new FormatException ("Only integer can be converted");
-
-                       int x = 0;
-                       for (int i=0; i < asn1.Value.Length; i++)
-                               x = (x << 8) + asn1.Value [i];
-                       return x;
-               }
-
-               // Convert a binary encoded OID to human readable string representation of 
-               // an OID (IETF style). Based on DUMPASN1.C from Peter Gutmann.
-               static public string ToOid (ASN1 asn1) 
-               {
-                       if (asn1 == null)
-                               throw new ArgumentNullException ("asn1");
-
-                       byte[] aOID = asn1.Value;
-                       StringBuilder sb = new StringBuilder ();
-                       // Pick apart the OID
-                       byte x = (byte) (aOID[0] / 40);
-                       byte y = (byte) (aOID[0] % 40);
-                       if (x > 2) {
-                               // Handle special case for large y if x = 2
-                               y += (byte) ((x - 2) * 40);
-                               x = 2;
-                       }
-                       sb.Append (x.ToString (CultureInfo.InvariantCulture));
-                       sb.Append (".");
-                       sb.Append (y.ToString (CultureInfo.InvariantCulture));
-                       ulong val = 0;
-                       for (x = 1; x < aOID.Length; x++) {
-                               val = ((val << 7) | ((byte) (aOID [x] & 0x7F)));
-                               if ( !((aOID [x] & 0x80) == 0x80)) {
-                                       sb.Append (".");
-                                       sb.Append (val.ToString (CultureInfo.InvariantCulture));
-                                       val = 0;
-                               }
-                       }
-                       return sb.ToString ();
-               }
-
-               static public DateTime ToDateTime (ASN1 time) 
-               {
-                       if (time == null)
-                               throw new ArgumentNullException ("time");
-
-                       string t = Encoding.ASCII.GetString (time.Value);
-                       // to support both UTCTime and GeneralizedTime (and not so common format)
-                       string mask = null;
-                       int year;
-                       switch (t.Length) {
-                               case 11:
-                                       // illegal format, still it's supported for compatibility
-                                       mask = "yyMMddHHmmZ";
-                                       break;
-                               case 13: 
-                                       // RFC3280: 4.1.2.5.1  UTCTime
-                                       year = Convert.ToInt16 (t.Substring (0, 2), CultureInfo.InvariantCulture);
-                                       // Where YY is greater than or equal to 50, the 
-                                       // year SHALL be interpreted as 19YY; and 
-                                       // Where YY is less than 50, the year SHALL be 
-                                       // interpreted as 20YY.
-                                       if (year >= 50)
-                                               t = "19" + t;
-                                       else
-                                               t = "20" + t;
-                                       mask = "yyyyMMddHHmmssZ";
-                                       break;
-                               case 15:
-                                       mask = "yyyyMMddHHmmssZ"; // GeneralizedTime
-                                       break;
-                               case 17:
-                                       // another illegal format (990630000000+1000), again supported for compatibility
-                                       year = Convert.ToInt16 (t.Substring (0, 2), CultureInfo.InvariantCulture);
-                                       string century = (year >= 50) ? "19" : "20";
-                                       // ASN.1 (see ITU X.680 section 43.3) deals with offset differently than .NET
-                                       char sign = (t[12] == '+') ? '-' : '+';
-                                       t = String.Format ("{0}{1}{2}{3}{4}:{5}{6}", century, t.Substring (0, 12), sign, 
-                                               t[13], t[14], t[15], t[16]);
-                                       mask = "yyyyMMddHHmmsszzz";
-                                       break;
-                       }
-                       return DateTime.ParseExact (t, mask, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security/BitConverterLE.cs b/mcs/class/corlib/Mono.Security/BitConverterLE.cs
deleted file mode 100644 (file)
index ad3b505..0000000
+++ /dev/null
@@ -1,241 +0,0 @@
-//
-// Mono.Security.BitConverterLE.cs
-//  Like System.BitConverter but always little endian
-//
-// Author:
-//   Bernie Solomon
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-
-namespace Mono.Security
-{
-       internal sealed class BitConverterLE
-       {
-               private BitConverterLE ()
-               {
-               }
-
-               unsafe private static byte[] GetUShortBytes (byte *bytes)
-               {
-                       if (BitConverter.IsLittleEndian)
-                               return new byte [] { bytes [0], bytes [1] };
-                       else
-                               return new byte [] { bytes [1], bytes [0] };
-               }
-
-               unsafe private static byte[] GetUIntBytes (byte *bytes)
-               {
-                       if (BitConverter.IsLittleEndian)
-                               return new byte [] { bytes [0], bytes [1], bytes [2], bytes [3] };
-                       else
-                               return new byte [] { bytes [3], bytes [2], bytes [1], bytes [0] };
-               }
-
-               unsafe private static byte[] GetULongBytes (byte *bytes)
-               {
-                       if (BitConverter.IsLittleEndian)
-                               return new byte [] { bytes [0], bytes [1], bytes [2], bytes [3],
-                                                    bytes [4], bytes [5], bytes [6], bytes [7] };
-                       else
-                               return new byte [] { bytes [7], bytes [6], bytes [5], bytes [4],
-                                                    bytes [3], bytes [2], bytes [1], bytes [0] };
-               }
-
-               unsafe internal static byte[] GetBytes (bool value)
-               {
-                       return new byte [] { value ? (byte)1 : (byte)0 };
-               }
-
-               unsafe internal static byte[] GetBytes (char value)
-               {
-                       return GetUShortBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (short value)
-               {
-                       return GetUShortBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (int value)
-               {
-                       return GetUIntBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (long value)
-               {
-                       return GetULongBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (ushort value)
-               {
-                       return GetUShortBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (uint value)
-               {
-                       return GetUIntBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (ulong value)
-               {
-                       return GetULongBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (float value)
-               {
-                       return GetUIntBytes ((byte *) &value);
-               }
-
-               unsafe internal static byte[] GetBytes (double value)
-               {
-                       return GetULongBytes ((byte *) &value);
-               }
-
-               unsafe private static void UShortFromBytes (byte *dst, byte[] src, int startIndex)
-               {
-                       if (BitConverter.IsLittleEndian) {
-                               dst [0] = src [startIndex];
-                               dst [1] = src [startIndex + 1];
-                       } else {
-                               dst [0] = src [startIndex + 1];
-                               dst [1] = src [startIndex];
-                       }
-               }
-
-               unsafe private static void UIntFromBytes (byte *dst, byte[] src, int startIndex)
-               {
-                       if (BitConverter.IsLittleEndian) {
-                               dst [0] = src [startIndex];
-                               dst [1] = src [startIndex + 1];
-                               dst [2] = src [startIndex + 2];
-                               dst [3] = src [startIndex + 3];
-                       } else {
-                               dst [0] = src [startIndex + 3];
-                               dst [1] = src [startIndex + 2];
-                               dst [2] = src [startIndex + 1];
-                               dst [3] = src [startIndex];
-                       }
-               }
-
-               unsafe private static void ULongFromBytes (byte *dst, byte[] src, int startIndex)
-               {
-                       if (BitConverter.IsLittleEndian) {
-                               for (int i = 0; i < 8; ++i)
-                                       dst [i] = src [startIndex + i];
-                       } else {
-                               for (int i = 0; i < 8; ++i)
-                                       dst [i] = src [startIndex + (7 - i)];
-                       }
-               }
-
-               unsafe internal static bool ToBoolean (byte[] value, int startIndex)
-               {
-                       return value [startIndex] != 0;
-               }
-
-               unsafe internal static char ToChar (byte[] value, int startIndex)
-               {
-                       char ret;
-
-                       UShortFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static short ToInt16 (byte[] value, int startIndex)
-               {
-                       short ret;
-
-                       UShortFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static int ToInt32 (byte[] value, int startIndex)
-               {
-                       int ret;
-
-                       UIntFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static long ToInt64 (byte[] value, int startIndex)
-               {
-                       long ret;
-
-                       ULongFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static ushort ToUInt16 (byte[] value, int startIndex)
-               {
-                       ushort ret;
-
-                       UShortFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static uint ToUInt32 (byte[] value, int startIndex)
-               {
-                       uint ret;
-
-                       UIntFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static ulong ToUInt64 (byte[] value, int startIndex)
-               {
-                       ulong ret;
-
-                       ULongFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static float ToSingle (byte[] value, int startIndex)
-               {
-                       float ret;
-
-                       UIntFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-
-               unsafe internal static double ToDouble (byte[] value, int startIndex)
-               {
-                       double ret;
-
-                       ULongFromBytes ((byte *) &ret, value, startIndex);
-
-                       return ret;
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security/ChangeLog b/mcs/class/corlib/Mono.Security/ChangeLog
deleted file mode 100644 (file)
index 97d44bd..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-2010-05-10  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Keep it public for Moonlight. Other types in other 
-       assemblies needs it and the linker will eventually internalize
-       everything.
-
-2010-03-24  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: Specify CultureInfo.InvariantCulture (instead of 
-       null) to avoid crash on Windows. Patch by Yoni Shalom.
-
-2010-03-16  Jb Evain  <jbevain@novell.com>
-
-       * StrongName.cs: use MOONLIGHT symbol to disambiguate
-       MonoTouch and Moonlight code.
-
-2009-09-22  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * StrongName.cs: Moonlight NET_2_1 cannot depend on machine.config
-       * StrongNameManager_2_1.cs: Minimal version for NET_2_1
-
-2009-04-30  Sebastien Pouliot  <sebastien@ximian.com> 
-
-       * StrongName.cs: Adapt to work with only RSAManaged when built 
-       for NET_2_1, i.e. remove use of RSACryptoServiceProvider
-
-2008-09-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Use File.Create instead of OpenWrite to make sure nothing
-       else if left at the end of the file.
-
-2008-04-25  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: New test cases to verify signatures from streams.
-       Patch from Dave Hillier <daveh@lindenlab.com>
-
-2008-03-10  Stephane Delcroix  <sdelcroix@novell.com>
-
-       * Uri.cs: port the changes I did in System.Uri in r97844.
-
-2007-03-11  Zoltan Varga  <vargaz@gmail.com>
-
-       * ASN1Convert.cs: Fix a warning.
-
-2007-02-12  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: Add support for decoding ASN.1 dates with an UTC 
-       offset (e.g. 990630000000+1000) as some certificates use this format.
-
-2007-01-05  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: Added comment to FromDateTime to specify that, under
-       1.x, the DateTime must be a local (not UTC) date time. Fixed ToDateTime
-       to return a DateTimeKind.Utc DateTime under 2.0.
-
-2006-08-17  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Fix the (very unlikely) case where an MD5 public key
-       token is requested (part of the spec, never seen in the wild).
-
-2006-06-14  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Switch condition not to use the cached data if there is a
-       collection being used. Skip extra 0 at the end of the byte[] buffer.
-
-2006-01-04  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: Fix convertion of integer 0 to ASN.1.
-
-2005-11-07  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Synch with Mono.Security.dll to get support for 
-       strongname keypairs different from 1024 bits.
-
-2005-10-06  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: Better handle big integer than cannot be interpreted
-       as a negative number (don't extend). Fix bug #75778.
-
-2004-12-15  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Fixed warning for unused variable.
-
-2004-10-29  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Throw an NotSupportedException when "undefined length 
-       encoding" is used (#68903 but it's not a fix ;-). Fixed GetBytes to
-       encode structures bigger than 64k (fix #68907). Simplified ToString
-       and added Length to help debugging.
-       * PKCS7.cs: Added a flag to avoid resigning a structure (which was
-       duplicating some attributes).
-
-2004-09-16  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Fixed warning (l4) for unused variable.
-       * PKCS7.cs: Fixed warning (l4) for unused variable.
-       * Uri.cs: Fixed warning (l4) for unused variables. Remove sealed from
-       class to reduce number of warnings.
-
-2004-08-30  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * Uri.cs: Copied from System.dll assembly and started adaptation for
-       it's reuse inside the security classes (CAS).
-
-2004-06-08  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Added corlib specific code to load configuration
-       from machine.config to allow public key token remapping to work
-       with (for example) gacutil.
-       * StrongNameManager.cs: Now load configuration from machine.config.
-
-2004-05-19  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * PKCS7.cs: In sync with Mono.Security.dll version.
-
-2004-05-18  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1Convert.cs: In sync with Mono.Security.dll version.
-       * StrongName.cs: In sync with Mono.Security.dll version.
-
-2004-05-03  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Fixed NullReferenceException in xmldsig standalone tests.
-
-2004-04-28  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: In sync with Mono.Security.dll version.
-       * ASN1Convert.cs: In sync with Mono.Security.dll version.
-       * PKCS7.cs: In sync with Mono.Security.dll version.
-       * StrongName.cs: In sync with Mono.Security.dll version.
-
-2004-04-20  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Added SaveToFile for easier debugging. Patch from
-       Jesper Pedersen.
-       * StrongName.cs: Removed compilation warning (unused variable).
-
-2004-04-08  Bernie Solomon  <bernard@ugsolutions.com>
-
-       * BitConverterLE.cs: added which always does
-       little endian conversion
-       * StrongName.cs: Use BitConverterLE
-       * ASN1Convert.cs: Use BitConverterLE
-
-2004-04-06  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Added support for ECMA "key" to StringName(byte[])
-       constructor.
-
-2004-03-31  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Update to include new static method that can be 
-       called from the runtime to validate strongname signatures. 
-       Refactored the existing class to reduce code duplication.
-       * StrongNameManager.cs: New. This class keeps the configuration
-       required to map a public key token to an alternative public key
-       (e.g. ECMA public key token -> Mono public key) and to skip
-       strongname validation for specific assemblies/token/users.
-
-2004-03-24  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Added CanSign property for AssemblyBuilder. Current
-       Fx design requires an exception to know if the private key is present
-       in an RSA instance. In some case (inside corlib) we can do without...
-
-2004-03-23  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * StrongName.cs: Added exceptions for null or invalid keys.
-
-2004-03-17  Sebastien Pouliot  <sebastien@ximian.com>
-
-       * ASN1.cs: Class synched with Mono.Security.
-       * ASN1Convert.cs: Class synched with Mono.Security.
-
-2003-10-18  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * StrongName.cs: Added from Mono.Security assembly for StrongName
-       support in AssemblyBuilder.
-
-2003-10-12  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * PKCS7.cs: Added from Mono.Security assembly for Authenticode
-       support in X509Certificate.CreateFromSignedFile
-
-2003-03-15  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * ASN1.cs: Improved version.
-       * ASN1Convert.cs: New. Helper class to convert between .NET 
-       types and ASN.1 structures.
-
-2003-02-08  Sebastien Pouliot  <spouliot@videotron.ca>
-
-       * ASN1.cs: Renamed namespace to match new location.
-
diff --git a/mcs/class/corlib/Mono.Security/PKCS7.cs b/mcs/class/corlib/Mono.Security/PKCS7.cs
deleted file mode 100644 (file)
index 3cdbb6f..0000000
+++ /dev/null
@@ -1,976 +0,0 @@
-//
-// PKCS7.cs: PKCS #7 - Cryptographic Message Syntax Standard 
-//     http://www.rsasecurity.com/rsalabs/pkcs/pkcs-7/index.html
-//
-// Author:
-//     Sebastien Pouliot <sebastien@ximian.com>
-//
-// (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Collections;
-using System.Security.Cryptography;
-
-using Mono.Security.X509;
-
-namespace Mono.Security {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       sealed class PKCS7 {
-
-               public class Oid {
-                       // pkcs 1
-                       public const string rsaEncryption = "1.2.840.113549.1.1.1";
-                       // pkcs 7
-                       public const string data = "1.2.840.113549.1.7.1";
-                       public const string signedData = "1.2.840.113549.1.7.2";
-                       public const string envelopedData = "1.2.840.113549.1.7.3";
-                       public const string signedAndEnvelopedData = "1.2.840.113549.1.7.4";
-                       public const string digestedData = "1.2.840.113549.1.7.5";
-                       public const string encryptedData = "1.2.840.113549.1.7.6";
-                       // pkcs 9
-                       public const string contentType = "1.2.840.113549.1.9.3";
-                       public const string messageDigest  = "1.2.840.113549.1.9.4";
-                       public const string signingTime = "1.2.840.113549.1.9.5";
-                       public const string countersignature = "1.2.840.113549.1.9.6";
-
-                       public Oid () 
-                       {
-                       }
-               }
-
-               private PKCS7 ()
-               {
-               }
-
-               static public ASN1 Attribute (string oid, ASN1 value) 
-               {
-                       ASN1 attr = new ASN1 (0x30);
-                       attr.Add (ASN1Convert.FromOid (oid));
-                       ASN1 aset = attr.Add (new ASN1 (0x31));
-                       aset.Add (value);
-                       return attr;
-               }
-
-               static public ASN1 AlgorithmIdentifier (string oid)
-               {
-                       ASN1 ai = new ASN1 (0x30);
-                       ai.Add (ASN1Convert.FromOid (oid));
-                       ai.Add (new ASN1 (0x05));       // NULL
-                       return ai;
-               }
-
-               static public ASN1 AlgorithmIdentifier (string oid, ASN1 parameters) 
-               {
-                       ASN1 ai = new ASN1 (0x30);
-                       ai.Add (ASN1Convert.FromOid (oid));
-                       ai.Add (parameters);
-                       return ai;
-               }
-
-               /*
-                * IssuerAndSerialNumber ::= SEQUENCE {
-                *      issuer Name,
-                *      serialNumber CertificateSerialNumber 
-                * }
-                */
-               static public ASN1 IssuerAndSerialNumber (X509Certificate x509) 
-               {
-                       ASN1 issuer = null;
-                       ASN1 serial = null;
-                       ASN1 cert = new ASN1 (x509.RawData);
-                       int tbs = 0;
-                       bool flag = false;
-                       while (tbs < cert[0].Count) {
-                               ASN1 e = cert[0][tbs++];
-                               if (e.Tag == 0x02)
-                                       serial = e;
-                               else if (e.Tag == 0x30) {
-                                       if (flag) {
-                                               issuer = e;
-                                               break;
-                                       }
-                                       flag = true;
-                               }
-                       }
-                       ASN1 iasn = new ASN1 (0x30);
-                       iasn.Add (issuer);
-                       iasn.Add (serial);
-                       return iasn;
-               }
-
-               /*
-                * ContentInfo ::= SEQUENCE {
-                *      contentType ContentType,
-                *      content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL 
-                * }
-                * ContentType ::= OBJECT IDENTIFIER
-                */
-               public class ContentInfo {
-
-                       private string contentType;
-                       private ASN1 content;
-
-                       public ContentInfo () 
-                       {
-                               content = new ASN1 (0xA0);
-                       }
-
-                       public ContentInfo (string oid) : this ()
-                       {
-                               contentType = oid;
-                       }
-
-                       public ContentInfo (byte[] data) 
-                               : this (new ASN1 (data)) {}
-
-                       public ContentInfo (ASN1 asn1) 
-                       {
-                               // SEQUENCE with 1 or 2 elements
-                               if ((asn1.Tag != 0x30) || ((asn1.Count < 1) && (asn1.Count > 2)))
-                                       throw new ArgumentException ("Invalid ASN1");
-                               if (asn1[0].Tag != 0x06)
-                                       throw new ArgumentException ("Invalid contentType");
-                               contentType = ASN1Convert.ToOid (asn1[0]);
-                               if (asn1.Count > 1) {
-                                       if (asn1[1].Tag != 0xA0)
-                                               throw new ArgumentException ("Invalid content");
-                                       content = asn1[1];
-                               }
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1(); }
-                       }
-
-                       public ASN1 Content {
-                               get { return content; }
-                               set { content = value; }
-                       }
-
-                       public string ContentType {
-                               get { return contentType; }
-                               set { contentType = value; }
-                       }
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               // ContentInfo ::= SEQUENCE {
-                               ASN1 contentInfo = new ASN1 (0x30);
-                               // contentType ContentType, -> ContentType ::= OBJECT IDENTIFIER
-                               contentInfo.Add (ASN1Convert.FromOid (contentType));
-                               // content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL 
-                               if ((content != null) && (content.Count > 0))
-                                       contentInfo.Add (content);
-                               return contentInfo;
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               return GetASN1 ().GetBytes ();
-                       }
-               }
-
-               /*
-                * EncryptedData ::= SEQUENCE {
-                *      version         INTEGER {edVer0(0)} (edVer0),
-                *       encryptedContentInfo  EncryptedContentInfo
-                * }
-                */
-               public class EncryptedData {
-                       private byte _version;
-                       private ContentInfo _content;
-                       private ContentInfo _encryptionAlgorithm;
-                       private byte[] _encrypted;
-
-                       public EncryptedData () 
-                       {
-                               _version = 0;
-                       }
-
-                       public EncryptedData (byte[] data) 
-                               : this (new ASN1 (data))
-                       {
-                       }
-
-                       public EncryptedData (ASN1 asn1) : this () 
-                       {
-                               if ((asn1.Tag != 0x30) || (asn1.Count < 2))
-                                       throw new ArgumentException ("Invalid EncryptedData");
-
-                               if (asn1 [0].Tag != 0x02)
-                                       throw new ArgumentException ("Invalid version");
-                               _version = asn1 [0].Value [0];
-
-                               ASN1 encryptedContentInfo = asn1 [1];
-                               if (encryptedContentInfo.Tag != 0x30)
-                                       throw new ArgumentException ("missing EncryptedContentInfo");
-
-                               ASN1 contentType = encryptedContentInfo [0];
-                               if (contentType.Tag != 0x06)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.ContentType");
-                               _content = new ContentInfo (ASN1Convert.ToOid (contentType));
-
-                               ASN1 contentEncryptionAlgorithm = encryptedContentInfo [1];
-                               if (contentEncryptionAlgorithm.Tag != 0x30)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.ContentEncryptionAlgorithmIdentifier");
-                               _encryptionAlgorithm = new ContentInfo (ASN1Convert.ToOid (contentEncryptionAlgorithm [0]));
-                               _encryptionAlgorithm.Content = contentEncryptionAlgorithm [1];
-                               
-                               ASN1 encryptedContent = encryptedContentInfo [2];
-                               if (encryptedContent.Tag != 0x80)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.EncryptedContent");
-                               _encrypted = encryptedContent.Value;
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1(); }
-                       }
-
-                       public ContentInfo ContentInfo {
-                               get { return _content; }
-                       }
-
-                       public ContentInfo EncryptionAlgorithm {
-                               get { return _encryptionAlgorithm; }
-                       }
-
-                       public byte[] EncryptedContent {
-                               get {
-                                       if (_encrypted == null)
-                                               return null;
-                                       return (byte[]) _encrypted.Clone ();
-                               }
-                       }
-
-                       public byte Version {
-                               get { return _version; }
-                               set { _version = value; }
-                       }
-
-                       // methods
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               return null;
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               return GetASN1 ().GetBytes ();
-                       }
-               }
-
-               /*
-                * EnvelopedData ::= SEQUENCE {
-                *      version Version,
-                *      recipientInfos RecipientInfos,
-                *      encryptedContentInfo EncryptedContentInfo 
-                * }
-                * 
-                * RecipientInfos ::= SET OF RecipientInfo
-                * 
-                * EncryptedContentInfo ::= SEQUENCE {
-                *      contentType ContentType,
-                *      contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier,
-                *      encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL 
-                * }
-                * 
-                * EncryptedContent ::= OCTET STRING
-                * 
-                */
-               public class EnvelopedData {
-                       private byte _version;
-                       private ContentInfo _content;
-                       private ContentInfo _encryptionAlgorithm;
-                       private ArrayList _recipientInfos;
-                       private byte[] _encrypted;
-
-                       public EnvelopedData () 
-                       {
-                               _version = 0;
-                               _content = new ContentInfo ();
-                               _encryptionAlgorithm = new ContentInfo ();
-                               _recipientInfos = new ArrayList ();
-                       }
-
-                       public EnvelopedData (byte[] data) 
-                               : this (new ASN1 (data))
-                       {
-                       }
-
-                       public EnvelopedData (ASN1 asn1) : this ()
-                       {
-                               if ((asn1[0].Tag != 0x30) || (asn1[0].Count < 3))
-                                       throw new ArgumentException ("Invalid EnvelopedData");
-
-                               if (asn1[0][0].Tag != 0x02)
-                                       throw new ArgumentException ("Invalid version");
-                               _version = asn1[0][0].Value[0];
-
-                               // recipientInfos
-
-                               ASN1 recipientInfos = asn1 [0][1];
-                               if (recipientInfos.Tag != 0x31)
-                                       throw new ArgumentException ("missing RecipientInfos");
-                               for (int i=0; i < recipientInfos.Count; i++) {
-                                       ASN1 recipientInfo = recipientInfos [i];
-                                       _recipientInfos.Add (new RecipientInfo (recipientInfo));
-                               }
-
-                               ASN1 encryptedContentInfo = asn1[0][2];
-                               if (encryptedContentInfo.Tag != 0x30)
-                                       throw new ArgumentException ("missing EncryptedContentInfo");
-
-                               ASN1 contentType = encryptedContentInfo [0];
-                               if (contentType.Tag != 0x06)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.ContentType");
-                               _content = new ContentInfo (ASN1Convert.ToOid (contentType));
-
-                               ASN1 contentEncryptionAlgorithm = encryptedContentInfo [1];
-                               if (contentEncryptionAlgorithm.Tag != 0x30)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.ContentEncryptionAlgorithmIdentifier");
-                               _encryptionAlgorithm = new ContentInfo (ASN1Convert.ToOid (contentEncryptionAlgorithm [0]));
-                               _encryptionAlgorithm.Content = contentEncryptionAlgorithm [1];
-                               
-                               ASN1 encryptedContent = encryptedContentInfo [2];
-                               if (encryptedContent.Tag != 0x80)
-                                       throw new ArgumentException ("missing EncryptedContentInfo.EncryptedContent");
-                               _encrypted = encryptedContent.Value;
-                       }
-
-                       public ArrayList RecipientInfos {
-                                 get { return _recipientInfos; }
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1(); }
-                       }
-
-                       public ContentInfo ContentInfo {
-                               get { return _content; }
-                       }
-
-                       public ContentInfo EncryptionAlgorithm {
-                               get { return _encryptionAlgorithm; }
-                       }
-
-                       public byte[] EncryptedContent {
-                               get { 
-                                       if (_encrypted == null)
-                                               return null;
-                                       return (byte[]) _encrypted.Clone ();
-                               }
-                       }
-
-                       public byte Version {
-                               get { return _version; }
-                               set { _version = value; }
-                       }
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               // SignedData ::= SEQUENCE {
-                               ASN1 signedData = new ASN1 (0x30);
-                               // version Version -> Version ::= INTEGER
-/*                             byte[] ver = { _version };
-                               signedData.Add (new ASN1 (0x02, ver));
-                               // digestAlgorithms DigestAlgorithmIdentifiers -> DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
-                               ASN1 digestAlgorithms = signedData.Add (new ASN1 (0x31));
-                               if (hashAlgorithm != null) {
-                                       string hashOid = CryptoConfig.MapNameToOid (hashAlgorithm);
-                                       digestAlgorithms.Add (AlgorithmIdentifier (hashOid));
-                               }
-
-                               // contentInfo ContentInfo,
-                               ASN1 ci = contentInfo.ASN1;
-                               signedData.Add (ci);
-                               if ((mda == null) && (hashAlgorithm != null)) {
-                                       // automatically add the messageDigest authenticated attribute
-                                       HashAlgorithm ha = HashAlgorithm.Create (hashAlgorithm);
-                                       byte[] idcHash = ha.ComputeHash (ci[1][0].Value);
-                                       ASN1 md = new ASN1 (0x30);
-                                       mda = Attribute (messageDigest, md.Add (new ASN1 (0x04, idcHash)));
-                                       signerInfo.AuthenticatedAttributes.Add (mda);
-                               }
-
-                               // certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL,
-                               if (certs.Count > 0) {
-                                       ASN1 a0 = signedData.Add (new ASN1 (0xA0));
-                                       foreach (X509Certificate x in certs)
-                                               a0.Add (new ASN1 (x.RawData));
-                               }
-                               // crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
-                               if (crls.Count > 0) {
-                                       ASN1 a1 = signedData.Add (new ASN1 (0xA1));
-                                       foreach (byte[] crl in crls)
-                                               a1.Add (new ASN1 (crl));
-                               }
-                               // signerInfos SignerInfos -> SignerInfos ::= SET OF SignerInfo
-                               ASN1 signerInfos = signedData.Add (new ASN1 (0x31));
-                               if (signerInfo.Key != null)
-                                       signerInfos.Add (signerInfo.ASN1);*/
-                               return signedData;
-                       }
-
-                       public byte[] GetBytes () {
-                               return GetASN1 ().GetBytes ();
-                       }
-               }
-
-               /* RecipientInfo ::= SEQUENCE {
-                *      version Version,
-                *      issuerAndSerialNumber IssuerAndSerialNumber,
-                *      keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier,
-                *      encryptedKey EncryptedKey 
-                * }
-                * 
-                * KeyEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier
-                * 
-                * EncryptedKey ::= OCTET STRING
-                */
-               public class RecipientInfo {
-
-                       private int _version;
-                       private string _oid;
-                       private byte[] _key;
-                       private byte[] _ski;
-                       private string _issuer;
-                       private byte[] _serial;
-
-                       public RecipientInfo () {}
-
-                       public RecipientInfo (ASN1 data) 
-                       {
-                               if (data.Tag != 0x30)
-                                       throw new ArgumentException ("Invalid RecipientInfo");
-                               
-                               ASN1 version = data [0];
-                               if (version.Tag != 0x02)
-                                       throw new ArgumentException ("missing Version");
-                               _version = version.Value [0];
-
-                               // issuerAndSerialNumber IssuerAndSerialNumber
-                               ASN1 subjectIdentifierType = data [1];
-                               if ((subjectIdentifierType.Tag == 0x80) && (_version == 3)) {
-                                       _ski = subjectIdentifierType.Value;
-                               }
-                               else {
-                                       _issuer = X501.ToString (subjectIdentifierType [0]);
-                                       _serial = subjectIdentifierType [1].Value;
-                               }
-
-                               ASN1 keyEncryptionAlgorithm = data [2];
-                               _oid = ASN1Convert.ToOid (keyEncryptionAlgorithm [0]);
-
-                               ASN1 encryptedKey = data [3];
-                               _key = encryptedKey.Value;
-                       }
-
-                       public string Oid {
-                               get { return _oid; }
-                       }
-
-                       public byte[] Key {
-                               get { 
-                                       if (_key == null)
-                                               return null;
-                                        return (byte[]) _key.Clone ();
-                               }
-                       }
-
-                       public byte[] SubjectKeyIdentifier {
-                               get { 
-                                       if (_ski == null)
-                                               return null;
-                                       return (byte[]) _ski.Clone ();
-                               }
-                       }
-
-                       public string Issuer {
-                               get { return _issuer; }
-                       }
-
-                       public byte[] Serial {
-                               get { 
-                                       if (_serial == null)
-                                               return null;
-                                       return (byte[]) _serial.Clone ();
-                               }
-                       }
-
-                       public int Version {
-                               get { return _version; }
-                       }
-               }
-
-               /*
-                * SignedData ::= SEQUENCE {
-                *      version Version,
-                *      digestAlgorithms DigestAlgorithmIdentifiers,
-                *      contentInfo ContentInfo,
-                *      certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL,
-                *      crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
-                *      signerInfos SignerInfos 
-                * }
-                */
-               public class SignedData {
-                       private byte version;
-                       private string hashAlgorithm;
-                       private ContentInfo contentInfo;
-                       private X509CertificateCollection certs;
-                       private ArrayList crls;
-                       private SignerInfo signerInfo;
-                       private bool mda;
-                       private bool signed;
-
-                       public SignedData () 
-                       {
-                               version = 1;
-                               contentInfo = new ContentInfo ();
-                               certs = new X509CertificateCollection ();
-                               crls = new ArrayList ();
-                               signerInfo = new SignerInfo ();
-                               mda = true;
-                               signed = false;
-                       }
-
-                       public SignedData (byte[] data) 
-                               : this (new ASN1 (data)) 
-                       {
-                       }
-
-                       public SignedData (ASN1 asn1) 
-                       {
-                               if ((asn1[0].Tag != 0x30) || (asn1[0].Count < 4))
-                                       throw new ArgumentException ("Invalid SignedData");
-
-                               if (asn1[0][0].Tag != 0x02)
-                                       throw new ArgumentException ("Invalid version");
-                               version = asn1[0][0].Value[0];
-
-                               contentInfo = new ContentInfo (asn1[0][2]);
-
-                               int n = 3;
-                               certs = new X509CertificateCollection ();
-                               if (asn1[0][n].Tag == 0xA0) {
-                                       for (int i=0; i < asn1[0][n].Count; i++)
-                                               certs.Add (new X509Certificate (asn1[0][n][i].GetBytes ()));
-                                       n++;
-                               }
-
-                               crls = new ArrayList ();
-                               if (asn1[0][n].Tag == 0xA1) {
-                                       for (int i=0; i < asn1[0][n].Count; i++)
-                                               crls.Add (asn1[0][n][i].GetBytes ());
-                                       n++;
-                               }
-
-                               if (asn1[0][n].Count > 0)
-                                       signerInfo = new SignerInfo (asn1[0][n]);
-                               else
-                                       signerInfo = new SignerInfo ();
-
-                               // Exchange hash algorithm Oid from SignerInfo
-                               if (signerInfo.HashName != null) {
-                                       HashName = OidToName(signerInfo.HashName);
-                               }
-                               
-                               // Check if SignerInfo has authenticated attributes
-                               mda = (signerInfo.AuthenticatedAttributes.Count > 0);
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1(); }
-                       }
-
-                       public X509CertificateCollection Certificates {
-                               get { return certs; }
-                       }
-
-                       public ContentInfo ContentInfo {
-                               get { return contentInfo; }
-                       }
-
-                       public ArrayList Crls {
-                               get { return crls; }
-                       }
-
-                       public string HashName {
-                               get { return hashAlgorithm; }
-                               // todo add validation
-                               set { 
-                                       hashAlgorithm = value; 
-                                       signerInfo.HashName = value;
-                               }
-                       }
-
-                       public SignerInfo SignerInfo {
-                               get { return signerInfo; }
-                       }
-
-                       public byte Version {
-                               get { return version; }
-                               set { version = value; }
-                       }
-
-                       public bool UseAuthenticatedAttributes {
-                               get { return mda; }
-                               set { mda = value; }
-                       }
-
-                       public bool VerifySignature (AsymmetricAlgorithm aa)
-                       {
-                               if (aa == null) {
-                                       return false;
-                               }
-
-                               RSAPKCS1SignatureDeformatter r = new RSAPKCS1SignatureDeformatter (aa);
-                               r.SetHashAlgorithm (hashAlgorithm);
-                               HashAlgorithm ha = HashAlgorithm.Create (hashAlgorithm);
-
-                               byte[] signature = signerInfo.Signature;
-                               byte[] hash = null;
-
-                               if (mda) {
-                                       ASN1 asn = new ASN1 (0x31);
-                                       foreach (ASN1 attr in signerInfo.AuthenticatedAttributes)
-                                               asn.Add (attr);
-
-                                       hash = ha.ComputeHash (asn.GetBytes ());
-                               } else {
-                                       hash = ha.ComputeHash (contentInfo.Content[0].Value);
-                               }
-
-                               if (hash != null && signature != null) {
-                                       return r.VerifySignature (hash, signature);
-                               }
-                               return false;
-                       }
-
-                       internal string OidToName (string oid)
-                       {
-                               switch (oid) {
-                               case "1.3.14.3.2.26" :
-                                       return "SHA1";
-                               case "1.2.840.113549.2.2" :
-                                       return "MD2";
-                               case "1.2.840.113549.2.5" :
-                                       return "MD5";
-                               case "2.16.840.1.101.3.4.1" :
-                                       return "SHA256";
-                               case "2.16.840.1.101.3.4.2" :
-                                       return "SHA384";
-                               case "2.16.840.1.101.3.4.3" :
-                                       return "SHA512";
-                               default :
-                                       break;
-                               }
-                               // Unknown Oid
-                               return oid;
-                       }
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               // SignedData ::= SEQUENCE {
-                               ASN1 signedData = new ASN1 (0x30);
-                               // version Version -> Version ::= INTEGER
-                               byte[] ver = { version };
-                               signedData.Add (new ASN1 (0x02, ver));
-                               // digestAlgorithms DigestAlgorithmIdentifiers -> DigestAlgorithmIdentifiers ::= SET OF DigestAlgorithmIdentifier
-                               ASN1 digestAlgorithms = signedData.Add (new ASN1 (0x31));
-                               if (hashAlgorithm != null) {
-                                       string hashOid = CryptoConfig.MapNameToOID (hashAlgorithm);
-                                       digestAlgorithms.Add (AlgorithmIdentifier (hashOid));
-                               }
-
-                               // contentInfo ContentInfo,
-                               ASN1 ci = contentInfo.ASN1;
-                               signedData.Add (ci);
-                               if (!signed && (hashAlgorithm != null)) {
-                                       if (mda) {
-                                               // Use authenticated attributes for signature
-                                               
-                                               // Automatically add the contentType authenticated attribute
-                                               ASN1 ctattr = Attribute (Oid.contentType, ci[0]);
-                                               signerInfo.AuthenticatedAttributes.Add (ctattr);
-                                               
-                                               // Automatically add the messageDigest authenticated attribute
-                                               HashAlgorithm ha = HashAlgorithm.Create (hashAlgorithm);
-                                               byte[] idcHash = ha.ComputeHash (ci[1][0].Value);
-                                               ASN1 md = new ASN1 (0x30);
-                                               ASN1 mdattr = Attribute (Oid.messageDigest, md.Add (new ASN1 (0x04, idcHash)));
-                                               signerInfo.AuthenticatedAttributes.Add (mdattr);
-                                       } else {
-                                               // Don't use authenticated attributes for signature -- signature is content
-                                               RSAPKCS1SignatureFormatter r = new RSAPKCS1SignatureFormatter (signerInfo.Key);
-                                               r.SetHashAlgorithm (hashAlgorithm);
-                                               HashAlgorithm ha = HashAlgorithm.Create (hashAlgorithm);
-                                               byte[] sig = ha.ComputeHash (ci[1][0].Value);
-                                               signerInfo.Signature = r.CreateSignature (sig);
-                                       }
-                                       signed = true;
-                               }
-
-                               // certificates [0] IMPLICIT ExtendedCertificatesAndCertificates OPTIONAL,
-                               if (certs.Count > 0) {
-                                       ASN1 a0 = signedData.Add (new ASN1 (0xA0));
-                                       foreach (X509Certificate x in certs)
-                                               a0.Add (new ASN1 (x.RawData));
-                               }
-                               // crls [1] IMPLICIT CertificateRevocationLists OPTIONAL,
-                               if (crls.Count > 0) {
-                                       ASN1 a1 = signedData.Add (new ASN1 (0xA1));
-                                       foreach (byte[] crl in crls)
-                                               a1.Add (new ASN1 (crl));
-                               }
-                               // signerInfos SignerInfos -> SignerInfos ::= SET OF SignerInfo
-                               ASN1 signerInfos = signedData.Add (new ASN1 (0x31));
-                               if (signerInfo.Key != null)
-                                       signerInfos.Add (signerInfo.ASN1);
-                               return signedData;
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               return GetASN1 ().GetBytes ();
-                       }
-               }
-
-               /*
-                * SignerInfo ::= SEQUENCE {
-                *      version Version,
-                *      issuerAndSerialNumber IssuerAndSerialNumber,
-                *      digestAlgorithm DigestAlgorithmIdentifier,
-                *      authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
-                *      digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
-                *      encryptedDigest EncryptedDigest,
-                *      unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL 
-                * }
-                * 
-                * For version == 3 issuerAndSerialNumber may be replaced by ...
-                */
-               public class SignerInfo {
-
-                       private byte version;
-                       private X509Certificate x509;
-                       private string hashAlgorithm;
-                       private AsymmetricAlgorithm key;
-                       private ArrayList authenticatedAttributes;
-                       private ArrayList unauthenticatedAttributes;
-                       private byte[] signature;
-                       private string issuer;
-                       private byte[] serial;
-                       private byte[] ski;
-
-                       public SignerInfo () 
-                       {
-                               version = 1;
-                               authenticatedAttributes = new ArrayList ();
-                               unauthenticatedAttributes = new ArrayList ();
-                       }
-
-                       public SignerInfo (byte[] data) 
-                               : this (new ASN1 (data)) {}
-
-                       // TODO: INCOMPLETE
-                       public SignerInfo (ASN1 asn1) : this () 
-                       {
-                               if ((asn1[0].Tag != 0x30) || (asn1[0].Count < 5))
-                                       throw new ArgumentException ("Invalid SignedData");
-
-                               // version Version
-                               if (asn1[0][0].Tag != 0x02)
-                                       throw new ArgumentException ("Invalid version");
-                               version = asn1[0][0].Value[0];
-
-                               // issuerAndSerialNumber IssuerAndSerialNumber
-                               ASN1 subjectIdentifierType = asn1 [0][1];
-                               if ((subjectIdentifierType.Tag == 0x80) && (version == 3)) {
-                                       ski = subjectIdentifierType.Value;
-                               }
-                               else {
-                                       issuer = X501.ToString (subjectIdentifierType [0]);
-                                       serial = subjectIdentifierType [1].Value;
-                               }
-
-                               // digestAlgorithm DigestAlgorithmIdentifier
-                               ASN1 digestAlgorithm = asn1 [0][2];
-                               hashAlgorithm = ASN1Convert.ToOid (digestAlgorithm [0]);
-
-                               // authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL
-                               int n = 3;
-                               ASN1 authAttributes = asn1 [0][n];
-                               if (authAttributes.Tag == 0xA0) {
-                                       n++;
-                                       for (int i=0; i < authAttributes.Count; i++)
-                                               authenticatedAttributes.Add (authAttributes [i]);
-                               }
-
-                               // digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier
-                               n++;
-                               // ASN1 digestEncryptionAlgorithm = asn1 [0][n++];
-                               // string digestEncryptionAlgorithmOid = ASN1Convert.ToOid (digestEncryptionAlgorithm [0]);
-
-                               // encryptedDigest EncryptedDigest
-                               ASN1 encryptedDigest = asn1 [0][n++];
-                               if (encryptedDigest.Tag == 0x04)
-                                       signature = encryptedDigest.Value;
-
-                               // unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL
-                               ASN1 unauthAttributes = asn1 [0][n];
-                               if ((unauthAttributes != null) && (unauthAttributes.Tag == 0xA1)) {
-                                       for (int i=0; i < unauthAttributes.Count; i++)
-                                               unauthenticatedAttributes.Add (unauthAttributes [i]);
-                               }
-                       }
-
-                       public string IssuerName {
-                               get { return issuer; }
-                       }
-
-                       public byte[] SerialNumber {
-                               get { 
-                                       if (serial == null)
-                                               return null;
-                                       return (byte[]) serial.Clone (); 
-                               }
-                       }
-
-                       public byte[] SubjectKeyIdentifier {
-                               get { 
-                                       if (ski == null)
-                                               return null;
-                                       return (byte[]) ski.Clone (); 
-                               }
-                       }
-
-                       public ASN1 ASN1 {
-                               get { return GetASN1(); }
-                       }
-
-                       public ArrayList AuthenticatedAttributes {
-                               get { return authenticatedAttributes; }
-                       }
-
-                       public X509Certificate Certificate {
-                               get { return x509; }
-                               set { x509 = value; }
-                       }
-
-                       public string HashName {
-                               get { return hashAlgorithm; }
-                               set { hashAlgorithm = value; }
-                       }
-
-                       public AsymmetricAlgorithm Key {
-                               get { return key; }
-                               set { key = value; }
-                       }
-
-                       public byte[] Signature {
-                               get { 
-                                       if (signature == null)
-                                               return null;
-                                       return (byte[]) signature.Clone (); 
-                               }
-
-                               set {
-                                       if (value != null) {
-                                               signature = (byte[]) value.Clone ();
-                                       }
-                               }
-                       }
-
-                       public ArrayList UnauthenticatedAttributes {
-                               get { return unauthenticatedAttributes; }
-                       }
-
-                       public byte Version {
-                               get { return version; }
-                               set { version = value; }
-                       }
-
-                       internal ASN1 GetASN1 () 
-                       {
-                               if ((key == null) || (hashAlgorithm == null))
-                                       return null;
-                               byte[] ver = { version };
-                               ASN1 signerInfo = new ASN1 (0x30);
-                               // version Version -> Version ::= INTEGER
-                               signerInfo.Add (new ASN1 (0x02, ver));
-                               // issuerAndSerialNumber IssuerAndSerialNumber,
-                               signerInfo.Add (PKCS7.IssuerAndSerialNumber (x509));
-                               // digestAlgorithm DigestAlgorithmIdentifier,
-                               string hashOid = CryptoConfig.MapNameToOID (hashAlgorithm);
-                               signerInfo.Add (AlgorithmIdentifier (hashOid));
-                               // authenticatedAttributes [0] IMPLICIT Attributes OPTIONAL,
-                               ASN1 aa = null;
-                               if (authenticatedAttributes.Count > 0) {
-                                       aa = signerInfo.Add (new ASN1 (0xA0));
-                                       foreach (ASN1 attr in authenticatedAttributes)
-                                               aa.Add (attr);
-                               }
-                               // digestEncryptionAlgorithm DigestEncryptionAlgorithmIdentifier,
-                               if (key is RSA) {
-                                       signerInfo.Add (AlgorithmIdentifier (PKCS7.Oid.rsaEncryption));
-
-                                       if (aa != null) {
-                                               // Calculate the signature here; otherwise it must be set from SignedData
-                                               RSAPKCS1SignatureFormatter r = new RSAPKCS1SignatureFormatter (key);
-                                               r.SetHashAlgorithm (hashAlgorithm);
-                                               byte[] tbs = aa.GetBytes ();
-                                               tbs [0] = 0x31; // not 0xA0 for signature
-                                               HashAlgorithm ha = HashAlgorithm.Create (hashAlgorithm);
-                                               byte[] tbsHash = ha.ComputeHash (tbs);
-                                               signature = r.CreateSignature (tbsHash);
-                                       }
-                               }
-                               else if (key is DSA) {
-                                       throw new NotImplementedException ("not yet");
-                               }
-                               else
-                                       throw new CryptographicException ("Unknown assymetric algorithm");
-                               // encryptedDigest EncryptedDigest,
-                               signerInfo.Add (new ASN1 (0x04, signature));
-                               // unauthenticatedAttributes [1] IMPLICIT Attributes OPTIONAL 
-                               if (unauthenticatedAttributes.Count > 0) {
-                                       ASN1 ua = signerInfo.Add (new ASN1 (0xA1));
-                                       foreach (ASN1 attr in unauthenticatedAttributes)
-                                               ua.Add (attr);
-                               }
-                               return signerInfo;
-                       }
-
-                       public byte[] GetBytes () 
-                       {
-                               return GetASN1 ().GetBytes ();
-                       }
-               }
-       }
-}
diff --git a/mcs/class/corlib/Mono.Security/StrongName.cs b/mcs/class/corlib/Mono.Security/StrongName.cs
deleted file mode 100644 (file)
index 4c6aaee..0000000
+++ /dev/null
@@ -1,546 +0,0 @@
-//
-// StrongName.cs - Strong Name Implementation
-//
-// Author:
-//     Sebastien Pouliot (sebastien@ximian.com)
-//
-// (C) 2003 Motus Technologies Inc. (http://www.motus.com)
-// (C) 2004 Novell (http://www.novell.com)
-//
-
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System;
-using System.Configuration.Assemblies;
-using System.Globalization;
-using System.IO;
-using System.Reflection;
-using System.Security.Cryptography;
-
-using Mono.Security.Cryptography;
-
-namespace Mono.Security {
-
-#if INSIDE_CORLIB
-       internal
-#else
-       public
-#endif
-       sealed class StrongName {
-
-               internal class StrongNameSignature {
-                       private byte[] hash;
-                       private byte[] signature;
-                       private UInt32 signaturePosition;
-                       private UInt32 signatureLength;
-                       private UInt32 metadataPosition;
-                       private UInt32 metadataLength;
-                       private byte cliFlag;
-                       private UInt32 cliFlagPosition;
-
-                       public byte[] Hash {
-                               get { return hash; }
-                               set { hash = value; }
-                       }
-
-                       public byte[] Signature {
-                               get { return signature; }
-                               set { signature = value; }
-                       }
-
-                       public UInt32 MetadataPosition {
-                               get { return metadataPosition; }
-                               set { metadataPosition = value; }
-                       }
-
-                       public UInt32 MetadataLength {
-                               get { return metadataLength; }
-                               set { metadataLength = value; }
-                       }
-
-                       public UInt32 SignaturePosition {
-                               get { return signaturePosition; }
-                               set { signaturePosition = value; }
-                       }
-
-                       public UInt32 SignatureLength {
-                               get { return signatureLength; }
-                               set { signatureLength = value; }
-                       }
-
-                       // delay signed -> flag = 0x01
-                       // strongsigned -> flag = 0x09
-                       public byte CliFlag {
-                               get { return cliFlag; }
-                               set { cliFlag = value; }
-                       }
-
-                       public UInt32 CliFlagPosition {
-                               get { return cliFlagPosition; }
-                               set { cliFlagPosition = value; }
-                       }
-               }
-
-               internal enum StrongNameOptions {
-                       Metadata,
-                       Signature
-               }
-
-               private RSA rsa;
-               private byte[] publicKey;
-               private byte[] keyToken;
-               private string tokenAlgorithm;
-
-               public StrongName ()
-               {
-               }
-
-               public StrongName (int keySize)
-               {
-                       rsa = new RSAManaged (keySize);
-               }
-
-               public StrongName (byte[] data)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-
-                       // check for ECMA key
-                       if (data.Length == 16) {
-                               int i = 0;
-                               int sum = 0;
-                               while (i < data.Length)
-                                       sum += data [i++];
-                               if (sum == 4) {
-                                       // it is the ECMA key
-                                       publicKey = (byte[]) data.Clone ();
-                               }
-                       }
-                       else {
-                               RSA = CryptoConvert.FromCapiKeyBlob (data);
-                               if (rsa == null)
-                                       throw new ArgumentException ("data isn't a correctly encoded RSA public key");
-                       }
-               }
-
-               public StrongName (RSA rsa)
-               {
-                       if (rsa == null)
-                               throw new ArgumentNullException ("rsa");
-
-                       RSA = rsa;
-               }
-
-               private void InvalidateCache () 
-               {
-                       publicKey = null;
-                       keyToken = null;
-               }
-
-               public bool CanSign {
-                       get {
-                               if (rsa == null)
-                                       return false;
-#if INSIDE_CORLIB
-                               // the easy way
-                               if (RSA is RSACryptoServiceProvider) {
-                                       // available as internal for corlib
-                                       return !(rsa as RSACryptoServiceProvider).PublicOnly;
-                               }
-                               else 
-#endif
-                               if (RSA is RSAManaged) {
-                                       return !(rsa as RSAManaged).PublicOnly;
-                               }
-                               else {
-                                       // the hard way
-                                       try {
-                                               RSAParameters p = rsa.ExportParameters (true);
-                                               return ((p.D != null) && (p.P != null) && (p.Q != null));
-                                       }
-                                       catch (CryptographicException) {
-                                               return false;
-                                       }
-                               }
-                       }
-               }
-
-               public RSA RSA {
-                       get {
-                               // if none then we create a new keypair
-                               if (rsa == null)
-                                       rsa = (RSA) RSA.Create ();
-                               return rsa; 
-                       }
-                       set { 
-                               rsa = value;
-                               InvalidateCache ();
-                       }
-               }
-
-               public byte[] PublicKey {
-                       get { 
-                               if (publicKey == null) {
-                                       byte[] keyPair = CryptoConvert.ToCapiKeyBlob (rsa, false);
-                                       // since 2.0 public keys can vary from 384 to 16384 bits
-                                       publicKey = new byte [32 + (rsa.KeySize >> 3)];
-
-                                       // The first 12 bytes are documented at:
-                                       // http://msdn.microsoft.com/library/en-us/cprefadd/html/grfungethashfromfile.asp
-                                       // ALG_ID - Signature
-                                       publicKey [0] = keyPair [4];
-                                       publicKey [1] = keyPair [5];    
-                                       publicKey [2] = keyPair [6];    
-                                       publicKey [3] = keyPair [7];    
-                                       // ALG_ID - Hash (SHA1 == 0x8004)
-                                       publicKey [4] = 0x04;
-                                       publicKey [5] = 0x80;
-                                       publicKey [6] = 0x00;
-                                       publicKey [7] = 0x00;
-                                       // Length of Public Key (in bytes)
-                                       byte[] lastPart = BitConverterLE.GetBytes (publicKey.Length - 12);
-                                       publicKey [8] = lastPart [0];
-                                       publicKey [9] = lastPart [1];
-                                       publicKey [10] = lastPart [2];
-                                       publicKey [11] = lastPart [3];
-                                       // Ok from here - Same structure as keypair - expect for public key
-                                       publicKey [12] = 0x06;          // PUBLICKEYBLOB
-                                       // we can copy this part
-                                       Buffer.BlockCopy (keyPair, 1, publicKey, 13, publicKey.Length - 13);
-                                       // and make a small adjustment 
-                                       publicKey [23] = 0x31;          // (RSA1 not RSA2)
-                               }
-                               return (byte[]) publicKey.Clone ();
-                       }
-               }
-
-               public byte[] PublicKeyToken {
-                       get {
-                               if (keyToken == null) {
-                                       byte[] publicKey = PublicKey;
-                                       if (publicKey == null)
-                                               return null;
-                                       HashAlgorithm ha = HashAlgorithm.Create (TokenAlgorithm);
-                                       byte[] hash = ha.ComputeHash (publicKey);
-                                       // we need the last 8 bytes in reverse order
-                                       keyToken = new byte [8];
-                                       Buffer.BlockCopy (hash, (hash.Length - 8), keyToken, 0, 8);
-                                       Array.Reverse (keyToken, 0, 8);
-                               }
-                               return (byte[]) keyToken.Clone ();
-                       }
-               }
-
-               public string TokenAlgorithm {
-                       get { 
-                               if (tokenAlgorithm == null)
-                                       tokenAlgorithm = "SHA1";
-                               return tokenAlgorithm; 
-                       }
-                       set {
-                               string algo = value.ToUpper (CultureInfo.InvariantCulture);
-                               if ((algo == "SHA1") || (algo == "MD5")) {
-                                       tokenAlgorithm = value;
-                                       InvalidateCache ();
-                               }
-                               else
-                                       throw new ArgumentException ("Unsupported hash algorithm for token");
-                       }
-               }
-
-               public byte[] GetBytes () 
-               {
-                       return CryptoConvert.ToCapiPrivateKeyBlob (RSA);
-               }
-
-               private UInt32 RVAtoPosition (UInt32 r, int sections, byte[] headers) 
-               {
-                       for (int i=0; i < sections; i++) {
-                               UInt32 p = BitConverterLE.ToUInt32 (headers, i * 40 + 20);
-                               UInt32 s = BitConverterLE.ToUInt32 (headers, i * 40 + 12);
-                               int l = (int) BitConverterLE.ToUInt32 (headers, i * 40 + 8);
-                               if ((s <= r) && (r < s + l)) {
-                                       return p + r - s;
-                               }
-                       }
-                       return 0;
-               }
-
-               internal StrongNameSignature StrongHash (Stream stream, StrongNameOptions options)
-               {
-                       StrongNameSignature info = new StrongNameSignature ();
-
-                       HashAlgorithm hash = HashAlgorithm.Create (TokenAlgorithm);
-                       CryptoStream cs = new CryptoStream (Stream.Null, hash, CryptoStreamMode.Write);
-
-                       // MS-DOS Header - always 128 bytes
-                       // ref: Section 24.2.1, Partition II Metadata
-                       byte[] mz = new byte [128];
-                       stream.Read (mz, 0, 128);
-                       if (BitConverterLE.ToUInt16 (mz, 0) != 0x5a4d)
-                               return null;
-                       UInt32 peHeader = BitConverterLE.ToUInt32 (mz, 60);
-                       cs.Write (mz, 0, 128);
-                       if (peHeader != 128) {
-                               byte[] mzextra = new byte [peHeader - 128];
-                               stream.Read (mzextra, 0, mzextra.Length);
-                               cs.Write (mzextra, 0, mzextra.Length);
-                       }
-
-                       // PE File Header - always 248 bytes
-                       // ref: Section 24.2.2, Partition II Metadata
-                       byte[] pe = new byte [248];
-                       stream.Read (pe, 0, 248);
-                       if (BitConverterLE.ToUInt32 (pe, 0) != 0x4550)
-                               return null;
-                       if (BitConverterLE.ToUInt16 (pe, 4) != 0x14c)
-                               return null;
-                       // MUST zeroize both CheckSum and Security Directory
-                       byte[] v = new byte [8];
-                       Buffer.BlockCopy (v, 0, pe, 88, 4);
-                       Buffer.BlockCopy (v, 0, pe, 152, 8);
-                       cs.Write (pe, 0, 248);
-
-                       UInt16 numSection = BitConverterLE.ToUInt16 (pe, 6);
-                       int sectionLength = (numSection * 40);
-                       byte[] sectionHeaders = new byte [sectionLength];
-                       stream.Read (sectionHeaders, 0, sectionLength);
-                       cs.Write (sectionHeaders, 0, sectionLength);
-
-                       UInt32 cliHeaderRVA = BitConverterLE.ToUInt32 (pe, 232);
-                       UInt32 cliHeaderPos = RVAtoPosition (cliHeaderRVA, numSection, sectionHeaders);
-                       int cliHeaderSiz = (int) BitConverterLE.ToUInt32 (pe, 236);
-
-                       // CLI Header
-                       // ref: Section 24.3.3, Partition II Metadata
-                       byte[] cli = new byte [cliHeaderSiz];
-                       stream.Position = cliHeaderPos;
-                       stream.Read (cli, 0, cliHeaderSiz);
-
-                       UInt32 strongNameSignatureRVA = BitConverterLE.ToUInt32 (cli, 32);
-                       info.SignaturePosition = RVAtoPosition (strongNameSignatureRVA, numSection, sectionHeaders);
-                       info.SignatureLength = BitConverterLE.ToUInt32 (cli, 36);
-
-                       UInt32 metadataRVA = BitConverterLE.ToUInt32 (cli, 8);
-                       info.MetadataPosition = RVAtoPosition (metadataRVA, numSection, sectionHeaders);
-                       info.MetadataLength = BitConverterLE.ToUInt32 (cli, 12);
-
-                       if (options == StrongNameOptions.Metadata) {
-                               cs.Close ();
-                               hash.Initialize ();
-                               byte[] metadata = new byte [info.MetadataLength];
-                               stream.Position = info.MetadataPosition;
-                               stream.Read (metadata, 0, metadata.Length);
-                               info.Hash = hash.ComputeHash (metadata);
-                               return info;
-                       }
-
-                       // now we hash every section EXCEPT the signature block
-                       for (int i=0; i < numSection; i++) {
-                               UInt32 start = BitConverterLE.ToUInt32 (sectionHeaders, i * 40 + 20);
-                               int length = (int) BitConverterLE.ToUInt32 (sectionHeaders, i * 40 + 16);
-                               byte[] section = new byte [length];
-                               stream.Position = start;
-                               stream.Read (section, 0, length);
-                               if ((start <= info.SignaturePosition) && (info.SignaturePosition < start + length)) {
-                                       // hash before the signature
-                                       int before = (int)(info.SignaturePosition - start);
-                                       if (before > 0) {
-                                               cs.Write (section, 0, before);
-                                       }
-                                       // copy signature
-                                       info.Signature = new byte [info.SignatureLength];
-                                       Buffer.BlockCopy (section, before, info.Signature, 0, (int)info.SignatureLength);
-                                       Array.Reverse (info.Signature);
-                                       // hash after the signature
-                                       int s = (int)(before + info.SignatureLength);
-                                       int after = (int)(length - s);
-                                       if (after > 0) {
-                                               cs.Write (section, s, after);
-                                       }
-                               }
-                               else
-                                       cs.Write (section, 0, length);
-                       }
-
-                       cs.Close ();
-                       info.Hash = hash.Hash;
-                       return info;
-               }
-
-               // return the same result as the undocumented and unmanaged GetHashFromAssemblyFile
-               public byte[] Hash (string fileName) 
-               {
-                       FileStream fs = File.OpenRead (fileName);
-                       StrongNameSignature sn = StrongHash (fs, StrongNameOptions.Metadata);
-                       fs.Close ();
-
-                       return sn.Hash;
-               }
-
-               public bool Sign (string fileName) 
-               {
-                       bool result = false;
-                       StrongNameSignature sn;
-                       using (FileStream fs = File.OpenRead (fileName)) {
-                               sn = StrongHash (fs, StrongNameOptions.Signature);
-                               fs.Close ();
-                       }
-                       if (sn.Hash == null)
-                               return false;
-
-                       byte[] signature = null;
-                       try {
-                               RSAPKCS1SignatureFormatter sign = new RSAPKCS1SignatureFormatter (rsa);
-                               sign.SetHashAlgorithm (TokenAlgorithm);
-                               signature = sign.CreateSignature (sn.Hash);
-                               Array.Reverse (signature);
-                       }
-                       catch (CryptographicException) {
-                               return false;
-                       }
-
-                       using (FileStream fs = File.OpenWrite (fileName)) {
-                               fs.Position = sn.SignaturePosition;
-                               fs.Write (signature, 0, signature.Length);
-                               fs.Close ();
-                               result = true;
-                       }
-                       return result;
-               }
-
-               public bool Verify (string fileName) 
-               {
-                       bool result = false;
-                       using (FileStream fs = File.OpenRead (fileName)) {
-                               result = Verify (fs);
-                               fs.Close ();
-                       }
-                       return result;
-               }
-
-               public bool Verify (Stream stream)
-               {
-                       StrongNameSignature sn = StrongHash (stream, StrongNameOptions.Signature);
-                       if (sn.Hash == null) {
-                               return false;
-                       }
-
-                       try {
-                               AssemblyHashAlgorithm algorithm = AssemblyHashAlgorithm.SHA1;
-                               if (tokenAlgorithm == "MD5")
-                                       algorithm = AssemblyHashAlgorithm.MD5;
-                               return Verify (rsa, algorithm, sn.Hash, sn.Signature);
-                       }
-                       catch (CryptographicException) {
-                               // no exception allowed
-                               return false;
-                       }
-               }
-
-#if INSIDE_CORLIB
-               static object lockObject = new object ();
-               static bool initialized;
-
-               // We don't want a dependency on StrongNameManager in Mono.Security.dll
-               static public bool IsAssemblyStrongnamed (string assemblyName) 
-               {
-                       if (!initialized) {
-                               lock (lockObject) {
-                                       if (!initialized) {
-#if NET_2_1
-                                               // Moonlight cannot depend on machine.config
-#else
-                                               string config = Environment.GetMachineConfigPath ();
-                                               StrongNameManager.LoadConfig (config);
-#endif
-                                               initialized = true;
-                                       }
-                               }
-                       }
-
-                       try {
-                               // this doesn't load the assembly (well it unloads it ;)
-                               // http://weblogs.asp.net/nunitaddin/posts/9991.aspx
-                               AssemblyName an = AssemblyName.GetAssemblyName (assemblyName);
-                               if (an == null)
-                                       return false;
-
-                               byte[] publicKey = StrongNameManager.GetMappedPublicKey (an.GetPublicKeyToken ());
-                               if ((publicKey == null) || (publicKey.Length < 12)) {
-                                       // no mapping
-                                       publicKey = an.GetPublicKey ();
-                                       if ((publicKey == null) || (publicKey.Length < 12))
-                                               return false;
-                               }
-
-                               // Note: MustVerify is based on the original token (by design). Public key
-                               // remapping won't affect if the assembly is verified or not.
-                               if (!StrongNameManager.MustVerify (an)) {
-                                       return true;
-                               }
-
-                               RSA rsa = CryptoConvert.FromCapiPublicKeyBlob (publicKey, 12);
-                               StrongName sn = new StrongName (rsa);
-                               bool result = sn.Verify (assemblyName);
-                               return result;
-                       }
-                       catch {
-                               // no exception allowed
-                               return false;
-                       }
-               }
-
-               // TODO
-               // we would get better performance if the runtime hashed the
-               // assembly - as we wouldn't have to load it from disk a 
-               // second time. The runtime already have implementations of
-               // SHA1 (and even MD5 if required someday).
-               static public bool VerifySignature (byte[] publicKey, int algorithm, byte[] hash, byte[] signature) 
-               {
-                       try {
-                               RSA rsa = CryptoConvert.FromCapiPublicKeyBlob (publicKey);
-                               return Verify (rsa, (AssemblyHashAlgorithm) algorithm, hash, signature);
-                       }
-                       catch {
-                               // no exception allowed
-                               return false;
-                       }
-               }
-#endif
-               static private bool Verify (RSA rsa, AssemblyHashAlgorithm algorithm, byte[] hash, byte[] signature) 
-               {
-                       RSAPKCS1SignatureDeformatter vrfy = new RSAPKCS1SignatureDeformatter (rsa);
-                       switch (algorithm) {
-                       case AssemblyHashAlgorithm.MD5:
-                               vrfy.SetHashAlgorithm ("MD5");
-                               break;
-                       case AssemblyHashAlgorithm.SHA1:
-                       case AssemblyHashAlgorithm.None:
-                       default:
-                               vrfy.SetHashAlgorithm ("SHA1");
-                               break;
-                       }
-                       return vrfy.VerifySignature (hash, signature);
-               }
-       }
-}
index 17056a1b21c37a4c60dbfc63f7548b7b258112d4..9af2e9d2053b5bcd10bb683590e568ade6586f9b 100644 (file)
@@ -116,6 +116,18 @@ namespace System.Collections.Generic {
                                throw new ArgumentException ("index and count exceed length of list");
                }
                
+               void CheckRangeOutOfRange (int idx, int count)
+               {
+                       if (idx < 0)
+                               throw new ArgumentOutOfRangeException ("index");
+                       
+                       if (count < 0)
+                               throw new ArgumentOutOfRangeException ("count");
+
+                       if ((uint) idx + (uint) count > (uint) _size)
+                               throw new ArgumentOutOfRangeException ("index and count exceed length of list");
+               }
+
                void AddCollection (ICollection <T> collection)
                {
                        int collectionCount = collection.Count;
@@ -212,14 +224,27 @@ namespace System.Collections.Generic {
                public bool Exists (Predicate <T> match)
                {
                        CheckMatch(match);
-                       return GetIndex(0, _size, match) != -1;
+
+                       for (int i = 0; i < _size; i++) {
+                               var item = _items [i];
+                               if (match (item))
+                                       return true;
+                       }
+
+                       return false;
                }
                
                public T Find (Predicate <T> match)
                {
                        CheckMatch(match);
-                       int i = GetIndex(0, _size, match);
-                       return (i != -1) ? _items [i] : default (T);
+
+                       for (int i = 0; i < _size; i++) {
+                               var item = _items [i];
+                               if (match (item))
+                                       return item;
+                       }
+
+                       return default (T);
                }
                
                static void CheckMatch (Predicate <T> match)
@@ -296,68 +321,56 @@ namespace System.Collections.Generic {
                public int FindIndex (Predicate <T> match)
                {
                        CheckMatch (match);
-                       return GetIndex (0, _size, match);
+                       return Array.GetIndex (_items, 0, _size, match);
                }
                
                public int FindIndex (int startIndex, Predicate <T> match)
                {
                        CheckMatch (match);
-                       CheckIndex (startIndex);
-                       return GetIndex (startIndex, _size - startIndex, match);
+                       CheckStartIndex (startIndex);
+                       return Array.GetIndex (_items, startIndex, _size - startIndex, match);
                }
                public int FindIndex (int startIndex, int count, Predicate <T> match)
                {
                        CheckMatch (match);
-                       CheckRange (startIndex, count);
-                       return GetIndex (startIndex, count, match);
-               }
-               int GetIndex (int startIndex, int count, Predicate <T> match)
-               {
-                       int end = startIndex + count;
-                       for (int i = startIndex; i < end; i ++)
-                               if (match (_items [i]))
-                                       return i;
-                               
-                       return -1;
+                       CheckRangeOutOfRange (startIndex, count);
+                       return Array.GetIndex (_items, startIndex, count, match);
                }
                
                public T FindLast (Predicate <T> match)
                {
                        CheckMatch (match);
-                       int i = GetLastIndex (0, _size, match);
+                       int i = Array.GetLastIndex (_items, 0, _size, match);
                        return i == -1 ? default (T) : this [i];
                }
                
                public int FindLastIndex (Predicate <T> match)
                {
                        CheckMatch (match);
-                       return GetLastIndex (0, _size, match);
+                       return Array.GetLastIndex (_items, 0, _size, match);
                }
                
                public int FindLastIndex (int startIndex, Predicate <T> match)
                {
                        CheckMatch (match);
-                       CheckIndex (startIndex);
-                       return GetLastIndex (0, startIndex + 1, match);
+                       CheckStartIndex (startIndex);
+                       return Array.GetLastIndex (_items, 0, startIndex + 1, match);
                }
                
                public int FindLastIndex (int startIndex, int count, Predicate <T> match)
                {
                        CheckMatch (match);
-                       int start = startIndex - count + 1;
-                       CheckRange (start, count);
-                       return GetLastIndex (start, count, match);
-               }
+                       CheckStartIndex (startIndex);
+                       
+                       if (count < 0)
+                               throw new ArgumentOutOfRangeException ("count");
 
-               int GetLastIndex (int startIndex, int count, Predicate <T> match)
-               {
-                       // unlike FindLastIndex, takes regular params for search range
-                       for (int i = startIndex + count; i != startIndex;)
-                               if (match (_items [--i]))
-                                       return i;
-                       return -1;      
+                       if (startIndex - count + 1 < 0)
+                               throw new ArgumentOutOfRangeException ("count must refer to a location within the collection");
+
+                       return Array.GetLastIndex (_items, startIndex - count + 1, count, match);
                }
-               
+
                public void ForEach (Action <T> action)
                {
                        if (action == null)
@@ -423,6 +436,12 @@ namespace System.Collections.Generic {
                        if (index < 0 || (uint) index > (uint) _size)
                                throw new ArgumentOutOfRangeException ("index");
                }
+
+               void CheckStartIndex (int index)
+               {
+                       if (index < 0 || (uint) index > (uint) _size)
+                               throw new ArgumentOutOfRangeException ("startIndex");
+               }
                
                public void Insert (int index, T item)
                {
index 6a57a75acbacf7d894cf042626ab2f46a1c777ca..c5f09e7ab2ab057119dfe809b518451ac0059f34 100644 (file)
@@ -54,7 +54,8 @@ namespace System.Collections.ObjectModel
 #endif
        {
                IList <T> items;
-               [field:NonSerializedAttribute()]
+               
+               [NonSerialized]
                object syncRoot;
                
                public Collection ()
@@ -65,12 +66,12 @@ namespace System.Collections.ObjectModel
                        items = l;
                }
 
-               public Collection (IList <T> items)
+               public Collection (IList <T> list)
                {
-                       if (items == null)
-                               throw new ArgumentNullException ("items");
-                       this.items = items;
-                       ICollection l = items as ICollection;
+                       if (list == null)
+                               throw new ArgumentNullException ("list");
+                       this.items = list;
+                       ICollection l = list as ICollection;
                        syncRoot = (l != null) ? l.SyncRoot : new object ();
                }
 
index 75817380b13eb5d35b01001ee99ef8ef4382e114..d3f6a40ea95825d0e9472dee8399099a8d8e3b0a 100644 (file)
@@ -37,6 +37,8 @@ namespace System.Collections {
 
        [ComVisible(true)]
        [Serializable]
+       [System.Diagnostics.DebuggerDisplay ("Count={Count}")]
+       [System.Diagnostics.DebuggerTypeProxy (typeof (CollectionDebuggerView))]
 #if INSIDE_CORLIB
        public
 #else
index d738574dc41d1319412ed6f43e725b2d5203b11b..9ce2574ebb18bb71eae8d5c98784f15f7d537702 100644 (file)
@@ -45,7 +45,7 @@ namespace System.Collections
 
                        int IEqualityComparer.GetHashCode (object obj)
                        {
-                               var comparer = obj as IEqualityComparer;
+                               var comparer = obj as IStructuralEquatable;
                                if (comparer != null)
                                        return comparer.GetHashCode (this);
 
@@ -54,7 +54,7 @@ namespace System.Collections
 
                        bool IEqualityComparer.Equals (object x, object y)
                        {
-                               var comparer = x as IEqualityComparer;
+                               var comparer = x as IStructuralEquatable;
                                if (comparer != null)
                                        return comparer.Equals (y, this);
 
index 51b2e810087ba9daf2eeb4a673732982827d7f22..a942d65ff981fbb6eb643760fd964a351eba9004 100644 (file)
@@ -1,5 +1,5 @@
 //
-// System.Collections.DebuggableAttribute.cs
+// ConditionalAttribute.cs
 //
 // Author:
 //   Nick Drochak II (ndrochak@gol.com)
index 1c05373daaac4088535018a8030f37bf1f279bf9..a12203b1fc11d76df250132863ff6038b9f4688f 100644 (file)
@@ -1,5 +1,5 @@
 //
-// System.Collections.DebuggableAttribute.cs
+// DebuggableAttribute.cs
 //
 // Author:
 //   Nick Drochak II (ndrochak@gol.com)
index 8b740044e34df7f9a1c29cf1b997c5a5113abc92..f93cac39337e31c0ebe7c72057c1e3265629d4d5 100644 (file)
@@ -1004,7 +1004,7 @@ namespace System.Globalization
 
                        Type type = Type.GetType (name, false);
                        if (type == null)
-                               throw new NotSupportedException ("Calendar not found, if the linker is enabled make sure to preserve this type: " + name);
+                               return CreateCalendar (1 << CalendarTypeBits); // return invariant calandar if not found
                        return (Calendar) Activator.CreateInstance (type);
                }
                
index 99586d35531707c29054613cbd5c56d3c89b1809..6066c031cba72eb04542b7c30d45fd55193eb802 100644 (file)
@@ -537,7 +537,6 @@ namespace System.IO
                        IntPtr handle;
                        MonoIOError error;
                        FileAttributes rattr;
-                       
                        string s = MonoIO.FindFirst (path, path_with_pattern, out rattr, out error, out handle);
                        try {
                                while (s != null) {
@@ -545,7 +544,7 @@ namespace System.IO
                                        if (((rattr & FileAttributes.Directory) == 0) && rattr != 0)
                                                rattr |= FileAttributes.Normal;
 
-                                       if ((rattr & FileAttributes.ReparsePoint) == 0 && (rattr & kind) != 0)
+                                       if ((rattr & kind) != 0)
                                                yield return s;
 
                                        s = MonoIO.FindNext (handle, out rattr, out error);
@@ -563,7 +562,7 @@ namespace System.IO
 
                                try {
                                        while (s != null) {
-                                               if ((rattr & FileAttributes.Directory) != 0)
+                                               if ((rattr & FileAttributes.Directory) != 0 && (rattr & FileAttributes.ReparsePoint) == 0)
                                                        foreach (string child in EnumerateKind (s, searchPattern, searchOption, kind))
                                                                yield return child;
                                                s = MonoIO.FindNext (handle, out rattr, out error);
index 98416dfa82f875a06a564fa7251b9d484c3c80df..62be3c834f4b45562475d9c863997efec66fbf76 100644 (file)
@@ -699,11 +699,14 @@ namespace System.IO
                                MemoryStream ms = new MemoryStream ();
                                FlushBuffer (ms);
                                ms.Write (array, offset, numBytes);
+
+                               // Set arguments to new compounded buffer 
                                offset = 0;
-                               numBytes = (int) ms.Length;
+                               array = ms.ToArray ();
+                               numBytes = array.Length;
                        }
 
-                       WriteDelegate w = new WriteDelegate (WriteInternal);
+                       WriteDelegate w = WriteInternal;
                        return w.BeginInvoke (array, offset, numBytes, userCallback, stateObject);                      
                }
                
index 22de37d7cf1acc9a2aee5624573bba4e69c2067a..a1a6d12130103b05335efc67dc00bdd3beeb8308 100644 (file)
@@ -289,6 +289,29 @@ namespace System.IO {
                        return fullpath;
                }
 
+               // http://msdn.microsoft.com/en-us/library/windows/desktop/aa364963%28v=vs.85%29.aspx
+               [DllImport("Kernel32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
+               private static extern int GetFullPathName(string path, int numBufferChars, StringBuilder buffer, ref IntPtr lpFilePartOrNull); 
+
+               internal static string GetFullPathName(string path)
+               {
+                       const int MAX_PATH = 260;
+                       StringBuilder buffer = new StringBuilder(MAX_PATH);
+                       IntPtr ptr = IntPtr.Zero;
+                       int length = GetFullPathName(path, MAX_PATH, buffer, ref ptr);
+                       if (length == 0)
+                       {
+                               int error = Marshal.GetLastWin32Error();
+                               throw new IOException("Windows API call to GetFullPathName failed, Windows error code: " + error);
+                       }
+                       else if (length > MAX_PATH)
+                       {
+                               buffer = new StringBuilder(length);
+                               GetFullPathName(path, length, buffer, ref ptr);
+                       }
+                       return buffer.ToString();
+               }
+
                internal static string WindowsDriveAdjustment (string path)
                {
                        // two special cases to consider when a drive is specified
@@ -304,7 +327,7 @@ namespace System.IO {
                                if (current [0] == path [0])
                                        path = current; // we return it
                                else
-                                       path += '\\';
+                                       path = GetFullPathName(path); // we have to use the GetFullPathName Windows API
                        } else if ((path [2] != Path.DirectorySeparatorChar) && (path [2] != Path.AltDirectorySeparatorChar)) {
                                // second, the drive + a directory is specified *without* a separator between them (e.g. C:dir).
                                // If the current directory is on the specified drive...
@@ -312,8 +335,8 @@ namespace System.IO {
                                        // then specified directory is appended to the current drive directory
                                        path = Path.Combine (current, path.Substring (2, path.Length - 2));
                                } else {
-                                       // if not, then just pretend there was a separator (Path.Combine won't work in this case)
-                                       path = String.Concat (path.Substring (0, 2), DirectorySeparatorStr, path.Substring (2, path.Length - 2));
+                                       // we have to use the GetFullPathName Windows API
+                                       path = GetFullPathName(path);
                                }
                        }
                        return path;
@@ -462,6 +485,10 @@ namespace System.IO {
                                        if (ex.hresult != MonoIO.FileAlreadyExistsHResult || count ++ > 65536)
                                                throw;
                                }
+                               catch (UnauthorizedAccessException ex) {
+                                       if (count ++ > 65536)
+                                               throw new IOException (ex.Message, ex);
+                               }
                        } while (f == null);
                        
                        f.Close();
index fecea2d8b77d0a9d3c52ed24a1acb75cc3adc568..d718e1fb05b2d9c634958aba436b9102271b7729 100644 (file)
@@ -303,7 +303,7 @@ namespace System.IO
                async Task CopyToAsync (Stream destination, byte[] buffer, CancellationToken cancellationToken)
                {
                        int nread;
-                       while ((nread = await ReadAsync (buffer, 0, buffer.Length).ConfigureAwait (false)) != 0)
+                       while ((nread = await ReadAsync (buffer, 0, buffer.Length, cancellationToken).ConfigureAwait (false)) != 0)
                                await destination.WriteAsync (buffer, 0, nread, cancellationToken).ConfigureAwait (false);
                }
 
index 44dfb411296ea74c8fdc6fb06516e2e5ce95661f..fe3a606261730cd522bea0648a95c3deb600117e 100644 (file)
@@ -234,6 +234,45 @@ namespace System.IO {
                        }\r
                }\r
 \r
+               void LowLevelWrite (char[] buffer, int index, int count)\r
+               {\r
+                       while (count > 0) {\r
+                               int todo = decode_buf.Length - decode_pos;\r
+                               if (todo == 0) {\r
+                                       Decode ();\r
+                                       todo = decode_buf.Length;\r
+                               }\r
+                               if (todo > count)\r
+                                       todo = count;\r
+                               Buffer.BlockCopy (buffer, index * 2, decode_buf, decode_pos * 2, todo * 2);\r
+                               count -= todo;\r
+                               index += todo;\r
+                               decode_pos += todo;\r
+                       }\r
+               }\r
+               \r
+               void LowLevelWrite (string s)\r
+               {\r
+                       int count = s.Length;\r
+                       int index = 0;\r
+                       while (count > 0) {\r
+                               int todo = decode_buf.Length - decode_pos;\r
+                               if (todo == 0) {\r
+                                       Decode ();\r
+                                       todo = decode_buf.Length;\r
+                               }\r
+                               if (todo > count)\r
+                                       todo = count;\r
+                               \r
+                               for (int i = 0; i < todo; i ++)\r
+                                       decode_buf [i + decode_pos] = s [i + index];\r
+                               \r
+                               count -= todo;\r
+                               index += todo;\r
+                               decode_pos += todo;\r
+                       }\r
+               }               \r
+\r
 #if NET_4_5\r
                async Task FlushCoreAsync ()\r
                {\r
@@ -268,33 +307,13 @@ namespace System.IO {
                                decode_pos = 0;\r
                        }\r
                }               \r
-#endif\r
 \r
-               public override void Write (char[] buffer, int index, int count) \r
-               {\r
-                       if (buffer == null)\r
-                               throw new ArgumentNullException ("buffer");\r
-                       if (index < 0)\r
-                               throw new ArgumentOutOfRangeException ("index", "< 0");\r
-                       if (count < 0)\r
-                               throw new ArgumentOutOfRangeException ("count", "< 0");\r
-                       // re-ordered to avoid possible integer overflow\r
-                       if (index > buffer.Length - count)\r
-                               throw new ArgumentException ("index + count > buffer.Length");\r
-\r
-                       CheckState ();\r
-\r
-                       LowLevelWrite (buffer, index, count);\r
-                       if (iflush)\r
-                               FlushCore ();\r
-               }\r
-               \r
-               void LowLevelWrite (char[] buffer, int index, int count)\r
+               async Task LowLevelWriteAsync (char[] buffer, int index, int count)\r
                {\r
                        while (count > 0) {\r
                                int todo = decode_buf.Length - decode_pos;\r
                                if (todo == 0) {\r
-                                       Decode ();\r
+                                       await DecodeAsync ().ConfigureAwait (false);\r
                                        todo = decode_buf.Length;\r
                                }\r
                                if (todo > count)\r
@@ -306,14 +325,14 @@ namespace System.IO {
                        }\r
                }\r
                \r
-               void LowLevelWrite (string s)\r
+               async Task LowLevelWriteAsync (string s)\r
                {\r
                        int count = s.Length;\r
                        int index = 0;\r
                        while (count > 0) {\r
                                int todo = decode_buf.Length - decode_pos;\r
                                if (todo == 0) {\r
-                                       Decode ();\r
+                                       await DecodeAsync ().ConfigureAwait (false);\r
                                        todo = decode_buf.Length;\r
                                }\r
                                if (todo > count)\r
@@ -326,8 +345,28 @@ namespace System.IO {
                                index += todo;\r
                                decode_pos += todo;\r
                        }\r
-               }\r
+               }       \r
+#endif\r
+\r
+               public override void Write (char[] buffer, int index, int count) \r
+               {\r
+                       if (buffer == null)\r
+                               throw new ArgumentNullException ("buffer");\r
+                       if (index < 0)\r
+                               throw new ArgumentOutOfRangeException ("index", "< 0");\r
+                       if (count < 0)\r
+                               throw new ArgumentOutOfRangeException ("count", "< 0");\r
+                       // re-ordered to avoid possible integer overflow\r
+                       if (index > buffer.Length - count)\r
+                               throw new ArgumentException ("index + count > buffer.Length");\r
 \r
+                       CheckState ();\r
+\r
+                       LowLevelWrite (buffer, index, count);\r
+                       if (iflush)\r
+                               FlushCore ();\r
+               }\r
+               \r
                public override void Write (char value)\r
                {\r
                        CheckState ();\r
@@ -355,8 +394,10 @@ namespace System.IO {
                {\r
                        CheckState ();\r
 \r
-                       if (value != null)\r
-                               LowLevelWrite (value);\r
+                       if (value == null)\r
+                               return;\r
+                       \r
+                       LowLevelWrite (value);\r
                        \r
                        if (iflush)\r
                                FlushCore ();\r
@@ -423,7 +464,7 @@ namespace System.IO {
                {\r
                        // Debug.Assert (buffer == null);\r
 \r
-                       LowLevelWrite (buffer, 0, buffer.Length);\r
+                       await LowLevelWriteAsync (buffer, index, count).ConfigureAwait (false);\r
 \r
                        if (iflush)\r
                                await FlushCoreAsync ().ConfigureAwait (false);\r
@@ -432,16 +473,33 @@ namespace System.IO {
                public override Task WriteAsync (string value)\r
                {\r
                        CheckState ();\r
+\r
+                       if (value == null)\r
+                               return TaskConstants.Finished;\r
+\r
                        DecoupledTask res;                      \r
-                       async_task = res = new DecoupledTask(base.WriteAsync (value));\r
+                       async_task = res = new DecoupledTask (WriteAsyncCore (value, false));\r
                        return res.Task;\r
                }\r
 \r
+               async Task WriteAsyncCore (string value, bool appendNewLine)\r
+               {\r
+                       // Debug.Assert (value == null);\r
+\r
+                       await LowLevelWriteAsync (value).ConfigureAwait (false);\r
+                       if (appendNewLine)\r
+                               await LowLevelWriteAsync (CoreNewLine, 0, CoreNewLine.Length).ConfigureAwait (false);\r
+                       \r
+                       if (iflush)\r
+                               await FlushCoreAsync ().ConfigureAwait (false);\r
+               }               \r
+\r
                public override Task WriteLineAsync ()\r
                {\r
                        CheckState ();\r
-                       DecoupledTask res;                      \r
-                       async_task = res = new DecoupledTask (base.WriteLineAsync ());\r
+\r
+                       DecoupledTask res;\r
+                       async_task = res = new DecoupledTask (WriteAsyncCore (CoreNewLine, 0, CoreNewLine.Length));\r
                        return res.Task;\r
                }\r
 \r
@@ -449,23 +507,56 @@ namespace System.IO {
                {\r
                        CheckState ();\r
                        DecoupledTask res;\r
-                       async_task = res = new DecoupledTask (base.WriteLineAsync (value));\r
+                       async_task = res = new DecoupledTask (WriteLineAsyncCore (value));\r
                        return res.Task;\r
                }\r
 \r
+               async Task WriteLineAsyncCore (char value)\r
+               {\r
+                       await WriteAsyncCore (value).ConfigureAwait (false);\r
+                       await LowLevelWriteAsync (CoreNewLine, 0, CoreNewLine.Length).ConfigureAwait (false);\r
+                       \r
+                       if (iflush)\r
+                               await FlushCoreAsync ().ConfigureAwait (false);\r
+               }               \r
+\r
                public override Task WriteLineAsync (char[] buffer, int index, int count)\r
                {\r
+                       if (buffer == null)\r
+                               throw new ArgumentNullException ("buffer");\r
+                       if (index < 0)\r
+                               throw new ArgumentOutOfRangeException ("index", "< 0");\r
+                       if (count < 0)\r
+                               throw new ArgumentOutOfRangeException ("count", "< 0");\r
+                       // re-ordered to avoid possible integer overflow\r
+                       if (index > buffer.Length - count)\r
+                               throw new ArgumentException ("index + count > buffer.Length");\r
+\r
                        CheckState ();\r
                        DecoupledTask res;\r
-                       async_task = res = new DecoupledTask (base.WriteLineAsync (buffer, index, count));\r
+                       async_task = res = new DecoupledTask (WriteLineAsyncCore (buffer, index, count));\r
                        return res.Task;\r
                }\r
 \r
+               async Task WriteLineAsyncCore (char[] buffer, int index, int count)\r
+               {\r
+                       // Debug.Assert (buffer == null);\r
+\r
+                       await LowLevelWriteAsync (buffer, index, count).ConfigureAwait (false);\r
+                       await LowLevelWriteAsync (CoreNewLine, 0, CoreNewLine.Length).ConfigureAwait (false);\r
+                       \r
+                       if (iflush)\r
+                               await FlushCoreAsync ().ConfigureAwait (false);\r
+               }               \r
+\r
                public override Task WriteLineAsync (string value)\r
                {\r
+                       if (value == null)\r
+                               return WriteLineAsync ();\r
+\r
                        CheckState ();\r
                        DecoupledTask res;                      \r
-                       async_task = res = new DecoupledTask (base.WriteLineAsync (value));\r
+                       async_task = res = new DecoupledTask (WriteAsyncCore (value, true));\r
                        return res.Task;\r
                }\r
 #endif\r
index b0e6747bedfb9c6b0fbc0b6d5adfe86683fbcb3a..aa0f78a235c58b0cf9daabb8c6167561f86a860d 100644 (file)
@@ -127,7 +127,7 @@ namespace System.Reflection.Emit {
 
                        ParameterInfo [] retval = new ParameterInfo [parameters.Length];
                        for (int i = 0; i < parameters.Length; i++)
-                               retval [i] = new ParameterInfo (pinfo == null ? null
+                               retval [i] = ParameterInfo.New (pinfo == null ? null
                                        : pinfo [i + 1], parameters [i], this, i + 1);
 
                        return retval;
@@ -351,7 +351,7 @@ namespace System.Reflection.Emit {
                                throw new InvalidOperationException ("Method '" + Name + "' does not have a method body.");
                        }
                        if (ilgen != null)
-                               ilgen.label_fixup ();
+                               ilgen.label_fixup (this);
                }
                
                internal void GenerateDebugInfo (ISymbolWriter symbolWriter)
index 1f7b30dbce51b114a321ae31e83698186c8dfce2..161e45ce767dc61cbb4c36ea2991e33815dbcaa4 100644 (file)
@@ -115,14 +115,14 @@ namespace System.Reflection.Emit
                                res = new ParameterInfo [cbuilder.parameters.Length];
                                for (int i = 0; i < cbuilder.parameters.Length; i++) {
                                        Type type = instantiation.InflateType (cbuilder.parameters [i]);
-                                       res [i] = new ParameterInfo (cbuilder.pinfo == null ? null : cbuilder.pinfo [i], type, this, i + 1);
+                                       res [i] = ParameterInfo.New (cbuilder.pinfo == null ? null : cbuilder.pinfo [i], type, this, i + 1);
                                }
                        } else {
                                ParameterInfo[] parms = cb.GetParameters ();
                                res = new ParameterInfo [parms.Length];
                                for (int i = 0; i < parms.Length; i++) {
                                        Type type = instantiation.InflateType (parms [i].ParameterType);
-                                       res [i] = new ParameterInfo (parms [i], type, this, i + 1);
+                                       res [i] = ParameterInfo.New (parms [i], type, this, i + 1);
                                }
                        }
                        return res;
index c086c63bd15be59bdd815103f4356af28233bdb2..a3be40abcae2614e71a7d5d452a9cfad91956859 100644 (file)
@@ -67,7 +67,7 @@ namespace System.Reflection.Emit {
                }
 
                public int GetTokenFor (RuntimeMethodHandle method) {
-                       MethodInfo mi = (MethodInfo)MethodBase.GetMethodFromHandle (method);
+                       MethodBase mi = MethodBase.GetMethodFromHandle (method);
                        return this.method.GetILGenerator ().TokenGenerator.GetToken (mi, false);
                }
 
index 5805c00c31df77d87aeacf23ed517c1f777c0fc4..358601cb81976dae5345b86ff6396a8c43147f1e 100644 (file)
@@ -138,7 +138,7 @@ namespace System.Reflection.Emit {
                                if (ilgen == null || ilgen.ILOffset == 0)
                                        throw new InvalidOperationException ("Method '" + name + "' does not have a method body.");
 
-                               ilgen.label_fixup ();
+                               ilgen.label_fixup (this);
 
                                // Have to create all DynamicMethods referenced by this one
                                try {
@@ -263,7 +263,7 @@ namespace System.Reflection.Emit {
 
                        ParameterInfo[] retval = new ParameterInfo [parameters.Length];
                        for (int i = 0; i < parameters.Length; i++) {
-                               retval [i] = new ParameterInfo (pinfo == null ? null : pinfo [i + 1], parameters [i], this, i + 1);
+                               retval [i] = ParameterInfo.New (pinfo == null ? null : pinfo [i + 1], parameters [i], this, i + 1);
                        }
                        return retval;
                }
@@ -449,7 +449,7 @@ namespace System.Reflection.Emit {
                        return m.AddRef (str);
                }
 
-               public int GetToken (MethodInfo method, Type[] opt_param_types) {
+               public int GetToken (MethodBase method, Type[] opt_param_types) {
                        throw new InvalidOperationException ();
                }
 
index 50a674473779299209f339f4915230de6f31272a..240bc7297e7603106d3ce00e8f462eacd60d2ddb 100644 (file)
@@ -43,7 +43,14 @@ namespace System.Reflection.Emit {
        [ComVisible (true)]
        [ComDefaultInterface (typeof (_EnumBuilder))]
        [ClassInterface (ClassInterfaceType.None)]
-       public sealed class EnumBuilder : Type, _EnumBuilder {
+       public sealed class EnumBuilder : 
+#if NET_4_5
+               TypeInfo
+#else
+               Type
+#endif
+               , _EnumBuilder
+       {
                private TypeBuilder _tb;
                private FieldBuilder _underlyingField;
                private Type _underlyingType;
@@ -418,6 +425,18 @@ namespace System.Reflection.Emit {
                                return false;
                        }
                }
+
+#if NET_4_5
+               public override bool IsConstructedGenericType {
+                       get { return false; }
+               }
+
+               public override bool IsAssignableFrom (TypeInfo typeInfo)
+               {
+                       return base.IsAssignableFrom (typeInfo);
+               }
+#endif
+
        }
 }
 #endif
index 696ec9cef3a69e9f45eb30dd3d46704398152997..a4cfc9ca4fdd2985fc620038b0d4e006580f3609 100644 (file)
@@ -42,7 +42,12 @@ namespace System.Reflection.Emit
 {
        [ComVisible (true)]
        [StructLayout (LayoutKind.Sequential)]
-       public sealed class GenericTypeParameterBuilder : Type
+       public sealed class GenericTypeParameterBuilder : 
+#if NET_4_5
+               TypeInfo
+#else
+               Type
+#endif 
        {
        #region Sync with reflection.h
                private TypeBuilder tbuilder;
index 1c9c3f4c3d16840e8c7dc1fd7d48788961204aa6..bc8b2538378428a3f993e62afc5a8840e373a851 100644 (file)
@@ -180,7 +180,7 @@ namespace System.Reflection.Emit {
 
                int GetToken (MemberInfo member, bool create_open_instance);
 
-               int GetToken (MethodInfo method, Type[] opt_param_types);
+               int GetToken (MethodBase method, Type[] opt_param_types);
 
                int GetToken (SignatureHelper helper);
        }               
@@ -988,11 +988,11 @@ namespace System.Reflection.Emit {
                        throw new NotImplementedException ();
                }
 
-               internal void label_fixup ()
+               internal void label_fixup (MethodBase mb)
                {
                        for (int i = 0; i < num_fixups; ++i) {
                                if (labels [fixups [i].label_idx].addr < 0)
-                                       throw new ArgumentException ("Label not marked");
+                                       throw new ArgumentException (string.Format ("Label #{0} is not marked in method `{1}'", fixups [i].label_idx + 1, mb.Name));
                                // Diff is the offset from the end of the jump instruction to the address of the label
                                int diff = labels [fixups [i].label_idx].addr - (fixups [i].pos + fixups [i].offset);
                                if (fixups [i].offset == 1) {
index f898bce399eb886a6b859be14904151e1e607c7a..d5f8c1407b53508b9495b54084ad5661a7cdb67c 100644 (file)
@@ -230,7 +230,7 @@ namespace System.Reflection.Emit
 
                        ParameterInfo[] retval = new ParameterInfo [parameters.Length];
                        for (int i = 0; i < parameters.Length; i++) {
-                               retval [i] = new ParameterInfo (pinfo == null ? null : pinfo [i + 1], parameters [i], this, i + 1);
+                               retval [i] = ParameterInfo.New (pinfo == null ? null : pinfo [i + 1], parameters [i], this, i + 1);
                        }
                        return retval;
                }
@@ -354,7 +354,7 @@ namespace System.Reflection.Emit
                                                                                            DeclaringType.FullName, Name));
                        }
                        if (ilgen != null)
-                               ilgen.label_fixup ();
+                               ilgen.label_fixup (this);
                }
                
                internal void GenerateDebugInfo (ISymbolWriter symbolWriter)
index c3dd1f08bd0126986fbb0de1b97d9c237d458e8f..eab1cd0b8c9432cd6b7aa3d0191b03c36760429c 100644 (file)
@@ -656,7 +656,7 @@ namespace System.Reflection.Emit {
                private static extern int getToken (ModuleBuilder mb, object obj, bool create_open_instance);
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
-               private static extern int getMethodToken (ModuleBuilder mb, MethodInfo method,
+               private static extern int getMethodToken (ModuleBuilder mb, MethodBase method,
                                                          Type[] opt_param_types);
 
                internal int GetToken (string str)
@@ -678,7 +678,7 @@ namespace System.Reflection.Emit {
                        return getToken (this, member, create_open_instance);
                }
 
-               internal int GetToken (MethodInfo method, Type[] opt_param_types) {
+               internal int GetToken (MethodBase method, Type[] opt_param_types) {
                        return getMethodToken (this, method, opt_param_types);
                }
 
@@ -981,7 +981,7 @@ namespace System.Reflection.Emit {
                        return mb.GetToken (member, create_open_instance);
                }
 
-               public int GetToken (MethodInfo method, Type[] opt_param_types) {
+               public int GetToken (MethodBase method, Type[] opt_param_types) {
                        return mb.GetToken (method, opt_param_types);
                }
 
index 882d125442d15b6716eb7d686bbc6eeb52a1a03a..578a7ab057673f1f8f249cceb1e7199cbc8dd16f 100644 (file)
@@ -50,7 +50,13 @@ namespace System.Reflection.Emit
        [ComDefaultInterface (typeof (_TypeBuilder))]
        [ClassInterface (ClassInterfaceType.None)]
        [StructLayout (LayoutKind.Sequential)]
-       public sealed class TypeBuilder : Type, _TypeBuilder
+       public sealed class TypeBuilder :
+#if NET_4_5
+               TypeInfo
+#else
+               Type
+#endif
+               , _TypeBuilder
        {
 #pragma warning disable 169            
                #region Sync with reflection.h
@@ -1927,6 +1933,17 @@ namespace System.Reflection.Emit
                                return false;
                        }
                }
+
+#if NET_4_5
+               public override bool IsConstructedGenericType {
+                       get { return false; }
+               }
+
+               public override bool IsAssignableFrom (TypeInfo typeInfo)
+               {
+                       return base.IsAssignableFrom (typeInfo);
+               }
+#endif
        }
 }
 #endif
index 5436dc663afe114bb9ddeb6e3070db95b76b420a..ad9696aaf061bb20926627eea513d1211ebbe8e8 100644 (file)
@@ -323,16 +323,16 @@ namespace System.Reflection {
                        return token;
                }
 
-               [MonoTODO]
                public static bool ReferenceMatchesDefinition (AssemblyName reference, AssemblyName definition)
                {
                        if (reference == null)
                                throw new ArgumentNullException ("reference");
                        if (definition == null)
                                throw new ArgumentNullException ("definition");
-                       if (reference.Name != definition.Name)
-                               return false;
-                       throw new NotImplementedException ();
+                       
+                       // we only compare the simple assembly name to be consistent with MS .NET,
+                       // which is the result of a bug in their implementation (see https://connect.microsoft.com/VisualStudio/feedback/details/752902)
+                       return string.Equals (reference.Name, definition.Name, StringComparison.OrdinalIgnoreCase);
                }
 
                public void SetPublicKey (byte[] publicKey) 
index 5bdc14633c0cd1faeec5afc7dfa089ac1f66885f..7c0f829a38009aeef38578e6b3fda3755c6f2bf0 100644 (file)
@@ -32,6 +32,7 @@
 
 using System.Globalization;
 using System.Runtime.InteropServices;
+using System.Collections.Generic;
 
 namespace System.Reflection
 {
@@ -400,12 +401,12 @@ namespace System.Reflection
                                                if (i < names.Length)
                                                        continue;
 
-                                               selected = SelectMethod (bindingAttr, new MethodBase [] { m }, newTypes, newModifiers, true, args);
+                                               selected = SelectMethod (bindingAttr, new MethodBase [] { m }, newTypes, newModifiers, true, ref args);
                                                if (selected != null)
                                                        break;
                                        }
                                } else {
-                                       selected = SelectMethod (bindingAttr, match, types, modifiers, true, args);
+                                       selected = SelectMethod (bindingAttr, match, types, modifiers, true, ref args);
                                }
 
                                state = null;
@@ -618,11 +619,11 @@ namespace System.Reflection
 
                        public override MethodBase SelectMethod (BindingFlags bindingAttr, MethodBase [] match, Type [] types, ParameterModifier [] modifiers)
                        {
-                               return SelectMethod (bindingAttr, match, types, modifiers,
-                                       false, null);
+                               object[] args = null;
+                               return SelectMethod (bindingAttr, match, types, modifiers, false, ref args);
                        }
 
-                       MethodBase SelectMethod (BindingFlags bindingAttr, MethodBase[] match, Type[] types, ParameterModifier[] modifiers, bool allowByRefMatch, object[] arguments)
+                       MethodBase SelectMethod (BindingFlags bindingAttr, MethodBase[] match, Type[] types, ParameterModifier[] modifiers, bool allowByRefMatch, ref object[] arguments)
                        {
                                MethodBase m;
                                int i, j;
@@ -685,22 +686,57 @@ namespace System.Reflection
                                        return null;
 
                                MethodBase result = null;
+                               ParameterInfo[] result_pi = null;
                                for (i = 0; i < match.Length; ++i) {
                                        m = match [i];
-                                       ParameterInfo[] args = m.GetParametersInternal ();
-                                       if (args.Length != types.Length)
-                                               continue;
-                                       if (!check_arguments (types, args, allowByRefMatch))
+                                       var pi = m.GetParametersInternal ();
+                                       var full_pi = pi;
+                                       if (pi.Length != types.Length) {
+                                               if ((bindingAttr & BindingFlags.OptionalParamBinding) == 0)
+                                                       continue;
+
+                                               List<ParameterInfo> pi_reduced = null;
+                                               for (var ii = pi.Length - 1; ii >= 0; --ii) {
+                                                       if ((pi [ii].Attributes & ParameterAttributes.HasDefault) == 0)
+                                                               break;
+
+                                                       if (pi_reduced == null) {
+                                                               pi_reduced = new List<ParameterInfo> (pi);
+                                                       }
+
+                                                       pi_reduced.RemoveAt (ii);
+                                               }
+
+                                               if (pi_reduced == null || pi_reduced.Count != types.Length)
+                                                       continue;
+
+                                               pi = pi_reduced.ToArray ();
+                                       }
+
+                                       if (!check_arguments (types, pi, allowByRefMatch))
                                                continue;
 
-                                       if (result != null)
+                                       if (result != null) {
                                                result = GetBetterMethod (result, m, types);
-                                       else
-                                               result = m;
+                                               if (result != m)
+                                                       continue;
+                                       }
+
+                                       result = m;
+                                       result_pi = full_pi;
                                }
 
-                               if (result != null || arguments == null || types.Length != arguments.Length)
+                               if (result != null) {
+                                       i = arguments == null ? 0 : arguments.Length;
+                                       Array.Resize (ref arguments, result_pi.Length);
+                                       for (; i < arguments.Length; ++i)
+                                               arguments [i] = result_pi [i].DefaultValue;
+
                                        return result;
+                               }
+
+                               if (arguments == null || types.Length != arguments.Length)
+                                       return null;
 
                                // Xamarin-5278: try with parameters that are COM objects
                                // REVIEW: do we also need to implement best method match?
index 287366173363705e12ef32961ad2fdea6bc1198c..7f7cd76b9c5c1d6ad991d2992a024618daf038c4 100644 (file)
@@ -4,7 +4,7 @@
 // Authors:
 //     Marek Safar  <marek.safar@gmail.com>
 //
-// Copyright 2011 Xamarin Inc.
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -34,7 +34,12 @@ namespace System.Reflection
        {
                public static TypeInfo GetTypeInfo (this Type type)
                {
-                       return new TypeDelegator (type);
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       // This is odd but that's what .net does
+                       var reflectable = (IReflectableType) type;
+                       return reflectable.GetTypeInfo ();
                }
        }
 }
index ad5e9436fee22d32349fc7aa8367d1f5e8b6f1e1..c053a4bbfc3e5195a4c22577524ba73d810dd099 100644 (file)
@@ -50,7 +50,12 @@ namespace System.Reflection
         * depends on them.
         */
        [StructLayout (LayoutKind.Sequential)]
-       internal class MonoGenericClass : Type
+       sealed class MonoGenericClass :
+#if NET_4_5
+               TypeInfo
+#else
+               Type
+#endif 
        {
                #region Keep in sync with object-internals.h
 #pragma warning disable 649
index f46c01a226d083de05a8f7cb9a741f2511e56347..68dd9fb88734b0cd9f2ec78f2e63fcb9e51f35c6 100644 (file)
@@ -105,7 +105,7 @@ namespace System.Reflection {
 
                static internal ParameterInfo GetReturnParameterInfo (MonoMethod method)
                {
-                       return new ParameterInfo (GetReturnType (method.mhandle), method, get_retval_marshal (method.mhandle));
+                       return ParameterInfo.New (GetReturnType (method.mhandle), method, get_retval_marshal (method.mhandle));
                }
        };
        
@@ -322,15 +322,10 @@ namespace System.Reflection {
                        return attrs;
                }
 
-               static bool ShouldPrintFullName (Type type) {
-                       return type.IsClass && (!type.IsPointer ||
-                               (!type.GetElementType ().IsPrimitive && !type.GetElementType ().IsNested));
-               }
-
                public override string ToString () {
                        StringBuilder sb = new StringBuilder ();
                        Type retType = ReturnType;
-                       if (ShouldPrintFullName (retType))
+                       if (Type.ShouldPrintFullName (retType))
                                sb.Append (retType.ToString ());
                        else
                                sb.Append (retType.Name);
@@ -347,21 +342,10 @@ namespace System.Reflection {
                                sb.Append ("]");
                        }
                        sb.Append ("(");
-                       ParameterInfo[] p = GetParametersInternal ();
-                       for (int i = 0; i < p.Length; ++i) {
-                               if (i > 0)
-                                       sb.Append (", ");
-                               Type pt = p[i].ParameterType;
-                               bool byref = pt.IsByRef;
-                               if (byref)
-                                       pt = pt.GetElementType ();
-                               if (ShouldPrintFullName (pt))
-                                       sb.Append (pt.ToString ());
-                               else
-                                       sb.Append (pt.Name);
-                               if (byref)
-                                       sb.Append (" ByRef");
-                       }
+
+                       var p = GetParametersInternal ();
+                       ParameterInfo.FormatParameters (sb, p);
+
                        if ((CallingConvention & CallingConventions.VarArgs) != 0) {
                                if (p.Length > 0)
                                        sb.Append (", ");
@@ -464,6 +448,7 @@ namespace System.Reflection {
 #endif
        }
        
+       [Serializable()]
        [StructLayout (LayoutKind.Sequential)]
        internal class MonoCMethod : ConstructorInfo, ISerializable
        {
diff --git a/mcs/class/corlib/System.Reflection/MonoParameterInfo.cs b/mcs/class/corlib/System.Reflection/MonoParameterInfo.cs
new file mode 100644 (file)
index 0000000..327166e
--- /dev/null
@@ -0,0 +1,240 @@
+// System.Reflection.ParameterInfo
+//
+// Authors:
+//   Sean MacIsaac (macisaac@ximian.com)
+//   Marek Safar (marek.safar@gmail.com)
+//
+// (C) 2001 Ximian, Inc.
+// Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin, Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if !FULL_AOT_RUNTIME
+using System.Reflection.Emit;
+#endif
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+using System.Collections.Generic;
+using System.Text;
+
+namespace System.Reflection
+{
+#if NET_4_0
+       [ComVisible (true)]
+       [ComDefaultInterfaceAttribute (typeof (_ParameterInfo))]
+       [Serializable]
+       [ClassInterfaceAttribute (ClassInterfaceType.None)]
+       [StructLayout (LayoutKind.Sequential)]
+       class MonoParameterInfo : ParameterInfo {
+#else
+       public partial class ParameterInfo {
+#endif
+
+#if !FULL_AOT_RUNTIME
+#if NET_4_0
+               internal MonoParameterInfo (ParameterBuilder pb, Type type, MemberInfo member, int position) {
+#else
+               internal ParameterInfo (ParameterBuilder pb, Type type, MemberInfo member, int position) {
+#endif
+                       this.ClassImpl = type;
+                       this.MemberImpl = member;
+                       if (pb != null) {
+                               this.NameImpl = pb.Name;
+                               this.PositionImpl = pb.Position - 1;    // ParameterInfo.Position is zero-based
+                               this.AttrsImpl = (ParameterAttributes) pb.Attributes;
+                       } else {
+                               this.NameImpl = null;
+                               this.PositionImpl = position - 1;
+                               this.AttrsImpl = ParameterAttributes.None;
+                       }
+               }
+#endif
+
+               /*FIXME this constructor looks very broken in the position parameter*/
+#if NET_4_0
+               internal MonoParameterInfo (ParameterInfo pinfo, Type type, MemberInfo member, int position) {
+#else
+               internal ParameterInfo (ParameterInfo pinfo, Type type, MemberInfo member, int position) {
+#endif
+                       this.ClassImpl = type;
+                       this.MemberImpl = member;
+                       if (pinfo != null) {
+                               this.NameImpl = pinfo.Name;
+                               this.PositionImpl = pinfo.Position - 1; // ParameterInfo.Position is zero-based
+                               this.AttrsImpl = (ParameterAttributes) pinfo.Attributes;
+                       } else {
+                               this.NameImpl = null;
+                               this.PositionImpl = position - 1;
+                               this.AttrsImpl = ParameterAttributes.None;
+                       }
+               }
+
+#if NET_4_0
+               internal MonoParameterInfo (ParameterInfo pinfo, MemberInfo member) {
+#else
+               internal ParameterInfo (ParameterInfo pinfo, MemberInfo member) {
+#endif
+                       this.ClassImpl = pinfo.ParameterType;
+                       this.MemberImpl = member;
+                       this.NameImpl = pinfo.Name;
+                       this.PositionImpl = pinfo.Position;
+                       this.AttrsImpl = pinfo.Attributes;
+                       this.DefaultValueImpl = pinfo.GetDefaultValueImpl ();
+                       //this.parent = pinfo;
+               }
+
+               /* to build a ParameterInfo for the return type of a method */
+#if NET_4_0
+               internal MonoParameterInfo (Type type, MemberInfo member, MarshalAsAttribute marshalAs) {
+#else
+               internal ParameterInfo (Type type, MemberInfo member, MarshalAsAttribute marshalAs) {
+#endif
+                       this.ClassImpl = type;
+                       this.MemberImpl = member;
+                       this.NameImpl = "";
+                       this.PositionImpl = -1; // since parameter positions are zero-based, return type pos is -1
+                       this.AttrsImpl = ParameterAttributes.Retval;
+                       this.marshalAs = marshalAs;
+               }
+
+#if NET_4_0
+               public override
+#else
+               public virtual
+#endif
+               object DefaultValue {
+                       get {
+                               if (ClassImpl == typeof (Decimal)) {
+                                       /* default values for decimals are encoded using a custom attribute */
+                                       DecimalConstantAttribute[] attrs = (DecimalConstantAttribute[])GetCustomAttributes (typeof (DecimalConstantAttribute), false);
+                                       if (attrs.Length > 0)
+                                               return attrs [0].Value;
+                               } else if (ClassImpl == typeof (DateTime)) {
+                                       /* default values for DateTime are encoded using a custom attribute */
+                                       DateTimeConstantAttribute[] attrs = (DateTimeConstantAttribute[])GetCustomAttributes (typeof (DateTimeConstantAttribute), false);
+                                       if (attrs.Length > 0)
+                                               return new DateTime (attrs [0].Ticks);
+                               }
+                               return DefaultValueImpl;
+                       }
+               }
+
+#if NET_4_0
+               public override
+#else
+               public
+#endif
+               object RawDefaultValue {
+                       get {
+                               /*FIXME right now DefaultValue doesn't throw for reflection-only assemblies. Change this once the former is fixed.*/
+                               return DefaultValue;
+                       }
+               }
+
+               public
+#if NET_4_0
+               override
+#endif
+               int MetadataToken {
+                       get {
+                               if (MemberImpl is PropertyInfo) {
+                                       PropertyInfo prop = (PropertyInfo)MemberImpl;
+                                       MethodInfo mi = prop.GetGetMethod (true);
+                                       if (mi == null)
+                                               mi = prop.GetSetMethod (true);
+
+                                       return mi.GetParametersInternal () [PositionImpl].MetadataToken;
+                               } else if (MemberImpl is MethodBase) {
+                                       return GetMetadataToken ();
+                               }
+                               throw new ArgumentException ("Can't produce MetadataToken for member of type " + MemberImpl.GetType ());
+                       }
+               }
+
+
+               public
+#if NET_4_0
+               override
+#else
+               virtual
+#endif
+               object[] GetCustomAttributes (bool inherit)
+               {
+                       return MonoCustomAttrs.GetCustomAttributes (this, inherit);
+               }
+
+               public
+#if NET_4_0
+               override
+#else
+               virtual
+#endif
+               object[] GetCustomAttributes (Type attributeType, bool inherit)
+               {
+                       return MonoCustomAttrs.GetCustomAttributes (this, attributeType, inherit);
+               }
+
+
+               public
+#if NET_4_0
+               override
+#else
+               virtual
+#endif
+               bool IsDefined( Type attributeType, bool inherit) {
+                       return MonoCustomAttrs.IsDefined (this, attributeType, inherit);
+               }
+
+#if NET_4_0
+               public override IList<CustomAttributeData> GetCustomAttributesData () {
+                       return CustomAttributeData.GetCustomAttributes (this);
+               }
+#endif
+
+
+               public
+#if NET_4_0
+               override
+#else
+               virtual
+#endif
+               Type[] GetOptionalCustomModifiers () {
+                       Type[] types = GetTypeModifiers (true);
+                       if (types == null)
+                               return Type.EmptyTypes;
+                       return types;
+               }
+
+               public
+#if NET_4_0
+               override
+#else
+               virtual
+#endif
+               Type[] GetRequiredCustomModifiers () {
+                       Type[] types = GetTypeModifiers (false);
+                       if (types == null)
+                               return Type.EmptyTypes;
+                       return types;
+               }
+       }
+}
index 9760c197006acd4dc2517510a8ed403b93e708a4..24dcf8b7470f9cb7542ef9873c1213658027b8f1 100644 (file)
@@ -1,13 +1,14 @@
 //
-// System.Reflection/MonoProperty.cs
-// The class used to represent Properties from the mono runtime.
+// MonoProperty.cs: The class used to represent Properties from the mono runtime.
 //
-// Author:
+// Authors:
 //   Paolo Molaro (lupus@ximian.com)
 //   Patrik Torstensson (patrik.torstensson@labs2.com)
+//   Marek Safar (marek.safar@gmail.com)
 //
 // (C) 2001 Ximian, Inc.  http://www.ximian.com
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin, Inc (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -35,6 +36,7 @@ using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Runtime.Serialization;
 using System.Security;
+using System.Text;
 
 namespace System.Reflection {
        
@@ -177,24 +179,25 @@ namespace System.Reflection {
                                return null;
                }
 
-               public override ParameterInfo[] GetIndexParameters()
+               public override ParameterInfo[] GetIndexParameters ()
                {
                        CachePropertyInfo (PInfo.GetMethod | PInfo.SetMethod);
-                       ParameterInfo[] res;
+                       ParameterInfo[] src;
+                       int length;
                        if (info.get_method != null) {
-                               res = info.get_method.GetParameters ();
+                               src = info.get_method.GetParametersInternal ();
+                               length = src.Length;
                        } else if (info.set_method != null) {
-                               ParameterInfo[] src = info.set_method.GetParametersInternal ();
-                               res = new ParameterInfo [src.Length - 1];
-                               Array.Copy (src, res, res.Length);
+                               src = info.set_method.GetParametersInternal ();
+                               length = src.Length - 1;
                        } else
                                return EmptyArray<ParameterInfo>.Value;
 
-                       for (int i = 0; i < res.Length; ++i) {
-                               ParameterInfo pinfo = res [i];
-                               res [i] = new ParameterInfo (pinfo, this);
+                       var dest = new ParameterInfo [length];
+                       for (int i = 0; i < length; ++i) {
+                               dest [i] = ParameterInfo.New (src [i], this);
                        }
-                       return res;     
+                       return dest;    
                }
                
                public override MethodInfo GetSetMethod (bool nonPublic)
@@ -296,7 +299,7 @@ namespace System.Reflection {
                {
                        if (index == null || index.Length == 0) {
                                /*FIXME we should check if the number of arguments matches the expected one, otherwise the error message will be pretty criptic.*/
-#if !MONOTOUCH
+#if !FULL_AOT_RUNTIME
                                if (cached_getter == null) {
                                        MethodInfo method = GetGetMethod (true);
                                        if (!DeclaringType.IsValueType && !method.ContainsGenericParameters) { //FIXME find a way to build an invoke delegate for value types.
@@ -363,8 +366,27 @@ namespace System.Reflection {
                        method.Invoke (obj, invokeAttr, binder, parms, culture);
                }
 
-               public override string ToString () {
-                       return PropertyType.ToString () + " " + Name;
+               public override string ToString ()
+               {
+                       var sb = new StringBuilder ();
+
+                       Type retType = PropertyType;
+                       if (Type.ShouldPrintFullName (retType))
+                               sb.Append (retType.ToString ());
+                       else
+                               sb.Append (retType.Name);
+
+                       sb.Append (" ");
+                       sb.Append (Name);
+
+                       var pi = GetIndexParameters ();
+                       if (pi.Length > 0) {
+                               sb.Append (" [");
+                               ParameterInfo.FormatParameters (sb, pi);
+                               sb.Append ("]");
+                       }
+
+                       return sb.ToString ();
                }
 
                public override Type[] GetOptionalCustomModifiers () {
index f62ef54f19ee6a715e08c3f441353515b7efa93c..890dffd3b2f95c63a9650990eb32f10977c87b41 100644 (file)
@@ -1,9 +1,12 @@
 // System.Reflection.ParameterInfo
 //
-// Sean MacIsaac (macisaac@ximian.com)
+// Authors:
+//   Sean MacIsaac (macisaac@ximian.com)
+//   Marek Safar (marek.safar@gmail.com)
 //
 // (C) 2001 Ximian, Inc.
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin, Inc (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,6 +34,7 @@ using System.Reflection.Emit;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Collections.Generic;
+using System.Text;
 
 namespace System.Reflection
 {
@@ -40,9 +44,9 @@ namespace System.Reflection
        [ClassInterfaceAttribute (ClassInterfaceType.None)]
        [StructLayout (LayoutKind.Sequential)]
 #if MOBILE
-       public class ParameterInfo : ICustomAttributeProvider {
+       public partial class ParameterInfo : ICustomAttributeProvider {
 #else
-       public class ParameterInfo : ICustomAttributeProvider, _ParameterInfo {
+       public partial class ParameterInfo : ICustomAttributeProvider, _ParameterInfo {
 #endif
 
                protected Type ClassImpl;
@@ -51,61 +55,11 @@ namespace System.Reflection
                protected string NameImpl;
                protected int PositionImpl;
                protected ParameterAttributes AttrsImpl;
-               private MarshalAsAttribute marshalAs;
+               internal MarshalAsAttribute marshalAs;
 
                protected ParameterInfo () {
                }
 
-#if !FULL_AOT_RUNTIME
-               internal ParameterInfo (ParameterBuilder pb, Type type, MemberInfo member, int position) {
-                       this.ClassImpl = type;
-                       this.MemberImpl = member;
-                       if (pb != null) {
-                               this.NameImpl = pb.Name;
-                               this.PositionImpl = pb.Position - 1;    // ParameterInfo.Position is zero-based
-                               this.AttrsImpl = (ParameterAttributes) pb.Attributes;
-                       } else {
-                               this.NameImpl = null;
-                               this.PositionImpl = position - 1;
-                               this.AttrsImpl = ParameterAttributes.None;
-                       }
-               }
-#endif
-
-               /*FIXME this constructor looks very broken in the position parameter*/
-               internal ParameterInfo (ParameterInfo pinfo, Type type, MemberInfo member, int position) {
-                       this.ClassImpl = type;
-                       this.MemberImpl = member;
-                       if (pinfo != null) {
-                               this.NameImpl = pinfo.Name;
-                               this.PositionImpl = pinfo.Position - 1; // ParameterInfo.Position is zero-based
-                               this.AttrsImpl = (ParameterAttributes) pinfo.Attributes;
-                       } else {
-                               this.NameImpl = null;
-                               this.PositionImpl = position - 1;
-                               this.AttrsImpl = ParameterAttributes.None;
-                       }
-               }
-
-               internal ParameterInfo (ParameterInfo pinfo, MemberInfo member) {
-                       this.ClassImpl = pinfo.ParameterType;
-                       this.MemberImpl = member;
-                       this.NameImpl = pinfo.Name;
-                       this.PositionImpl = pinfo.Position;
-                       this.AttrsImpl = pinfo.Attributes;
-                       //this.parent = pinfo;
-               }
-
-               /* to build a ParameterInfo for the return type of a method */
-               internal ParameterInfo (Type type, MemberInfo member, MarshalAsAttribute marshalAs) {
-                       this.ClassImpl = type;
-                       this.MemberImpl = member;
-                       this.NameImpl = "";
-                       this.PositionImpl = -1; // since parameter positions are zero-based, return type pos is -1
-                       this.AttrsImpl = ParameterAttributes.Retval;
-                       this.marshalAs = marshalAs;
-               }
-
                public override string ToString() {
                        Type elementType = ClassImpl;
                        while (elementType.HasElementType) {
@@ -124,28 +78,33 @@ namespace System.Reflection
                        return result;
                }
 
+               internal static void FormatParameters (StringBuilder sb, ParameterInfo[] p)
+               {
+                       for (int i = 0; i < p.Length; ++i) {
+                               if (i > 0)
+                                       sb.Append (", ");
+
+                               Type pt = p[i].ParameterType;
+                               bool byref = pt.IsByRef;
+                               if (byref)
+                                       pt = pt.GetElementType ();
+
+                               if (Type.ShouldPrintFullName (pt))
+                                       sb.Append (pt.ToString ());
+                               else
+                                       sb.Append (pt.Name);
+
+                               if (byref)
+                                       sb.Append (" ByRef");
+                       }
+               }
+
                public virtual Type ParameterType {
                        get {return ClassImpl;}
                }
                public virtual ParameterAttributes Attributes {
                        get {return AttrsImpl;}
                }
-               public virtual object DefaultValue {
-                       get {
-                               if (ClassImpl == typeof (Decimal)) {
-                                       /* default values for decimals are encoded using a custom attribute */
-                                       DecimalConstantAttribute[] attrs = (DecimalConstantAttribute[])GetCustomAttributes (typeof (DecimalConstantAttribute), false);
-                                       if (attrs.Length > 0)
-                                               return attrs [0].Value;
-                               } else if (ClassImpl == typeof (DateTime)) {
-                                       /* default values for DateTime are encoded using a custom attribute */
-                                       DateTimeConstantAttribute[] attrs = (DateTimeConstantAttribute[])GetCustomAttributes (typeof (DateTimeConstantAttribute), false);
-                                       if (attrs.Length > 0)
-                                               return new DateTime (attrs [0].Ticks);
-                               }
-                               return DefaultValueImpl;
-                       }
-               }
 
                public bool IsIn {
                        get {
@@ -190,41 +149,7 @@ namespace System.Reflection
                }
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               extern int GetMetadataToken ();
-
-               public
-#if NET_4_0
-               virtual
-#endif
-               int MetadataToken {
-                       get {
-                               if (MemberImpl is PropertyInfo) {
-                                       PropertyInfo prop = (PropertyInfo)MemberImpl;
-                                       MethodInfo mi = prop.GetGetMethod (true);
-                                       if (mi == null)
-                                               mi = prop.GetSetMethod (true);
-
-                                       return mi.GetParametersInternal () [PositionImpl].MetadataToken;
-                               } else if (MemberImpl is MethodBase) {
-                                       return GetMetadataToken ();
-                               }
-                               throw new ArgumentException ("Can't produce MetadataToken for member of type " + MemberImpl.GetType ());
-                       }
-               }
-
-               public virtual object[] GetCustomAttributes (bool inherit)
-               {
-                       return MonoCustomAttrs.GetCustomAttributes (this, inherit);
-               }
-
-               public virtual object[] GetCustomAttributes (Type attributeType, bool inherit)
-               {
-                       return MonoCustomAttrs.GetCustomAttributes (this, attributeType, inherit);
-               }
-
-               public virtual bool IsDefined( Type attributeType, bool inherit) {
-                       return MonoCustomAttrs.IsDefined (this, attributeType, inherit);
-               }
+               internal extern int GetMetadataToken ();
 
                internal object[] GetPseudoCustomAttributes () {
                        int count = 0;
@@ -257,40 +182,19 @@ namespace System.Reflection
                }                       
 
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
-               extern Type[] GetTypeModifiers (bool optional);
+               internal extern Type[] GetTypeModifiers (bool optional);
 
-               public virtual Type[] GetOptionalCustomModifiers () {
-                       Type[] types = GetTypeModifiers (true);
-                       if (types == null)
-                               return Type.EmptyTypes;
-                       return types;
-               }
-
-               public virtual Type[] GetRequiredCustomModifiers () {
-                       Type[] types = GetTypeModifiers (false);
-                       if (types == null)
-                               return Type.EmptyTypes;
-                       return types;
-               }
-
-               public virtual object RawDefaultValue {
-                       get {
-                               /*FIXME right now DefaultValue doesn't throw for reflection-only assemblies. Change this once the former is fixed.*/
-                               return DefaultValue;
-                       }
-               }
-
-#if NET_4_0
-               public virtual IList<CustomAttributeData> GetCustomAttributesData () {
-                       return CustomAttributeData.GetCustomAttributes (this);
+               internal object GetDefaultValueImpl ()
+               {
+                       return DefaultValueImpl;
                }
-#endif
 
 #if NET_4_5
                public virtual IEnumerable<CustomAttributeData> CustomAttributes {
                        get { return GetCustomAttributesData (); }
                }
 
+               [MonoTODO]
                public virtual bool HasDefaultValue {
                        get { throw new NotImplementedException (); }
                }
@@ -319,5 +223,82 @@ namespace System.Reflection
                }
 #endif
 
+#if NET_4_0
+               public virtual object DefaultValue {
+                       get { throw new NotImplementedException (); }
+               }
+
+               public virtual object RawDefaultValue {
+                       get { throw new NotImplementedException (); }
+               }
+
+               public virtual int MetadataToken {
+                       get { return 0x8000000; }
+               }
+
+               public virtual object[] GetCustomAttributes (bool inherit)
+               {
+                       return new object [0];
+               }
+
+               public virtual object[] GetCustomAttributes (Type attributeType, bool inherit)
+               {
+                       return new object [0];
+               }
+
+               public virtual bool IsDefined( Type attributeType, bool inherit) {
+                       return false;
+               }
+
+               public virtual Type[] GetRequiredCustomModifiers () {
+                       return new Type [0];
+               }
+
+               public virtual Type[] GetOptionalCustomModifiers () {
+                       return new Type [0];
+               }
+
+               public virtual IList<CustomAttributeData> GetCustomAttributesData () {
+                       throw new NotImplementedException ();
+               }
+#endif
+
+#if !FULL_AOT_RUNTIME
+               internal static ParameterInfo New (ParameterBuilder pb, Type type, MemberInfo member, int position)
+               {
+#if NET_4_0
+                       return new MonoParameterInfo (pb, type, member, position);
+#else
+                       return new ParameterInfo (pb, type, member, position);
+#endif
+               }
+#endif
+
+               internal static ParameterInfo New (ParameterInfo pinfo, Type type, MemberInfo member, int position)
+               {
+#if NET_4_0
+                       return new MonoParameterInfo (pinfo, type, member, position);
+#else
+                       return new ParameterInfo (pinfo, type, member, position);
+#endif
+               }
+
+               internal static ParameterInfo New (ParameterInfo pinfo, MemberInfo member)
+               {
+#if NET_4_0
+                       return new MonoParameterInfo (pinfo, member);
+#else
+                       return new ParameterInfo (pinfo, member);
+#endif
+               }
+
+               internal static ParameterInfo New (Type type, MemberInfo member, MarshalAsAttribute marshalAs)
+               {
+#if NET_4_0
+                       return new MonoParameterInfo (type, member, marshalAs);
+#else
+                       return new ParameterInfo (type, member, marshalAs);
+#endif 
+               }
        }
 }
index c20453d445500048dc40dec2186fc3d06f465ddd..d3284fb0d78caad9a6ef97afe1b3f6b08bb2e5b0 100644 (file)
@@ -1,8 +1,9 @@
 //
 // RuntimeReflectionExtensions.cs
 //
-// Author:
+// Authors:
 //       Martin Baulig <martin.baulig@xamarin.com>
+//       Marek Safar (marek.safar@gmail.com)
 //
 // Copyright (c) 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
+
 #if NET_4_5
-using System;
+
 using System.Collections.Generic;
 
 namespace System.Reflection
 {
        public static class RuntimeReflectionExtensions
        {
+               const BindingFlags AllMembersBindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance;
+
                public static MethodInfo GetMethodInfo (this Delegate del)
                {
-                       return del.GetMethodInfo ();
+                       if (del == null)
+                               throw new ArgumentNullException ("del");
+
+                       return del.Method;
                }
 
                public static MethodInfo GetRuntimeBaseDefinition (this MethodInfo method)
                {
-                       return method.GetRuntimeBaseDefinition ();
+                       if (method == null)
+                               throw new ArgumentNullException ("method");
+
+                       return method.GetBaseDefinition ();
                }
 
                public static EventInfo GetRuntimeEvent (this Type type, string name)
                {
-                       return type.GetRuntimeEvent (name);
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       return type.GetEvent (name);
                }
 
                public static IEnumerable<EventInfo> GetRuntimeEvents (this Type type)
                {
-                       return type.GetRuntimeEvents ();
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       return type.GetEvents (AllMembersBindingFlags);
                }
 
                public static FieldInfo GetRuntimeField (this Type type, string name)
                {
-                       return type.GetRuntimeField (name);
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       return type.GetField (name);
                }
 
                public static IEnumerable<FieldInfo> GetRuntimeFields (this Type type)
                {
-                       return type.GetRuntimeFields ();
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       return type.GetFields (AllMembersBindingFlags);
                }
 
                public static InterfaceMapping GetRuntimeInterfaceMap (this TypeInfo typeInfo, Type interfaceType)
                {
-                       return typeInfo.GetRuntimeInterfaceMap (interfaceType);
+                       if (typeInfo == null)
+                               throw new ArgumentNullException ("typeInfo");
+
+                       return typeInfo.GetInterfaceMap (interfaceType);
                }
 
                public static MethodInfo GetRuntimeMethod (this Type type, string name, Type[] parameters)
                {
-                       return type.GetRuntimeMethod (name, parameters);
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       return type.GetMethod (name, parameters);
                }
 
                public static IEnumerable<MethodInfo> GetRuntimeMethods (this Type type)
                {
-                       return type.GetRuntimeMethods ();
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       return type.GetMethods (AllMembersBindingFlags);
                }
 
                public static IEnumerable<PropertyInfo> GetRuntimeProperties (this Type type)
                {
-                       return type.GetRuntimeProperties ();
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       return type.GetProperties (AllMembersBindingFlags);
                }
 
                public static PropertyInfo GetRuntimeProperty (this Type type, string name)
                {
-                       return type.GetRuntimeProperty (name);
+                       if (type == null)
+                               throw new ArgumentNullException ("type");
+
+                       return type.GetProperty (name);
                }
        }
 }
index cc73f9504d69688b8bb4d6f15f1302d104ee6427..f08c7c8173fac856ca43f252c138503d07c52cce 100644 (file)
@@ -128,6 +128,10 @@ namespace System.Reflection {
                /// </summary>
                Serializable = 8192,
 
+#if NET_4_5
+               WindowsRuntime = 16384,
+#endif
+
                /// <summary>
                /// </summary>
                StringFormatMask = 196608,
index 8ccb618ac8fd4186aeed21f3a0afdce9eb8338ba..01b4d58841d2c7ca2899cf7f8eec8747d22bb0bc 100644 (file)
@@ -260,5 +260,19 @@ namespace System.Reflection {
                        }
                }
 
+#if NET_4_5
+               public override bool IsConstructedGenericType {
+                       get { return typeImpl.IsConstructedGenericType; }
+               }
+
+               public override bool IsAssignableFrom (TypeInfo typeInfo)
+               {
+                       if (typeInfo == null)
+                               throw new ArgumentNullException ("typeInfo");
+
+                       return IsAssignableFrom (typeInfo.AsType ());
+               }
+#endif
+
        }
 }
index b5521116e3425983470d4a31304460d06d838c47..101aadc727e8986c46c92be2eb26ebe48ee519f9 100644 (file)
@@ -41,7 +41,7 @@ namespace System.Reflection
                        return this;
                }
 
-               static readonly BindingFlags declaredFlags = BindingFlags.DeclaredOnly |
+               const BindingFlags declaredFlags = BindingFlags.DeclaredOnly |
                        BindingFlags.Public | BindingFlags.NonPublic |
                                BindingFlags.Static | BindingFlags.Instance;
                
@@ -67,13 +67,7 @@ namespace System.Reflection
                
                public virtual IEnumerable<MemberInfo> DeclaredMembers {
                        get {
-                               var ret = new List<MemberInfo> ();
-                               ret.AddRange (DeclaredConstructors);
-                               ret.AddRange (DeclaredEvents);
-                               ret.AddRange (DeclaredFields);
-                               ret.AddRange (DeclaredMethods);
-                               ret.AddRange (DeclaredProperties);
-                               return ret.AsReadOnly ();
+                               return GetMembers (declaredFlags);
                        }
                }
                
@@ -87,28 +81,15 @@ namespace System.Reflection
                public virtual Type[] GenericTypeParameters {
                        get {
                                if (!ContainsGenericParameters)
-                                       return new Type [0];
+                                       return EmptyTypes;
+
                                return GetGenericArguments ();
                        }
                }
 
-               static bool list_contains (IEnumerable<Type> types, Type type)
-               {
-                       foreach (var t in types) {
-                               if (t == type)
-                                       return true;
-                       }
-
-                       return false;
-               }
-               
                public virtual IEnumerable<Type> ImplementedInterfaces {
                        get {
-                               var all = GetInterfaces ();
-                               var baseIfaces = BaseType != null ? BaseType.GetInterfaces () : new Type [0];
-                               foreach (var iface in all)
-                                       if (!list_contains (baseIfaces, iface))
-                                               yield return iface;
+                               return GetInterfaces ();
                        }
                }
 
index 0d475e2d03a8398e1030bccdfdafd264ff618fc7..b1af3ff9e624b5d7e5dcc0d1c850a232388169b4 100644 (file)
@@ -173,7 +173,7 @@ namespace System.Runtime.CompilerServices
 
                public bool TryGetValue (TKey key, out TValue value)
                {
-                       if (key == default (TKey))
+                       if (key == null)
                                throw new ArgumentNullException ("Null key", "key");
 
                        value = default (TValue);
@@ -204,8 +204,6 @@ namespace System.Runtime.CompilerServices
 
                public TValue GetValue (TKey key, CreateValueCallback createValueCallback)
                {
-                       if (key == default (TKey))
-                               throw new ArgumentNullException ("Null key", "key");
                        if (createValueCallback == null)
                                throw new ArgumentNullException ("Null create delegate", "createValueCallback");
 
index 9bed9aaabc7190a1799eaa39d42bc20a203660b4..ab2c8cadd674d00725363363a557cc11f5d910d2 100644 (file)
@@ -52,10 +52,12 @@ namespace System.Runtime.CompilerServices
 
                public void GetResult ()
                {
-                       if (task.Status != TaskStatus.RanToCompletion) {
+                       if (!task.IsCompleted)
+                               task.WaitCore (Timeout.Infinite, CancellationToken.None);
+
+                       if (task.Status != TaskStatus.RanToCompletion)
                                // Merge current and dispatched stack traces if there is any
                                ExceptionDispatchInfo.Capture (HandleUnexpectedTaskResult (task)).Throw ();
-                       }
                }
 
                internal static Exception HandleUnexpectedTaskResult (Task task)
@@ -66,7 +68,7 @@ namespace System.Runtime.CompilerServices
                        case TaskStatus.Faulted:
                                return task.Exception.InnerException;
                        default:
-                               return new InvalidOperationException ("The task has not finished yet");
+                               throw new ArgumentException ("Should never be reached");
                        }
                }
 
index bd1b0d4401f8e31fccf8a27c791a618f97e02e68..f12db5fe57814cf91ada45c557aa4c5aa1b581fa 100644 (file)
@@ -29,6 +29,7 @@
 
 #if NET_4_5
 
+using System.Threading;
 using System.Threading.Tasks;
 using System.Runtime.ExceptionServices;
 
@@ -51,6 +52,9 @@ namespace System.Runtime.CompilerServices
 
                public TResult GetResult ()
                {
+                       if (!task.IsCompleted)
+                               task.WaitCore (Timeout.Infinite, CancellationToken.None);
+
                        if (task.Status != TaskStatus.RanToCompletion)
                                ExceptionDispatchInfo.Capture (TaskAwaiter.HandleUnexpectedTaskResult (task)).Throw ();
 
index a3134933a312865392cb309f979a53957438d7f3..a66a8dc7ae222b5a49ceca16ac8e6f8334b2c474 100644 (file)
@@ -187,6 +187,12 @@ namespace System.Runtime.InteropServices
                        throw new NotImplementedException ();
                }
 
+#if NET_4_5
+               public static IntPtr CreateAggregatedObject<T> (IntPtr pOuter, T o) {
+                       return CreateAggregatedObject (pOuter, (object)o);
+               }
+#endif
+
 #if !FULL_AOT_RUNTIME
                public static object CreateWrapperOfType (object o, Type t)
                {
@@ -204,12 +210,24 @@ namespace System.Runtime.InteropServices
 
                        return ComInteropProxy.GetProxy (co.IUnknown, t).GetTransparentProxy ();
                }
+
+#if NET_4_5
+               public static TWrapper CreateWrapperOfType<T, TWrapper> (T o) {
+                       return (TWrapper)CreateWrapperOfType ((object)o, typeof (TWrapper));
+               }
+#endif
 #endif
 
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                [ComVisible (true)]
                public extern static void DestroyStructure (IntPtr ptr, Type structuretype);
 
+#if NET_4_5
+               public static void DestroyStructure<T> (IntPtr ptr) {
+                       DestroyStructure (ptr, typeof (T));
+               }
+#endif                 
+
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                public extern static void FreeBSTR (IntPtr ptr);
 
@@ -329,6 +347,12 @@ namespace System.Runtime.InteropServices
 #endif
                }
 
+#if NET_4_5
+               public static IntPtr GetComInterfaceForObject<T, TInterface> (T o) {
+                       return GetComInterfaceForObject ((object)o, typeof (T));
+               }
+#endif                 
+
                [MonoTODO]
                public static IntPtr GetComInterfaceForObjectInContext (object o, Type t)
                {
@@ -463,6 +487,12 @@ namespace System.Runtime.InteropServices
                        Marshal.StructureToPtr(vt, pDstNativeVariant, false);
                }
 
+#if NET_4_5
+               public static void GetNativeVariantForObject<T> (T obj, IntPtr pDstNativeVariant) {
+                       GetNativeVariantForObject ((object)obj, pDstNativeVariant);
+               }
+#endif
+
 #if !MOBILE
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                private static extern object GetObjectForCCW (IntPtr pUnk);
@@ -489,6 +519,13 @@ namespace System.Runtime.InteropServices
                        return vt.GetValue();
                }
 
+#if NET_4_5
+               public static T GetObjectForNativeVariant<T> (IntPtr pSrcNativeVariant) {
+                       Variant vt = (Variant)Marshal.PtrToStructure(pSrcNativeVariant, typeof(Variant));
+                       return (T)vt.GetValue();
+               }
+#endif
+
                public static object[] GetObjectsForNativeVariants (IntPtr aSrcNativeVariant, int cVars)
                {
                        if (cVars < 0)
@@ -500,6 +537,18 @@ namespace System.Runtime.InteropServices
                        return objects;
                }
 
+#if NET_4_5
+               public static T[] GetObjectsForNativeVariants<T> (IntPtr aSrcNativeVariant, int cVars) {
+                       if (cVars < 0)
+                               throw new ArgumentOutOfRangeException ("cVars", "cVars cannot be a negative number.");
+                       T[] objects = new T[cVars];
+                       for (int i = 0; i < cVars; i++)
+                               objects[i] = GetObjectForNativeVariant<T> ((IntPtr)(aSrcNativeVariant.ToInt64 () +
+                                       i * SizeOf (typeof(Variant))));
+                       return objects;
+               }
+#endif
+
                [MonoTODO]
                public static int GetStartComSlot (Type t)
                {
@@ -639,6 +688,12 @@ namespace System.Runtime.InteropServices
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                public extern static IntPtr OffsetOf (Type t, string fieldName);
 
+#if NET_4_5
+               public static IntPtr OffsetOf<T> (string fieldName) {
+                       return OffsetOf (typeof (T), fieldName);
+               }
+#endif
+
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                public extern static void Prelink (MethodInfo m);
 
@@ -687,6 +742,16 @@ namespace System.Runtime.InteropServices
                [ComVisible (true)]
                public extern static object PtrToStructure (IntPtr ptr, Type structureType);
 
+#if NET_4_5
+               public static void PtrToStructure<T> (IntPtr ptr, T structure) {
+                       PtrToStructure (ptr, (object)structure);
+               }
+
+               public static object PtrToStructure<T> (IntPtr ptr) {
+                       return PtrToStructure (ptr, typeof (T));
+               }
+#endif
+
 #if !MOBILE
                [MethodImplAttribute (MethodImplOptions.InternalCall)]
                private extern static int QueryInterfaceInternal (IntPtr pUnk, ref Guid iid, out IntPtr ppv);
@@ -913,6 +978,16 @@ namespace System.Runtime.InteropServices
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                public extern static int SizeOf (Type t);
 
+#if NET_4_5
+               public static int SizeOf<T> () {
+                       return SizeOf (typeof (T));
+               }
+
+               public static int SizeOf<T> (T structure) {
+                       return SizeOf (structure.GetType ());
+               }
+#endif
+
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                public extern static IntPtr StringToBSTR (string s);
 
@@ -1059,6 +1134,12 @@ namespace System.Runtime.InteropServices
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                public extern static void StructureToPtr (object structure, IntPtr ptr, bool fDeleteOld);
 
+#if NET_4_5
+               public static void StructureToPtr<T> (T structure, IntPtr ptr, bool fDeleteOld) {
+                       StructureToPtr ((object)structure, ptr, fDeleteOld);
+               }
+#endif
+
                public static void ThrowExceptionForHR (int errorCode) {
                        Exception ex = GetExceptionForHR (errorCode);
                        if (ex != null)
@@ -1074,6 +1155,12 @@ namespace System.Runtime.InteropServices
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                public extern static IntPtr UnsafeAddrOfPinnedArrayElement (Array arr, int index);
 
+#if NET_4_5
+               public static IntPtr UnsafeAddrOfPinnedArrayElement<T> (T[] arr, int index) {
+                       return UnsafeAddrOfPinnedArrayElement ((Array)arr, index);
+               }
+#endif
+
                public static void WriteByte (IntPtr ptr, byte val)
                {
                        unsafe {
@@ -1266,6 +1353,12 @@ namespace System.Runtime.InteropServices
                        return GetDelegateForFunctionPointerInternal (ptr, t);
                }
 
+#if NET_4_5
+               public static Delegate GetDelegateForFunctionPointer<T> (IntPtr ptr) {
+                       return GetDelegateForFunctionPointer (ptr, typeof (T));
+               }
+#endif
+
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                private static extern IntPtr GetFunctionPointerForDelegateInternal (Delegate d);
                
@@ -1276,5 +1369,14 @@ namespace System.Runtime.InteropServices
                        
                        return GetFunctionPointerForDelegateInternal (d);
                }
+
+#if NET_4_5
+               public static IntPtr GetFunctionPointerForDelegate<TDelegate> (TDelegate d) {
+                       if (d == null)
+                               throw new ArgumentNullException ("d");
+                       
+                       return GetFunctionPointerForDelegateInternal ((Delegate)(object)d);
+               }
+#endif
        }
 }
index 695d3e562f1a79ae7d21d888d7498991f7bba975..8274d34596a98b51ee9da79d8a2ac74ba614dd96 100644 (file)
@@ -34,6 +34,9 @@ namespace System.Runtime
        {
                Batch = 0,
                Interactive = 1,
-               LowLatency = 2
+               LowLatency = 2,
+#if NET_4_5
+               SustainedLowLatency = 3
+#endif                 
        }
 }
index 4d05e06ac4e6c55fdafb8d188b43b0fdab79b76e..32bf463ec4deeae42495f5c5f2ae381b83d0c02d 100755 (executable)
@@ -165,7 +165,21 @@ namespace System.Security.Cryptography {
                        case "tripledes":
                        case "3des":
                                return new TripleDESCryptoServiceProvider ();
-                       default:
+                       case "x509chain":
+                               name = "System.Security.Cryptography.X509Certificates.X509Chain, System";
+                               break;
+                       case "aes":
+                               name = "System.Security.Cryptography.AesManaged, System.Core";
+                               break;
+                       }
+
+                       try {
+                               // last resort, the request type might be available (if care is taken for the type not to be linked 
+                               // away) and that can allow some 3rd party code to work (e.g. extra algorithms) and make a few more
+                               // unit tests happy
+                               return Activator.CreateInstance (Type.GetType (name));
+                       }
+                       catch {
                                // method doesn't throw any exception
                                return null;
                        }
index 7f561f62c4507c3087c4c10cc1c1138d20112041..3d72d23a7bdd8f080f86f4fea135004791588510 100644 (file)
@@ -63,7 +63,7 @@ namespace System.Security.Cryptography {
                // least in the unit tests).
 
                public DSACryptoServiceProvider ()
-                       : this (1024, null)
+                       : this (1024)
                {
                }
 
@@ -73,11 +73,19 @@ namespace System.Security.Cryptography {
                }
 
                public DSACryptoServiceProvider (int dwKeySize)
-                       : this (dwKeySize, null)
                {
+                       Common (dwKeySize, false);
                }
 
                public DSACryptoServiceProvider (int dwKeySize, CspParameters parameters)
+               {
+                       bool has_parameters = parameters != null;
+                       Common (dwKeySize, has_parameters);
+                       if (has_parameters)
+                               Common (parameters);
+               }
+
+               void Common (int dwKeySize, bool parameters) 
                {
                        LegalKeySizesValue = new KeySizes [1];
                        LegalKeySizesValue [0] = new KeySizes (512, 1024, 64);
@@ -87,21 +95,24 @@ namespace System.Security.Cryptography {
                        dsa = new DSAManaged (dwKeySize);
                        dsa.KeyGenerated += new DSAManaged.KeyGeneratedEventHandler (OnKeyGenerated);
 
-                       persistKey = (parameters != null);
-                       if (parameters == null) {
-                               parameters = new CspParameters (PROV_DSS_DH);
-                               if (useMachineKeyStore)
-                                       parameters.Flags |= CspProviderFlags.UseMachineKeyStore;
-                               store = new KeyPairPersistence (parameters);
-                               // no need to load - it cannot exists
-                       }
-                       else {
-                               store = new KeyPairPersistence (parameters);
-                               store.Load ();
-                               if (store.KeyValue != null) {
-                                       persisted = true;
-                                       this.FromXmlString (store.KeyValue);
-                               }
+                       persistKey = parameters;
+                       if (parameters)
+                               return;
+
+                       var p = new CspParameters (PROV_DSS_DH);
+                       if (useMachineKeyStore)
+                               p.Flags |= CspProviderFlags.UseMachineKeyStore;
+                       store = new KeyPairPersistence (p);
+                       // no need to load - it cannot exists
+               }
+
+               void Common (CspParameters parameters)
+               {
+                       store = new KeyPairPersistence (parameters);
+                       store.Load ();
+                       if (store.KeyValue != null) {
+                               persisted = true;
+                               this.FromXmlString (store.KeyValue);
                        }
                }
 
index 6f926b7cfb7a3309172e801ffa2a557a08b48c25..6a7284a036e9e4a2f60d4de8ce7bb9d8b3dff591 100644 (file)
@@ -3,10 +3,11 @@
 //
 // Authors:
 //     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot (sebastien@ximian.com)
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,6 +32,8 @@
 using System.Globalization;
 using System.Runtime.InteropServices;
 
+using Mono.Security.Cryptography;
+
 namespace System.Security.Cryptography {
 
        [ComVisible (true)]
@@ -52,14 +55,10 @@ namespace System.Security.Cryptography {
                        if (strName == null)
                                throw new ArgumentNullException ("strName");
 
-                       try {
-                               // just to test, we don't need the object
-                               SHA1.Create (strName);
-                       }
-                       catch (InvalidCastException) {
+                       var instance = PKCS1.CreateFromName (strName) as SHA1;
+                       if (instance == null)
                                throw new CryptographicUnexpectedOperationException (
                                        Locale.GetText ("DSA requires SHA1"));
-                       }
                }
 
                public override void SetKey (AsymmetricAlgorithm key)
index 1eaa37e2d2c828e297b017c6c6b76d24a8a07c4c..d4e775316d98c54d2614d9c1036f6d5278c5b61f 100644 (file)
@@ -3,10 +3,11 @@
 //
 // Authors:
 //     Thomas Neidhart (tome@sbox.tugraz.at)
-//     Sebastien Pouliot (sebastien@ximian.com)
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // Portions (C) 2002 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -31,6 +32,8 @@
 using System.Globalization;
 using System.Runtime.InteropServices;
 
+using Mono.Security.Cryptography;
+
 namespace System.Security.Cryptography {
 
        [ComVisible (true)]
@@ -62,14 +65,10 @@ namespace System.Security.Cryptography {
                        if (strName == null)
                                throw new ArgumentNullException ("strName");
 
-                       try {
-                               // just to test, we don't need the object
-                               SHA1.Create (strName);
-                       }
-                       catch (InvalidCastException) {
+                       var instance = PKCS1.CreateFromName (strName) as SHA1;
+                       if (instance == null)
                                throw new CryptographicUnexpectedOperationException (
                                        Locale.GetText ("DSA requires SHA1"));
-                       }
                }
 
                public override void SetKey (AsymmetricAlgorithm key)
index e2c20e29e1cd2fb33a287d65c6b4251b6e304d6b..e83eb67e69e857bd494e65119123410ebb77159e 100644 (file)
@@ -2,10 +2,11 @@
 // HMAC.cs: Generic HMAC inplementation
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -167,6 +168,15 @@ namespace System.Security.Cryptography {
                        Array.Clear (buf, 0, buf.Length);
                }
 
+#if FULL_AOT_RUNTIME
+               // Allow using HMAC without bringing (most of) the whole crypto stack (using CryptoConfig)
+               // or even without bringing all the hash algorithms (using a common switch)
+               internal void SetHash (string name, HashAlgorithm instance)
+               {
+                       _hashName = name; 
+                       _algo = instance;
+               }
+#endif
                // static methods
 
                public static new HMAC Create () 
index f7414bf379bf6268e32ec0b077b8869fdf280d47..0f0ea842cf7469391b0ae67a075417e005cdb859 100644 (file)
@@ -2,10 +2,11 @@
 // HMACMD5.cs: HMAC implementation using MD5
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -50,7 +51,11 @@ namespace System.Security.Cryptography {
 
                public HMACMD5 (byte[] key) : base ()
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("MD5", new MD5CryptoServiceProvider ());
+#else
                        HashName = "MD5";
+#endif
                        HashSizeValue = 128;
                        Key = key;
                }
index 2ccc52ef35b4a3f9a37d4cbac21a8fbb41d7e1ff..38bf12b7a9d63f7bb39820604dc228974120d848 100644 (file)
@@ -2,10 +2,11 @@
 // HMACRIPEMD160.cs: HMAC implementation using RIPEMD160
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -43,7 +44,11 @@ namespace System.Security.Cryptography {
 
                public HMACRIPEMD160 (byte[] key) : base () 
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("RIPEMD160", new RIPEMD160Managed ());
+#else
                        HashName = "RIPEMD160";
+#endif
                        HashSizeValue = 160;
                        Key = key;
                }
index 2b476ac3577b3dcd7fcdf000769bd45f74c09f1a..baf644a6ab12166bc9feb55f1f6c6e4060653784 100644 (file)
@@ -2,10 +2,11 @@
 // HMACSHA1.cs: Handles HMAC with SHA-1
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -57,7 +58,11 @@ namespace System.Security.Cryptography {
 
                public HMACSHA1 (byte[] key)
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("SHA1", new SHA1Managed ());
+#else
                        HashName = "SHA1";
+#endif
                        HashSizeValue = 160;
                        Key = key;
                }
index 1bbe86b8aac0870ca41581a8f60d38de2bb2ce12..14c208d1fcf0f7d1464ffe8890f1c35cbe1ab438 100644 (file)
@@ -2,10 +2,11 @@
 // HMACSHA256.cs: HMAC implementation using SHA256
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -43,7 +44,11 @@ namespace System.Security.Cryptography {
 
                public HMACSHA256 (byte[] key) : base () 
                {
+#if FULL_AOT_RUNTIME
+                       SetHash ("SHA256", new SHA256Managed ());
+#else
                        HashName = "SHA256";
+#endif
                        HashSizeValue = 256;
                        Key = key;
                }
index a88377c04595788dfc6c1fef37f18e6bdc7a8ff7..a25b0e71f4e5a40693492b5d3ed513ec948bbccd 100644 (file)
@@ -2,10 +2,11 @@
 // HMACSHA384.cs: HMAC implementation using SHA384
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -36,24 +37,31 @@ namespace System.Security.Cryptography {
        [ComVisible (true)]
        public class HMACSHA384 : HMAC {
 
-               static bool legacy_mode;
                private bool legacy;
 
+#if !FULL_AOT_RUNTIME
+               static bool legacy_mode;
+
                static HMACSHA384 ()
                {
                        legacy_mode = (Environment.GetEnvironmentVariable ("legacyHMACMode") == "1");
                }
+#endif
 
                public HMACSHA384 () 
                        : this (KeyBuilder.Key (8))
                {
-                       ProduceLegacyHmacValues = legacy_mode;
                }
 
                public HMACSHA384 (byte[] key)
                {
+#if FULL_AOT_RUNTIME
+                       BlockSizeValue = 128;
+                       SetHash ("SHA384", new SHA384Managed ());
+#else
                        ProduceLegacyHmacValues = legacy_mode;
                        HashName = "SHA384";
+#endif
                        HashSizeValue = 384;
                        Key = key;
                }
index eb40da4a94ffb56b547cfa5b53fff3b00d811a4e..2f7c16632a16a937da97cbd62ed905fa4977a761 100644 (file)
@@ -2,10 +2,11 @@
 // HMACSHA512.cs: HMAC implementation using SHA512
 //
 // Author:
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005, 2007 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -36,24 +37,31 @@ namespace System.Security.Cryptography {
        [ComVisible (true)]
        public class HMACSHA512 : HMAC {
 
-               static bool legacy_mode;
                private bool legacy;
 
+#if !FULL_AOT_RUNTIME
+               static bool legacy_mode;
+
                static HMACSHA512 ()
                {
                        legacy_mode = (Environment.GetEnvironmentVariable ("legacyHMACMode") == "1");
                }
+#endif
 
                public HMACSHA512 ()
                        : this (KeyBuilder.Key (8))
                {
-                       ProduceLegacyHmacValues = legacy_mode;
                }
 
                public HMACSHA512 (byte[] key)
                {
+#if FULL_AOT_RUNTIME
+                       BlockSizeValue = 128;
+                       SetHash ("SHA512", new SHA512Managed ());
+#else
                        ProduceLegacyHmacValues = legacy_mode;
                        HashName = "SHA512";
+#endif
                        HashSizeValue = 512;
                        Key = key;
                }
index 270735f28b6b8675abc86f5f89f969f0d0d7b037..cd18c941dfd9f8461d06672b95d0cfbd911cda34 100644 (file)
@@ -2,10 +2,11 @@
 // MACTripleDES.cs: Handles MAC with TripleDES
 //
 // Author:
-//     Sebastien Pouliot (sebastien@ximian.com)
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2002, 2003 Motus Technologies Inc. (http://www.motus.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -48,14 +49,14 @@ namespace System.Security.Cryptography {
        
                public MACTripleDES ()
                {
-                       Setup ("TripleDES", null);
+                       Setup (null, null);
                }
        
                public MACTripleDES (byte[] rgbKey)
                {
                        if (rgbKey == null)
                                throw new ArgumentNullException ("rgbKey");
-                       Setup ("TripleDES", rgbKey);
+                       Setup (null, rgbKey);
                }
        
                public MACTripleDES (string strTripleDES, byte[] rgbKey) 
@@ -63,14 +64,14 @@ namespace System.Security.Cryptography {
                        if (rgbKey == null)
                                throw new ArgumentNullException ("rgbKey");
                        if (strTripleDES == null)
-                               Setup ("TripleDES", rgbKey);
+                               Setup (null, rgbKey);
                        else
-                               Setup (strTripleDES, rgbKey);
+                               Setup (TripleDES.Create (strTripleDES), rgbKey);
                }
        
-               private void Setup (string strTripleDES, byte[] rgbKey) 
+               private void Setup (TripleDES tripleDES, byte[] rgbKey) 
                {
-                       tdes = TripleDES.Create (strTripleDES);
+                       tdes = tripleDES ?? TripleDES.Create ();
                        // default padding (as using in Fx 1.0 and 1.1)
                        tdes.Padding = PaddingMode.Zeros;
                        // if rgbKey is null we keep the randomly generated key
index 4c14453e4ed6944d6155154b44c73c2589bace7b..4cd3779172c0cecba59890f2de6cb83dbb5b89ee 100644 (file)
@@ -52,6 +52,7 @@ namespace System.Security.Cryptography {
                private RSAManaged rsa;
        
                public RSACryptoServiceProvider ()
+                       : this (1024)
                {
                        // Here it's not clear if we need to generate a keypair
                        // (note: MS implementation generates a keypair in this case).
@@ -61,29 +62,31 @@ namespace System.Security.Cryptography {
                        // So we'll generate the keypair only when (and if) it's being
                        // used (or exported). This should save us a lot of time (at 
                        // least in the unit tests).
-                       Common (1024, null);
                }
        
                public RSACryptoServiceProvider (CspParameters parameters) 
+                       : this (1024, parameters)
                {
-                       Common (1024, parameters);
                        // no keypair generation done at this stage
                }
        
                public RSACryptoServiceProvider (int dwKeySize) 
                {
                        // Here it's clear that we need to generate a new keypair
-                       Common (dwKeySize, null);
+                       Common (dwKeySize, false);
                        // no keypair generation done at this stage
                }
        
                public RSACryptoServiceProvider (int dwKeySize, CspParameters parameters) 
                {
-                       Common (dwKeySize, parameters);
+                       bool has_parameters = parameters != null;
+                       Common (dwKeySize, has_parameters);
+                       if (has_parameters)
+                               Common (parameters);
                        // no keypair generation done at this stage
                }
        
-               private void Common (int dwKeySize, CspParameters p
+               void Common (int dwKeySize, bool parameters
                {
                        // Microsoft RSA CSP can do between 384 and 16384 bits keypair
                        LegalKeySizesValue = new KeySizes [1];
@@ -93,26 +96,29 @@ namespace System.Security.Cryptography {
                        rsa = new RSAManaged (KeySize);
                        rsa.KeyGenerated += new RSAManaged.KeyGeneratedEventHandler (OnKeyGenerated);
 
-                       persistKey = (p != null);
-                       if (p == null) {
-                               p = new CspParameters (PROV_RSA_FULL);
-                               if (useMachineKeyStore)
-                                       p.Flags |= CspProviderFlags.UseMachineKeyStore;
-                               store = new KeyPairPersistence (p);
-                               // no need to load - it cannot exists
-                       }
-                       else {
-                               store = new KeyPairPersistence (p);
-                               bool exists = store.Load ();
-                               bool required = (p.Flags & CspProviderFlags.UseExistingKey) != 0;
+                       persistKey = parameters;
+                       if (parameters)
+                               return;
 
-                               if (required && !exists)
-                                       throw new CryptographicException ("Keyset does not exist");
+                       // no need to load - it cannot exists
+                       var p = new CspParameters (PROV_RSA_FULL);
+                       if (useMachineKeyStore)
+                               p.Flags |= CspProviderFlags.UseMachineKeyStore;
+                       store = new KeyPairPersistence (p);
+               }
 
-                               if (store.KeyValue != null) {
-                                       persisted = true;
-                                       this.FromXmlString (store.KeyValue);
-                               }
+               void Common (CspParameters p)
+               {
+                       store = new KeyPairPersistence (p);
+                       bool exists = store.Load ();
+                       bool required = (p.Flags & CspProviderFlags.UseExistingKey) != 0;
+
+                       if (required && !exists)
+                               throw new CryptographicException ("Keyset does not exist");
+
+                       if (store.KeyValue != null) {
+                               persisted = true;
+                               FromXmlString (store.KeyValue);
                        }
                }
 
@@ -229,7 +235,7 @@ namespace System.Security.Cryptography {
 
                        HashAlgorithm hash = null;
                        if (halg is String)
-                               hash = HashAlgorithm.Create ((String)halg);
+                               hash = GetHashFromString ((string) halg);
                        else if (halg is HashAlgorithm)
                                hash = (HashAlgorithm) halg;
                        else if (halg is Type)
@@ -237,8 +243,25 @@ namespace System.Security.Cryptography {
                        else
                                throw new ArgumentException ("halg");
 
+                       if (hash == null)
+                               throw new ArgumentException (
+                                               "Could not find provider for halg='" + halg + "'.",
+                                               "halg");
+
                        return hash;
                }
+
+               private HashAlgorithm GetHashFromString (string name)
+               {
+                       HashAlgorithm hash = HashAlgorithm.Create (name);
+                       if (hash != null)
+                               return hash;
+                       try {
+                               return HashAlgorithm.Create (GetHashNameFromOID (name));
+                       } catch (CryptographicException e) {
+                               throw new ArgumentException (e.Message, "halg", e);
+                       }
+               }
        
                // NOTE: this method can work with ANY configured (OID in machine.config) 
                // HashAlgorithm descendant
index 1433045febb5bc81d002651de140174563522e60..63624523f3cb1b7097943598c402aefe9b7124a8 100644 (file)
@@ -77,7 +77,7 @@ namespace System.Security.Cryptography {
                        if (rgbSignature == null)
                                throw new ArgumentNullException ("rgbSignature");
 
-                       return PKCS1.Verify_v15 (rsa, HashAlgorithm.Create (hashName), rgbHash, rgbSignature);
+                       return PKCS1.Verify_v15 (rsa, hashName, rgbHash, rgbSignature);
                }
        }
 }
index bb6fdf64298125f49651cbc52d3cbc4599d093cb..96b40a2ec8c741d77689e79d6f34d6de5a7b24ad 100644 (file)
@@ -36,7 +36,7 @@ namespace System.Security.Cryptography {
        public class RSAPKCS1SignatureFormatter : AsymmetricSignatureFormatter {
        
                private RSA rsa;
-               private HashAlgorithm hash;
+               private string hash;
        
                public RSAPKCS1SignatureFormatter ()
                {
@@ -65,7 +65,9 @@ namespace System.Security.Cryptography {
        
                public override void SetHashAlgorithm (string strName) 
                {
-                       hash = HashAlgorithm.Create (strName);
+                       if (strName == null)
+                               throw new ArgumentNullException ("strName");
+                       hash = strName;
                }
        
                public override void SetKey (AsymmetricAlgorithm key) 
index 0f0f05a54d15c8e71edf6515982097ca6b984752..b862ed03cc5cce91512f2a1ed49908c06aa334f5 100644 (file)
@@ -6,6 +6,7 @@
 //
 // (C) 2004 Novell (http://www.novell.com)
 // Copyright (C) 2004-2005 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -32,6 +33,81 @@ using System.Runtime.InteropServices;
 
 namespace System.Security.Cryptography {
 
+       static class Base64Helper {
+
+               private const int inputBlockSize = 3;
+               private const int outputBlockSize = 4;
+
+               internal static void TransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
+               {
+                       byte[] lookup = Base64Constants.EncodeTable;
+                       
+                       int b1 = inputBuffer [inputOffset];
+                       int b2 = inputBuffer [inputOffset + 1];
+                       int b3 = inputBuffer [inputOffset + 2];
+                       
+                       outputBuffer [outputOffset] = lookup [b1 >> 2];
+                       outputBuffer [outputOffset+1] = lookup [((b1 << 4) & 0x30) | (b2 >> 4)];
+                       outputBuffer [outputOffset+2] = lookup [((b2 << 2) & 0x3c) | (b3 >> 6)];
+                       outputBuffer [outputOffset+3] = lookup [b3 & 0x3f];
+               }
+
+               // Mono System.Convert depends on the ability to process multiple blocks                
+               internal static byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
+               {
+                       int blockLen = inputBlockSize;
+                       int outLen = outputBlockSize;
+                       int fullBlocks = inputCount / blockLen;
+                       int tail = inputCount % blockLen;
+                       
+                       byte[] res = new byte [(inputCount != 0)
+                                              ? ((inputCount + 2) / blockLen) * outLen
+                                              : 0];
+                       
+                       int outputOffset = 0;
+                       
+                       for (int i = 0; i < fullBlocks; i++) {
+                               TransformBlock (inputBuffer, inputOffset, blockLen, res, outputOffset);
+                               inputOffset += blockLen;
+                               outputOffset += outLen;
+                       }
+                       
+                       byte[] lookup = Base64Constants.EncodeTable;
+                       int b1,b2;
+                       
+                       // When fewer than 24 input bits are available
+                       // in an input group, zero bits are added
+                       // (on the right) to form an integral number of
+                       // 6-bit groups.
+                       switch (tail) {
+                       case 0:
+                               break;
+                       case 1:
+                               b1 = inputBuffer [inputOffset];
+                               res [outputOffset] = lookup [b1 >> 2];
+                               res [outputOffset+1] = lookup [(b1 << 4) & 0x30];
+                               
+                               // padding
+                               res [outputOffset+2] = (byte)'=';
+                               res [outputOffset+3] = (byte)'=';
+                               break;
+                               
+                       case 2:
+                               b1 = inputBuffer [inputOffset];
+                               b2 = inputBuffer [inputOffset + 1];
+                               res [outputOffset] = lookup [b1 >> 2];
+                               res [outputOffset+1] = lookup [((b1 << 4) & 0x30) | (b2 >> 4)];
+                               res [outputOffset+2] = lookup [(b2 << 2) & 0x3c];
+                               
+                               // one-byte padding
+                               res [outputOffset+3] = (byte)'=';
+                               break;
+                       }
+                       
+                       return res;
+               }
+       }
+
        [ComVisible (true)]
        public class ToBase64Transform : ICryptoTransform {
 
@@ -119,24 +195,10 @@ namespace System.Security.Cryptography {
 //                     if (inputCount != this.InputBlockSize)
 //                             throw new CryptographicException (Locale.GetText ("Invalid input length"));
 
-                       InternalTransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
+                       Base64Helper.TransformBlock (inputBuffer, inputOffset, inputCount, outputBuffer, outputOffset);
                        return this.OutputBlockSize;
                }
 
-               internal static void InternalTransformBlock (byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset)
-               {
-                       byte[] lookup = Base64Constants.EncodeTable;
-
-                       int b1 = inputBuffer [inputOffset];
-                       int b2 = inputBuffer [inputOffset + 1];
-                       int b3 = inputBuffer [inputOffset + 2];
-
-                       outputBuffer [outputOffset] = lookup [b1 >> 2];
-                       outputBuffer [outputOffset+1] = lookup [((b1 << 4) & 0x30) | (b2 >> 4)];
-                       outputBuffer [outputOffset+2] = lookup [((b2 << 2) & 0x3c) | (b3 >> 6)];
-                       outputBuffer [outputOffset+3] = lookup [b3 & 0x3f];
-               }
-
                public byte[] TransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
                {
                        if (m_disposed)
@@ -150,62 +212,7 @@ namespace System.Security.Cryptography {
                        if (inputCount > this.InputBlockSize)
                                throw new ArgumentOutOfRangeException (Locale.GetText ("Invalid input length"));
                        
-                       return InternalTransformFinalBlock (inputBuffer, inputOffset, inputCount);
-               }
-               
-               // Mono System.Convert depends on the ability to process multiple blocks                
-               internal static byte[] InternalTransformFinalBlock (byte[] inputBuffer, int inputOffset, int inputCount)
-               {
-                       int blockLen = inputBlockSize;
-                       int outLen = outputBlockSize;
-                       int fullBlocks = inputCount / blockLen;
-                       int tail = inputCount % blockLen;
-
-                       byte[] res = new byte [(inputCount != 0)
-                                               ? ((inputCount + 2) / blockLen) * outLen
-                                               : 0];
-
-                       int outputOffset = 0;
-
-                       for (int i = 0; i < fullBlocks; i++) {
-                               InternalTransformBlock (inputBuffer, inputOffset, blockLen, res, outputOffset);
-                               inputOffset += blockLen;
-                               outputOffset += outLen;
-                       }
-
-                       byte[] lookup = Base64Constants.EncodeTable;
-                       int b1,b2;
-
-                       // When fewer than 24 input bits are available
-                       // in an input group, zero bits are added
-                       // (on the right) to form an integral number of
-                       // 6-bit groups.
-                       switch (tail) {
-                       case 0:
-                               break;
-                       case 1:
-                               b1 = inputBuffer [inputOffset];
-                               res [outputOffset] = lookup [b1 >> 2];
-                               res [outputOffset+1] = lookup [(b1 << 4) & 0x30];
-
-                               // padding
-                               res [outputOffset+2] = (byte)'=';
-                               res [outputOffset+3] = (byte)'=';
-                               break;
-
-                       case 2:
-                               b1 = inputBuffer [inputOffset];
-                               b2 = inputBuffer [inputOffset + 1];
-                               res [outputOffset] = lookup [b1 >> 2];
-                               res [outputOffset+1] = lookup [((b1 << 4) & 0x30) | (b2 >> 4)];
-                               res [outputOffset+2] = lookup [(b2 << 2) & 0x3c];
-
-                               // one-byte padding
-                               res [outputOffset+3] = (byte)'=';
-                               break;
-                       }
-
-                       return res;
+                       return Base64Helper.TransformFinalBlock (inputBuffer, inputOffset, inputCount);
                }
        }
 }
index 14f07dd98c80a4dab5f53210e1baf956e00f9c5f..8c431515299405def6f815633129ca93eafda67a 100644 (file)
@@ -244,7 +244,7 @@ namespace System.Security.Principal {
                        else {
                                // validate token by getting name
                                _name = GetTokenName (_token);
-                               if ((_name == String.Empty) || (_name == null))
+                               if (_name == null)
                                        throw new SerializationException ("Token doesn't match a user.");
                        }
                        _type = _info.GetString ("m_type");
index cf2e6f23efcfd5758a60892787b165434656fbbc..c44176989c8acdac1df35754ad32cffbc069bf14 100644 (file)
@@ -108,10 +108,11 @@ public abstract class Decoder
                CheckArguments (chars, charCount, bytes, byteCount);
 
                char [] carr = new char [charCount];
-               Marshal.Copy ((IntPtr) chars, carr, 0, charCount);
                byte [] barr = new byte [byteCount];
                Marshal.Copy ((IntPtr) bytes, barr, 0, byteCount);
-               return GetChars (barr, 0, byteCount, carr, 0, flush);
+               int charsUsed = GetChars (barr, 0, byteCount, carr, 0, flush);
+               Marshal.Copy (carr, 0, (IntPtr) chars, charsUsed);
+               return charsUsed;
        }
 
        [ComVisible (false)]
index bdd80e8a626a9d4de5b562c29e5a09807e85545b..1aa56bc9f29a4d034234580cbc50c8703fdefdae 100644 (file)
@@ -852,7 +852,14 @@ fail_no_space:
                if (charCount < 0) {
                        throw new ArgumentOutOfRangeException ("charCount", _("ArgRange_NonNegative"));
                }
-               return charCount * 4;
+
+               // Add 1 to charCount since there may be a lead surrogate left from the previous call to GetBytes/Encoder.Convert
+               charCount = charCount + 1;
+               if (EncoderFallback.MaxCharCount > 1) {
+                       charCount = charCount * EncoderFallback.MaxCharCount;
+               }
+
+               return charCount * 3;
        }
 
        // Get the maximum number of characters needed to decode a
@@ -862,7 +869,14 @@ fail_no_space:
                if (byteCount < 0) {
                        throw new ArgumentOutOfRangeException ("byteCount", _("ArgRange_NonNegative"));
                }
-               return byteCount;
+
+               // Add 1 to byteCount since there may be the bytes from part of a surrogate pair left from the previous call to GetChars/Decoder.Convert
+               int maxCharCount = byteCount + 1;
+               if (DecoderFallback.MaxCharCount > 1) {
+                       maxCharCount = maxCharCount * DecoderFallback.MaxCharCount;
+               }
+
+               return maxCharCount;
        }
 
        // Get a UTF8-specific decoder that is attached to this instance.
index 21c7884b084ebdb4e9582ae7b561c5d92f750b5b..d0b723d285ed4dbd9d5800d7e1a95bce6fa9bee8 100644 (file)
@@ -43,22 +43,20 @@ namespace System.Threading.Tasks
        {
                const int BaseSize = 11;
                
-               long bottom;
-               long top;
-               long upperBound;
+               int bottom;
+               int top;
+               int upperBound;
                CircularArray<T> array = new CircularArray<T> (BaseSize);
                
                public void PushBottom (T obj)
                {
-                       /* Read is implemented as a simple load operation on 64bits
-                        * so no need to make the distinction ourselves
-                        */
-                       long b = Interlocked.Read (ref bottom);
+                       int b = bottom;
                        var a = array;
                        
                        // Take care of growing
-                       if (b - upperBound >= a.Size - 1) {
-                               upperBound = Interlocked.Read (ref top);
+                       var size = b - top - upperBound;
+                       if (size > a.Size) {
+                               upperBound = top;
                                a = a.Grow (b, upperBound);
                                array = a;
                        }
@@ -72,10 +70,10 @@ namespace System.Threading.Tasks
                {
                        obj = default (T);
                        
-                       long b = Interlocked.Decrement (ref bottom);
+                       int b = Interlocked.Decrement (ref bottom);
                        var a = array;
-                       long t = Interlocked.Read (ref top);
-                       long size = b - t;
+                       int t = top;
+                       int size = b - t;
                        
                        if (size < 0) {
                                // Set bottom to t
@@ -98,10 +96,10 @@ namespace System.Threading.Tasks
                {
                        obj = default (T);
 
-                       long b = Interlocked.Decrement (ref bottom);
+                       int b = Interlocked.Decrement (ref bottom);
                        var a = array;
-                       long t = Interlocked.Read (ref top);
-                       long size = b - t;
+                       int t = top;
+                       int size = b - t;
 
                        if (size < 0)
                                return false;
@@ -114,8 +112,8 @@ namespace System.Threading.Tasks
                {
                        obj = default (T);
                        
-                       long t = Interlocked.Read (ref top);
-                       long b = Interlocked.Read (ref bottom);
+                       int t = top;
+                       int b = bottom;
                        
                        if (b - t <= 0)
                                return PopResult.Empty;
@@ -133,8 +131,8 @@ namespace System.Threading.Tasks
                {
                        obj = default (T);
 
-                       long t = Interlocked.Read (ref top);
-                       long b = Interlocked.Read (ref bottom);
+                       int t = top;
+                       int b = bottom;
 
                        if (b - t <= 0)
                                return false;
@@ -153,8 +151,8 @@ namespace System.Threading.Tasks
 
                public bool IsEmpty {
                        get {
-                               long t = Interlocked.Read (ref top);
-                               long b = Interlocked.Read (ref bottom);
+                               int t = top;
+                               int b = bottom;
                                return b - t <= 0;
                        }
                }
@@ -173,13 +171,13 @@ namespace System.Threading.Tasks
                        this.segment = new T[size];
                }
                
-               public long Size {
+               public int Size {
                        get {
                                return size;
                        }
                }
                
-               public T this[long index] {
+               public T this[int index] {
                        get {
                                return segment[index % size];
                        }
@@ -188,32 +186,32 @@ namespace System.Threading.Tasks
                        }
                }
                
-               public CircularArray<T> Grow (long bottom, long top)
+               public CircularArray<T> Grow (int bottom, int top)
                {
                        var grow = new CircularArray<T> (baseSize + 1);
                        
-                       for (long i = top; i < bottom; i++) {
+                       for (int i = top; i < bottom; i++) {
                                grow.segment[i] = segment[i % size];
                        }
                        
                        return grow;
                }
                
-               public IEnumerable<T> GetEnumerable (long bottom, ref long top)
+               public IEnumerable<T> GetEnumerable (int bottom, ref int top)
                {
-                       long instantTop = top;
+                       int instantTop = top;
                        T[] slice = new T[bottom - instantTop];
                        int destIndex = -1;
-                       for (long i = instantTop; i < bottom; i++)
+                       for (int i = instantTop; i < bottom; i++)
                                slice[++destIndex] = segment[i % size];
 
                        return RealGetEnumerable (slice, bottom, top, instantTop);
                }
 
-               IEnumerable<T> RealGetEnumerable (T[] slice, long bottom, long realTop, long initialTop)
+               IEnumerable<T> RealGetEnumerable (T[] slice, int bottom, int realTop, int initialTop)
                {
                        int destIndex = (int)(realTop - initialTop - 1);
-                       for (long i = realTop; i < bottom; ++i)
+                       for (int i = realTop; i < bottom; ++i)
                                yield return slice[++destIndex];
                }
        }
index c175441792c521064986ec87fc5ba2deb0da36ab..d62df9a7e68f98237ca537dce7d41da4df0b4a0c 100644 (file)
@@ -203,7 +203,7 @@ namespace System.Threading.Tasks
                                                                long old;
                                                                StealValue64 val = new StealValue64 ();
 
-                                                               old = sixtyfour ? range.V64.Value : Interlocked.CompareExchange (ref range.V64.Value, 0, 0);
+                                                               old = Thread.VolatileRead (ref range.V64.Value);
                                                                val.Value = old;
 
                                                                if (val.Actual >= stopIndex - val.Stolen - 2)
index d2a108064a5051547c678e74239d67dfe0caa7e2..5eefcb7da5f87592bc67d2751e579f0b95ed1055 100644 (file)
@@ -6,7 +6,7 @@
 //    Jérémie Laval <jeremie dot laval at xamarin dot com>
 //
 // Copyright (c) 2008 Jérémie "Garuma" Laval
-// Copyright 2011 Xamarin Inc (http://www.xamarin.com).
+// Copyright 2011-2013 Xamarin Inc (http://www.xamarin.com).
 //
 // Permission is hereby granted, free of charge, to any person obtaining a copy
 // of this software and associated documentation files (the "Software"), to deal
@@ -46,13 +46,11 @@ namespace System.Threading.Tasks
                // and for Parent property.
                [System.ThreadStatic]
                static Task current;
-               [System.ThreadStatic]
-               static Action<Task> childWorkAdder;
                
                // parent is the outer task in which this task is created
                readonly Task parent;
-               // contAncestor is the Task on which this continuation was setup
-               readonly Task contAncestor;
+               // A reference to a Task on which this continuation is attached to
+               Task contAncestor;
                
                static int          id = -1;
                static readonly TaskFactory defaultFactory = new TaskFactory ();
@@ -65,6 +63,7 @@ namespace System.Threading.Tasks
                internal TaskScheduler       scheduler;
 
                TaskExceptionSlot exSlot;
+               ManualResetEvent wait_handle;
 
                TaskStatus          status;
 
@@ -215,7 +214,6 @@ namespace System.Threading.Tasks
                internal void RunSynchronouslyCore (TaskScheduler scheduler)
                {
                        SetupScheduler (scheduler);
-                       var saveStatus = status;
                        Status = TaskStatus.WaitingToRun;
 
                        try {
@@ -225,8 +223,7 @@ namespace System.Threading.Tasks
                                throw new TaskSchedulerException (inner);
                        }
 
-                       Status = saveStatus;
-                       Start (scheduler);
+                       Schedule ();
                        Wait ();
                }
                #endregion
@@ -370,18 +367,7 @@ namespace System.Threading.Tasks
                internal void Schedule ()
                {
                        Status = TaskStatus.WaitingToRun;
-                       
-                       // If worker is null it means it is a local one, revert to the old behavior
-                       // If TaskScheduler.Current is not being used, the scheduler was explicitly provided, so we must use that
-                       if (scheduler != TaskScheduler.Current || childWorkAdder == null || HasFlag (creationOptions, TaskCreationOptions.PreferFairness)) {
-                               scheduler.QueueTask (this);
-                       } else {
-                               /* Like the semantic of the ABP paper describe it, we add ourselves to the bottom 
-                                * of our Parent Task's ThreadWorker deque. It's ok to do that since we are in
-                                * the correct Thread during the creation
-                                */
-                               childWorkAdder (this);
-                       }
+                       scheduler.QueueTask (this);
                }
                
                void ThreadStart ()
@@ -514,7 +500,9 @@ namespace System.Threading.Tasks
                void InnerInvoke ()
                {
                        if (IsContinuation) {
-                               invoker.Invoke (contAncestor, state, this);
+                               var ancestor = contAncestor;
+                               contAncestor = null;
+                               invoker.Invoke (ancestor, state, this);
                        } else {
                                invoker.Invoke (this, state, this);
                        }
@@ -536,6 +524,9 @@ namespace System.Threading.Tasks
                                        Status = TaskStatus.WaitingForChildrenToComplete;
                        }
 
+                       if (wait_handle != null)
+                               wait_handle.Set ();
+
                        // Tell parent that we are finished
                        if (parent != null && HasFlag (creationOptions, TaskCreationOptions.AttachedToParent) &&
 #if NET_4_5
@@ -592,6 +583,10 @@ namespace System.Threading.Tasks
                internal void CancelReal ()
                {
                        Status = TaskStatus.Canceled;
+
+                       if (wait_handle != null)
+                               wait_handle.Set ();
+
                        ProcessCompleteDelegates ();
                }
 
@@ -605,6 +600,10 @@ namespace System.Threading.Tasks
                        ExceptionSlot.Exception = e;
                        Thread.MemoryBarrier ();
                        Status = TaskStatus.Faulted;
+
+                       if (wait_handle != null)
+                               wait_handle.Set ();
+
                        ProcessCompleteDelegates ();
                }
 
@@ -642,25 +641,7 @@ namespace System.Threading.Tasks
                        if (millisecondsTimeout < -1)
                                throw new ArgumentOutOfRangeException ("millisecondsTimeout");
 
-                       bool result = true;
-
-                       if (!IsCompleted) {
-                               // If the task is ready to be run and we were supposed to wait on it indefinitely without cancellation, just run it
-                               if (Status == TaskStatus.WaitingToRun && millisecondsTimeout == Timeout.Infinite && scheduler != null && !cancellationToken.CanBeCanceled)
-                                       scheduler.RunInline (this, true);
-
-                               if (!IsCompleted) {
-                                       var continuation = new ManualResetContinuation ();
-                                       try {
-                                               ContinueWith (continuation);
-                                               result = continuation.Event.Wait (millisecondsTimeout, cancellationToken);
-                                       } finally {
-                                               if (!result)
-                                                       RemoveContinuation (continuation);
-                                               continuation.Dispose ();
-                                       }
-                               }
-                       }
+                       bool result = WaitCore (millisecondsTimeout, cancellationToken);
 
                        if (IsCanceled)
                                throw new AggregateException (new TaskCanceledException (this));
@@ -671,6 +652,32 @@ namespace System.Threading.Tasks
 
                        return result;
                }
+
+               internal bool WaitCore (int millisecondsTimeout, CancellationToken cancellationToken)
+               {
+                       if (IsCompleted)
+                               return true;
+
+                       // If the task is ready to be run and we were supposed to wait on it indefinitely without cancellation, just run it
+                       if (Status == TaskStatus.WaitingToRun && millisecondsTimeout == Timeout.Infinite && scheduler != null && !cancellationToken.CanBeCanceled)
+                               scheduler.RunInline (this, true);
+
+                       bool result = true;
+
+                       if (!IsCompleted) {
+                               var continuation = new ManualResetContinuation ();
+                               try {
+                                       ContinueWith (continuation);
+                                       result = continuation.Event.Wait (millisecondsTimeout, cancellationToken);
+                               } finally {
+                                       if (!result)
+                                               RemoveContinuation (continuation);
+                                       continuation.Dispose ();
+                               }
+                       }
+
+                       return result;
+               }
                
                public static void WaitAll (params Task[] tasks)
                {
@@ -821,7 +828,7 @@ namespace System.Threading.Tasks
                #region Dispose
                public void Dispose ()
                {
-                       Dispose (true);
+                       Dispose (true);                 
                }
                
                protected virtual void Dispose (bool disposing)
@@ -836,6 +843,8 @@ namespace System.Threading.Tasks
                                state = null;
                                if (cancellationRegistration != null)
                                        cancellationRegistration.Value.Dispose ();
+                               if (wait_handle != null)
+                                       wait_handle.Dispose ();
                        }
                }
                #endregion
@@ -950,11 +959,23 @@ namespace System.Threading.Tasks
                        if (millisecondsDelay < -1)
                                throw new ArgumentOutOfRangeException ("millisecondsDelay");
 
-                       var task = new Task (TaskActionInvoker.Delay, millisecondsDelay, cancellationToken, TaskCreationOptions.None, null, TaskConstants.Finished);
-                       task.SetupScheduler (TaskScheduler.Current);
-                       
-                       if (millisecondsDelay != Timeout.Infinite)
-                               task.scheduler.QueueTask (task);
+                       if (cancellationToken.IsCancellationRequested)
+                               return TaskConstants.Canceled;
+
+                       var task = new Task (TaskActionInvoker.Empty, null, cancellationToken, TaskCreationOptions.None, null, null);
+                       task.SetupScheduler (TaskScheduler.Default);
+
+                       if (millisecondsDelay != Timeout.Infinite) {
+                               var timer = new Timer (delegate (object state) {
+                                       var t = (Task) state;
+                                       if (t.Status == TaskStatus.WaitingForActivation) {
+                                               t.Status = TaskStatus.Running;
+                                               t.Finish ();
+                                       }
+                               }, task, millisecondsDelay, -1);
+
+                               task.ContinueWith (new DisposeContinuation (timer));
+                       }
 
                        return task;
                }
@@ -1288,7 +1309,13 @@ namespace System.Threading.Tasks
 
                WaitHandle IAsyncResult.AsyncWaitHandle {
                        get {
-                               return null;
+                               if (invoker == null)
+                                       throw new ObjectDisposedException (GetType ().ToString ());
+
+                               if (wait_handle == null)
+                                       Interlocked.CompareExchange (ref wait_handle, new ManualResetEvent (IsCompleted), null);
+
+                               return wait_handle;
                        }
                }
                
index 513b09968b1ad1bdc30264b13d8962482b673f77..412bcf1cfaacf93e82b8884ecf2cdf87f56874ee 100644 (file)
@@ -290,12 +290,10 @@ namespace System.Threading.Tasks
                sealed class FuncTaskSelected<TResult> : TaskActionInvoker
                {
                        readonly Func<Task, TResult> action;
-                       readonly Task[] tasks;
 
-                       public FuncTaskSelected (Func<Task, TResult> action, Task[] tasks)
+                       public FuncTaskSelected (Func<Task, TResult> action)
                        {
                                this.action = action;
-                               this.tasks = tasks;
                        }
 
                        public override Delegate Action {
@@ -306,8 +304,8 @@ namespace System.Threading.Tasks
 
                        public override void Invoke (Task owner, object state, Task context)
                        {
-                               var result = ((Task<int>) owner).Result;
-                               ((Task<TResult>) context).Result = action (tasks[result]);
+                               var result = ((Task<Task>) owner).Result;
+                               ((Task<TResult>) context).Result = action (result);
                        }
                }
 
@@ -492,9 +490,9 @@ namespace System.Threading.Tasks
                        return new ActionTaskSelected (action);
                }
 
-               public static TaskActionInvoker Create<TResult> (Func<Task, TResult> action, Task[] tasks)
+               public static TaskActionInvoker CreateSelected<TResult> (Func<Task, TResult> action)
                {
-                       return new FuncTaskSelected<TResult> (action, tasks);
+                       return new FuncTaskSelected<TResult> (action);
                }
 
                #endregion
index 8189df744b867defe928bf5a56d04dd12c905f34..9825be780009dbd896e61e072e17d8118bdedfef 100644 (file)
@@ -338,6 +338,21 @@ namespace System.Threading.Tasks
                        evt.Signal ();
                }
        }
+
+       sealed class DisposeContinuation : IContinuation
+       {
+               readonly IDisposable instance;
+
+               public DisposeContinuation (IDisposable instance)
+               {
+                       this.instance = instance;
+               }
+
+               public void Execute ()
+               {
+                       instance.Dispose ();
+               }
+       }
 }
 
 #endif
index 9330fd40a5aa19a4517f0a0ef0ccd0c1dc589e49..607f08da4ec4652c97ea9c82dbb4ae905e53813d 100644 (file)
@@ -305,7 +305,7 @@ namespace System.Threading.Tasks
                {
                        CheckContinueArguments (tasks, continuationFunction, continuationOptions, scheduler);
 
-                       var cont = Task.WhenAnyCore (tasks).ContinueWith<TResult> (TaskActionInvoker.Create (continuationFunction, tasks), cancellationToken, continuationOptions, scheduler);
+                       var cont = Task.WhenAnyCore (tasks).ContinueWith<TResult> (TaskActionInvoker.CreateSelected (continuationFunction), cancellationToken, continuationOptions, scheduler);
 
                        return cont;
                }
index c38a566e2cc3c64720e6e4cf6bd45a5829769b1f..e1c9a6842cae9abf024dd1dab3259146601b78bf 100644 (file)
@@ -50,7 +50,7 @@ namespace System.Threading.Tasks
                                return;
                        }
 
-                       ThreadPool.UnsafeQueueUserWorkItem (callback, task);
+                       ThreadPool.QueueWorkItem (callback, task);
                }
 
                static void TaskExecuterCallback (object obj)
index 0025debb836e800e92ede77f86b4063b7533cd22..82c7094ef6403d2ee6b8fe6569021c28bc6c8427 100644 (file)
@@ -85,7 +85,7 @@ namespace System.Threading
 
                public void ThrowIfCancellationRequested ()
                {
-                       if (Source.IsCancellationRequested)
+                       if (source != null && source.IsCancellationRequested)
                                throw new OperationCanceledException (this);
                }
 
index a3a0fadfa996e4bdf7a44d9669165bea086672f0..a34370d460be051bbdaf54315d093cb8f573b037 100644 (file)
@@ -38,7 +38,7 @@ namespace System.Threading
                ManualResetEvent handle;
                internal AtomicBooleanValue disposed;
                int used;
-               long state;
+               int state;
 
                public ManualResetEventSlim ()
                        : this (false, 10)
@@ -89,10 +89,10 @@ namespace System.Threading
 
                long UpdateStateWithOp (bool set)
                {
-                       long oldValue, newValue;
+                       int oldValue, newValue;
                        do {
                                oldValue = state;
-                               newValue = (long)(((oldValue >> 1) + 1) << 1) | (set ? 1u : 0u);
+                               newValue = (int)(((oldValue >> 1) + 1) << 1) | (set ? 1 : 0);
                        } while (Interlocked.CompareExchange (ref state, newValue, oldValue) != oldValue);
                        return newValue;
                }
@@ -119,7 +119,7 @@ namespace System.Threading
                                 * we have a mismatch between S and H at the end because the last operations done were
                                 * S3/H1. We thus need to repeat H3 to get to the desired final state.
                                 */
-                               long currentState;
+                               int currentState;
                                do {
                                        currentState = state;
                                        if (currentState != stamp && (stamp & 1) != (currentState & 1)) {
@@ -164,8 +164,6 @@ namespace System.Threading
                                SpinWait wait = new SpinWait ();
 
                                while (!IsSet) {
-                                       cancellationToken.ThrowIfCancellationRequested ();
-
                                        if (wait.Count < spinCount) {
                                                wait.SpinOnce ();
                                                continue;
@@ -174,6 +172,8 @@ namespace System.Threading
                                        break;
                                }
 
+                               cancellationToken.ThrowIfCancellationRequested ();
+
                                if (IsSet)
                                        return true;
 
index 3b63c4231d6ae2446f4f3c5af56fe0d6f57e0f8f..3a75238f4dfe390f68e1987546f77a826f7db304 100644 (file)
@@ -54,7 +54,7 @@ namespace System.Threading
 
                        this.maxCount = maxCount;
                        this.currCount = initialCount;
-                       this.handle = new ManualResetEvent (initialCount == 0);
+                       this.handle = new ManualResetEvent (initialCount > 0);
                }
 
                public void Dispose ()
index 5c4cedf15b02994fd6c90bac1d7c03be391fd599..719f43020e08092ce05d16e1ced024308e4f6230 100644 (file)
@@ -98,11 +98,9 @@ namespace System.Threading
                }
 #endif
 
-               [MonoTODO]
                protected void SetWaitNotificationRequired ()
                {
                        notification_required = true;
-                       throw new NotImplementedException ();
                }
 
                [CLSCompliant (false)]
index 8fd3dfd96b6764b70d651f14aafa97e8b42d36d0..813c458f94934936e1ef7054b9de7f1200db2028 100644 (file)
@@ -903,14 +903,11 @@ namespace System.Threading {
 
                public bool TrySetApartmentState (ApartmentState state) 
                {
-                       /* Only throw this exception when changing the
-                        * state of another thread.  See bug 324338
-                        */
-                       if ((this != CurrentThread) &&
-                           (ThreadState & ThreadState.Unstarted) == 0)
+                       if ((ThreadState & ThreadState.Unstarted) == 0)
                                throw new ThreadStateException ("Thread was in an invalid state for the operation being executed.");
 
-                       if ((ApartmentState)Internal.apartment_state != ApartmentState.Unknown)
+                       if ((ApartmentState)Internal.apartment_state != ApartmentState.Unknown && 
+                           (ApartmentState)Internal.apartment_state != state)
                                return false;
 
                        Internal.apartment_state = (byte)state;
index 1e76495c7409dbe0d7cdb3eaccbd10434059aca1..204386f9f70021579d9d200657030ef02dc4bd8f 100644 (file)
@@ -87,9 +87,6 @@ namespace System.Threading {
                                if (ar == null)
                                        return false;
                        } else {
-                               if (!callBack.HasSingleTarget)
-                                       throw new Exception ("The delegate must have only one target");
-
                                AsyncResult ares = new AsyncResult (callBack, state, true);
                                pool_queue (ares);
                        }
@@ -99,6 +96,12 @@ namespace System.Threading {
                [MethodImplAttribute(MethodImplOptions.InternalCall)]
                static extern void pool_queue (AsyncResult ares);
 
+               // TODO: It should be interface interface only to avoid extra allocation
+               internal static void QueueWorkItem (WaitCallback callBack, object state)
+               {
+                       pool_queue (new AsyncResult (callBack, state, false));
+               }
+
                public static RegisteredWaitHandle RegisterWaitForSingleObject (WaitHandle waitObject,
                                                                                WaitOrTimerCallback callBack,
                                                                                object state,
@@ -115,6 +118,12 @@ namespace System.Threading {
                                                                                long millisecondsTimeOutInterval,
                                                                                bool executeOnlyOnce)
                {
+                       if (waitObject == null)
+                               throw new ArgumentNullException ("waitObject");
+
+                       if (callBack == null)
+                               throw new ArgumentNullException ("callBack");
+                       
                        if (millisecondsTimeOutInterval < -1)
                                throw new ArgumentOutOfRangeException ("timeout", "timeout < -1");
 
@@ -162,11 +171,11 @@ namespace System.Threading {
                [SecurityPermission (SecurityAction.Demand, ControlEvidence=true, ControlPolicy=true)]
                public static bool UnsafeQueueUserWorkItem (WaitCallback callBack, object state)
                {
+                       if (callBack == null)
+                               throw new ArgumentNullException ("callBack");
+
                        // no stack propagation here (that's why it's unsafe and requires extra security permissions)
                        if (!callBack.IsTransparentProxy ()) {
-                               if (!callBack.HasSingleTarget)
-                                       throw new Exception ("The delegate must have only one target");
-
                                AsyncResult ares = new AsyncResult (callBack, state, false);
                                pool_queue (ares);
                                return true;
index 22786f6588110e200e7f0d68be9cecc9bdcab734..dd32032436f9363d19827afc5e4df216edff9969 100644 (file)
@@ -311,13 +311,10 @@ namespace System.Threading
                                return idx;
                        }
 
-                       static WaitCallback TimerCaller = new WaitCallback (TimerCB);
                        static void TimerCB (object o)
                        {
                                Timer timer = (Timer) o;
-                               try {
-                                       timer.callback (timer.state);
-                               } catch {}
+                               timer.callback (timer.state);
                        }
 
                        void SchedulerThread ()
@@ -340,7 +337,7 @@ namespace System.Threading
                                                        list.RemoveAt (i);
                                                        count--;
                                                        i--;
-                                                       ThreadPool.UnsafeQueueUserWorkItem (TimerCaller, timer);
+                                                       ThreadPool.QueueWorkItem (TimerCB, timer);
                                                        long period = timer.period_ms;
                                                        long due_time = timer.due_time_ms;
                                                        bool no_more = (period == -1 || ((period == 0 || period == Timeout.Infinite) && due_time != Timeout.Infinite));
index 145319acdd0c38f3eaf999bc11e18e51fe28b3b4..c0df741af12bc34eda891ac01dabab4be658c2f7 100644 (file)
@@ -163,7 +163,7 @@ namespace System
 
                public override Exception GetBaseException ()
                {
-                       if (innerExceptions == null || innerExceptions.Count == 0)
+                       if (innerExceptions == null || innerExceptions.Count != 1)
                                return this;
                        return innerExceptions[0].GetBaseException ();
                }
index 2f90fbd131be5a982ef04f7d984020f5b257d767..756378c56d850d4f7e8fbf79821b0889d72656cd 100644 (file)
@@ -105,14 +105,16 @@ namespace System
                                T value;
                                GetGenericValueImpl (i, out value);
                                if (item == null){
-                                       if (value == null)
+                                       if (value == null) {
                                                return true;
+                                       }
 
                                        continue;
                                }
-                               
-                               if (item.Equals (value))
+
+                               if (item.Equals (value)) {
                                        return true;
+                               }
                        }
 
                        return false;
@@ -2862,32 +2864,54 @@ namespace System
                {
                        if (array == null)
                                throw new ArgumentNullException ("array");
+
+                       if (match == null)
+                               throw new ArgumentNullException ("match");
                        
-                       return FindLastIndex<T> (array, 0, array.Length, match);
+                       return GetLastIndex (array, 0, array.Length, match);
                }
                
                public static int FindLastIndex<T> (T [] array, int startIndex, Predicate<T> match)
                {
                        if (array == null)
                                throw new ArgumentNullException ();
+
+                       if (startIndex < 0 || (uint) startIndex > (uint) array.Length)
+                               throw new ArgumentOutOfRangeException ("startIndex");
+
+                       if (match == null)
+                               throw new ArgumentNullException ("match");
                        
-                       return FindLastIndex<T> (array, startIndex, array.Length - startIndex, match);
+                       return GetLastIndex (array, 0, startIndex + 1, match);
                }
                
                public static int FindLastIndex<T> (T [] array, int startIndex, int count, Predicate<T> match)
                {
                        if (array == null)
                                throw new ArgumentNullException ("array");
+
                        if (match == null)
                                throw new ArgumentNullException ("match");
+
+                       if (startIndex < 0 || (uint) startIndex > (uint) array.Length)
+                               throw new ArgumentOutOfRangeException ("startIndex");
                        
-                       if (startIndex > array.Length || startIndex + count > array.Length)
-                               throw new ArgumentOutOfRangeException ();
-                       
-                       for (int i = startIndex + count - 1; i >= startIndex; i--)
-                               if (match (array [i]))
+                       if (count < 0)
+                               throw new ArgumentOutOfRangeException ("count");
+
+                       if (startIndex - count + 1 < 0)
+                               throw new ArgumentOutOfRangeException ("count must refer to a location within the array");
+
+                       return GetLastIndex (array, startIndex - count + 1, count, match);
+               }
+
+               internal static int GetLastIndex<T> (T[] array, int startIndex, int count, Predicate<T> match)
+               {
+                       // unlike FindLastIndex, takes regular params for search range
+                       for (int i = startIndex + count; i != startIndex;)
+                               if (match (array [--i]))
                                        return i;
-                               
+
                        return -1;
                }
                
@@ -2895,16 +2919,25 @@ namespace System
                {
                        if (array == null)
                                throw new ArgumentNullException ("array");
+
+                       if (match == null)
+                               throw new ArgumentNullException ("match");
                        
-                       return FindIndex<T> (array, 0, array.Length, match);
+                       return GetIndex (array, 0, array.Length, match);
                }
                
                public static int FindIndex<T> (T [] array, int startIndex, Predicate<T> match)
                {
                        if (array == null)
                                throw new ArgumentNullException ("array");
-                       
-                       return FindIndex<T> (array, startIndex, array.Length - startIndex, match);
+
+                       if (startIndex < 0 || (uint) startIndex > (uint) array.Length)
+                               throw new ArgumentOutOfRangeException ("startIndex");
+
+                       if (match == null)
+                               throw new ArgumentNullException ("match");
+
+                       return GetIndex (array, startIndex, array.Length - startIndex, match);
                }
                
                public static int FindIndex<T> (T [] array, int startIndex, int count, Predicate<T> match)
@@ -2912,13 +2945,22 @@ namespace System
                        if (array == null)
                                throw new ArgumentNullException ("array");
                        
-                       if (match == null)
-                               throw new ArgumentNullException ("match");
-                       
-                       if (startIndex > array.Length || startIndex + count > array.Length)
-                               throw new ArgumentOutOfRangeException ();
+                       if (startIndex < 0)
+                               throw new ArgumentOutOfRangeException ("startIndex");
                        
-                       for (int i = startIndex; i < startIndex + count; i ++)
+                       if (count < 0)
+                               throw new ArgumentOutOfRangeException ("count");
+
+                       if ((uint) startIndex + (uint) count > (uint) array.Length)
+                               throw new ArgumentOutOfRangeException ("index and count exceed length of list");
+
+                       return GetIndex (array, startIndex, count, match);
+               }
+
+               internal static int GetIndex<T> (T[] array, int startIndex, int count, Predicate<T> match)
+               {
+                       int end = startIndex + count;
+                       for (int i = startIndex; i < end; i ++)
                                if (match (array [i]))
                                        return i;
                                
index 46d0b775dbfb0c85f659f27446003e3a74dd569c..be91a7a182a9a723bf4ebc9347c9570f4061fc69 100644 (file)
@@ -258,7 +258,7 @@ namespace System
 
                public override int GetHashCode ()
                {
-                       int result = TypeId.GetHashCode ();
+                       int result = GetType ().GetHashCode ();
 
                        FieldInfo[] fields = GetType ().GetFields (BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);
                        foreach (FieldInfo field in fields) {
index d030979b7b254a7370594b72b8e1f1be936fdfe0..9fab011f165d9736f294281c85a56b66e652f295 100644 (file)
@@ -35,31 +35,18 @@ namespace System
        static
        class BitConverter
        {
-               static readonly bool SwappedWordsInDouble = DoubleWordsAreSwapped ();
                public static readonly bool IsLittleEndian = AmILittleEndian ();
 
                static unsafe bool AmILittleEndian ()
                {
                        // binary representations of 1.0:
-                       // big endian: 3f f0 00 00 00 00 00 00
-                       // little endian: 00 00 00 00 00 00 f0 3f
-                       // arm fpa little endian: 00 00 f0 3f 00 00 00 00
+                       // big endian:            3f f0 00 00 00 00 00 00
+                       // little endian:         00 00 00 00 00 00 f0 3f
                        double d = 1.0;
                        byte *b = (byte*)&d;
                        return (b [0] == 0);
                }
 
-               static unsafe bool DoubleWordsAreSwapped ()
-               {
-                       // binary representations of 1.0:
-                       // big endian: 3f f0 00 00 00 00 00 00
-                       // little endian: 00 00 00 00 00 00 f0 3f
-                       // arm fpa little endian: 00 00 f0 3f 00 00 00 00
-                       double d = 1.0;
-                       byte *b = (byte*)&d;
-                       return b [2] == 0xf0;
-               }
-
                public unsafe static long DoubleToInt64Bits (double value)
                {
                        return *(long *) &value;
@@ -70,11 +57,6 @@ namespace System
                        return *(double *) &value;
                }
 
-               internal static double InternalInt64BitsToDouble (long value)
-               {
-                       return SwappableToDouble (GetBytes (value), 0);
-               }
-               
                unsafe static byte[] GetBytes (byte *ptr, int count)
                {
                        byte [] ret = new byte [count];
@@ -136,21 +118,7 @@ namespace System
 
                unsafe public static byte[] GetBytes (double value)
                {
-                       if (SwappedWordsInDouble) {
-                               byte[] data = new byte [8];
-                               byte *p = (byte*)&value;
-                               data [0] = p [4];
-                               data [1] = p [5];
-                               data [2] = p [6];
-                               data [3] = p [7];
-                               data [4] = p [0];
-                               data [5] = p [1];
-                               data [6] = p [2];
-                               data [7] = p [3];
-                               return data;
-                       } else {
-                               return GetBytes ((byte *) &value, 8);
-                       }
+                       return GetBytes ((byte *) &value, 8);
                }
 
                unsafe static void PutBytes (byte *dst, byte[] src, int start_index, int count)
@@ -268,102 +236,11 @@ namespace System
                {
                        double ret;
 
-                       if (SwappedWordsInDouble) {
-                               byte* p = (byte*)&ret;
-                               if (value == null)
-                                       throw new ArgumentNullException ("value");
-
-                               if (startIndex < 0 || (startIndex > value.Length - 1))
-                                       throw new ArgumentOutOfRangeException ("startIndex", "Index was"
-                                               + " out of range. Must be non-negative and less than the"
-                                               + " size of the collection.");
-
-                               // avoid integer overflow (with large pos/neg start_index values)
-                               if (value.Length - 8 < startIndex)
-                                       throw new ArgumentException ("Destination array is not long"
-                                               + " enough to copy all the items in the collection."
-                                               + " Check array index and length.");
-
-                               p [0] = value [startIndex + 4];
-                               p [1] = value [startIndex + 5];
-                               p [2] = value [startIndex + 6];
-                               p [3] = value [startIndex + 7];
-                               p [4] = value [startIndex + 0];
-                               p [5] = value [startIndex + 1];
-                               p [6] = value [startIndex + 2];
-                               p [7] = value [startIndex + 3];
-
-                               return ret;
-                       }
-
                        PutBytes ((byte *) &ret, value, startIndex, 8);
 
                        return ret;
                }
 
-               unsafe internal static double SwappableToDouble (byte[] value, int startIndex)
-               {
-                       double ret;
-
-                       if (SwappedWordsInDouble) {
-                               byte* p = (byte*)&ret;
-                               if (value == null)
-                                       throw new ArgumentNullException ("value");
-
-                               if (startIndex < 0 || (startIndex > value.Length - 1))
-                                       throw new ArgumentOutOfRangeException ("startIndex", "Index was"
-                                               + " out of range. Must be non-negative and less than the"
-                                               + " size of the collection.");
-
-                               // avoid integer overflow (with large pos/neg start_index values)
-                               if (value.Length - 8 < startIndex)
-                                       throw new ArgumentException ("Destination array is not long"
-                                               + " enough to copy all the items in the collection."
-                                               + " Check array index and length.");
-
-                               p [0] = value [startIndex + 4];
-                               p [1] = value [startIndex + 5];
-                               p [2] = value [startIndex + 6];
-                               p [3] = value [startIndex + 7];
-                               p [4] = value [startIndex + 0];
-                               p [5] = value [startIndex + 1];
-                               p [6] = value [startIndex + 2];
-                               p [7] = value [startIndex + 3];
-
-                               return ret;
-                       } else if (!IsLittleEndian) {
-                               byte* p = (byte*)&ret;
-                               if (value == null)
-                                       throw new ArgumentNullException ("value");
-
-                               if (startIndex < 0 || (startIndex > value.Length - 1))
-                                       throw new ArgumentOutOfRangeException ("startIndex", "Index was"
-                                               + " out of range. Must be non-negative and less than the"
-                                               + " size of the collection.");
-
-                               // avoid integer overflow (with large pos/neg start_index values)
-                               if (value.Length - 8 < startIndex)
-                                       throw new ArgumentException ("Destination array is not long"
-                                               + " enough to copy all the items in the collection."
-                                               + " Check array index and length.");
-
-                               p [0] = value [startIndex + 7];
-                               p [1] = value [startIndex + 6];
-                               p [2] = value [startIndex + 5];
-                               p [3] = value [startIndex + 4];
-                               p [4] = value [startIndex + 3];
-                               p [5] = value [startIndex + 2];
-                               p [6] = value [startIndex + 1];
-                               p [7] = value [startIndex + 0];
-
-                               return ret;
-                       }
-
-                       PutBytes ((byte *) &ret, value, startIndex, 8);
-
-                       return ret;
-               }
-               
                public static string ToString (byte[] value)
                {
                        if (value == null)
index 929184985b4d0ce6457979a56e9f311d0d9d378c..08f8a4c1da1bfe92ecd879883d42b60b86374e1e 100644 (file)
@@ -7,7 +7,7 @@
 //
 // (C) Ximian, Inc.  http://www.ximian.com
 // (C) 2004,2005 Novell, Inc. (http://www.novell.com)
-//
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -94,12 +94,6 @@ namespace System
                private static TextWriter stderr;
                private static TextReader stdin;
 
-#if NET_4_5 && !MOBILE
-               static TextWriter console_stdout;
-               static TextWriter console_stderr;
-               static TextReader console_stdin;
-#endif
-
                static Console ()
                {
 #if NET_2_1
@@ -158,7 +152,10 @@ namespace System
                                stdin = new CStreamReader (OpenStandardInput (0), inputEncoding);
                        } else {
 #endif
-#if MONOTOUCH
+// FULL_AOT_RUNTIME is used (instead of MONOTOUCH) since we only want this code when running on 
+// iOS (simulator or devices) and *not* when running tools (e.g. btouch #12179) that needs to use 
+// the mscorlib.dll shipped with Xamarin.iOS
+#if MONOTOUCH && FULL_AOT_RUNTIME
                                stdout = new NSLogWriter ();
 #else
                                stdout = new UnexceptionalStreamWriter (OpenStandardOutput (0), outputEncoding);
@@ -166,7 +163,7 @@ namespace System
 #endif
                                stdout = TextWriter.Synchronized (stdout, true);
 
-#if MONOTOUCH
+#if MONOTOUCH && FULL_AOT_RUNTIME
                                stderr = new NSLogWriter ();
 #else
                                stderr = new UnexceptionalStreamWriter (OpenStandardError (0), outputEncoding); 
@@ -180,12 +177,6 @@ namespace System
                        }
 #endif
 
-#if NET_4_5 && !MOBILE
-                       console_stderr = stderr;
-                       console_stdout = stdout;
-                       console_stdin = stdin;
-#endif
-
 #if MONODROID
                        if (LogcatTextWriter.IsRunningOnAndroid ()) {
                                stdout = TextWriter.Synchronized (new LogcatTextWriter ("mono-stdout", stdout));
@@ -673,19 +664,19 @@ namespace System
 #if NET_4_5
                public static bool IsErrorRedirected {
                        get {
-                               return stderr != console_stderr || ConsoleDriver.IsErrorRedirected;
+                               return ConsoleDriver.IsErrorRedirected;
                        }
                }
 
                public static bool IsOutputRedirected {
                        get {
-                               return stdout != console_stdout || ConsoleDriver.IsOutputRedirected;
+                               return ConsoleDriver.IsOutputRedirected;
                        }
                }
 
                public static bool IsInputRedirected {
                        get {
-                               return stdin != console_stdin || ConsoleDriver.IsInputRedirected;
+                               return ConsoleDriver.IsInputRedirected;
                        }
                }
 #endif
index e362e1390df58a99c6864ea8341f260a0aa1ab76..6a5f71471288ad27e8c3a262b4c84637f5af6dae 100644 (file)
@@ -7,7 +7,7 @@
 // Copyright 2012-2013 Xamarin Inc. All rights reserved.
 //
 
-#if MONOTOUCH
+#if FULL_AOT_RUNTIME
 
 using System;
 using System.IO;
@@ -19,9 +19,11 @@ namespace System {
        public static partial class Console {
 
                class NSLogWriter : TextWriter {
-                       
                        [DllImport ("__Internal", CharSet=CharSet.Unicode)]
                        extern static void monotouch_log (string s);
+
+                       [DllImport ("/usr/lib/libSystem.dylib")]
+                       extern static int write (int fd, byte [] buffer, int n);
                        
                        StringBuilder sb;
                        
@@ -33,15 +35,27 @@ namespace System {
                        public override System.Text.Encoding Encoding {
                                get { return System.Text.Encoding.UTF8; }
                        }
+
+                       static void direct_write_to_stdout (string s)
+                       {
+                               byte [] b = Encoding.Default.GetBytes (s);
+                               while (write (1, b, b.Length) == -1 && Marshal.GetLastWin32Error () == /* EINTR*/ 4)
+                                       ;
+                       }
                        
                        public override void Flush ()
                        {
+                               string s = sb.ToString ();
                                try {
-                                       monotouch_log (sb.ToString ());
-                                       sb.Length = 0;
+                                       monotouch_log (s);
                                }
                                catch (Exception) {
+                                       try {
+                                               direct_write_to_stdout (s);
+                                               direct_write_to_stdout (Environment.NewLine);
+                                       } catch (Exception){}
                                }
+                               sb.Length = 0;
                        }
                        
                        // minimum to override - see http://msdn.microsoft.com/en-us/library/system.io.textwriter.aspx
@@ -88,4 +102,4 @@ namespace System {
        }
 }
 
-#endif
\ No newline at end of file
+#endif
index c62c8d0d039ef4e9b679ed87094d12fb475b1767..961cb949d628389dc977fbb12b11b12e9031d27c 100644 (file)
@@ -31,80 +31,83 @@ namespace System {
        [Serializable]
        public struct ConsoleKeyInfo {
                internal static ConsoleKeyInfo Empty = new ConsoleKeyInfo ('\0', 0, false, false, false);
-               ConsoleKey key;
-               char keychar;
-               ConsoleModifiers modifiers;
+               ConsoleKey _key;
+               char _keyChar;
+               ConsoleModifiers _mods;
 
                public ConsoleKeyInfo (char keyChar, ConsoleKey key, bool shift, bool alt, bool control)
                {
-                       this.key = key;
-                       this.keychar = keyChar;
-                       modifiers = 0;
+                       _key = key;
+                       _keyChar = keyChar;
+                       _mods = 0;
                        SetModifiers (shift, alt, control);
                }
 
                internal ConsoleKeyInfo (ConsoleKeyInfo other)
                {
-                       this.key = other.key;
-                       this.keychar = other.keychar;
-                       this.modifiers = other.modifiers;
+                       _key = other._key;
+                       _keyChar = other._keyChar;
+                       _mods = other._mods;
                }
 
                internal void SetKey (ConsoleKey key)
                {
-                       this.key = key;
+                       _key = key;
                }
 
                internal void SetKeyChar (char keyChar)
                {
-                       this.keychar = keyChar;
+                       _keyChar = keyChar;
                }
 
                internal void SetModifiers (bool shift, bool alt, bool control)
                {
-                       this.modifiers = (shift) ? ConsoleModifiers.Shift : 0;
-                       this.modifiers |= (alt) ? ConsoleModifiers.Alt : 0;
-                       this.modifiers |= (control) ? ConsoleModifiers.Control : 0;
+                       _mods = (shift) ? ConsoleModifiers.Shift : 0;
+                       _mods |= (alt) ? ConsoleModifiers.Alt : 0;
+                       _mods |= (control) ? ConsoleModifiers.Control : 0;
                }
 
-               public ConsoleKey Key {
-                       get { return key; }
+               public ConsoleKey Key 
+               {
+                       get { return _key; }
                }
 
-               public char KeyChar {
-                       get { return keychar; }
+               public char KeyChar 
+               {
+                       get { return _keyChar; }
                }
 
-               public ConsoleModifiers Modifiers {
-                       get { return modifiers; }
+               public ConsoleModifiers Modifiers 
+               {
+                       get { return _mods; }
                }
-               
+
                public override bool Equals (object value)
                {
                        if (!(value is ConsoleKeyInfo))
                                return false;
+
                        return Equals ((ConsoleKeyInfo) value);
                }
-               
+
                public static bool operator == (ConsoleKeyInfo a, ConsoleKeyInfo b)
                {
                        return a.Equals (b);
                }
-               
+
                public static bool operator != (ConsoleKeyInfo a, ConsoleKeyInfo b)
                {
                        return !a.Equals (b);
                }
-               
+
                public bool Equals (ConsoleKeyInfo obj)
                {
-                       return key == obj.key && obj.keychar == keychar && obj.modifiers == modifiers;
+                       return _key == obj._key && _keyChar == obj._keyChar && _mods == obj._mods;
                }
-               
+
                public override int GetHashCode ()
                {
-                       return key.GetHashCode () ^ keychar.GetHashCode () ^ modifiers.GetHashCode ();
+                       return _key.GetHashCode () ^ _keyChar.GetHashCode () ^ _mods.GetHashCode ();
                }
        }
 }
-
index 8a2d99a5ee89878dfb2e16a6c0faae26a2308145..a17181f38ba2763c00625714120c4795ebb56487 100644 (file)
@@ -1,12 +1,13 @@
 //
 // System.Convert.cs
 //
-// Author:
+// Authors:
 //   Derek Holden (dholden@draper.com)
 //   Duncan Mak (duncan@ximian.com)
+//   Marek Safar (marek.safar@gmail.com)
 //
 // (C) Ximian, Inc.  http://www.ximian.com
-//
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
 //
 // System.Convert class. This was written word for word off the 
 // Library specification for System.Convert in the ECMA TC39 TG2 
@@ -168,7 +169,7 @@ namespace System {
                                throw new ArgumentOutOfRangeException ("offsetIn + length > array.Length");
 
                        // note: normally ToBase64Transform doesn't support multiple block processing
-                       byte[] outArr = ToBase64Transform.InternalTransformFinalBlock (inArray, offsetIn, length);
+                       byte[] outArr = Base64Helper.TransformFinalBlock (inArray, offsetIn, length);
                        
                        char[] cOutArr = new ASCIIEncoding ().GetChars (outArr);
                        
@@ -200,7 +201,7 @@ namespace System {
                                throw new ArgumentOutOfRangeException ("offset + length > array.Length");
                        
                        // note: normally ToBase64Transform doesn't support multiple block processing
-                       byte[] outArr = ToBase64Transform.InternalTransformFinalBlock (inArray, offset, length);
+                       byte[] outArr = Base64Helper.TransformFinalBlock (inArray, offset, length);
                        
                        return (new ASCIIEncoding ().GetString (outArr));
                }
@@ -230,7 +231,7 @@ namespace System {
                        if (options == Base64FormattingOptions.InsertLineBreaks)
                                return ToBase64StringBuilderWithLine (inArray, offset, length).ToString ();
                        else
-                               return Encoding.ASCII.GetString (ToBase64Transform.InternalTransformFinalBlock (inArray, offset, length));
+                               return Encoding.ASCII.GetString (Base64Helper.TransformFinalBlock (inArray, offset, length));
                }
 
                [ComVisible (false)]
@@ -256,7 +257,7 @@ namespace System {
                                sb.CopyTo (0, outArray, offsetOut, sb.Length);
                                return sb.Length;
                        } else {
-                               byte[] outArr = ToBase64Transform.InternalTransformFinalBlock (inArray, offsetIn, length);
+                               byte[] outArr = Base64Helper.TransformFinalBlock (inArray, offsetIn, length);
                        
                                char[] cOutArr = Encoding.ASCII.GetChars (outArr);
                        
@@ -278,7 +279,7 @@ namespace System {
                        int remainder;
                        int full = Math.DivRem (length, MaxBytesPerLine, out remainder);
                        for (int i = 0; i < full; i ++) {
-                               byte[] data = ToBase64Transform.InternalTransformFinalBlock (inArray, offset, MaxBytesPerLine);
+                               byte[] data = Base64Helper.TransformFinalBlock (inArray, offset, MaxBytesPerLine);
                                sb.AppendLine (Encoding.ASCII.GetString (data));
                                offset += MaxBytesPerLine;
                        }
@@ -287,7 +288,7 @@ namespace System {
                                int nll = Environment.NewLine.Length;
                                sb.Remove (sb.Length - nll, nll);
                        } else {
-                               byte[] data = ToBase64Transform.InternalTransformFinalBlock (inArray, offset, remainder);
+                               byte[] data = Base64Helper.TransformFinalBlock (inArray, offset, remainder);
                                sb.Append (Encoding.ASCII.GetString (data));
                        }
                        return sb;
@@ -2528,6 +2529,7 @@ namespace System {
                        typeof (DateTime), // 16 TypeCode.DateTime
                        null,               // 17 null.
                        typeof (String),   // 18 TypeCode.String
+                       typeof (Enum)
                };
 
                // Function to convert an object to another type and return
@@ -2561,67 +2563,69 @@ namespace System {
                        if (value.GetType () == conversionType)
                                return value;
                        
-                       if (value is IConvertible) {
-                               IConvertible convertValue = (IConvertible) value;
+                       IConvertible convertValue = value as IConvertible;
+                       if (convertValue != null) {
 
                                if (conversionType == conversionTable[0]) // 0 Empty
                                        throw new ArgumentNullException ();
                                
-                               else if (conversionType == conversionTable[1]) // 1 TypeCode.Object
-                                       return (object) value;
+                               if (conversionType == conversionTable[1]) // 1 TypeCode.Object
+                                       return value;
                                        
-                               else if (conversionType == conversionTable[2]) // 2 TypeCode.DBNull
+                               if (conversionType == conversionTable[2]) // 2 TypeCode.DBNull
                                        throw new InvalidCastException (
                                                "Cannot cast to DBNull, it's not IConvertible");
                  
-                               else if (conversionType == conversionTable[3]) // 3 TypeCode.Boolean
-                                       return (object) convertValue.ToBoolean (provider);
+                               if (conversionType == conversionTable[3]) // 3 TypeCode.Boolean
+                                       return convertValue.ToBoolean (provider);
                                        
-                               else if (conversionType == conversionTable[4]) // 4 TypeCode.Char
-                                       return (object) convertValue.ToChar (provider);
+                               if (conversionType == conversionTable[4]) // 4 TypeCode.Char
+                                       return convertValue.ToChar (provider);
                  
-                               else if (conversionType == conversionTable[5]) // 5 TypeCode.SByte
-                                       return (object) convertValue.ToSByte (provider);
+                               if (conversionType == conversionTable[5]) // 5 TypeCode.SByte
+                                       return convertValue.ToSByte (provider);
 
-                               else if (conversionType == conversionTable[6]) // 6 TypeCode.Byte
-                                       return (object) convertValue.ToByte (provider);
+                               if (conversionType == conversionTable[6]) // 6 TypeCode.Byte
+                                       return convertValue.ToByte (provider);
                                
-                               else if (conversionType == conversionTable[7]) // 7 TypeCode.Int16
-                                       return (object) convertValue.ToInt16 (provider);
+                               if (conversionType == conversionTable[7]) // 7 TypeCode.Int16
+                                       return convertValue.ToInt16 (provider);
                                        
-                               else if (conversionType == conversionTable[8]) // 8 TypeCode.UInt16
-                                       return (object) convertValue.ToUInt16 (provider);
+                               if (conversionType == conversionTable[8]) // 8 TypeCode.UInt16
+                                       return convertValue.ToUInt16 (provider);
                  
-                               else if (conversionType == conversionTable[9]) // 9 TypeCode.Int32
-                                       return (object) convertValue.ToInt32 (provider);
+                               if (conversionType == conversionTable[9]) // 9 TypeCode.Int32
+                                       return convertValue.ToInt32 (provider);
                        
-                               else if (conversionType == conversionTable[10]) // 10 TypeCode.UInt32
-                                       return (object) convertValue.ToUInt32 (provider);
+                               if (conversionType == conversionTable[10]) // 10 TypeCode.UInt32
+                                       return convertValue.ToUInt32 (provider);
                  
-                               else if (conversionType == conversionTable[11]) // 11 TypeCode.Int64
-                                       return (object) convertValue.ToInt64 (provider);
+                               if (conversionType == conversionTable[11]) // 11 TypeCode.Int64
+                                       return convertValue.ToInt64 (provider);
                  
-                               else if (conversionType == conversionTable[12]) // 12 TypeCode.UInt64
-                                       return (object) convertValue.ToUInt64 (provider);
+                               if (conversionType == conversionTable[12]) // 12 TypeCode.UInt64
+                                       return convertValue.ToUInt64 (provider);
                  
-                               else if (conversionType == conversionTable[13]) // 13 TypeCode.Single
-                                       return (object) convertValue.ToSingle (provider);
+                               if (conversionType == conversionTable[13]) // 13 TypeCode.Single
+                                       return convertValue.ToSingle (provider);
                  
-                               else if (conversionType == conversionTable[14]) // 14 TypeCode.Double
-                                       return (object) convertValue.ToDouble (provider);
+                               if (conversionType == conversionTable[14]) // 14 TypeCode.Double
+                                       return convertValue.ToDouble (provider);
 
-                               else if (conversionType == conversionTable[15]) // 15 TypeCode.Decimal
-                                       return (object) convertValue.ToDecimal (provider);
+                               if (conversionType == conversionTable[15]) // 15 TypeCode.Decimal
+                                       return convertValue.ToDecimal (provider);
 
-                               else if (conversionType == conversionTable[16]) // 16 TypeCode.DateTime
-                                       return (object) convertValue.ToDateTime (provider);
+                               if (conversionType == conversionTable[16]) // 16 TypeCode.DateTime
+                                       return convertValue.ToDateTime (provider);
                                
-                               else if (conversionType == conversionTable[18]) // 18 TypeCode.String
-                                       return (object) convertValue.ToString (provider);
-                               else {
-                                       if (try_target_to_type)
-                                               return convertValue.ToType (conversionType, provider);
-                               }
+                               if (conversionType == conversionTable[18]) // 18 TypeCode.String
+                                       return convertValue.ToString (provider);
+
+                               if (conversionType == conversionTable[19] && value is Enum) // System.Enum
+                                       return value;
+
+                               if (try_target_to_type)
+                                       return convertValue.ToType (conversionType, provider);
                        } 
                        // Not in the conversion table
                        throw new InvalidCastException ((Locale.GetText (
index 9018c9fc0bd6f66d751ea787016da6f6a634d5b5..ecf2ed189815cec3f6271bac2324ee8ac3d50279 100644 (file)
@@ -278,9 +278,8 @@ namespace System
                {
                        if (targetType == null)
                                throw new ArgumentNullException ("targetType");
-                       if (targetType == typeof (string))
-                               return ToString (provider);
-                       return Convert.ToType (Value, targetType, provider, false);
+
+                       return Convert.ToType (this, targetType, provider, false);
                }
 
                ushort IConvertible.ToUInt16 (IFormatProvider provider)
@@ -663,7 +662,7 @@ namespace System
 
                public override string ToString ()
                {
-                       return ToString ("G");
+                       return Format (GetType (), Value, "G");
                }
 
                [Obsolete("Provider is ignored, just use ToString")]
@@ -763,24 +762,24 @@ namespace System
                private static string FormatSpecifier_X (Type enumType, object value, bool upper)
                {
                        switch (Type.GetTypeCode (enumType)) {
-                               case TypeCode.SByte:
-                                       return ((sbyte)value).ToString (upper ? "X2" : "x2");
-                               case TypeCode.Byte:
-                                       return ((byte)value).ToString (upper ? "X2" : "x2");
-                               case TypeCode.Int16:
-                                       return ((short)value).ToString (upper ? "X4" : "x4");
-                               case TypeCode.UInt16:
-                                       return ((ushort)value).ToString (upper ? "X4" : "x4");
-                               case TypeCode.Int32:
-                                       return ((int)value).ToString (upper ? "X8" : "x8");
-                               case TypeCode.UInt32:
-                                       return ((uint)value).ToString (upper ? "X8" : "x8");
-                               case TypeCode.Int64:
-                                       return ((long)value).ToString (upper ? "X16" : "x16");
-                               case TypeCode.UInt64:
-                                       return ((ulong)value).ToString (upper ? "X16" : "x16");
-                               default:
-                                       throw new Exception ("Invalid type code for enumeration.");
+                       case TypeCode.SByte:
+                               return NumberFormatter.NumberToString (upper ? "X2" : "x2", ((sbyte)value), null);
+                       case TypeCode.Byte:
+                               return NumberFormatter.NumberToString (upper ? "X2" : "x2", ((byte)value), null);
+                       case TypeCode.Int16:
+                               return NumberFormatter.NumberToString (upper ? "X4" : "x4", ((short)value), null);
+                       case TypeCode.UInt16:
+                               return NumberFormatter.NumberToString (upper ? "X4" : "x4", ((ushort)value), null);
+                       case TypeCode.Int32:
+                               return NumberFormatter.NumberToString (upper ? "X8" : "x8", ((int)value), null);
+                       case TypeCode.UInt32:
+                               return NumberFormatter.NumberToString (upper ? "X8" : "x8", ((uint)value), null);
+                       case TypeCode.Int64:
+                               return NumberFormatter.NumberToString (upper ? "X16" : "x16", ((long)value), null);
+                       case TypeCode.UInt64:
+                               return NumberFormatter.NumberToString (upper ? "X16" : "x16", ((ulong)value), null);
+                       default:
+                               throw new Exception ("Invalid type code for enumeration.");
                        }
                }
 
index 42ff390b6d74f46bcc977c0a2acffeef1a74b9ed..d4fb24f7cec100918d32b1fe9927f3dc10a3763e 100644 (file)
@@ -38,7 +38,7 @@
 using System.Runtime.InteropServices;
 using System.Security.Cryptography;
 using System.Text;
-#if FULL_AOT_RUNTIME
+#if MONOTOUCH && FULL_AOT_RUNTIME
 using Crimson.CommonCrypto;
 #endif
 
@@ -48,7 +48,7 @@ namespace System {
        [StructLayout (LayoutKind.Sequential)]
        [ComVisible (true)]
        public struct Guid : IFormattable, IComparable, IComparable<Guid>, IEquatable<Guid> {
-#if FULL_AOT_RUNTIME
+#if MONOTOUCH
                static Guid () {
                        if (MonoTouchAOTHelper.FalseFlag) {
                                var comparer = new System.Collections.Generic.GenericComparer <Guid> ();
@@ -76,8 +76,8 @@ namespace System {
                        X, // {0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
                }
 
-               class GuidParser {
-
+               struct GuidParser
+               {
                        private string _src;
                        private int _length;
                        private int _cur;
@@ -85,7 +85,8 @@ namespace System {
                        public GuidParser (string src)
                        {
                                _src = src;
-                               Reset ();
+                               _cur = 0;
+                               _length = _src.Length;
                        }
 
                        void Reset ()
@@ -235,19 +236,29 @@ namespace System {
                                        if (Eof)
                                                return !(strict && (i + 1 != length));
 
-                                       char c = Char.ToLowerInvariant (_src[_cur]);
+                                       char c = _src [_cur];
                                        if (Char.IsDigit (c)) {
                                                res = res * 16 + c - '0';
                                                _cur++;
-                                       } else if (c >= 'a' && c <= 'f') {
+                                               continue;
+                                       }
+
+                                       if (c >= 'a' && c <= 'f') {
                                                res = res * 16 + c - 'a' + 10;
                                                _cur++;
-                                       } else {
-                                               if (!strict)
-                                                       return true;
+                                               continue;
+                                       }
 
-                                               return !(strict && (i + 1 != length));
+                                       if (c >= 'A' && c <= 'F') {
+                                               res = res * 16 + c - 'A' + 10;
+                                               _cur++;
+                                               continue;
                                        }
+
+                                       if (!strict)
+                                               return true;
+
+                                       return false; //!(strict && (i + 1 != length));
                                }
 
                                return true;
@@ -263,20 +274,28 @@ namespace System {
 
                        public bool Parse (out Guid guid)
                        {
-                               if (TryParseNDBP (Format.N, out guid))
-                                       return true;
-
-                               Reset ();
-                               if (TryParseNDBP (Format.D, out guid))
-                                       return true;
-
-                               Reset ();
-                               if (TryParseNDBP (Format.B, out guid))
-                                       return true;
-
-                               Reset ();
-                               if (TryParseNDBP (Format.P, out guid))
-                                       return true;
+                               switch (_length) {
+                               case 32:
+                                       if (TryParseNDBP (Format.N, out guid))
+                                               return true;
+                                       break;
+                               case 36:
+                                       if (TryParseNDBP (Format.D, out guid))
+                                               return true;
+                                       break;
+                               case 38:
+                                       switch (_src [0]) {
+                                       case '{':
+                                               if (TryParseNDBP (Format.B, out guid))
+                                                       return true;
+                                               break;
+                                       case '(':
+                                               if (TryParseNDBP (Format.P, out guid))
+                                                       return true;
+                                               break;
+                                       }
+                                       break;
+                               }
 
                                Reset ();
                                return TryParseX (out guid);
@@ -472,6 +491,15 @@ namespace System {
                private static RandomNumberGenerator _fastRng;
 #endif
 
+#if FULL_AOT_RUNTIME && !MONOTOUCH
+               // NSA approved random generator.
+               static void LameRandom (byte [] b)
+               {
+                       var r = new Random ();
+                       r.NextBytes (b);
+               }
+#endif
+               
                // generated as per section 3.4 of the specification
                public static Guid NewGuid ()
                {
@@ -483,8 +511,10 @@ namespace System {
                                        _rng = RandomNumberGenerator.Create ();
                                _rng.GetBytes (b);
                        }
-#else
+#elif MONOTOUCH
                        Cryptor.GetRandom (b);
+#else
+                       LameRandom (b);
 #endif
 
                        Guid res = new Guid (b);
index e8ca505de18e06bdaa06e9fad7c63672b0a9d95c..20c06387df145cf27b2ec5500c4ee79f3266d83e 100644 (file)
@@ -148,9 +148,9 @@ namespace System
                public string ToString (string format)
                {
                        if (Size == 4)
-                               return ((int) m_value).ToString (format);
+                               return ((int) m_value).ToString (format, null);
                        else
-                               return ((long) m_value).ToString (format);
+                               return ((long) m_value).ToString (format, null);
                }
 
                [ReliabilityContractAttribute (Consistency.WillNotCorruptState, Cer.Success)]
index 870b2306f1ac64a497a82c70ef983038e3c11257..d5d5a8a4b16d17c84af1ed767d372e8aeb26731b 100644 (file)
@@ -45,6 +45,8 @@ namespace System
        static class MonoCustomAttrs
        {
                static Assembly corlib;
+               [ThreadStatic]
+               static Dictionary<Type, AttributeUsageAttribute> usage_cache;
 
                /* Treat as user types all corlib types extending System.Type that are not MonoType and TypeBuilder */
                static bool IsUserCattrProvider (object obj)
@@ -149,76 +151,94 @@ namespace System
                        object[] r;
                        object[] res = GetCustomAttributesBase (obj, attributeType, false);
                        // shortcut
-                       if (!inherit && res.Length == 1)
-                       {
+                       if (!inherit && res.Length == 1) {
                                if (res [0] == null)
                                        throw new CustomAttributeFormatException ("Invalid custom attribute format");
 
-                               if (attributeType != null)
-                               {
-                                       if (attributeType.IsAssignableFrom (res[0].GetType ()))
-                                       {
+                               if (attributeType != null) {
+                                       if (attributeType.IsAssignableFrom (res[0].GetType ())) {
                                                r = (object[]) Array.CreateInstance (attributeType, 1);
                                                r[0] = res[0];
-                                       }
-                                       else
-                                       {
+                                       } else {
                                                r = (object[]) Array.CreateInstance (attributeType, 0);
                                        }
-                               }
-                               else
-                               {
+                               } else {
                                        r = (object[]) Array.CreateInstance (res[0].GetType (), 1);
                                        r[0] = res[0];
                                }
                                return r;
                        }
 
+                       if (inherit && GetBase (obj) == null)
+                               inherit = false;
+
                        // if AttributeType is sealed, and Inherited is set to false, then 
                        // there's no use in scanning base types 
-                       if ((attributeType != null && attributeType.IsSealed) && inherit)
-                       {
+                       if ((attributeType != null && attributeType.IsSealed) && inherit) {
                                AttributeUsageAttribute usageAttribute = RetrieveAttributeUsage (
                                        attributeType);
                                if (!usageAttribute.Inherited)
-                               {
                                        inherit = false;
-                               }
                        }
 
                        var initialSize = Math.Max (res.Length, 16);
-                       var attributeInfos = new Dictionary<Type, AttributeInfo> (initialSize);
-                       var a = new List<object> (initialSize);
+                       List<Object> a = null;
                        ICustomAttributeProvider btype = obj;
+                       object[] array;
+
+                       /* Non-inherit case */
+                       if (!inherit) {
+                               if (attributeType == null) {
+                                       foreach (object attr in res) {
+                                               if (attr == null)
+                                                       throw new CustomAttributeFormatException ("Invalid custom attribute format");
+                                       }
+                                       var result = new Attribute [res.Length];
+                                       res.CopyTo (result, 0);
+                                       return result;
+                               }
+
+                               a = new List<object> (initialSize);
+                               foreach (object attr in res) {
+                                       if (attr == null)
+                                               throw new CustomAttributeFormatException ("Invalid custom attribute format");
+
+                                       Type attrType = attr.GetType ();
+                                       if (attributeType != null && !attributeType.IsAssignableFrom (attrType))
+                                               continue;
+                                       a.Add (attr);
+                               }
 
+                               if (attributeType == null || attributeType.IsValueType)
+                                       array = new Attribute [a.Count];
+                               else
+                                       array = Array.CreateInstance (attributeType, a.Count) as object[];
+                               a.CopyTo (array, 0);
+                               return array;
+                       }
+
+                       /* Inherit case */
+                       var attributeInfos = new Dictionary<Type, AttributeInfo> (initialSize);
                        int inheritanceLevel = 0;
+                       a = new List<object> (initialSize);
 
-                       do
-                       {
-                               foreach (object attr in res)
-                               {
+                       do {
+                               foreach (object attr in res) {
                                        AttributeUsageAttribute usage;
                                        if (attr == null)
                                                throw new CustomAttributeFormatException ("Invalid custom attribute format");
 
                                        Type attrType = attr.GetType ();
-                                       if (attributeType != null)
-                                       {
+                                       if (attributeType != null) {
                                                if (!attributeType.IsAssignableFrom (attrType))
-                                               {
                                                        continue;
-                                               }
                                        }
 
                                        AttributeInfo firstAttribute;
                                        if (attributeInfos.TryGetValue (attrType, out firstAttribute))
-                                       {
                                                usage = firstAttribute.Usage;
-                                       }
                                        else
-                                       {
                                                usage = RetrieveAttributeUsage (attrType);
-                                       }
 
                                        // only add attribute to the list of attributes if 
                                        // - we are on the first inheritance level, or the attribute can be inherited anyway
@@ -232,32 +252,22 @@ namespace System
                                        if ((inheritanceLevel == 0 || usage.Inherited) && (usage.AllowMultiple || 
                                                (firstAttribute == null || (firstAttribute != null 
                                                        && firstAttribute.InheritanceLevel == inheritanceLevel))))
-                                       {
                                                a.Add (attr);
-                                       }
 
                                        if (firstAttribute == null)
-                                       {
                                                attributeInfos.Add (attrType, new AttributeInfo (usage, inheritanceLevel));
-                                       }
                                }
 
-                               if ((btype = GetBase (btype)) != null)
-                               {
+                               if ((btype = GetBase (btype)) != null) {
                                        inheritanceLevel++;
                                        res = GetCustomAttributesBase (btype, attributeType, true);
                                }
                        } while (inherit && btype != null);
 
-                       object[] array = null;
                        if (attributeType == null || attributeType.IsValueType)
-                       {
-                               array = (object[]) Array.CreateInstance (typeof(Attribute), a.Count);
-                       }
+                               array = new Attribute [a.Count];
                        else
-                       {
                                array = Array.CreateInstance (attributeType, a.Count) as object[];
-                       }
 
                        // copy attributes to array
                        a.CopyTo (array, 0);
@@ -406,7 +416,7 @@ namespace System
                        return baseMethod;
                }
 
-               private static AttributeUsageAttribute RetrieveAttributeUsage (Type attributeType)
+               private static AttributeUsageAttribute RetrieveAttributeUsageNoCache (Type attributeType)
                {
                        if (attributeType == typeof (AttributeUsageAttribute))
                                /* Avoid endless recursion */
@@ -445,6 +455,19 @@ namespace System
                        return ((AttributeUsageAttribute) attribs[0]);
                }
 
+               static AttributeUsageAttribute RetrieveAttributeUsage (Type attributeType)
+               {
+                       AttributeUsageAttribute usageAttribute = null;
+                       /* Usage a thread-local cache to speed this up, since it is called a lot from GetCustomAttributes () */
+                       if (usage_cache == null)
+                               usage_cache = new Dictionary<Type, AttributeUsageAttribute> ();
+                       if (usage_cache.TryGetValue (attributeType, out usageAttribute))
+                               return usageAttribute;
+                       usageAttribute = RetrieveAttributeUsageNoCache (attributeType);
+                       usage_cache [attributeType] = usageAttribute;
+                       return usageAttribute;
+               }
+
                private static readonly AttributeUsageAttribute DefaultAttributeUsage =
                        new AttributeUsageAttribute (AttributeTargets.All);
 
index df90010c206114741e0eb77d6146df6a3c9c9acf..4bce62bd679c69e9abecdc2c11a3f96df6ba16f7 100644 (file)
@@ -51,7 +51,13 @@ namespace System
                
        [Serializable]
        [StructLayout (LayoutKind.Sequential)]
-       sealed class MonoType : Type, ISerializable
+       sealed class MonoType : 
+#if NET_4_5
+               TypeInfo
+#else
+               Type
+#endif
+               , ISerializable
        {
                [NonSerialized]
                MonoTypeInfo type_info;
index 96555328227fc14a119aec9f5f696df8f1ede534..0550ff82843fd239d47fd94d68bf4d071ae3e5de 100644 (file)
@@ -43,19 +43,17 @@ namespace System
        [StructLayout (LayoutKind.Sequential)]
        public abstract class MulticastDelegate : Delegate
        {
-               private MulticastDelegate prev;
-               private MulticastDelegate kpm_next;
+               MulticastDelegate prev;
+               MulticastDelegate kpm_next;
 
                protected MulticastDelegate (object target, string method)
                        : base (target, method)
                {
-                       prev = null;
                }
 
                protected MulticastDelegate (Type target, string method)
                        : base (target, method)
                {
-                       prev = null;
                }
                
                public override void GetObjectData (SerializationInfo info, StreamingContext context)
@@ -72,9 +70,6 @@ namespace System
                        return base.DynamicInvokeImpl (args);
                }
 
-               internal bool HasSingleTarget {
-                       get { return prev == null; }
-               }
                // <remarks>
                //   Equals: two multicast delegates are equal if their base is equal
                //   and their invocations list is equal.
@@ -162,6 +157,7 @@ namespace System
                                clone = clone.prev;
                        }
 
+                       clone.SetMulticastInvoke ();
                        clone.prev = (MulticastDelegate)this.Clone ();
 
                        for (clone = clone.prev, orig = this.prev; orig != null; orig = orig.prev) {
index 1f84216ffee942601c5b0ea5a42e99d334d3966d..0bf5c7462786937e531a85562a07afe45cec7c5e 100644 (file)
@@ -4,13 +4,12 @@
 // Authors:
 //   Bob Smith (bob@thestuff.net)
 //   Ben Maurer (bmaurer@users.sourceforge.net)
+//   Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // (C) 2001 Bob Smith.  http://www.thestuff.net
 // (C) 2003 Ben Maurer
-//
-
-//
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
@@ -39,12 +38,11 @@ namespace System
        [ComVisible (true)]
        public class Random
        {
-               const int MBIG = int.MaxValue;
-               const int MSEED = 161803398;
+               uint x;
+               uint y;
+               uint z;
+               uint c;
 
-               int inext, inextp;
-               int [] SeedArray = new int [56];
-               
                public Random ()
                        : this (Environment.TickCount)
                {
@@ -52,75 +50,28 @@ namespace System
 
                public Random (int Seed)
                {
-                       int ii;
-                       int mj, mk;
-
-                       // Numerical Recipes in C online @ http://www.library.cornell.edu/nr/bookcpdf/c7-1.pdf
-
-                       // Math.Abs throws on Int32.MinValue, so we need to work around that case.
-                       // Fixes: 605797
-                       if (Seed == Int32.MinValue)
-                               mj = MSEED - Math.Abs (Int32.MinValue + 1);
-                       else
-                               mj = MSEED - Math.Abs (Seed);
-                       
-                       SeedArray [55] = mj;
-                       mk = 1;
-                       for (int i = 1; i < 55; i++) {  //  [1, 55] is special (Knuth)
-                               ii = (21 * i) % 55;
-                               SeedArray [ii] = mk;
-                               mk = mj - mk;
-                               if (mk < 0)
-                                       mk += MBIG;
-                               mj = SeedArray [ii];
-                       }
-                       for (int k = 1; k < 5; k++) {
-                               for (int i = 1; i < 56; i++) {
-                                       SeedArray [i] -= SeedArray [1 + (i + 30) % 55];
-                                       if (SeedArray [i] < 0)
-                                               SeedArray [i] += MBIG;
-                               }
-                       }
-                       inext = 0;
-                       inextp = 31;
-               }
-
-               protected virtual double Sample ()
-               {
-                       int retVal;
-
-                       if (++inext  >= 56) inext  = 1;
-                       if (++inextp >= 56) inextp = 1;
-
-                       retVal = SeedArray [inext] - SeedArray [inextp];
-
-                       if (retVal < 0)
-                               retVal += MBIG;
-
-                       SeedArray [inext] = retVal;
-
-                       return retVal * (1.0 / MBIG);
-               }
-
-               public virtual int Next ()
-               {
-                       return (int)(Sample () * int.MaxValue);
+                       x = (uint) Seed;
+                       y = (uint) 987654321;
+                       z = (uint) 43219876;
+                       c = (uint) 6543217;
                }
 
-               public virtual int Next (int maxValue)
+               uint JKiss ()
                {
-                       if (maxValue < 0)
-                               throw new ArgumentOutOfRangeException(Locale.GetText (
-                                       "Max value is less than min value."));
-
-                       return (int)(Sample () * maxValue);
+                       x = 314527869 * x + 1234567;
+                       y ^= y << 5;
+                       y ^= y >> 7;
+                       y ^= y << 22;
+                       ulong t = ((ulong) 4294584393 * z + c);
+                       c = (uint) (t >> 32);
+                       z = (uint) t;
+                       return (x + y + z);
                }
 
                public virtual int Next (int minValue, int maxValue)
                {
                        if (minValue > maxValue)
-                               throw new ArgumentOutOfRangeException (Locale.GetText (
-                                       "Min value is greater than max value."));
+                               throw new ArgumentOutOfRangeException ("Maximum value is less than minimal value.");
 
                        // special case: a difference of one (or less) will always return the minimum
                        // e.g. -1,-1 or -1,0 will always return -1
@@ -128,7 +79,28 @@ namespace System
                        if (diff <= 1)
                                return minValue;
 
-                       return (int)((uint)(Sample () * diff) + minValue);
+                       return minValue + ((int) (JKiss () % diff));
+               }
+
+               public virtual int Next (int maxValue)
+               {
+                       if (maxValue < 0)
+                               throw new ArgumentOutOfRangeException ("Maximum value is less than minimal value.");
+
+                       return maxValue > 0 ? (int)(JKiss () % maxValue) : 0;
+               }
+
+               public virtual int Next ()
+               {
+                       // returns a non-negative, [0 - Int32.MacValue], random number
+                       // but we want to avoid calls to Math.Abs (call cost and branching cost it requires)
+                       // and the fact it would throw for Int32.MinValue (so roughly 1 time out of 2^32)
+                       int random = (int) JKiss ();
+                       while (random == Int32.MinValue)
+                               random = (int) JKiss ();
+                       int mask = random >> 31;
+                       random ^= mask;
+                       return random + (mask & 1);
                }
 
                public virtual void NextBytes (byte [] buffer)
@@ -136,14 +108,39 @@ namespace System
                        if (buffer == null)
                                throw new ArgumentNullException ("buffer");
 
-                       for (int i = 0; i < buffer.Length; i++) {
-                               buffer [i] = (byte)(Sample () * (byte.MaxValue + 1)); 
+                       // each random `int` can fill 4 bytes
+                       int p = 0;
+                       uint random;
+                       for (int i = 0; i < (buffer.Length >> 2); i++) {
+                               random = JKiss ();
+                               buffer [p++] = (byte) (random >> 24);
+                               buffer [p++] = (byte) (random >> 16);
+                               buffer [p++] = (byte) (random >> 8);
+                               buffer [p++] = (byte) random;
+                       }
+                       if (p == buffer.Length)
+                               return;
+
+                       // complete the array
+                       random = JKiss ();
+                       while (p < buffer.Length) {
+                               buffer [p++] = (byte) random;
+                               random >>= 8;
                        }
                }
 
                public virtual double NextDouble ()
                {
-                       return this.Sample ();
+                       // return a double value between [0,1]
+                       return Sample ();
+               }
+
+               protected virtual double Sample ()
+               {
+                       // a single 32 bits random value is not enough to create a random double value
+                       uint a = JKiss () >> 6; // Upper 26 bits
+                       uint b = JKiss () >> 5; // Upper 27 bits
+                       return (a * 134217728.0 + b) / 9007199254740992.0;
                }
        }
-}
+}
\ No newline at end of file
index 937b9214582ab5fdb3638cbe1c8a80dd9a31b47d..d30735f9bdbad34a0239933209a4997f4609a14d 100644 (file)
@@ -1278,11 +1278,11 @@ namespace System
                {
                        if (value == null)
                                throw new ArgumentNullException ("value");
-                       if (value.length == 0)
+                       if (value.Length == 0)
                                return 0;
                        if (this.length == 0)
                                return -1;
-                       return CultureInfo.CurrentCulture.CompareInfo.IndexOf (this, value, 0, length, CompareOptions.Ordinal);
+                       return CultureInfo.CurrentCulture.CompareInfo.IndexOf (this, value, 0, length, CompareOptions.None);
                }
 
                public int IndexOf (String value, int startIndex)
@@ -1516,7 +1516,10 @@ namespace System
 
                public bool Contains (String value)
                {
-                       return IndexOf (value) != -1;
+                       if (value == null)
+                               throw new ArgumentNullException ("value");
+
+                       return IndexOfOrdinalUnchecked (value, 0, Length) != -1;
                }
 
                public static bool IsNullOrEmpty (String value)
@@ -1691,9 +1694,9 @@ namespace System
                        case StringComparison.InvariantCultureIgnoreCase:
                                return CultureInfo.InvariantCulture.CompareInfo.IsSuffix (this, value, CompareOptions.IgnoreCase);
                        case StringComparison.Ordinal:
-                               return CultureInfo.CurrentCulture.CompareInfo.IsSuffix (this, value, CompareOptions.Ordinal);
+                               return CultureInfo.InvariantCulture.CompareInfo.IsSuffix (this, value, CompareOptions.Ordinal);
                        case StringComparison.OrdinalIgnoreCase:
-                               return CultureInfo.CurrentCulture.CompareInfo.IsSuffix (this, value, CompareOptions.OrdinalIgnoreCase);
+                               return CultureInfo.InvariantCulture.CompareInfo.IsSuffix (this, value, CompareOptions.OrdinalIgnoreCase);
                        default:
                                string msg = Locale.GetText ("Invalid value '{0}' for StringComparison", comparisonType);
                                throw new ArgumentException (msg, "comparisonType");
@@ -3081,6 +3084,43 @@ namespace System
                        memcpy4 (dest, src, size);
                }
 
+               /* Used by the runtime */
+               internal static unsafe void bzero (byte *dest, int len) {
+                       memset (dest, 0, len);
+               }
+
+               internal static unsafe void bzero_aligned_1 (byte *dest, int len) {
+                       ((byte*)dest) [0] = 0;
+               }
+
+               internal static unsafe void bzero_aligned_2 (byte *dest, int len) {
+                       ((short*)dest) [0] = 0;
+               }
+
+               internal static unsafe void bzero_aligned_4 (byte *dest, int len) {
+                       ((int*)dest) [0] = 0;
+               }
+
+               internal static unsafe void bzero_aligned_8 (byte *dest, int len) {
+                       ((long*)dest) [0] = 0;
+               }
+
+               internal static unsafe void memcpy_aligned_1 (byte *dest, byte *src, int size) {
+                       ((byte*)dest) [0] = ((byte*)src) [0];
+               }                       
+
+               internal static unsafe void memcpy_aligned_2 (byte *dest, byte *src, int size) {
+                       ((short*)dest) [0] = ((short*)src) [0];
+               }                       
+
+               internal static unsafe void memcpy_aligned_4 (byte *dest, byte *src, int size) {
+                       ((int*)dest) [0] = ((int*)src) [0];
+               }                       
+
+               internal static unsafe void memcpy_aligned_8 (byte *dest, byte *src, int size) {
+                       ((long*)dest) [0] = ((long*)src) [0];
+               }                       
+
                internal static unsafe void CharCopy (char *dest, char *src, int count) {
                        // Same rules as for memcpy, but with the premise that 
                        // chars can only be aligned to even addresses if their
index 67d8c897a12863abd274674bef533a07b58c5494..e448a889d0e7337d4e1034b17842bc263e9655ff 100644 (file)
@@ -439,7 +439,7 @@ namespace System
                {
                        result = TimeSpan.Zero;
 
-                       if (formats == null || formats.Length == 0)
+                       if (input == null || formats == null || formats.Length == 0)
                                return false;
 
                        Parser p = new Parser (input, formatProvider);
index a45c3948878e5cf5c9cfc0ff2d04c3bc7ef6a8e3..1b6a28b7541ad9945bba7dfa3b227d7419e0211c 100644 (file)
@@ -1431,6 +1431,12 @@ namespace System {
                        return FullName;
                }
 
+               internal static bool ShouldPrintFullName (Type type)
+               {
+                       return type.IsGenericType || (type.IsClass && (!type.IsPointer ||
+                               (!type.GetElementType ().IsPrimitive && !type.GetElementType ().IsNested)));
+               }
+
                internal virtual Type InternalResolve ()
                {
                        return UnderlyingSystemType;
index 3cc7b18dfb8c1bbc02016ba4254fb2e24759db9c..8ac242b346e64ac4cfc6b37d96b88765f6c9470a 100644 (file)
@@ -247,7 +247,7 @@ namespace System
                                obj = Marshal.PtrToStringBSTR(Marshal.ReadIntPtr(addr));
                                break;
 // GetObjectForIUnknown is excluded from Marshal using FULL_AOT_RUNTIME
-#if !MONOTOUCH
+#if !DISABLE_COM
                        case VarEnum.VT_UNKNOWN:
                        case VarEnum.VT_DISPATCH:
                        {
index cb5b9f7cf1c42253f1699ffade7d296a23660f1a..6542238daedae949f3c822ac4f846c3b6a851f42 100644 (file)
@@ -555,12 +555,55 @@ namespace MonoTests.System.Collections.Generic {
 
                        i = _list1.FindIndex (FindMultipleOfTwelve);
                        Assert.AreEqual (-1, i);
+
+                       var a = new List<int> () { 2, 2, 2, 3, 2 };
+                       Assert.AreEqual (2, a.FindIndex (2, 2, l => true));
                }
 
-               [Test, ExpectedException (typeof (ArgumentNullException))]
-               public void FindIndexNullTest ()
+               [Test]
+               public void FindIndex_Invalid ()
                {
-                       int i = _list1.FindIndex (null);
+                       try {
+                               _list1.FindIndex (null);
+                               Assert.Fail ("#1");
+                       } catch (ArgumentNullException) {
+                       }
+
+                       try {
+                               _list1.FindIndex (-1, l => true);
+                               Assert.Fail ("#2");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               _list1.FindIndex (-1, 0, l => true);
+                               Assert.Fail ("#2b");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               _list1.FindIndex (0, -1, l => true);
+                               Assert.Fail ("#3");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               _list1.FindIndex (100, l => true);
+                               Assert.Fail ("#4");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               _list1.FindIndex (100, 0, l => true);
+                               Assert.Fail ("#4b");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               _list1.FindIndex (7, 2, l => true);
+                               Assert.Fail ("#5");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
                }
 
                [Test]
@@ -579,8 +622,6 @@ namespace MonoTests.System.Collections.Generic {
                        int i = _list1.FindLast (null);
                }
 
-               // FIXME currently generates Invalid IL Code error
-               /*
                [Test]
                public void ForEachTest ()
                {
@@ -589,7 +630,7 @@ namespace MonoTests.System.Collections.Generic {
 
                        Assert.AreEqual (418, i);
                }
-               */
+
                [Test]
                public void FindLastIndexTest ()
                {
@@ -601,12 +642,56 @@ namespace MonoTests.System.Collections.Generic {
 
                        i = _list1.FindIndex (FindMultipleOfTwelve);
                        Assert.AreEqual (-1, i);
+
+                       Assert.AreEqual (2, _list1.FindLastIndex (2, 3, l => true));
+                       Assert.AreEqual (2, _list1.FindLastIndex (2, 2, l => true));
+                       Assert.AreEqual (1, _list1.FindLastIndex (1, 2, l => true));
                }
 
-               [Test, ExpectedException (typeof (ArgumentNullException))]
-               public void FindLastIndexNullTest ()
+               [Test]
+               public void FindLastIndex_Invalid ()
                {
-                       int i = _list1.FindLastIndex (null);
+                       try {
+                               _list1.FindLastIndex (null);
+                               Assert.Fail ("#1");
+                       } catch (ArgumentNullException) {
+                       }
+
+                       try {
+                               _list1.FindLastIndex (-1, l => true);
+                               Assert.Fail ("#2");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               _list1.FindLastIndex (-1, 0, l => true);
+                               Assert.Fail ("#2b");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               _list1.FindLastIndex (0, -1, l => true);
+                               Assert.Fail ("#3");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               _list1.FindLastIndex (100, l => true);
+                               Assert.Fail ("#4");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               _list1.FindLastIndex (100, 0, l => true);
+                               Assert.Fail ("#4b");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
+
+                       try {
+                               _list1.FindLastIndex (2, 4, l => true);
+                               Assert.Fail ("#5");
+                       } catch (ArgumentOutOfRangeException) {
+                       }
                }
 
                [Test]
diff --git a/mcs/class/corlib/Test/System.Collections/StructuralComparisonsTest.cs b/mcs/class/corlib/Test/System.Collections/StructuralComparisonsTest.cs
new file mode 100644 (file)
index 0000000..38c9ace
--- /dev/null
@@ -0,0 +1,55 @@
+//
+// StructuralComparisonsTest.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_0
+
+using System.Collections;
+using NUnit.Framework;
+
+namespace MonoTests.System.Collections
+{
+       [TestFixture]
+       public class StructuralComparisonsTest
+       {
+               [Test]
+               public void EqualsTest ()
+               {
+                       int[] a1 = new[] { 9, 1, 3, 4 };
+                       int[] a2 = new[] { 9, 1, 3, 4 };
+
+                       Assert.IsTrue (StructuralComparisons.StructuralEqualityComparer.Equals (a1, a2), "#1");
+                       Assert.IsFalse (StructuralComparisons.StructuralEqualityComparer.Equals (null, a2), "#2");
+                       Assert.IsFalse (StructuralComparisons.StructuralEqualityComparer.Equals (a1, null), "#3");
+                       Assert.IsTrue (StructuralComparisons.StructuralEqualityComparer.Equals (null, null), "#4");
+                       Assert.IsTrue (StructuralComparisons.StructuralEqualityComparer.Equals (4, 4), "#5");
+                       Assert.IsFalse (StructuralComparisons.StructuralEqualityComparer.Equals (4, 5), "#6");
+               }
+       }
+}
+
+#endif
\ No newline at end of file
index 033cc08539db4fea459009761435d537c08022e7..0948663104623405a0fad4be3bf69b4951753438 100644 (file)
@@ -42,6 +42,7 @@ namespace MonoTests.System.Diagnostics
                ///   Tests whether getting file name works.
                /// </summary>
                [Test]
+               [Category("LLVMNotWorking")]
                public void TestGetFileName ()
                {
                        Assert.AreEqual ("dir/someFile",
@@ -57,6 +58,7 @@ namespace MonoTests.System.Diagnostics
                /// Tests whether getting file line number works.
                /// </summary>
                [Test]
+               [Category("LLVMNotWorking")]
                public void TestGetFileLineNumber ()
                {
                        Assert.AreEqual (13,
@@ -170,7 +172,7 @@ namespace MonoTests.System.Diagnostics
                                                         frame1.GetFileLineNumber (),
                                                         "Line number (1)");
 
-                       Assert.AreEqual (132,
+                       Assert.AreEqual (134,
                                                         frame2.GetFileLineNumber (),
                                                         "Line number (2)");
 
@@ -305,7 +307,7 @@ namespace MonoTests.System.Diagnostics
                                                         frame1.GetFileLineNumber (),
                                                         "Line number (1)");
 
-                       Assert.AreEqual (260,
+                       Assert.AreEqual (262,
                                                         frame2.GetFileLineNumber (),
                                                         "Line number (2)");
                }
index 4a6ac7db8a086cc2b23c5206f3044aabf1d2d212..7714f53ab3251892b0f2e34cb38ca2f20cbcacb3 100644 (file)
@@ -571,6 +571,14 @@ namespace MonoTests.System.Globalization
                        Assert.AreEqual (31748, new CultureInfo ("zh-CHT").LCID);
                        Assert.AreEqual (31748, new CultureInfo ("zh-CHT").Parent.LCID);
                }
+
+               [Test]
+               [SetCulture ("zh-TW")]
+               public void ParentOfZh ()
+               {
+                       Assert.AreEqual (31748, CultureInfo.CurrentCulture.Parent.LCID);
+                       Assert.AreEqual (31748, CultureInfo.CurrentCulture.Parent.Parent.LCID);
+               }
                
                [Test]
                public void CurrentCulture ()
index b21057561e57f33a284f107c28d1c3f115584ad8..b0b1a041da8b987aa66b86e335d5b7556ceee114 100644 (file)
@@ -61,6 +61,8 @@ namespace MonoTests.System.Globalization
                }
                
                [Test]
+               // This can fail on systems where CultureInfo.CurrentCulture==null
+               [Category ("NotWorking")]
                public void CurrentRegion ()
                {
                        Assert.IsNotNull (RegionInfo.CurrentRegion, "CurrentRegion");
index 716a01390020af7ea1615c39497129e8b751d843..dd17fc3c95fba962daaf16b132d173ddd093c7d4 100644 (file)
 //\r
 \r
 using System;\r
+using System.Collections.Generic;\r
 using System.Diagnostics;\r
 using System.Globalization;\r
 using System.IO;\r
 using System.Text;\r
 using System.Threading;\r
 \r
+#if !MONOTOUCH\r
+using Mono.Unix;\r
+#endif\r
 using NUnit.Framework;\r
 \r
 namespace MonoTests.System.IO\r
@@ -43,7 +47,53 @@ public class DirectoryTest
                if (Directory.Exists (TempFolder))\r
                        Directory.Delete (TempFolder, true);\r
        }\r
+#if !MONOTOUCH\r
+       [Test] //BXC #12461\r
+       public void EnumerateFilesListSymlinks ()\r
+       {\r
+               if (!RunningOnUnix)\r
+                       return;\r
 \r
+               var afile = Path.Combine (TempFolder, "afile.src");\r
+               var bfile = Path.Combine (TempFolder, "bfile.src");\r
+               var cdir = Path.Combine (TempFolder, "cdir.src");\r
+\r
+               File.AppendAllText (afile, "hello");\r
+               var info = new UnixFileInfo (afile);\r
+               info.CreateSymbolicLink (bfile);\r
+               Directory.CreateDirectory (cdir);\r
+\r
+               var files0 = Directory.GetFiles (TempFolder, "*.src");\r
+               Array.Sort (files0);\r
+               Assert.AreEqual (2, files0.Length, "#1");\r
+               Assert.AreEqual (afile, files0 [0], "#2");\r
+               Assert.AreEqual (bfile, files0 [1], "#3");\r
+\r
+#if NET_4_0\r
+               var files1 = new List<string> (Directory.EnumerateFiles (TempFolder, "*.src")).ToArray ();\r
+               Array.Sort (files1);\r
+               Assert.AreEqual (2, files1.Length, "#1.b");\r
+               Assert.AreEqual (afile, files1 [0], "#2.b");\r
+               Assert.AreEqual (bfile, files1 [1], "#3.b");\r
+#endif\r
+\r
+               var files2 = Directory.GetFileSystemEntries (TempFolder, "*.src");\r
+               Array.Sort (files2);\r
+               Assert.AreEqual (3, files2.Length, "#1.c");\r
+               Assert.AreEqual (afile, files2 [0], "#2.c");\r
+               Assert.AreEqual (bfile, files2 [1], "#3.c");\r
+               Assert.AreEqual (cdir, files2 [2], "#4.c");\r
+\r
+#if NET_4_0\r
+               var files3 = new List<string> (Directory.EnumerateFileSystemEntries (TempFolder, "*.src")).ToArray ();\r
+               Array.Sort (files3);\r
+               Assert.AreEqual (3, files3.Length, "#1.d");\r
+               Assert.AreEqual (afile, files3 [0], "#2.d");\r
+               Assert.AreEqual (bfile, files3 [1], "#3.d");\r
+               Assert.AreEqual (cdir, files3 [2], "#4.d");\r
+#endif\r
+       }\r
+#endif\r
        [Test]\r
        public void CreateDirectory ()\r
        {\r
index a56c4f820c0f32c3622484ce75a828e201c37db7..51d352d0dd8a944b63eed2820537967feb06acad 100644 (file)
@@ -15,6 +15,7 @@ using System;
 using System.IO;
 using System.Runtime.InteropServices;
 using System.Text;
+using System.Threading;
 
 namespace MonoTests.System.IO
 {
@@ -1515,6 +1516,35 @@ namespace MonoTests.System.IO
                        stream.EndWrite (stream.BeginWrite (new byte[8], 0, 8, null, null));
                }
 
+               static IAsyncResult DoBeginWrite(Stream stream, ManualResetEvent mre, byte[] RandomBuffer)
+               {
+                       return stream.BeginWrite (RandomBuffer, 0, RandomBuffer.Length, ar => {
+                               stream.EndWrite (ar);
+
+                               // we don't supply an ManualResetEvent so this will throw an NRE on the second run
+                               // which nunit-console will ignore (but other test runners don't like that)
+                               if (mre == null)
+                                       return;
+
+                               DoBeginWrite (stream, null, RandomBuffer).AsyncWaitHandle.WaitOne ();
+                               mre.Set ();
+                       }, null);
+               }
+
+               [Test]
+               public void BeginWrite_Recursive ()
+               {
+                       string path = TempFolder + Path.DirectorySeparatorChar + "temp";
+                       DeleteFile (path);
+       
+                       using (FileStream stream = new FileStream (path, FileMode.OpenOrCreate, FileAccess.Write)) {
+                               var mre = new ManualResetEvent (false); 
+                               var RandomBuffer = new byte[1024];                      
+                               DoBeginWrite (stream, mre, RandomBuffer);
+                               Assert.IsTrue (mre.WaitOne (5000), "#1");
+                       }
+               }
+
                [Test]
                [Category("TargetJvmNotSupported")] // File locking not supported for TARGET_JVM
                [ExpectedException (typeof (ObjectDisposedException))]
index 582ed7a9dd649f28012e4080d394410496408a2a..661cffc18c61370723ed9b5137ce483534128833 100644 (file)
@@ -1076,6 +1076,28 @@ namespace MonoTests.System.IO
                Assert.AreEqual (1, ms.Length);
        }
 
+       [Test]
+       public void WriteAsync ()
+       {
+               var m = new MockStream(true, false, true);
+               var w = new StreamWriter (m);
+
+               var t = w.WriteAsync ("v");
+               Assert.IsTrue (t.Wait (1000), "#1");
+
+               t = w.WriteAsync ((string) null);
+               Assert.IsTrue (t.Wait (1000), "#2");
+
+               t = w.WriteLineAsync ("line");
+               Assert.IsTrue (t.Wait (1000), "#3");
+
+               t = w.WriteLineAsync ((string) null);
+               Assert.IsTrue (t.Wait (1000), "#4");
+
+               t = w.WriteLineAsync ('c');
+               Assert.IsTrue (t.Wait (1000), "#5");
+       }
+
 #endif
 
        // TODO - Write - test errors, functionality tested in TestFlush.
index 6e75b960cbaac8f981ad7e7cdc359fc517152035..5482647d8c44c2d85af8b93cfa14f4caca887b5e 100644 (file)
@@ -78,12 +78,16 @@ public class AssemblyBuilderTest
                return assemblyName;
        }
 
-       private AssemblyBuilder genAssembly ()
+       private AssemblyBuilder genAssembly (AssemblyBuilderAccess access)
        {
                return domain.DefineDynamicAssembly (genAssemblyName (),
-                                                    AssemblyBuilderAccess.RunAndSave,
+                                                    access,
                                                     tempDir);
        }
+       private AssemblyBuilder genAssembly ()
+       {
+               return genAssembly (AssemblyBuilderAccess.RunAndSave);
+       }
 
        private MethodInfo genEntryFunction (AssemblyBuilder assembly)
        {
@@ -1929,5 +1933,25 @@ public class AssemblyBuilderTest
                        Assert.AreEqual (_assemblyName, assemblyName.ToString ());
                }
        }
+
+
+       [Test]//Bug #7126
+       public void CannotCreateInstanceOfSaveOnlyAssembly ()
+       {
+               var asm_builder = genAssembly (AssemblyBuilderAccess.Save);
+        var mod_builder = asm_builder.DefineDynamicModule("Foo", "Foo.dll");
+
+        var type_builder = mod_builder.DefineType("Foo",
+                TypeAttributes.Public | TypeAttributes.Sealed |
+                TypeAttributes.Class | TypeAttributes.BeforeFieldInit);
+
+        var type = type_builder.CreateType();
+
+               try {
+                       Activator.CreateInstance(type);
+                       Assert.Fail ("Cannot create instance of save only type");
+               } catch (NotSupportedException e) {
+               }
+     }
 }
 }
index af33767c62f7c3f2df558004e6e437735391f58e..b70bb8405c36fede361c27b4b0c24111b5917a32 100644 (file)
@@ -62,6 +62,14 @@ public class DynamicILInfoTest
                var res = dm.Invoke(null, null);
                Assert.AreEqual ("abcd", res);
        }
+       
+       [Test] // bug #13969
+       public void GetTokenFor_Constructor () {
+               var m = typeof (object).GetConstructor (Type.EmptyTypes);
+               var dm = new DynamicMethod ("Foo", typeof (void), Type.EmptyTypes);
+               var dil = dm.GetDynamicILInfo ();
+               dil.GetTokenFor (m.MethodHandle);
+       }
 
        [Test]
        public void GetTokenFor_Type () {
index 9880acdc61e9606bd28fa1ba5351de55c5c5b21a..0e26ea17702d3976a0cabdcbf6f6ec0bbe5dc653 100644 (file)
@@ -1177,9 +1177,7 @@ public class AssemblyNameTest {
                Assert.AreEqual (an.HashAlgorithm, clone.HashAlgorithm, "HashAlgorithm");
                Assert.AreEqual (an.KeyPair, clone.KeyPair, "KeyPair");
                Assert.AreEqual (an.Name, clone.Name, "Name");
-#if NET_2_0
-               Assert.AreEqual (an.ProcessorArchitecture, clone.ProcessorArchitecture, "PA");
-#endif
+               //Assert.AreEqual (an.ProcessorArchitecture, clone.ProcessorArchitecture, "PA");
                Assert.AreEqual (an.Version, clone.Version, "Version");
                Assert.AreEqual (an.VersionCompatibility, clone.VersionCompatibility, "VersionCompatibility");
                Assert.AreEqual (an.GetPublicKey (), clone.GetPublicKey (), "GetPublicKey");
@@ -2016,6 +2014,23 @@ public class AssemblyNameTest {
 
                Assert.AreEqual (fullName, an.FullName);
        }
+
+       [Test]
+       public void ReferenceMatchesDefinition_Compares_Only_SimpleName ()
+       {
+               var an1 = new AssemblyName ("TestDll, Version=1.0.0.0, Culture=Neutral, PublicKeyToken=b77a5c561934e089");
+               var an2 = new AssemblyName ("TestDll, Version=2.0.0.2001, Culture=en-US, PublicKeyToken=ab7a5c561934e089");
+
+               var an3 = new AssemblyName ("TestDll");
+               var an4 = new AssemblyName ("tesTDlL");
+
+               var an5 = new AssemblyName ("TestDll");
+               var an6 = new AssemblyName ("TestDll2");
+               
+               Assert.IsTrue (AssemblyName.ReferenceMatchesDefinition (an1, an2));
+               Assert.IsTrue (AssemblyName.ReferenceMatchesDefinition (an3, an4));
+               Assert.IsFalse (AssemblyName.ReferenceMatchesDefinition (an5, an6));
+       }
 #endif
 }
 
index 08235e8cec6c5f52e4df234210a334767fdb61f3..ab0c5356aff0c33c7b5731492387a3a638c2d4ae 100644 (file)
@@ -174,6 +174,14 @@ namespace MonoTests.System.Reflection
                }
        }
 
+       class DefaultValues
+       {
+               public int Value;
+               public DefaultValues (int i = 5)
+               {
+                       Value = i;
+               }
+       }
 
        [TestFixture]
        public class BinderTest
@@ -187,6 +195,16 @@ namespace MonoTests.System.Reflection
                        var o = Activator.CreateInstance (typeof (ParamsArrayTest), new object[] { test_args });
                        Assert.IsNotNull (o, "#A1");
                }
+
+               [Test]
+               public void DefaultParameter ()
+               {
+                       var o = Activator.CreateInstance (typeof (DefaultValues),
+                               BindingFlags.CreateInstance | BindingFlags.Public | BindingFlags.Instance | BindingFlags.OptionalParamBinding,
+                               null, null, null);
+                       var a = o as DefaultValues;
+                       Assert.AreEqual (5, a.Value);
+               }
                
                [Test]
                [ExpectedException (typeof (ArgumentException))]
diff --git a/mcs/class/corlib/Test/System.Reflection/IntrospectionExtensionsTest.cs b/mcs/class/corlib/Test/System.Reflection/IntrospectionExtensionsTest.cs
new file mode 100644 (file)
index 0000000..f16d9a2
--- /dev/null
@@ -0,0 +1,57 @@
+//
+// IntrospectionExtensionsTest.cs:
+//
+// Authors:
+//     Marek Safar (marek.safar@gmail.com)
+//
+// (C) 2013
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+#if NET_4_5
+
+using System;
+using System.Reflection;
+
+using NUnit.Framework;
+
+namespace MonoTests.System.Reflection
+{
+       [TestFixture]
+       public class IntrospectionExtensionsTest
+       {
+               [Test]
+               [ExpectedException (typeof (ArgumentNullException))]
+               public void GetTypeInfo_NullArgument ()
+               {
+                       IntrospectionExtensions.GetTypeInfo (null);
+               }
+               
+               [Test]
+               public void GetTypeInfo_SystemType ()
+               {
+                       var t = typeof (double);
+                       Assert.AreSame (t, IntrospectionExtensions.GetTypeInfo (t));
+               }
+       }
+}
+
+#endif
\ No newline at end of file
index 064cd9c76c93cb63e71c559192c754897bc45551..a0859fff295a4f6148d59578ecc3de09599e994c 100644 (file)
@@ -771,6 +771,18 @@ namespace MonoTests.System.Reflection
                }
 #endif
 
+
+               public int? Bug12856 ()
+               {
+                       return null;
+               }
+
+               [Test] //Bug #12856
+               public void MethodToStringShouldPrintFullNameOfGenericStructs ()
+               {
+                       var m = GetType ().GetMethod ("Bug12856");
+                       Assert.AreEqual ("System.Nullable`1[System.Int32] Bug12856()", m.ToString (), "#1");
+               }
        }
        
 #if NET_2_0
index 0f48ddef2a35c55203f5b1734a35309cfb4c15c4..ff1d915632d1755ab027e9d4de6eeec46852eec0 100644 (file)
@@ -13,6 +13,7 @@ using System.Threading;
 using System.Reflection;
 using System.Runtime.InteropServices;
 using System.Runtime.CompilerServices;
+using System.Collections.Generic;
 
 using NUnit.Framework;
 
@@ -233,6 +234,175 @@ namespace MonoTests.System.Reflection
                        var info = typeof (ParameterInfoTest).GetMethod ("TestC").GetParameters ();
                        Assert.AreEqual (decimal.MaxValue, info [0].DefaultValue);
                }
+
+               class MyParameterInfo2 : ParameterInfo
+               {
+                       public ParameterAttributes MyAttrsImpl;
+
+                       public override ParameterAttributes Attributes {
+                               get {return MyAttrsImpl;}
+                       }
+
+                       public IList<CustomAttributeData> myList = new List<CustomAttributeData> ();
+
+                       public override IList<CustomAttributeData> GetCustomAttributesData () {
+                               return myList;
+                       }
+               }
+
+               class MyParameterInfo : ParameterInfo
+               {
+                       public void SetClassImpl (Type t)
+                       {
+                               ClassImpl = t;
+                       }
+
+                       public void SetDefaultValueImpl (object o)
+                       {
+                               DefaultValueImpl = o;
+                       }
+
+                       public void SetMemberImpl (MemberInfo o)
+                       {
+                               MemberImpl = o;
+                       }
+
+                       public void SetNameImpl (string s)
+                       {
+                               NameImpl = s;
+                       }
+
+                       public void SetPositionImpl (int i)
+                       {
+                               PositionImpl = i;
+                       }
+
+                       public void SetAttrsImpl (ParameterAttributes a)
+                       {
+                               AttrsImpl = a;
+                       }
+
+                       public void TestMethod (int a) {}
+                       public int this[int x, int y] {
+                               get { return 0; }
+                               set { }
+                       }
+
+               }
+
+               [Test]
+               public void SubClassWithNoOverrides ()
+               {
+                       var p = new MyParameterInfo ();
+                       Assert.IsFalse (p.IsDefined (typeof (FlagsAttribute), false), "#1");
+                       Assert.AreEqual (0, p.GetCustomAttributes (false).Length, "#2");
+                       Assert.AreEqual (0, p.GetCustomAttributes (typeof (FlagsAttribute), false).Length, "#3");
+                       Assert.AreEqual (0, p.GetOptionalCustomModifiers ().Length, "#4");
+                       Assert.AreEqual (0, p.GetRequiredCustomModifiers ().Length, "#5");
+#if NET_4_5
+                       try {
+                               var ign = p.HasDefaultValue;
+                               Assert.Fail ("#6");
+                       } catch (NotImplementedException) {
+                       }
+#endif
+                       Assert.IsFalse (p.IsIn, "#7");
+                       Assert.IsFalse (p.IsLcid, "#8");
+                       Assert.IsFalse (p.IsOptional, "#9");
+                       Assert.IsFalse (p.IsOut, "#10");
+                       Assert.IsFalse (p.IsRetval, "#10");
+#if NET_4_5
+                       try {
+                               var ign = p.CustomAttributes;
+                               Assert.Fail ("#11");
+                       } catch (NotImplementedException) {
+                       }
+#endif
+                       try {
+                               p.GetCustomAttributesData ();
+                               Assert.Fail ("#12");
+                       } catch (NotImplementedException) {
+                       }
+
+                       Assert.AreEqual (0x8000000, p.MetadataToken, "#13");
+                       Assert.AreEqual (0, p.Position, "#14");
+                       try {
+                               var ign = p.DefaultValue;
+                               Assert.Fail ("#15");
+                       } catch (NotImplementedException) {
+                       }
+                       try {
+                               var ign = p.RawDefaultValue;
+                               Assert.Fail ("#16");
+                       } catch (NotImplementedException) {
+                       }
+                       Assert.IsNull (p.Member, "#17");
+                       Assert.AreEqual (ParameterAttributes.None, p.Attributes, "#18");
+                       Assert.IsNull (p.Name, "#19");
+                       Assert.IsNull (p.ParameterType, "#20");
+               }
+
+               [Test]
+               public void SubClassWithValuesSet ()
+               {
+                       var p = new MyParameterInfo ();
+                       p.SetClassImpl (typeof (Decimal));
+                       Assert.AreEqual (typeof (Decimal), p.ParameterType, "#1");
+                       p.SetClassImpl (null);
+
+                       p.SetDefaultValueImpl ("foo");
+                       try {
+                               var ign = p.DefaultValue;
+                               Assert.Fail ("#2");
+                       } catch (NotImplementedException) {
+                       }
+                       p.SetDefaultValueImpl (null);
+
+                       var obj = typeof (object);
+                       p.SetMemberImpl (obj);
+                       Assert.AreEqual (obj, p.Member, "#3");
+                       Assert.AreEqual (0x8000000, p.MetadataToken, "#4");
+                       p.SetMemberImpl (null);
+
+                       var method = typeof (MyParameterInfo).GetMethod ("TestMethod");
+                       p.SetMemberImpl (method);
+                       Assert.IsNotNull (method, "#5");
+                       Assert.AreEqual (method, p.Member, "#6");
+                       Assert.AreEqual (0x8000000, p.MetadataToken, "#7");
+                       p.SetMemberImpl (null);
+
+                       var property = typeof (MyParameterInfo).GetProperty ("Item");
+                       p.SetMemberImpl (property);
+                       Assert.IsNotNull (property, "#8");
+                       Assert.AreEqual (property, p.Member, "#9");
+                       Assert.AreEqual (0x8000000, p.MetadataToken, "#10");
+                       p.SetMemberImpl (null);
+
+                       p.SetNameImpl ("foo");
+                       Assert.AreEqual ("foo", p.Name, "#11");
+                       p.SetNameImpl (null);
+
+                       p.SetPositionImpl (99);
+                       Assert.AreEqual (p.Position, 99, "#12");
+                       Assert.AreEqual (p.MetadataToken, 0x8000000, "#13");
+                       p.SetPositionImpl (0);
+
+                       Assert.IsFalse (p.IsIn, "#14");
+                       p.SetAttrsImpl (ParameterAttributes.In);
+                       Assert.IsTrue (p.IsIn, "#15");
+               }
+
+               [Test]
+               public void SubClassWithOverrides()
+               {
+                       var p2 = new MyParameterInfo2 ();
+                       Assert.IsFalse (p2.IsIn, "#1");
+                       p2.MyAttrsImpl = ParameterAttributes.In;
+                       Assert.IsTrue (p2.IsIn, "#2");
+#if NET_4_5
+                       Assert.AreEqual (p2.myList, p2.CustomAttributes, "#3");
+#endif
+               }
 #endif
        }
 }
index 54368c6cd45df8b8e18fefc43b3b4cb40848f0f5..67da2d7b5c864238748b83fe2fad23328acbc57e 100644 (file)
@@ -402,7 +402,7 @@ namespace MonoTests.System.Reflection
                        }
                }
 #endif
-#if NET_2_0
+
                public class A<T>
                {
                        public string Property {
@@ -438,8 +438,13 @@ namespace MonoTests.System.Reflection
                        PropertyInfo property = type.GetProperty ("Property");
                        Assert.AreEqual (typeof (string).FullName, property.GetValue (instance, null));
                }
-#endif
 
+               [Test]
+               public void ToStringTest ()
+               {
+                       var pa = typeof (TestC).GetProperty ("Item");
+                       Assert.AreEqual ("Int32 Item [System.Double[]]", pa.ToString ());
+               }
 
                static bool HasAttribute (object [] attrs, Type attributeType)
                {
@@ -523,5 +528,23 @@ namespace MonoTests.System.Reflection
                                Assert.IsTrue (ex.InnerException is ObjectDisposedException);
                        }
                }
+
+               public class DefaultValueTest
+               {
+                       public string this[int val, string param = "test"]
+                       {
+                               get{ return val + param; }
+                       }
+               }
+
+
+               [Test]
+               public void PropertyWithDefaultValue ()
+               {
+                       var parameters = typeof (DefaultValueTest).GetProperty ("Item").GetIndexParameters ();
+                       var defaultParam = parameters[parameters.Length - 1];
+                       Assert.AreEqual ("param", defaultParam.Name, "#1");
+                       Assert.AreEqual ("test", defaultParam.DefaultValue, "#2");
+               }
        }
 }
index 3c8c88e15adde16944fd25a76efdbf9fb36feacd..48f629adface65b5d690e707af73fd8c1bb957c9 100644 (file)
@@ -59,34 +59,31 @@ namespace MonoTests.System.Runtime.CompilerServices
                }
 
                [Test]
-               public void GetResultNotCompleted ()
+               public void GetResultCanceled ()
                {
                        TaskAwaiter awaiter;
 
-                       var task = new Task (() => { });
+                       var token = new CancellationToken (true);
+                       var task = new Task (() => { }, token);
                        awaiter = task.GetAwaiter ();
 
                        try {
                                awaiter.GetResult ();
                                Assert.Fail ();
-                       } catch (InvalidOperationException) {
+                       } catch (TaskCanceledException) {
                        }
                }
 
                [Test]
-               public void GetResultCanceled ()
+               public void GetResultWaitOnCompletion ()
                {
                        TaskAwaiter awaiter;
-
-                       var token = new CancellationToken (true);
-                       var task = new Task (() => { }, token);
+                               
+                       var task = Task.Delay (30);
                        awaiter = task.GetAwaiter ();
-
-                       try {
-                               awaiter.GetResult ();
-                               Assert.Fail ();
-                       } catch (TaskCanceledException) {
-                       }
+                               
+                       awaiter.GetResult ();
+                       Assert.AreEqual (TaskStatus.RanToCompletion, task.Status);
                }
        }
 }
index 6ea7651e07918275347808ed9184e8478650e246..0980b4ac3aec500ba49d190bcf911e3b1ccda47f 100644 (file)
@@ -88,21 +88,6 @@ namespace MonoTests.System.Runtime.CompilerServices
                        }
                }
 
-               [Test]
-               public void GetResultNotCompleted ()
-               {
-                       TaskAwaiter<int> awaiter;
-
-                       task = new Task<int> (() => 1);
-                       awaiter = task.GetAwaiter ();
-
-                       try {
-                               awaiter.GetResult ();
-                               Assert.Fail ();
-                       } catch (InvalidOperationException) {
-                       }
-               }
-
                [Test]
                public void GetResultCanceled ()
                {
index 0a3289f6d24e1d57e85de0221f781b1028a2caec..cc53f6a8d99a221337ae91ef80686c61ed619ceb 100644 (file)
@@ -91,13 +91,21 @@ namespace MonoTests.System.Runtime.CompilerServices
                }
 
                YieldAwaitable.YieldAwaiter a;
+               SynchronizationContext sc;
 
                [SetUp]
                public void Setup ()
                {
+                       sc = SynchronizationContext.Current;
                        a = new YieldAwaitable ().GetAwaiter ();
                }
 
+               [TearDown]
+               public void TearDown ()
+               {
+                       SynchronizationContext.SetSynchronizationContext (sc);
+               }
+
                [Test]
                public void IsCompleted ()
                {
@@ -120,6 +128,8 @@ namespace MonoTests.System.Runtime.CompilerServices
                public void OnCompleted_2 ()
                {
                        TaskScheduler scheduler = null;
+                       SynchronizationContext.SetSynchronizationContext (null);
+
                        var mre = new ManualResetEvent (false);
 
                        a.OnCompleted (() => {
@@ -136,6 +146,7 @@ namespace MonoTests.System.Runtime.CompilerServices
                {
                        var scheduler = new MyScheduler ();
                        TaskScheduler ran_scheduler = null;
+                       SynchronizationContext.SetSynchronizationContext (null);                        
 
                        var t = Task.Factory.StartNew (() => {
                                var mre = new ManualResetEvent (false);
@@ -160,20 +171,13 @@ namespace MonoTests.System.Runtime.CompilerServices
                        var mre = new ManualResetEvent (false);
 
                        var context = new MyContext ();
-                       var old = SynchronizationContext.Current;                       
-                       try {
-                               SynchronizationContext.SetSynchronizationContext (context);
-                               a.OnCompleted (() => {
-                                       context_ran = SynchronizationContext.Current;
-                                       mre.Set ();
-                               });
-
-                               Assert.IsTrue (mre.WaitOne (1000), "#1");
-
-                       } finally {
-                               SynchronizationContext.SetSynchronizationContext (old);
-                       }
+                       SynchronizationContext.SetSynchronizationContext (context);
+                       a.OnCompleted (() => {
+                               context_ran = SynchronizationContext.Current;
+                               mre.Set ();
+                       });
 
+                       Assert.IsTrue (mre.WaitOne (1000), "#1");
                        Assert.IsNull (context_ran, "#2");
                }
        }
index 91b39eb832c5434a5a551018b4016e29bcd2afdd..01a3f9987f326267418e82808d60475c42c94c2b 100644 (file)
@@ -262,6 +262,26 @@ public class RSACryptoServiceProviderTest {
                rsa.SignData (data, MD5.Create ());
        }
 
+       [Test]
+       [ExpectedException (typeof (ArgumentException))]
+       public void SignDataWithInvalidOid ()
+       {
+               byte[] data = new byte [5];
+               rsa = new RSACryptoServiceProvider (minKeySize);
+
+               rsa.SignData (data, "1.2.3");
+       }
+
+       [Test]
+       public void SignDataWithOid ()
+       {
+               string oid  = CryptoConfig.MapNameToOID ("SHA256");
+               byte[] data = new byte [5];
+               rsa = new RSACryptoServiceProvider (minKeySize);
+
+               rsa.SignData (data, oid);
+       }
+
        [Test]
        [ExpectedException (typeof (ArgumentNullException))]
        public void SignHashNullValue () 
index 1f53af7e3eb278bf0d91e8055f74da125d866764..91a465c13d3f80b37aef743ba5ec2c943af1f98c 100644 (file)
@@ -125,34 +125,36 @@ namespace MonoTests.System.Text
                }
 
                [Test]
-#if NET_2_0
-               [Category ("NotWorking")]
-#endif
                public void TestMaxCharCount()
                {
                        UTF8Encoding UTF8enc = new UTF8Encoding ();
-#if NET_2_0
-                       // hmm, where is this extra 1 coming from?
+                       Encoding UTF8encWithBOM = new UTF8Encoding(true);
                        Assert.AreEqual (51, UTF8enc.GetMaxCharCount(50), "UTF #1");
-#else
-                       Assert.AreEqual (50, UTF8enc.GetMaxCharCount(50), "UTF #1");
-#endif
+                       Assert.AreEqual (UTF8enc.GetMaxByteCount(50), UTF8encWithBOM.GetMaxByteCount(50), "UTF #2");
+               }
+
+               [Test]
+               public void TestMaxCharCountWithCustomFallback()
+               {
+                       Encoding encoding = Encoding.GetEncoding("utf-8", new EncoderReplacementFallback("\u2047\u2047"), new DecoderReplacementFallback("\u2047\u2047"));
+                       Assert.AreEqual (102, encoding.GetMaxCharCount(50), "UTF #1");
                }
 
                [Test]
-#if NET_2_0
-               [Category ("NotWorking")]
-#endif
                public void TestMaxByteCount()
                {
                        UTF8Encoding UTF8enc = new UTF8Encoding ();
-#if NET_2_0
-                       // maybe under .NET 2.0 insufficient surrogate pair is
-                       // just not handled, and 3 is Preamble size.
+                       Encoding UTF8encWithBOM = new UTF8Encoding(true);
+
                        Assert.AreEqual (153, UTF8enc.GetMaxByteCount(50), "UTF #1");
-#else
-                       Assert.AreEqual (200, UTF8enc.GetMaxByteCount(50), "UTF #1");
-#endif
+                       Assert.AreEqual (UTF8enc.GetMaxByteCount(50), UTF8encWithBOM.GetMaxByteCount(50), "UTF #2");
+               }
+
+               [Test]
+               public void TestMaxByteCountWithCustomFallback()
+               {
+                       Encoding encoding = Encoding.GetEncoding("utf-8", new EncoderReplacementFallback("\u2047\u2047"), new DecoderReplacementFallback("?"));
+                       Assert.AreEqual (306, encoding.GetMaxByteCount(50), "UTF #1");
                }
 
                // regression for bug #59648
index 16db84cb41a7b159d34b893c7894540a2c9569bd..f0f87a898f2868de95cf2e7d324f6e7cdaf08c4e 100644 (file)
@@ -281,6 +281,16 @@ namespace MonoTests.System.Threading.Tasks
                        t2.Set ();
                }
 
+               [Test]
+               public void ContinueWhenAny_WithResult ()
+               {
+                       var tcs = new TaskCompletionSource<int>();
+                       tcs.SetResult(1);
+                       Task[] tasks = new[] { tcs.Task };
+                       var res = Task.Factory.ContinueWhenAny (tasks, l => 4);
+                       Assert.AreEqual (4, res.Result);
+               }
+
                [Test]
                public void ContinueWhenAny_InvalidArguments ()
                {
index c6f9c5b222dab158daae6d010c9eca0d83d4439e..f61a64d4aa0f89fceb29833e418b9910cafabce2 100644 (file)
@@ -67,6 +67,25 @@ namespace MonoTests.System.Threading.Tasks
                        }
                }
 
+               class NonInlineableScheduler : TaskScheduler
+               {
+                       protected override IEnumerable<Task> GetScheduledTasks ()
+                       {
+                               throw new NotImplementedException ();
+                       }
+
+                       protected override void QueueTask (Task task)
+                       {
+                               if (!base.TryExecuteTask (task))
+                                       throw new ApplicationException ();
+                       }
+
+                       protected override bool TryExecuteTaskInline (Task task, bool taskWasPreviouslyQueued)
+                       {
+                               return false;
+                       }
+               }
+
 
                Task[] tasks;
                const int max = 6;
@@ -1043,6 +1062,14 @@ namespace MonoTests.System.Threading.Tasks
                        Assert.IsTrue (r2);
                }
 
+               [Test]
+               public void AsyncWaitHandleSet ()
+               {
+                       var task = new TaskFactory ().StartNew (() => { });
+                       var ar = (IAsyncResult)task;
+                       ar.AsyncWaitHandle.WaitOne ();
+               }
+
 #if NET_4_5
                [Test]
                public void Delay_Invalid ()
@@ -1098,6 +1125,15 @@ namespace MonoTests.System.Threading.Tasks
                        }
                }
 
+               [Test]
+               public void Delay_TimeManagement ()
+               {
+                       var delay1 = Task.Delay(50);
+                       var delay2 = Task.Delay(25);
+                       Assert.IsTrue (Task.WhenAny(new[] { delay1, delay2 }).Wait (1000));
+                       Assert.AreEqual (TaskStatus.RanToCompletion, delay2.Status);
+               }
+
                [Test]
                public void WaitAny_WithNull ()
                {
@@ -1652,6 +1688,16 @@ namespace MonoTests.System.Threading.Tasks
                        Assert.AreEqual ('d', d.Result, "#3r");
                }
 
+               [Test]
+               public void ContinueWith_CustomScheduleRejected ()
+               {
+                       var scheduler = new NonInlineableScheduler ();
+                       var t = Task.Factory.StartNew (delegate { }).
+                               ContinueWith (r => {}, CancellationToken.None, TaskContinuationOptions.ExecuteSynchronously, scheduler);
+                       
+                       Assert.IsTrue (t.Wait (5000));
+               }
+
                [Test]
                public void FromResult ()
                {
diff --git a/mcs/class/corlib/Test/System.Threading/ThreadPoolTest.cs b/mcs/class/corlib/Test/System.Threading/ThreadPoolTest.cs
new file mode 100644 (file)
index 0000000..88803e5
--- /dev/null
@@ -0,0 +1,85 @@
+//
+// ThreadPoolTest.cs
+//
+// Authors:
+//     Marek Safar  <marek.safar@gmail.com>
+//
+// Copyright (C) 2013 Xamarin Inc (http://www.xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+//
+//
+
+using System;
+using System.Threading;
+using NUnit.Framework;
+
+namespace MonoTests.System.Threading
+{
+       [TestFixture]
+       public class ThreadPoolTests
+       {
+               [Test]
+               public void RegisterWaitForSingleObject_InvalidArguments ()
+               {
+                       try {
+                               ThreadPool.RegisterWaitForSingleObject (null, delegate {}, new object (), 100, false);
+                               Assert.Fail ("#1");
+                       } catch (ArgumentNullException) {
+                       }
+
+                       try {
+                               ThreadPool.RegisterWaitForSingleObject (new Mutex (), null, new object (), 100, false);
+                               Assert.Fail ("#2");
+                       } catch (ArgumentNullException) {
+                       }                       
+               }
+
+               [Test]
+               public void UnsafeQueueUserWorkItem_InvalidArguments ()
+               {
+                       try {
+                               ThreadPool.UnsafeQueueUserWorkItem (null, 1);
+                               Assert.Fail ("#1");
+                       } catch (ArgumentNullException) {
+                       }
+               }
+
+#if NET_4_0
+               event WaitCallback e;
+
+               [Test]
+               public void UnsafeQueueUserWorkItem_MulticastDelegate ()
+               {
+                       CountdownEvent ev = new CountdownEvent (2);
+
+                       e += delegate {
+                               ev.Signal ();
+                       };
+
+                       e += delegate {
+                               ev.Signal ();
+                       };
+
+                       ThreadPool.UnsafeQueueUserWorkItem (e, null);
+                       Assert.IsTrue (ev.Wait (3000));
+               }
+#endif
+       }
+}
\ No newline at end of file
index 1c22314ccf171386036ecac4363a6a126ac9a471..7d483e6703458ba8b5c7642d063b6089b5551289 100644 (file)
@@ -1122,6 +1122,60 @@ namespace MonoTests.System.Threading
                        Assert.IsTrue (exception_occured, "Thread1 Started Invalid Exception Occured");
                }
 
+               [Test]
+               public void TestSetApartmentStateSameState ()
+               {
+                       Thread t1 = new Thread (new ThreadStart (Start));
+                       t1.SetApartmentState (ApartmentState.STA);
+                       Assert.AreEqual (ApartmentState.STA, t1.ApartmentState, "Thread1 Set Once");
+
+                       t1.SetApartmentState (ApartmentState.STA);
+                       Assert.AreEqual (ApartmentState.STA, t1.ApartmentState, "Thread1 Set twice");
+               }
+
+               [Test]
+               [ExpectedException(typeof(InvalidOperationException))]
+               public void TestSetApartmentStateDiffState ()
+               {
+                       Thread t1 = new Thread (new ThreadStart (Start));
+                       t1.SetApartmentState (ApartmentState.STA);
+                       Assert.AreEqual (ApartmentState.STA, t1.ApartmentState, "Thread1 Set Once");
+
+                       t1.SetApartmentState (ApartmentState.MTA);
+               }
+
+               [Test]
+               public void TestTrySetApartmentState ()
+               {
+                       Thread t1 = new Thread (new ThreadStart (Start));
+                       t1.SetApartmentState (ApartmentState.STA);
+                       Assert.AreEqual (ApartmentState.STA, t1.ApartmentState, "#1");
+
+                       bool result = t1.TrySetApartmentState (ApartmentState.MTA);
+                       Assert.IsFalse (result, "#2");
+
+                       result = t1.TrySetApartmentState (ApartmentState.STA);
+                       Assert.IsTrue (result, "#3");
+               }
+
+               [Test]
+               public void TestTrySetApartmentStateRunning ()
+               {
+                       Thread t1 = new Thread (new ThreadStart (Start));
+                       t1.SetApartmentState (ApartmentState.STA);
+                       Assert.AreEqual (ApartmentState.STA, t1.ApartmentState, "#1");
+
+                       t1.Start ();
+
+                       try {
+                               t1.TrySetApartmentState (ApartmentState.STA);
+                               Assert.Fail ("#2");
+                       } catch (ThreadStateException) {
+                       }
+
+                       t1.Join ();
+               }
+
                [Test]
                public void Volatile () {
                        double v3 = 55667;
index 67737cbef0f7dbd51622aea789f61b762c849aad..ee60eb53aa23b42e028e1c2d69ca64e41bb92602 100644 (file)
@@ -60,11 +60,11 @@ namespace MonoTests.System.Threading {
                        Timer t = new Timer (new TimerCallback (Callback), bucket, 10, 10);
                        Thread.Sleep (500);
                        int c = bucket.count;
-                       Assert.IsTrue(c > 20, "#1");
+                       Assert.IsTrue (c > 20, "#1 " + c.ToString ());
                        t.Change (100, 100);
                        c = bucket.count;
                        Thread.Sleep (500);
-                       Assert.IsTrue(bucket.count <= c + 20, "#2");
+                       Assert.IsTrue (bucket.count <= c + 20, "#2 " + c.ToString ());
                        t.Dispose ();
                }
 
@@ -193,13 +193,16 @@ namespace MonoTests.System.Threading {
                        Thread.Sleep(100);
                        t.Change (int.MaxValue, Timeout.Infinite);
                        // since period is 0 the callback should happen once (bug #340212)
-                       Assert.IsTrue(b.count == 1);
-                       
+                       Assert.AreEqual (1, b.count, "only once");
                }
 
                [Test]
+               [Ignore ()]
                public void TestDisposeOnCallback ()
                {
+                       // this test is bad, as the provided `state` (t1) is null and will throw an NRE inside the callback
+                       // that was ignored before 238785a3e3d510528228fc551625975bc508c2f3 and most unit test runner won't
+                       // report it since the NRE will not happen on the main thread (but Touch.Unit will)
                        Timer t1 = null;
                        t1 = new Timer (new TimerCallback (CallbackTestDisposeOnCallback), t1, 0, 10);
                        Thread.Sleep (200);
@@ -211,7 +214,7 @@ namespace MonoTests.System.Threading {
                {
                        ((Timer) foo).Dispose ();
                }
-               
+
                private void Callback (object foo)
                {
                        Bucket b = foo as Bucket;
index bc91e12686bfc676fed7a542996db41763bfebc6..d133a82cd86d9d3c26dab9bf6d4a4f8188c1d4d5 100644 (file)
@@ -108,6 +108,17 @@ namespace MonoTests.System
                        }
                }
 
+               [Test]
+               public void GetBaseWithInner ()
+               {
+                       var ae = new AggregateException ("x", new [] { new ArgumentException (), new ArgumentNullException () });
+                       Assert.AreEqual (ae, ae.GetBaseException (), "#1");
+
+                       var expected = new ArgumentException ();
+                       var ae2 = new AggregateException ("x", new AggregateException (expected, new Exception ()));
+                       Assert.AreEqual (expected, ae2.GetBaseException ().InnerException, "#2");
+               }
+
                static void Throws (Type t, Action action)
                {
                        Exception e = null;
index 54ba7cef2a80f9ca3c9048507b379763915e68e6..1d88666538f50e9ec25e0f6acd9a61fd6a1d4ac3 100644 (file)
@@ -3261,6 +3261,74 @@ namespace MonoTests.System
                }
 #endif
 
+               public class StuffToPick
+               {
+                       public StuffToPick () {}
+                       public void Method () {}
+                       public int Property { get; set; }
+                       public event Action Event;
+                       public int Field;
+                       public void GenericMethod<T> () {}
+               }
+
+               public class StuffToPick<T>
+               {
+                       public StuffToPick () {}
+                       public void Method () {}
+                       public int Property { get; set; }
+                       public event Action Event;
+                       public int Field;
+                       public void GenericMethod<T> () {}
+               }
+
+               static void TestSerialization (CrossDomainTester tester, object o)
+               {
+                       Assert.AreSame (o, tester.ReturnArg0 (o), "serializing_type_" + o.GetType ());
+               }
+
+               [Test] //BXC #12611
+               public void ReflectionObjectsAreSerializableTest ()
+               {
+                       ad = CreateTestDomain (tempDir, true);
+                       CrossDomainTester tester = CreateCrossDomainTester (ad);
+
+                       TestSerialization (tester, typeof (StuffToPick));
+                       TestSerialization (tester, typeof (StuffToPick).GetConstructor(new Type [0]));
+                       TestSerialization (tester, typeof (StuffToPick).GetMethod ("Method"));
+                       TestSerialization (tester, typeof (StuffToPick).GetProperty ("Property"));
+                       TestSerialization (tester, typeof (StuffToPick).GetEvent ("Event"));
+                       TestSerialization (tester, typeof (StuffToPick).GetField ("Field"));
+                       TestSerialization (tester, typeof (StuffToPick).GetMethod ("GenericMethod"));
+
+                       TestSerialization (tester, typeof (StuffToPick<>));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetConstructor(new Type [0]));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetMethod ("Method"));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetProperty ("Property"));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetEvent ("Event"));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetField ("Field"));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetMethod ("GenericMethod"));
+
+                       TestSerialization (tester, typeof (StuffToPick<int>));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetConstructor(new Type [0]));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetMethod ("Method"));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetProperty ("Property"));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetEvent ("Event"));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetField ("Field"));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetMethod ("GenericMethod"));
+               }
+
+               [Test] //BXC #12611
+               [Category ("NotWorking")] // Serialization can't handle generic methods
+               public void GenericReflectionObjectsAreSerializableTest ()
+               {
+                       ad = CreateTestDomain (tempDir, true);
+                       CrossDomainTester tester = CreateCrossDomainTester (ad);
+
+                       TestSerialization (tester, typeof (StuffToPick).GetMethod ("GenericMethod").MakeGenericMethod (typeof (int)));
+                       TestSerialization (tester, typeof (StuffToPick<>).GetMethod ("GenericMethod").MakeGenericMethod (typeof (int)));
+                       TestSerialization (tester, typeof (StuffToPick<int>).GetMethod ("GenericMethod").MakeGenericMethod (typeof (int)));
+               }
+
                private static AppDomain CreateTestDomain (string baseDirectory, bool assemblyResolver)
                {
                        AppDomainSetup setup = new AppDomainSetup ();
@@ -3395,6 +3463,11 @@ namespace MonoTests.System
                                        return true;
                                }
                        }
+
+                       public object ReturnArg0 (object obj)
+                       {
+                               return obj;
+                       }
                }
 
                [Serializable ()]
index 4c74ee9d3d447f36f1acebe0d60d2c0ec11310a5..ef41ce17946377d9b7b323e043df55c0a8922573 100644 (file)
@@ -1618,6 +1618,126 @@ public class ArrayTest
                }
        }
 
+
+       [Test]
+       public void FindIndexTest ()
+       {
+               var a = new int[] { 2, 2, 2, 3, 2 };
+               Assert.AreEqual (2, Array.FindIndex (a, 2, 2, l => true));
+       }
+
+       [Test]
+       public void FindIndex_Invalid ()
+       {
+               var array = new int [] { 1, 2, 3, 4, 5 };
+
+               try {
+                       Array.FindIndex (array, null);
+                       Assert.Fail ("#1");
+               } catch (ArgumentNullException) {
+               }
+
+               try {
+                       Array.FindIndex (array, -1, l => true);
+                       Assert.Fail ("#2");
+               } catch (ArgumentOutOfRangeException) {
+               }
+
+               try {
+                       Array.FindIndex (array, -1, 0, l => true);
+                       Assert.Fail ("#2b");
+               } catch (ArgumentOutOfRangeException) {
+               }
+
+               try {
+                       Array.FindIndex (array, 0, -1, l => true);
+                       Assert.Fail ("#3");
+               } catch (ArgumentOutOfRangeException) {
+               }
+
+               try {
+                       Array.FindIndex (array, 100, l => true);
+                       Assert.Fail ("#4");
+               } catch (ArgumentOutOfRangeException) {
+               }
+
+               try {
+                       Array.FindIndex (array, 100, 0, l => true);
+                       Assert.Fail ("#4b");
+               } catch (ArgumentOutOfRangeException) {
+               }
+
+               try {
+                       Array.FindIndex (array, 7, 2, l => true);
+                       Assert.Fail ("#5");
+               } catch (ArgumentOutOfRangeException) {
+               }
+       }
+
+       [Test, ExpectedException (typeof (ArgumentNullException))]
+       public void FindLastNullTest ()
+       {
+               var array = new int [] { 1, 2, 3, 4, 5 };               
+               Array.FindLast (array, null);
+       }
+
+       [Test]
+       public void FindLastIndexTest ()
+       {
+               var array = new int [] { 1, 2, 3, 4, 5 };
+
+               Assert.AreEqual (2, Array.FindLastIndex (array, 2, 3, l => true));
+               Assert.AreEqual (2, Array.FindLastIndex (array, 2, 2, l => true));
+               Assert.AreEqual (1, Array.FindLastIndex (array, 1, 2, l => true));
+       }
+
+       [Test]
+       public void FindLastIndex_Invalid ()
+       {
+               var array = new int [] { 1, 2, 3, 4, 5 };
+               try {
+                       Array.FindLastIndex (array, null);
+                       Assert.Fail ("#1");
+               } catch (ArgumentNullException) {
+               }
+
+               try {
+                       Array.FindLastIndex (array, -1, l => true);
+                       Assert.Fail ("#2");
+               } catch (ArgumentOutOfRangeException) {
+               }
+
+               try {
+                       Array.FindLastIndex (array, -1, 0, l => true);
+                       Assert.Fail ("#2b");
+               } catch (ArgumentOutOfRangeException) {
+               }
+
+               try {
+                       Array.FindLastIndex (array, 0, -1, l => true);
+                       Assert.Fail ("#3");
+               } catch (ArgumentOutOfRangeException) {
+               }
+
+               try {
+                       Array.FindLastIndex (array, 100, l => true);
+                       Assert.Fail ("#4");
+               } catch (ArgumentOutOfRangeException) {
+               }
+
+               try {
+                       Array.FindLastIndex (array, 100, 0, l => true);
+                       Assert.Fail ("#4b");
+               } catch (ArgumentOutOfRangeException) {
+               }
+
+               try {
+                       Array.FindLastIndex (array, 2, 4, l => true);
+                       Assert.Fail ("#5");
+               } catch (ArgumentOutOfRangeException) {
+               }
+       }
+
        [Test]
        public void TestReverse() {
                {
index f8fe8cd7a001f294a54e2f7bdd0b0aec37e917d0..10fb4fcbce6264d613150950882ec40c562e7b4d 100644 (file)
@@ -88,6 +88,13 @@ namespace MonoTests.System
                class MyDerivedClassNoAttribute : MyClass
                {
                }
+
+               internal class AttributeWithTypeId : Attribute
+               {
+                       public override object TypeId {
+                               get { return this; }
+                       }
+               }
        }
 
        [TestFixture]
@@ -998,6 +1005,14 @@ namespace MonoTests.System
                        MyOwnCustomAttribute b1 = new MyOwnCustomAttribute (null);
                        Assert.AreNotEqual (a1.GetHashCode (), b1.GetHashCode (), "non-identical-types");
                }
+
+               [Test]
+               public void GetHashCodeWithOverriddenTypeId ()
+               {
+                       //check for not throwing stack overflow exception
+                       AttributeWithTypeId a = new AttributeWithTypeId ();
+                       a.GetHashCode ();
+               }
        }
 
        namespace ParamNamespace {
index 25562126ee9f151c50c4eb67f945b54662408ba3..98a0d1aa26639fa1fbe83e8c8bad415863e711d6 100644 (file)
@@ -331,6 +331,21 @@ public class ConsoleTest
        }
 
 #if !MOBILE
+
+#if NET_4_5
+       [Test]
+       public void RedirectedTest ()
+       {
+               if (Console.IsErrorRedirected) {
+                       // Assert.Inconclusive ();
+                       return;
+               }
+
+               Console.SetError (TextWriter.Null);
+               Assert.IsFalse (Console.IsErrorRedirected);
+       }
+#endif
+
        // Bug 678357
        [Test]
        public void EncodingTest ()
index 4fa97245ad2c75ca606e19c159f62fa40ea1a962..ddfc099b73d747a675834ebb8a185976ad16a201 100644 (file)
@@ -66,6 +66,9 @@ namespace MonoTests.System
                }
 
                [Test] // CreateDelegate (Type, MethodInfo)
+#if MONOTOUCH
+               [Category ("NotWorking")] // #14163
+#endif
                public void CreateDelegate1_Method_Instance ()
                {
                        C c = new C ();
@@ -971,6 +974,9 @@ namespace MonoTests.System
                }
 
                [Test]
+#if MONOTOUCH
+               [Category ("NotWorking")] // #14163
+#endif
                public void NullTarget_Instance ()
                {
                        Del1 d = (Del1)Delegate.CreateDelegate (typeof (Del1), null, typeof (DelegateTest).GetMethod ("method1"));
index f6c0dca2a5932b0aef51d7387f74fc450585ef75..973b068e823ee28ebde1fcd9d94ce270b8aa8a4a 100644 (file)
@@ -849,9 +849,12 @@ namespace MonoTests.System
                }
 
                [Test]
-               public void ConvertToStringType ()
+               public void IConvertible_Valid ()
                {
-                       Assert.AreEqual ("This", ((IConvertible) TestingEnum.This).ToType (typeof (string), null));
+                       IConvertible ic = TestingEnum.This;
+                       Assert.AreEqual ("This", ic.ToType (typeof (string), null), "#1");
+                       Assert.AreEqual (TestingEnum.This, ic.ToType (typeof (TestingEnum), null), "#2");
+                       Assert.AreEqual (TestingEnum.This, ic.ToType (typeof (Enum), null), "#3");
                }
 
                [Test]
index 12d9f91839a691530afb559c967b3a12dff049d2..945a4084e091284fccaea6ec8162ebc346cd72fd 100644 (file)
@@ -388,6 +388,13 @@ namespace MonoTests.System {
                        Assert.AreEqual (expected, guid.ToString ());
                }
 
+               [Test]
+               [ExpectedException (typeof (FormatException))]
+               public void ParseError_1 ()
+               {
+                       Guid.Parse("08888888-0444-444-0444-012121212121");
+               }
+
                [Test]
                [ExpectedException (typeof (FormatException))]
                public void ParseExactN ()
@@ -412,6 +419,7 @@ namespace MonoTests.System {
                        Assert.AreEqual (Guid.Empty, guid, "A4");
                        Assert.IsFalse (Guid.TryParse("foobar", out guid), "A5");
                        Assert.AreEqual (Guid.Empty, guid, "A6");
+                       Assert.IsFalse (Guid.TryParse ("08888888-0444-444-0444-012121212121", out guid), "A7");
                }
 
                [Test]
index 8873f308cdcb8a34bd638d7981efa5947822903c..a09e98a1b468c5349b575d65877c54c6f6c5c849 100644 (file)
@@ -123,7 +123,10 @@ public class IntegerFormatterTest
 
        }
 
-       private static string tutti = "Int32\n" +
+       private static string tutti = tutti_1 + tutti_2;
+
+       const string tutti_1 =
+       "Int32\n" +
 "(-2147483648) (C) (($2,147,483,648.00))\n" +
 "(-2147483648) (C0) (($2,147,483,648))\n" +
 "(-2147483648) (C1) (($2,147,483,648.0))\n" +
@@ -852,7 +855,9 @@ public class IntegerFormatterTest
 "(9223372036854775807) (X8) (7FFFFFFFFFFFFFFF)\n" +
 "(9223372036854775807) (X9) (7FFFFFFFFFFFFFFF)\n" +
 "(9223372036854775807) (X10) (7FFFFFFFFFFFFFFF)\n" +
-"(9223372036854775807) (X99) (000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFFFFF)\n" +
+"(9223372036854775807) (X99) (000000000000000000000000000000000000000000000000000000000000000000000000000000000007FFFFFFFFFFFFFFF)\n";
+
+const string tutti_2 =
 "(0) (C) ($0.00)\n" +
 "(0) (C0) ($0)\n" +
 "(0) (C1) ($0.0)\n" +
@@ -2000,6 +2005,5 @@ public class IntegerFormatterTest
 "(100) (X10) (0000000064)\n" +
 "(100) (X99) (000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000064)\n";
 }
-
 }
 
index 4004ceaa2589b154cec692083b2af0ea7bcfee5f..21df8695667057fbfc7318277b0052e91dd54156 100644 (file)
@@ -98,5 +98,35 @@ public class MulticastDelegateTest {
                res = del1( ref val );\r
                Assert.AreEqual("abbcbbd", val , "#A05");\r
        }\r
+\r
+       [Test] //Bug #12536\r
+       public void TestCombineBothDirections ()\r
+       {\r
+               MyDelegate dela = new MyDelegate( MethodA );\r
+               MyDelegate delb = new MyDelegate( MethodB );\r
+               MyDelegate delc = new MyDelegate( MethodC );\r
+               MyDelegate deld = new MyDelegate( MethodD );\r
+\r
+               string val;\r
+               char res;\r
+\r
+               MyDelegate a = dela + delb;\r
+               val = "";\r
+               res = a (ref val);\r
+               Assert.AreEqual ("ab", val, "#1");\r
+               Assert.AreEqual ('b', res, "#2");\r
+\r
+               MyDelegate b = delc + deld;\r
+               val = "";\r
+               res = b (ref val);\r
+               Assert.AreEqual ("cd", val, "#3");\r
+               Assert.AreEqual ('d', res, "#4");\r
+\r
+               MyDelegate c = a + b;\r
+               val = "";\r
+               res = c (ref val);\r
+               Assert.AreEqual ("abcd", val, "#5");\r
+               Assert.AreEqual ('d', res, "#6");\r
+       }\r
 }\r
 }\r
index a18524968f7b756e9b196f7c18044fef7014c15c..5e49ac386692c03eb7e7adbab0d9c453dd09dd1f 100644 (file)
@@ -3,9 +3,10 @@
 //
 // Authors: 
 //     Bob Smith <bob@thestuff.net>
-//     Sebastien Pouliot  <sebastien@ximian.com>
+//     Sebastien Pouliot  <sebastien@xamarin.com>
 //
 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+// Copyright 2013 Xamarin Inc. (http://www.xamarin.com)
 //
 // Permission is hereby granted, free of charge, to any person obtaining
 // a copy of this software and associated documentation files (the
 
 using NUnit.Framework;
 using System;
+using System.Reflection;
 
 namespace MonoTests.System {
 
        [TestFixture]
        public class RandomTest  {
 
-#if false
-               //
-               // This test will fail, given enough runs.
-               //
-               // It is an ad-hoc test for distribution, and does not work
-               // 100% of the time.
-               //
-               [Test]
-               public void NextDouble ()
-               {
-                       Random r = new Random ();
-                       int i;
-                       double c=0;
-                       for (i=0; i<20; i++) 
-                               c += r.NextDouble ();
-                       c/=i;
-                       Assert.IsTrue (c.ToString () + " is out of range.", c < .7 && c > .3);
-               }
-
-#endif
-
                [Test]
                public void CompareStreamWithSameSeed ()
                {
                        Random r = new Random (42);
                        Random r2 = new Random (42);
-                       double c=0, c2=0;
                        for (int i=0; i<20; i++) {
-                               c += r.NextDouble ();
-                               c2 += r2.NextDouble ();
+                               Assert.AreEqual (r.NextDouble (), r2.NextDouble (), i.ToString ());
                        }
-                       Assert.AreEqual (c, c2, "Compare");
                }
 
                [Test]
@@ -79,6 +57,13 @@ namespace MonoTests.System {
                        }
                }
 
+               [Test]
+               public void NextZero ()
+               {
+                       Random r = new Random ();
+                       Assert.AreEqual (0, r.Next (0),"Next(0) failed");
+               }
+
                [Test]
                public void NextMax()
                {
@@ -109,23 +94,124 @@ namespace MonoTests.System {
                        }
                }
 
-/* Mono implementation is now compatible with Knuth (not MS) implementation (choice of constants)
+               class RandomSampleOverride : Random {
+
+                       protected override double Sample ()
+                       {
+                               throw new NotImplementedException ();
+                       }
+               }
+
                [Test]
-               public void CompareWithMS () 
+               public void Base_Int ()
                {
-                       string[] r = new string [4];
-                       byte[] buffer = new byte [8];
-                       int x = 4;
-                       while (x-- > 0) {
-                               int seed = (x << x);
-                               Random random = new Random (seed);
-                               random.NextBytes (buffer);
-                               r [x] = BitConverter.ToString (buffer);
+                       var random = new RandomSampleOverride ();
+                       // from 2.0+ Next(), Next(int,int) and NextBytes(byte[]) do not call Sample
+                       // see MSDN's Notes to Inheritors
+                       random.Next ();
+                       random.Next (Int32.MinValue, Int32.MaxValue);
+                       random.NextBytes (new byte[1]);
+               }
+
+               [Test]
+               [ExpectedException (typeof (NotImplementedException))]
+               public void Base_Double ()
+               {
+                       var random = new RandomSampleOverride ();
+                       random.NextDouble ();
+               }
+
+               // generate values (one for each 1024 returned values) from the original C implementation
+               static uint[] jkiss_values = {
+                       560241513,      /* 0 */
+                       1281708802,     /* 1024 */
+                       1571324528,     /* 2048 */
+                       1565809406,     /* 3072 */
+                       1010890569,     /* 4096 */
+                       1778803435,     /* 5120 */
+                       903613637,      /* 6144 */
+                       3496059008,     /* 7168 */
+                       108603163,      /* 8192 */
+                       1854081276,     /* 9216 */
+                       3703232459,     /* 10240 */
+                       2191562138,     /* 11264 */
+                       337995793,      /* 12288 */
+                       1340840062,     /* 13312 */
+                       2364148985,     /* 14336 */
+                       2549812361,     /* 15360 */
+                       563432369,      /* 16384 */
+                       229365487,      /* 17408 */
+                       1821397325,     /* 18432 */
+                       3246092454,     /* 19456 */
+                       691032417,      /* 20480 */
+                       86951316,       /* 21504 */
+                       3029975455,     /* 22528 */
+                       1261370163,     /* 23552 */
+                       2539815382,     /* 24576 */
+                       3017891647,     /* 25600 */
+                       3877215120,     /* 26624 */
+                       3142958765,     /* 27648 */
+                       1080903191,     /* 28672 */
+                       2837464745,     /* 29696 */
+                       614275602,      /* 30720 */
+                       2250626199,     /* 31744 */
+                       729001311,      /* 32768 */
+                       3313769017,     /* 33792 */
+                       2408398670,     /* 34816 */
+                       3123583383,     /* 35840 */
+                       3346590423,     /* 36864 */
+                       1629546563,     /* 37888 */
+                       251343753,      /* 38912 */
+                       2695793631,     /* 39936 */
+                       2768993787,     /* 40960 */
+                       3688573224,     /* 41984 */
+                       2897218561,     /* 43008 */
+                       2725058810,     /* 44032 */
+                       2142061914,     /* 45056 */
+                       3983217096,     /* 46080 */
+                       3609758190,     /* 47104 */
+                       842060935,      /* 48128 */
+                       2893482035,     /* 49152 */
+                       2290461665,     /* 50176 */
+                       1709481476,     /* 51200 */
+                       3633857838,     /* 52224 */
+                       332645044,      /* 53248 */
+                       3522654497,     /* 54272 */
+                       2501348469,     /* 55296 */
+                       1644344287,     /* 56320 */
+                       3081428084,     /* 57344 */
+                       3114560766,     /* 58368 */
+                       489030597,      /* 59392 */
+                       367291591,      /* 60416 */
+                       106358682,      /* 61440 */
+                       3020781303,     /* 62464 */
+                       1209590375,     /* 63488 */
+                       1833282169,     /* 64512 */
+                       61543407,       /* 65536 */
+               };
+
+               [Test]
+               public void JKISS ()
+               {
+                       // Random.Next() returns a non-negative *signed* integer value - so it can't be used for testing
+                       var next = typeof(Random).GetMethod ("JKiss", BindingFlags.Instance | BindingFlags.NonPublic);
+
+                       // if the method is not present, e.g. on MS.NET, skip this test
+                       if (next == null)
+                               return;
+
+                       // ensure we match the original JKISS random stream
+                       // first 64KB but without checking every value (one each KB)
+                       Random r = new Random (123456789);
+                       int n = 0;
+                       int j = 0;
+                       while (j < 64 * 1024) {
+                               uint random = (uint) next.Invoke (r, null);
+                               if (j++ % 1024 == 0) {
+                                       Assert.AreEqual (random, jkiss_values [n], n.ToString ());
+                                       n++;
+                               }
                        }
-                       Assert.AreEqual ("43-DB-8B-AE-0A-88-A8-7B", r [3], "Seed(24)");
-                       Assert.AreEqual ("E7-2A-5C-44-D1-8C-7D-74", r [2], "Seed(8)");
-                       Assert.AreEqual ("C5-67-2A-FC-1B-4E-CD-72", r [1], "Seed(2)");
-                       Assert.AreEqual ("B9-D1-C4-8E-34-8F-E7-71", r [0], "Seed(0)");
-               }*/
+               }
        }
-}
+}
\ No newline at end of file
index ffa822b6aee77c2aeed275d59cd5888868fa3233..489070c6ad6cabf463912e720d2c2c1fe871a51e 100644 (file)
@@ -2274,7 +2274,25 @@ public class StringTest
                Assert.IsTrue ("ABC".Contains ("ABC"));
                Assert.IsTrue ("ABC".Contains ("AB"));
                Assert.IsTrue (!"ABC".Contains ("AD"));
-               Assert.IsTrue (!"encyclop�dia".Contains("encyclopaedia"));
+               Assert.IsTrue (!"encyclopædia".Contains("encyclopaedia"));
+       }
+
+       [Test]
+       public void IndexOfIsCultureAwareWhileContainsIsNot ()
+       {
+               string a = "encyclopædia";
+               string b = "encyclopaedia";
+               Assert.IsFalse (a.Contains (b), "#1");
+               Assert.IsTrue (a.Contains ("æ"), "#1.1");
+               Assert.IsFalse (b.Contains ("æ"), "#1.2");
+               Assert.AreEqual (0, a.IndexOf (b), "#2");
+               Assert.AreEqual (8, a.IndexOf ('æ'), "#3");
+               Assert.AreEqual (-1, b.IndexOf ('æ'), "#4");
+               Assert.AreEqual (8, a.IndexOf ("æ"), "#5");
+               Assert.AreEqual (8, b.IndexOf ("æ"), "#6");
+
+               Assert.AreEqual (0, CultureInfo.CurrentCulture.CompareInfo.IndexOf (a, b, 0, a.Length, CompareOptions.None), "#7");
+               Assert.AreEqual (-1, CultureInfo.CurrentCulture.CompareInfo.IndexOf (a, b, 0, a.Length, CompareOptions.Ordinal), "#8");
        }
 
        [Test]
index 02d7e715107a07d09706995d03d965e8200a65c4..fdbd60607dbe4a98c4c5312cde18142b44282d97 100644 (file)
@@ -1322,6 +1322,8 @@ public class TimeSpanTest {
                TryParseExactHelper ("10:12", new string [0], true, "dontcare");
                TryParseExactHelper ("10:12", new string [] { String.Empty }, true, "dontcare");
                TryParseExactHelper ("10:12", new string [] { null }, true, "dontcare");
+
+               TryParseExactHelper (null, new string [] { null }, true, "dontcare");
        }
 
        void TryParseExactHelper (string input, string [] formats, bool error, string expected, IFormatProvider formatProvider = null,
index 4d675d51e61222f380b9dda52886dffb3536607c..0e369de49b9e25aa7fc89af8b4fb039d22a6060b 100644 (file)
@@ -122,6 +122,32 @@ public class TimeZoneTest {
                Assert.AreEqual(0L, t1.GetUtcOffset (d5).Ticks, "D14");
        }
 
+       private void NZST(TimeZone t1) {
+               Assert.AreEqual("NZST", t1.StandardName, "E01");
+               Assert.AreEqual("NZDT", t1.DaylightName, "E02");
+
+               DaylightTime d1 = t1.GetDaylightChanges (2013);
+               Assert.AreEqual("09/29/2013 02:00:00", d1.Start.ToString ("G"), "E03");
+               Assert.AreEqual("04/07/2013 03:00:00", d1.End.ToString ("G"), "E04");
+               Assert.AreEqual(36000000000L, d1.Delta.Ticks, "E05");
+
+               DaylightTime d2 = t1.GetDaylightChanges (2001);
+               Assert.AreEqual("10/07/2001 02:00:00", d2.Start.ToString ("G"), "E06");
+               Assert.AreEqual("03/18/2001 03:00:00", d2.End.ToString ("G"), "E07");
+               Assert.AreEqual(36000000000L, d2.Delta.Ticks, "E08");
+
+               DateTime d3 = new DateTime(2013,02,15);
+               Assert.AreEqual(true, t1.IsDaylightSavingTime (d3), "E09");
+               DateTime d4 = new DateTime(2013,04,30);
+               Assert.AreEqual(false, t1.IsDaylightSavingTime (d4), "E10");
+               DateTime d5 = new DateTime(2013,11,03);
+               Assert.AreEqual(true, t1.IsDaylightSavingTime (d5), "E11");
+
+               Assert.AreEqual(36000000000L /*hour*/ * 13L, t1.GetUtcOffset (d3).Ticks, "E12");
+               Assert.AreEqual(36000000000L /*hour*/ * 12L, t1.GetUtcOffset (d4).Ticks, "E13");
+               Assert.AreEqual(36000000000L /*hour*/ * 13L, t1.GetUtcOffset (d5).Ticks, "E14");
+       }
+
        [Test]
        [Culture ("")]
        public void TestCtors ()
@@ -141,6 +167,9 @@ public class TimeZoneTest {
                        case "GMT":
                                GMT (t1);
                                break;
+                       case "NZST":
+                               NZST (t1);
+                               break;
                        default:
                                NUnit.Framework.Assert.Ignore ("Your time zone (" + t1.StandardName + ") isn't defined in the test case");
                                break;
index 3bbe3cde42adc064d1e426fe476fdb3fb1042eba..bc726ce38fd7a611a00c39f5b2dd8702bcf80067 100644 (file)
@@ -2512,6 +2512,47 @@ PublicKeyToken=b77a5c561934e089"));
                        Assert.IsFalse (typeof (bug82431B4).IsDefined (typeof (NotInheritAttribute), true), "#K4");
                }
 
+               class Bug13767Attribute : Attribute
+               {
+                       public object[] field;
+
+                       public Bug13767Attribute (params object[] args)
+                       {
+                               field = args;
+                       }
+               }
+
+               public enum Bug13767Enum
+               {
+                       Value0,
+                       Value1,
+               }
+
+               [Bug13767("Demo", new[] { Bug13767Enum.Value1, Bug13767Enum.Value0 })]
+               public void Bug13767Method(string attributeName, Bug13767Enum[]options)
+               {
+
+               }
+
+               [Test] //Bug 13767
+               public void CustomAttributeWithNestedArrayOfEnum ()
+               {
+                       var m = GetType ().GetMethod ("Bug13767Method");
+
+                       var attr = m.GetCustomAttributes (false);
+                       Assert.AreEqual (1, attr.Length, "#1");
+
+                       var tc = (Bug13767Attribute)attr[0];
+                       Assert.AreEqual (2, tc.field.Length, "#2");
+                       Assert.AreEqual ("Demo", tc.field[0], "#3");
+                       Assert.IsNotNull (tc.field[1], "#4");
+
+                       var arr = (Bug13767Enum[])tc.field [1];
+                       Assert.AreEqual (2, arr.Length, "#5");
+                       Assert.AreEqual (Bug13767Enum.Value1, arr [0], "#6");
+                       Assert.AreEqual (Bug13767Enum.Value0, arr [1], "#7");
+               }
+
                [Test] // GetType (String)
                public void GetType1_TypeName_Null ()
                {
index 201243d51498851d0ed57cecadb200d3139bcf59..e0656b22c4c70642e47f24d33574838c31c68d00 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</ProjectGuid>\r
+    <ProjectGuid>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699</NoWarn>\r
     <OutputPath>bin\Debug\corlib-build</OutputPath>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\ConfidenceFactor.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\PrimalityTests.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math\BigInteger.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\ARC4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoTools.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS8.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RC4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RSAManaged.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\PKCS12.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X501Name.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Certificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CertificateCollection.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Chain.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509ChainStatusFlags.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CRL.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extensions.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Store.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509StoreManager.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Stores.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X520Attributes.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1Convert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\BitConverterLE.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\PKCS7.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\StrongName.cs" />\r
     <Compile Include="..\System.Core\System.Security.Cryptography\Aes.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.AdjustmentRule.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.Android.cs" />\r
     <Compile Include="Mono.Interop\ComInteropProxy.cs" />\r
     <Compile Include="Mono.Interop\IDispatch.cs" />\r
     <Compile Include="Mono.Interop\IUnknown.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime\ConfidenceFactor.cs" />\r
-    <Compile Include="Mono.Math.Prime\PrimalityTests.cs" />\r
-    <Compile Include="Mono.Math\BigInteger.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoTools.cs" />\r
     <Compile Include="Mono.Security.Cryptography\DSAManaged.cs" />\r
     <Compile Include="Mono.Security.Cryptography\HMACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
     <Compile Include="Mono.Security.Cryptography\MACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS1.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS8.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\RSAManaged.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\SymmetricTransform.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="Mono.Security.X509\PKCS12.cs" />\r
-    <Compile Include="Mono.Security.X509\X501Name.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Certificate.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CertificateCollection.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Chain.cs" />\r
-    <Compile Include="Mono.Security.X509\X509ChainStatusFlags.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CRL.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extension.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extensions.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Store.cs" />\r
-    <Compile Include="Mono.Security.X509\X509StoreManager.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Stores.cs" />\r
-    <Compile Include="Mono.Security.X509\X520Attributes.cs" />\r
-    <Compile Include="Mono.Security\ASN1.cs" />\r
-    <Compile Include="Mono.Security\ASN1Convert.cs" />\r
-    <Compile Include="Mono.Security\BitConverterLE.cs" />\r
-    <Compile Include="Mono.Security\PKCS7.cs" />\r
-    <Compile Include="Mono.Security\StrongName.cs" />\r
     <Compile Include="Mono.Security\StrongNameManager.cs" />\r
     <Compile Include="Mono.Security\Uri.cs" />\r
     <Compile Include="Mono.Xml\SecurityParser.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentOrderedList.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentQueue.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentStack.cs" />\r
+    <Compile Include="System.Collections.Concurrent\EnumerablePartitionerOptions.cs" />\r
     <Compile Include="System.Collections.Concurrent\IProducerConsumerCollection.cs" />\r
     <Compile Include="System.Collections.Concurrent\OrderablePartitioner.cs" />\r
     <Compile Include="System.Collections.Concurrent\Partitioner.cs" />\r
     <Compile Include="System.Collections.ObjectModel\Collection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\KeyedCollection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\ReadOnlyCollection.cs" />\r
+    <Compile Include="System.Collections.ObjectModel\ReadOnlyDictionary.cs" />\r
     <Compile Include="System.Collections\ArrayList.cs" />\r
     <Compile Include="System.Collections\BitArray.cs" />\r
     <Compile Include="System.Collections\CaseInsensitiveComparer.cs" />\r
     <Compile Include="System.Collections\Comparer.cs" />\r
     <Compile Include="System.Collections\DictionaryBase.cs" />\r
     <Compile Include="System.Collections\DictionaryEntry.cs" />\r
+    <Compile Include="System.Collections\HashPrimeNumbers.cs" />\r
     <Compile Include="System.Collections\Hashtable.cs" />\r
     <Compile Include="System.Collections\ICollection.cs" />\r
     <Compile Include="System.Collections\IComparer.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailedEventArgs.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailureKind.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractInvariantMethodAttribute.cs" />\r
+    <Compile Include="System.Diagnostics.Contracts\ContractOptionAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractPublicPropertyNameAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractReferenceAssemblyAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractRuntimeIgnoredAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyAlgorithmIdAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCompanyAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyConfigurationAttribute.cs" />\r
+    <Compile Include="System.Reflection\AssemblyContentType.cs" />\r
     <Compile Include="System.Reflection\AssemblyCopyrightAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCultureAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyDefaultAliasAttribute.cs" />\r
     <Compile Include="System.Reflection\ReflectionTypeLoadException.cs" />\r
     <Compile Include="System.Reflection\ResourceAttributes.cs" />\r
     <Compile Include="System.Reflection\ResourceLocation.cs" />\r
+    <Compile Include="System.Reflection\RuntimeReflectionExtensions.cs" />\r
     <Compile Include="System.Reflection\StrongNameKeyPair.cs" />\r
     <Compile Include="System.Reflection\TargetException.cs" />\r
     <Compile Include="System.Reflection\TargetInvocationException.cs" />\r
     <Compile Include="System.Threading\ManualResetEventSlim.cs" />\r
     <Compile Include="System.Threading\Monitor.cs" />\r
     <Compile Include="System.Threading\Mutex.cs" />\r
+    <Compile Include="System.Threading\NamedDataSlot.cs" />\r
     <Compile Include="System.Threading\NativeEventCalls.cs" />\r
     <Compile Include="System.Threading\NativeOverlapped.cs" />\r
     <Compile Include="System.Threading\Overlapped.cs" />\r
     <Compile Include="System\CLSCompliantAttribute.cs" />\r
     <Compile Include="System\Comparison.cs" />\r
     <Compile Include="System\Console.cs" />\r
+    <Compile Include="System\Console.iOS.cs" />\r
     <Compile Include="System\ConsoleCancelEventArgs.cs" />\r
     <Compile Include="System\ConsoleCancelEventHandler.cs" />\r
     <Compile Include="System\ConsoleColor.cs" />\r
     <Compile Include="System\PlatformID.cs" />\r
     <Compile Include="System\PlatformNotSupportedException.cs" />\r
     <Compile Include="System\Predicate.cs" />\r
+    <Compile Include="System\Progress.cs" />\r
     <Compile Include="System\Random.cs" />\r
     <Compile Include="System\RankException.cs" />\r
     <Compile Include="System\ResolveEventArgs.cs" />\r
     <Compile Include="System\Version.cs" />\r
     <Compile Include="System\Void.cs" />\r
     <Compile Include="System\WeakReference.cs" />\r
+    <Compile Include="System\WeakReference_T.cs" />\r
     <Compile Include="System\WindowsConsoleDriver.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
index b3d625e12d6112f7147b27417bd6526071cf0b5b..d03ca9fef24c4deb3d2a11d46e4c4cf80c094a85 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{928D664D-8277-47B3-AB06-538D932143FE}</ProjectGuid>\r
+    <ProjectGuid>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699</NoWarn>\r
     <OutputPath>bin\Debug\corlib-net_2_0</OutputPath>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\ConfidenceFactor.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\PrimalityTests.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math\BigInteger.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\ARC4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoTools.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS8.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RC4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RSAManaged.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\PKCS12.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X501Name.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Certificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CertificateCollection.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Chain.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509ChainStatusFlags.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CRL.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extensions.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Store.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509StoreManager.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Stores.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X520Attributes.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1Convert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\BitConverterLE.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\PKCS7.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\StrongName.cs" />\r
     <Compile Include="..\System.Core\System.Security.Cryptography\Aes.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.AdjustmentRule.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.Android.cs" />\r
     <Compile Include="Mono.Interop\ComInteropProxy.cs" />\r
     <Compile Include="Mono.Interop\IDispatch.cs" />\r
     <Compile Include="Mono.Interop\IUnknown.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime\ConfidenceFactor.cs" />\r
-    <Compile Include="Mono.Math.Prime\PrimalityTests.cs" />\r
-    <Compile Include="Mono.Math\BigInteger.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoTools.cs" />\r
     <Compile Include="Mono.Security.Cryptography\DSAManaged.cs" />\r
     <Compile Include="Mono.Security.Cryptography\HMACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
     <Compile Include="Mono.Security.Cryptography\MACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS1.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS8.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\RSAManaged.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\SymmetricTransform.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="Mono.Security.X509\PKCS12.cs" />\r
-    <Compile Include="Mono.Security.X509\X501Name.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Certificate.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CertificateCollection.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Chain.cs" />\r
-    <Compile Include="Mono.Security.X509\X509ChainStatusFlags.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CRL.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extension.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extensions.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Store.cs" />\r
-    <Compile Include="Mono.Security.X509\X509StoreManager.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Stores.cs" />\r
-    <Compile Include="Mono.Security.X509\X520Attributes.cs" />\r
-    <Compile Include="Mono.Security\ASN1.cs" />\r
-    <Compile Include="Mono.Security\ASN1Convert.cs" />\r
-    <Compile Include="Mono.Security\BitConverterLE.cs" />\r
-    <Compile Include="Mono.Security\PKCS7.cs" />\r
-    <Compile Include="Mono.Security\StrongName.cs" />\r
     <Compile Include="Mono.Security\StrongNameManager.cs" />\r
     <Compile Include="Mono.Security\Uri.cs" />\r
     <Compile Include="Mono.Xml\SecurityParser.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentOrderedList.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentQueue.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentStack.cs" />\r
+    <Compile Include="System.Collections.Concurrent\EnumerablePartitionerOptions.cs" />\r
     <Compile Include="System.Collections.Concurrent\IProducerConsumerCollection.cs" />\r
     <Compile Include="System.Collections.Concurrent\OrderablePartitioner.cs" />\r
     <Compile Include="System.Collections.Concurrent\Partitioner.cs" />\r
     <Compile Include="System.Collections.ObjectModel\Collection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\KeyedCollection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\ReadOnlyCollection.cs" />\r
+    <Compile Include="System.Collections.ObjectModel\ReadOnlyDictionary.cs" />\r
     <Compile Include="System.Collections\ArrayList.cs" />\r
     <Compile Include="System.Collections\BitArray.cs" />\r
     <Compile Include="System.Collections\CaseInsensitiveComparer.cs" />\r
     <Compile Include="System.Collections\Comparer.cs" />\r
     <Compile Include="System.Collections\DictionaryBase.cs" />\r
     <Compile Include="System.Collections\DictionaryEntry.cs" />\r
+    <Compile Include="System.Collections\HashPrimeNumbers.cs" />\r
     <Compile Include="System.Collections\Hashtable.cs" />\r
     <Compile Include="System.Collections\ICollection.cs" />\r
     <Compile Include="System.Collections\IComparer.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailedEventArgs.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailureKind.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractInvariantMethodAttribute.cs" />\r
+    <Compile Include="System.Diagnostics.Contracts\ContractOptionAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractPublicPropertyNameAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractReferenceAssemblyAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractRuntimeIgnoredAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyAlgorithmIdAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCompanyAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyConfigurationAttribute.cs" />\r
+    <Compile Include="System.Reflection\AssemblyContentType.cs" />\r
     <Compile Include="System.Reflection\AssemblyCopyrightAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCultureAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyDefaultAliasAttribute.cs" />\r
     <Compile Include="System.Reflection\ReflectionTypeLoadException.cs" />\r
     <Compile Include="System.Reflection\ResourceAttributes.cs" />\r
     <Compile Include="System.Reflection\ResourceLocation.cs" />\r
+    <Compile Include="System.Reflection\RuntimeReflectionExtensions.cs" />\r
     <Compile Include="System.Reflection\StrongNameKeyPair.cs" />\r
     <Compile Include="System.Reflection\TargetException.cs" />\r
     <Compile Include="System.Reflection\TargetInvocationException.cs" />\r
     <Compile Include="System.Threading\ManualResetEventSlim.cs" />\r
     <Compile Include="System.Threading\Monitor.cs" />\r
     <Compile Include="System.Threading\Mutex.cs" />\r
+    <Compile Include="System.Threading\NamedDataSlot.cs" />\r
     <Compile Include="System.Threading\NativeEventCalls.cs" />\r
     <Compile Include="System.Threading\NativeOverlapped.cs" />\r
     <Compile Include="System.Threading\Overlapped.cs" />\r
     <Compile Include="System\CLSCompliantAttribute.cs" />\r
     <Compile Include="System\Comparison.cs" />\r
     <Compile Include="System\Console.cs" />\r
+    <Compile Include="System\Console.iOS.cs" />\r
     <Compile Include="System\ConsoleCancelEventArgs.cs" />\r
     <Compile Include="System\ConsoleCancelEventHandler.cs" />\r
     <Compile Include="System\ConsoleColor.cs" />\r
     <Compile Include="System\PlatformID.cs" />\r
     <Compile Include="System\PlatformNotSupportedException.cs" />\r
     <Compile Include="System\Predicate.cs" />\r
+    <Compile Include="System\Progress.cs" />\r
     <Compile Include="System\Random.cs" />\r
     <Compile Include="System\RankException.cs" />\r
     <Compile Include="System\ResolveEventArgs.cs" />\r
     <Compile Include="System\Version.cs" />\r
     <Compile Include="System\Void.cs" />\r
     <Compile Include="System\WeakReference.cs" />\r
+    <Compile Include="System\WeakReference_T.cs" />\r
     <Compile Include="System\WindowsConsoleDriver.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
index 95c7be346887806e2531bcff350c70b88374b7d8..edc75eb67bb54fe2b20da2d75fd62e2cd68c5a28 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</ProjectGuid>\r
+    <ProjectGuid>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699</NoWarn>\r
     <OutputPath>bin\Debug\corlib-net_4_0</OutputPath>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\ConfidenceFactor.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\PrimalityTests.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math\BigInteger.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\ARC4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoTools.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS8.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RC4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RSAManaged.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\PKCS12.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X501Name.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Certificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CertificateCollection.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Chain.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509ChainStatusFlags.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CRL.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extensions.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Store.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509StoreManager.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Stores.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X520Attributes.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1Convert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\BitConverterLE.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\PKCS7.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\StrongName.cs" />\r
     <Compile Include="..\System.Core\System.Security.Cryptography\Aes.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.AdjustmentRule.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.Android.cs" />\r
     <Compile Include="Mono.Interop\ComInteropProxy.cs" />\r
     <Compile Include="Mono.Interop\IDispatch.cs" />\r
     <Compile Include="Mono.Interop\IUnknown.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime\ConfidenceFactor.cs" />\r
-    <Compile Include="Mono.Math.Prime\PrimalityTests.cs" />\r
-    <Compile Include="Mono.Math\BigInteger.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoTools.cs" />\r
     <Compile Include="Mono.Security.Cryptography\DSAManaged.cs" />\r
     <Compile Include="Mono.Security.Cryptography\HMACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
     <Compile Include="Mono.Security.Cryptography\MACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS1.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS8.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\RSAManaged.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\SymmetricTransform.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="Mono.Security.X509\PKCS12.cs" />\r
-    <Compile Include="Mono.Security.X509\X501Name.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Certificate.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CertificateCollection.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Chain.cs" />\r
-    <Compile Include="Mono.Security.X509\X509ChainStatusFlags.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CRL.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extension.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extensions.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Store.cs" />\r
-    <Compile Include="Mono.Security.X509\X509StoreManager.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Stores.cs" />\r
-    <Compile Include="Mono.Security.X509\X520Attributes.cs" />\r
-    <Compile Include="Mono.Security\ASN1.cs" />\r
-    <Compile Include="Mono.Security\ASN1Convert.cs" />\r
-    <Compile Include="Mono.Security\BitConverterLE.cs" />\r
-    <Compile Include="Mono.Security\PKCS7.cs" />\r
-    <Compile Include="Mono.Security\StrongName.cs" />\r
     <Compile Include="Mono.Security\StrongNameManager.cs" />\r
     <Compile Include="Mono.Security\Uri.cs" />\r
     <Compile Include="Mono.Xml\SecurityParser.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentOrderedList.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentQueue.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentStack.cs" />\r
+    <Compile Include="System.Collections.Concurrent\EnumerablePartitionerOptions.cs" />\r
     <Compile Include="System.Collections.Concurrent\IProducerConsumerCollection.cs" />\r
     <Compile Include="System.Collections.Concurrent\OrderablePartitioner.cs" />\r
     <Compile Include="System.Collections.Concurrent\Partitioner.cs" />\r
     <Compile Include="System.Collections.ObjectModel\Collection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\KeyedCollection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\ReadOnlyCollection.cs" />\r
+    <Compile Include="System.Collections.ObjectModel\ReadOnlyDictionary.cs" />\r
     <Compile Include="System.Collections\ArrayList.cs" />\r
     <Compile Include="System.Collections\BitArray.cs" />\r
     <Compile Include="System.Collections\CaseInsensitiveComparer.cs" />\r
     <Compile Include="System.Collections\Comparer.cs" />\r
     <Compile Include="System.Collections\DictionaryBase.cs" />\r
     <Compile Include="System.Collections\DictionaryEntry.cs" />\r
+    <Compile Include="System.Collections\HashPrimeNumbers.cs" />\r
     <Compile Include="System.Collections\Hashtable.cs" />\r
     <Compile Include="System.Collections\ICollection.cs" />\r
     <Compile Include="System.Collections\IComparer.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailedEventArgs.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailureKind.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractInvariantMethodAttribute.cs" />\r
+    <Compile Include="System.Diagnostics.Contracts\ContractOptionAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractPublicPropertyNameAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractReferenceAssemblyAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractRuntimeIgnoredAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyAlgorithmIdAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCompanyAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyConfigurationAttribute.cs" />\r
+    <Compile Include="System.Reflection\AssemblyContentType.cs" />\r
     <Compile Include="System.Reflection\AssemblyCopyrightAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCultureAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyDefaultAliasAttribute.cs" />\r
     <Compile Include="System.Reflection\ReflectionTypeLoadException.cs" />\r
     <Compile Include="System.Reflection\ResourceAttributes.cs" />\r
     <Compile Include="System.Reflection\ResourceLocation.cs" />\r
+    <Compile Include="System.Reflection\RuntimeReflectionExtensions.cs" />\r
     <Compile Include="System.Reflection\StrongNameKeyPair.cs" />\r
     <Compile Include="System.Reflection\TargetException.cs" />\r
     <Compile Include="System.Reflection\TargetInvocationException.cs" />\r
     <Compile Include="System.Threading\ManualResetEventSlim.cs" />\r
     <Compile Include="System.Threading\Monitor.cs" />\r
     <Compile Include="System.Threading\Mutex.cs" />\r
+    <Compile Include="System.Threading\NamedDataSlot.cs" />\r
     <Compile Include="System.Threading\NativeEventCalls.cs" />\r
     <Compile Include="System.Threading\NativeOverlapped.cs" />\r
     <Compile Include="System.Threading\Overlapped.cs" />\r
     <Compile Include="System\CLSCompliantAttribute.cs" />\r
     <Compile Include="System\Comparison.cs" />\r
     <Compile Include="System\Console.cs" />\r
+    <Compile Include="System\Console.iOS.cs" />\r
     <Compile Include="System\ConsoleCancelEventArgs.cs" />\r
     <Compile Include="System\ConsoleCancelEventHandler.cs" />\r
     <Compile Include="System\ConsoleColor.cs" />\r
     <Compile Include="System\PlatformID.cs" />\r
     <Compile Include="System\PlatformNotSupportedException.cs" />\r
     <Compile Include="System\Predicate.cs" />\r
+    <Compile Include="System\Progress.cs" />\r
     <Compile Include="System\Random.cs" />\r
     <Compile Include="System\RankException.cs" />\r
     <Compile Include="System\ResolveEventArgs.cs" />\r
     <Compile Include="System\Version.cs" />\r
     <Compile Include="System\Void.cs" />\r
     <Compile Include="System\WeakReference.cs" />\r
+    <Compile Include="System\WeakReference_T.cs" />\r
     <Compile Include="System\WindowsConsoleDriver.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
index d4ac2e61a61c7cdc867597d897653a405c38e1fc..864446e5081831cf3029a97db7a29486664f6b9d 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</ProjectGuid>\r
+    <ProjectGuid>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699</NoWarn>\r
     <OutputPath>bin\Debug\corlib-net_4_5</OutputPath>\r
     <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="..\..\build\common\Locale.cs" />\r
     <Compile Include="..\..\build\common\MonoTODOAttribute.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\ConfidenceFactor.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math.Prime\PrimalityTests.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Math\BigInteger.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\ARC4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\CryptoTools.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD2Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\MD4Managed.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\PKCS8.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RC4.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\RSAManaged.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.Cryptography\SymmetricTransform.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\PKCS12.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X501Name.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Certificate.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CertificateCollection.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Chain.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509ChainStatusFlags.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509CRL.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extension.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Extensions.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Store.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509StoreManager.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X509Stores.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security.X509\X520Attributes.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\ASN1Convert.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\BitConverterLE.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\PKCS7.cs" />\r
+    <Compile Include="..\Mono.Security\Mono.Security\StrongName.cs" />\r
     <Compile Include="..\System.Core\System.Security.Cryptography\Aes.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.AdjustmentRule.cs" />\r
     <Compile Include="..\System.Core\System\TimeZoneInfo.Android.cs" />\r
     <Compile Include="Mono.Interop\ComInteropProxy.cs" />\r
     <Compile Include="Mono.Interop\IDispatch.cs" />\r
     <Compile Include="Mono.Interop\IUnknown.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\NextPrimeFinder.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\PrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime.Generator\SequentialSearchPrimeGeneratorBase.cs" />\r
-    <Compile Include="Mono.Math.Prime\ConfidenceFactor.cs" />\r
-    <Compile Include="Mono.Math.Prime\PrimalityTests.cs" />\r
-    <Compile Include="Mono.Math\BigInteger.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeBase.cs" />\r
-    <Compile Include="Mono.Security.Authenticode\AuthenticodeDeformatter.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoConvert.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\CryptoTools.cs" />\r
     <Compile Include="Mono.Security.Cryptography\DSAManaged.cs" />\r
     <Compile Include="Mono.Security.Cryptography\HMACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\KeyPairPersistence.cs" />\r
     <Compile Include="Mono.Security.Cryptography\MACAlgorithm.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS1.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\PKCS8.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\RSAManaged.cs" />\r
-    <Compile Include="Mono.Security.Cryptography\SymmetricTransform.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\BasicConstraintsExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\KeyUsageExtension.cs" />\r
-    <Compile Include="Mono.Security.X509.Extensions\SubjectKeyIdentifierExtension.cs" />\r
-    <Compile Include="Mono.Security.X509\PKCS12.cs" />\r
-    <Compile Include="Mono.Security.X509\X501Name.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Certificate.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CertificateCollection.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Chain.cs" />\r
-    <Compile Include="Mono.Security.X509\X509ChainStatusFlags.cs" />\r
-    <Compile Include="Mono.Security.X509\X509CRL.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extension.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Extensions.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Store.cs" />\r
-    <Compile Include="Mono.Security.X509\X509StoreManager.cs" />\r
-    <Compile Include="Mono.Security.X509\X509Stores.cs" />\r
-    <Compile Include="Mono.Security.X509\X520Attributes.cs" />\r
-    <Compile Include="Mono.Security\ASN1.cs" />\r
-    <Compile Include="Mono.Security\ASN1Convert.cs" />\r
-    <Compile Include="Mono.Security\BitConverterLE.cs" />\r
-    <Compile Include="Mono.Security\PKCS7.cs" />\r
-    <Compile Include="Mono.Security\StrongName.cs" />\r
     <Compile Include="Mono.Security\StrongNameManager.cs" />\r
     <Compile Include="Mono.Security\Uri.cs" />\r
     <Compile Include="Mono.Xml\SecurityParser.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentOrderedList.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentQueue.cs" />\r
     <Compile Include="System.Collections.Concurrent\ConcurrentStack.cs" />\r
+    <Compile Include="System.Collections.Concurrent\EnumerablePartitionerOptions.cs" />\r
     <Compile Include="System.Collections.Concurrent\IProducerConsumerCollection.cs" />\r
     <Compile Include="System.Collections.Concurrent\OrderablePartitioner.cs" />\r
     <Compile Include="System.Collections.Concurrent\Partitioner.cs" />\r
     <Compile Include="System.Collections.ObjectModel\Collection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\KeyedCollection.cs" />\r
     <Compile Include="System.Collections.ObjectModel\ReadOnlyCollection.cs" />\r
+    <Compile Include="System.Collections.ObjectModel\ReadOnlyDictionary.cs" />\r
     <Compile Include="System.Collections\ArrayList.cs" />\r
     <Compile Include="System.Collections\BitArray.cs" />\r
     <Compile Include="System.Collections\CaseInsensitiveComparer.cs" />\r
     <Compile Include="System.Collections\Comparer.cs" />\r
     <Compile Include="System.Collections\DictionaryBase.cs" />\r
     <Compile Include="System.Collections\DictionaryEntry.cs" />\r
+    <Compile Include="System.Collections\HashPrimeNumbers.cs" />\r
     <Compile Include="System.Collections\Hashtable.cs" />\r
     <Compile Include="System.Collections\ICollection.cs" />\r
     <Compile Include="System.Collections\IComparer.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailedEventArgs.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractFailureKind.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractInvariantMethodAttribute.cs" />\r
+    <Compile Include="System.Diagnostics.Contracts\ContractOptionAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractPublicPropertyNameAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractReferenceAssemblyAttribute.cs" />\r
     <Compile Include="System.Diagnostics.Contracts\ContractRuntimeIgnoredAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyAlgorithmIdAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCompanyAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyConfigurationAttribute.cs" />\r
+    <Compile Include="System.Reflection\AssemblyContentType.cs" />\r
     <Compile Include="System.Reflection\AssemblyCopyrightAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyCultureAttribute.cs" />\r
     <Compile Include="System.Reflection\AssemblyDefaultAliasAttribute.cs" />\r
     <Compile Include="System.Reflection\ReflectionTypeLoadException.cs" />\r
     <Compile Include="System.Reflection\ResourceAttributes.cs" />\r
     <Compile Include="System.Reflection\ResourceLocation.cs" />\r
+    <Compile Include="System.Reflection\RuntimeReflectionExtensions.cs" />\r
     <Compile Include="System.Reflection\StrongNameKeyPair.cs" />\r
     <Compile Include="System.Reflection\TargetException.cs" />\r
     <Compile Include="System.Reflection\TargetInvocationException.cs" />\r
     <Compile Include="System.Threading\ManualResetEventSlim.cs" />\r
     <Compile Include="System.Threading\Monitor.cs" />\r
     <Compile Include="System.Threading\Mutex.cs" />\r
+    <Compile Include="System.Threading\NamedDataSlot.cs" />\r
     <Compile Include="System.Threading\NativeEventCalls.cs" />\r
     <Compile Include="System.Threading\NativeOverlapped.cs" />\r
     <Compile Include="System.Threading\Overlapped.cs" />\r
     <Compile Include="System\CLSCompliantAttribute.cs" />\r
     <Compile Include="System\Comparison.cs" />\r
     <Compile Include="System\Console.cs" />\r
+    <Compile Include="System\Console.iOS.cs" />\r
     <Compile Include="System\ConsoleCancelEventArgs.cs" />\r
     <Compile Include="System\ConsoleCancelEventHandler.cs" />\r
     <Compile Include="System\ConsoleColor.cs" />\r
     <Compile Include="System\PlatformID.cs" />\r
     <Compile Include="System\PlatformNotSupportedException.cs" />\r
     <Compile Include="System\Predicate.cs" />\r
+    <Compile Include="System\Progress.cs" />\r
     <Compile Include="System\Random.cs" />\r
     <Compile Include="System\RankException.cs" />\r
     <Compile Include="System\ResolveEventArgs.cs" />\r
     <Compile Include="System\Version.cs" />\r
     <Compile Include="System\Void.cs" />\r
     <Compile Include="System\WeakReference.cs" />\r
+    <Compile Include="System\WeakReference_T.cs" />\r
     <Compile Include="System\WindowsConsoleDriver.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
index 91f9c35d7f389ca3961472899ceba5fbff977227..0a9c5b50e3d88c17a733fa1ab5b546e2287b962e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{7416CE6D-7427-453B-B34B-6CB22334BF3D}</ProjectGuid>\r
+    <ProjectGuid>{D7836C01-0BC4-4C5F-BCE7-123D8701D6B0}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699,168,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\corlib-tests-net_2_0</OutputPath>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Mono\DataConverter.cs" />\r
     <Compile Include="Test\Microsoft.Win32\RegistryKeyTest.cs" />\r
     <Compile Include="Test\Mono\DataConvertTest.cs" />\r
     <Compile Include="Test\System.Threading\SpinLockTests.cs" />\r
     <Compile Include="Test\System.Threading\ThreadCas.cs" />\r
     <Compile Include="Test\System.Threading\ThreadLocalTests.cs" />\r
+    <Compile Include="Test\System.Threading\ThreadPoolTest.cs" />\r
     <Compile Include="Test\System.Threading\ThreadTest.cs" />\r
     <Compile Include="Test\System.Threading\TimerTest.cs" />\r
     <Compile Include="Test\System.Threading\VolatileTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_2_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_2_0.csproj">\r
-      <Project>{928D664D-8277-47B3-AB06-538D932143FE}</Project>\r
+      <Project>{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}</Project>\r
       <Name>corlib\corlib-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-build.csproj">\r
-      <Project>{78F7614C-D0FE-49BE-9521-D2C7DD8A2C55}</Project>\r
+      <Project>{983EBE35-85B4-4D16-84AE-C3081CAE53EA}</Project>\r
       <Name>Mono.Posix\Mono.Posix-build</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-build.csproj">\r
-      <Project>{8F189E8F-4391-4E28-A66B-7ACB47381FFF}</Project>\r
+      <Project>{7E092751-BD4C-404C-960F-657A8D7DABCF}</Project>\r
       <Name>System.Core\System.Core-build</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
+  <ItemGroup>\r
+    <EmbeddedResource Include="Test/resources/Resources.resources">\r
+      <LogicalName>Resources.resources</LogicalName>\r
+    </EmbeddedResource>\r
+  </ItemGroup>\r
 </Project>
index 9cd53eff1ed48311e2171d431240377e40c541fd..9089bba2a0a111bf81d359d37c03d70d99a518a3 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{18B35F26-A922-43A2-9583-8B807D01751E}</ProjectGuid>\r
+    <ProjectGuid>{3AA3802F-6784-454B-BD51-4FCE18CA90D2}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699,168,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\corlib-tests-net_4_0</OutputPath>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Mono\DataConverter.cs" />\r
     <Compile Include="Test\Microsoft.Win32\RegistryKeyTest.cs" />\r
     <Compile Include="Test\Mono\DataConvertTest.cs" />\r
     <Compile Include="Test\System.Threading\SpinLockTests.cs" />\r
     <Compile Include="Test\System.Threading\ThreadCas.cs" />\r
     <Compile Include="Test\System.Threading\ThreadLocalTests.cs" />\r
+    <Compile Include="Test\System.Threading\ThreadPoolTest.cs" />\r
     <Compile Include="Test\System.Threading\ThreadTest.cs" />\r
     <Compile Include="Test\System.Threading\TimerTest.cs" />\r
     <Compile Include="Test\System.Threading\VolatileTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_2_0.csproj">\r
-      <Project>{BFC160FF-5B62-41D2-B039-52C469077AE0}</Project>\r
+      <Project>{F83F663F-89F7-481C-941E-E4FE67867254}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_2_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_2_0.csproj">\r
-      <Project>{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}</Project>\r
+      <Project>{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}</Project>\r
       <Name>System.Core\System.Core-net_2_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
+  <ItemGroup>\r
+    <EmbeddedResource Include="Test/resources/Resources.resources">\r
+      <LogicalName>Resources.resources</LogicalName>\r
+    </EmbeddedResource>\r
+  </ItemGroup>\r
 </Project>
index 208f7f9d64e33758b582ea842a148b851ab21379..9039342c40f1d9a5ec138ac6e936ead93bab6639 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{50D0CA30-64AF-4136-B43D-C43EDDE136C7}</ProjectGuid>\r
+    <ProjectGuid>{93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>612,618,1699,168,219,618,672</NoWarn>\r
     <OutputPath>bin\Debug\corlib-tests-net_4_5</OutputPath>\r
@@ -44,7 +44,6 @@
   </PropertyGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
-    <Compile Include="..\..\build\common\Consts.cs" />\r
     <Compile Include="Mono\DataConverter.cs" />\r
     <Compile Include="Test\Microsoft.Win32\RegistryKeyTest.cs" />\r
     <Compile Include="Test\Mono\DataConvertTest.cs" />\r
     <Compile Include="Test\System.Threading\SpinLockTests.cs" />\r
     <Compile Include="Test\System.Threading\ThreadCas.cs" />\r
     <Compile Include="Test\System.Threading\ThreadLocalTests.cs" />\r
+    <Compile Include="Test\System.Threading\ThreadPoolTest.cs" />\r
     <Compile Include="Test\System.Threading\ThreadTest.cs" />\r
     <Compile Include="Test\System.Threading\TimerTest.cs" />\r
     <Compile Include="Test\System.Threading\VolatileTest.cs" />\r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\Mono.Posix\Mono.Posix-net_4_0.csproj">\r
-      <Project>{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}</Project>\r
+      <Project>{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}</Project>\r
       <Name>Mono.Posix\Mono.Posix-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Folder Include="Properties\" />\r
   </ItemGroup>\r
+  <ItemGroup>\r
+    <EmbeddedResource Include="Test/resources/Resources.resources">\r
+      <LogicalName>Resources.resources</LogicalName>\r
+    </EmbeddedResource>\r
+  </ItemGroup>\r
 </Project>
index fcda3a271681ca4d7378c2e930f6e563818db519..f581c0d5e599fc34ad44eb38c948ae69647d2664 100644 (file)
@@ -33,47 +33,53 @@ Mono/DataConverter.cs
 Mono.Interop/ComInteropProxy.cs
 Mono.Interop/IDispatch.cs
 Mono.Interop/IUnknown.cs
-Mono.Math/BigInteger.cs
-Mono.Math.Prime/ConfidenceFactor.cs
-Mono.Math.Prime/PrimalityTests.cs
-Mono.Math.Prime.Generator/NextPrimeFinder.cs
-Mono.Math.Prime.Generator/PrimeGeneratorBase.cs
-Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs
-Mono.Security/ASN1.cs
-Mono.Security/ASN1Convert.cs
-Mono.Security/BitConverterLE.cs
-Mono.Security/PKCS7.cs
-Mono.Security/StrongName.cs
+../Mono.Security/Mono.Math/BigInteger.cs
+../Mono.Security/Mono.Math.Prime/ConfidenceFactor.cs
+../Mono.Security/Mono.Math.Prime/PrimalityTests.cs
+../Mono.Security/Mono.Math.Prime.Generator/NextPrimeFinder.cs
+../Mono.Security/Mono.Math.Prime.Generator/PrimeGeneratorBase.cs
+../Mono.Security/Mono.Math.Prime.Generator/SequentialSearchPrimeGeneratorBase.cs
+../Mono.Security/Mono.Security/ASN1.cs
+../Mono.Security/Mono.Security/ASN1Convert.cs
+../Mono.Security/Mono.Security/BitConverterLE.cs
+../Mono.Security/Mono.Security/PKCS7.cs
+../Mono.Security/Mono.Security/StrongName.cs
 Mono.Security/StrongNameManager.cs
 Mono.Security/Uri.cs
-Mono.Security.Authenticode/AuthenticodeBase.cs
-Mono.Security.Authenticode/AuthenticodeDeformatter.cs
-Mono.Security.Cryptography/CryptoConvert.cs
-Mono.Security.Cryptography/CryptoTools.cs
+../Mono.Security/Mono.Security.Authenticode/AuthenticodeBase.cs
+../Mono.Security/Mono.Security.Authenticode/AuthenticodeDeformatter.cs
+../Mono.Security/Mono.Security.Cryptography/ARC4Managed.cs
+../Mono.Security/Mono.Security.Cryptography/CryptoConvert.cs
+../Mono.Security/Mono.Security.Cryptography/CryptoTools.cs
 Mono.Security.Cryptography/DSAManaged.cs
-Mono.Security.Cryptography/KeyPairPersistence.cs
-Mono.Security.Cryptography/PKCS1.cs
-Mono.Security.Cryptography/PKCS8.cs
 Mono.Security.Cryptography/HMACAlgorithm.cs
+../Mono.Security/Mono.Security.Cryptography/KeyPairPersistence.cs
 Mono.Security.Cryptography/MACAlgorithm.cs
-Mono.Security.Cryptography/SymmetricTransform.cs
-Mono.Security.Cryptography/RSAManaged.cs
-Mono.Security.X509/PKCS12.cs
-Mono.Security.X509/X501Name.cs
-Mono.Security.X509/X509Certificate.cs
-Mono.Security.X509/X509CertificateCollection.cs
-Mono.Security.X509/X509Chain.cs
-Mono.Security.X509/X509ChainStatusFlags.cs
-Mono.Security.X509/X509CRL.cs
-Mono.Security.X509/X509Extension.cs
-Mono.Security.X509/X509Extensions.cs
-Mono.Security.X509/X509Store.cs
-Mono.Security.X509/X509Stores.cs
-Mono.Security.X509/X509StoreManager.cs
-Mono.Security.X509/X520Attributes.cs
-Mono.Security.X509.Extensions/BasicConstraintsExtension.cs
-Mono.Security.X509.Extensions/KeyUsageExtension.cs
-Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs
+../Mono.Security/Mono.Security.Cryptography/MD2.cs
+../Mono.Security/Mono.Security.Cryptography/MD2Managed.cs
+../Mono.Security/Mono.Security.Cryptography/MD4.cs
+../Mono.Security/Mono.Security.Cryptography/MD4Managed.cs
+../Mono.Security/Mono.Security.Cryptography/PKCS1.cs
+../Mono.Security/Mono.Security.Cryptography/PKCS8.cs
+../Mono.Security/Mono.Security.Cryptography/RC4.cs
+../Mono.Security/Mono.Security.Cryptography/RSAManaged.cs
+../Mono.Security/Mono.Security.Cryptography/SymmetricTransform.cs
+../Mono.Security/Mono.Security.X509/PKCS12.cs
+../Mono.Security/Mono.Security.X509/X501Name.cs
+../Mono.Security/Mono.Security.X509/X509Certificate.cs
+../Mono.Security/Mono.Security.X509/X509CertificateCollection.cs
+../Mono.Security/Mono.Security.X509/X509Chain.cs
+../Mono.Security/Mono.Security.X509/X509ChainStatusFlags.cs
+../Mono.Security/Mono.Security.X509/X509CRL.cs
+../Mono.Security/Mono.Security.X509/X509Extension.cs
+../Mono.Security/Mono.Security.X509/X509Extensions.cs
+../Mono.Security/Mono.Security.X509/X509Store.cs
+../Mono.Security/Mono.Security.X509/X509Stores.cs
+../Mono.Security/Mono.Security.X509/X509StoreManager.cs
+../Mono.Security/Mono.Security.X509/X520Attributes.cs
+../Mono.Security/Mono.Security.X509.Extensions/BasicConstraintsExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/KeyUsageExtension.cs
+../Mono.Security/Mono.Security.X509.Extensions/SubjectKeyIdentifierExtension.cs
 Mono.Xml/SmallXmlParser.cs
 Mono.Xml/SecurityParser.cs
 System/AccessViolationException.cs
@@ -534,6 +540,7 @@ System.Reflection/MonoEvent.cs
 System.Reflection/MonoField.cs
 System.Reflection/MonoMethod.cs
 System.Reflection/MonoModule.cs
+System.Reflection/MonoParameterInfo.cs
 System.Reflection/MonoProperty.cs
 System.Reflection/ObfuscateAssemblyAttribute.cs
 System.Reflection/ObfuscationAttribute.cs
index 97222a4d180eacb34a368dc51b9dae8d6c3980b3..51c354cc224645f7dbcba742086312519e6d66df 100644 (file)
@@ -39,6 +39,7 @@ System.Collections/QueueTest.cs
 System.Collections/ReadOnlyCollectionBaseTest.cs
 System.Collections/SortedListTest.cs
 System.Collections/StackTest.cs
+System.Collections/StructuralComparisonsTest.cs
 System.Collections.Generic/ComparerTest.cs
 System.Collections.Generic/DictionaryTest.cs
 System.Collections.Generic/EqualityComparerTest.cs
@@ -132,6 +133,7 @@ System.Reflection/ConstructorInfoTest.cs
 System.Reflection/CustomAttributeDataTest.cs
 System.Reflection/EventInfoTest.cs
 System.Reflection/FieldInfoTest.cs
+System.Reflection/IntrospectionExtensionsTest.cs
 System.Reflection/MethodBaseTest.cs
 System.Reflection/MethodInfoTest.cs
 System.Reflection/MonoGenericClassTest.cs
@@ -406,6 +408,7 @@ System.Threading/InterlockedTest.cs
 System.Threading/LazyInitializerTest.cs
 System.Threading/WaitHandleTest.cs
 System.Threading/VolatileTest.cs
+System.Threading/ThreadPoolTest.cs
 System/TimeSpanTest.cs
 System/TimeZoneTest.cs
 System/TypeTest.cs
diff --git a/mcs/class/corlib/mobile_static_corlib.dll.sources b/mcs/class/corlib/mobile_static_corlib.dll.sources
new file mode 100644 (file)
index 0000000..da77893
--- /dev/null
@@ -0,0 +1 @@
+#include corlib.dll.sources
diff --git a/mcs/class/corlib/monotouch_corlib.dll.sources b/mcs/class/corlib/monotouch_corlib.dll.sources
new file mode 100644 (file)
index 0000000..9e173da
--- /dev/null
@@ -0,0 +1 @@
+#include corlib.dll.sources
\ No newline at end of file
index 80f3763bdcad5f4324dcd86f06ee7d4610d52708..795cae98daf8595657b6b85bc56de12c39292787 100644 (file)
@@ -117,7 +117,9 @@ LIB_MCS_FLAGS = \
        /r:System.Xml.Linq.dll                                            \
        /r:System.Configuration.dll
 
-TEST_MCS_FLAGS = /r:System.dll /r:System.Core.dll /r:System.Xml.dll /r:AgilityPack.dll
+CLEAN_FILES += $(the_lib).config
+
+TEST_MCS_FLAGS = /r:System.dll /r:System.Core.dll /r:System.Xml.dll
 
 DOC_SOURCE_DIRS = \
        ../../docs \
@@ -131,9 +133,7 @@ $(the_lib): Makefile $(RESOURCE_FILES)
 
 all-local: $(the_lib).config Monodoc.Ecma/EcmaUrlParser.cs
 
-run-test-local: AgilityPack.dll
-
-test-local: setup-doc-sources AgilityPack.dll
+test-local: setup-doc-sources
 
 dist-local: Monodoc.Ecma/EcmaUrlParser.cs
 
@@ -149,6 +149,3 @@ parser.exe: Monodoc.Ecma/EcmaUrlParser.cs Monodoc.Ecma/EcmaUrlTokenizer.cs Monod
 setup-doc-sources: $(DOC_SOURCES)
        mkdir -p ./Test/monodoc_test/sources/
        cp $(DOC_SOURCES) ./Test/monodoc_test/sources/
-
-AgilityPack.dll:
-       cp $(topdir)/../docs/$(@) .
index a4cabd8a7de2f1079d644563833557532a477d19..a4d726718a36ab21156b10287fe29a0e1a8a5ad7 100644 (file)
@@ -61,8 +61,9 @@ namespace Monodoc.Ecma
                {
                        int token = xtoken ();
                        //Console.WriteLine ("Current token {0} with value {1}", token, val == null ? "(none)" : val.ToString ());
-                       if (token == Token.ERROR)
-                               Console.WriteLine ("Problem at pos {0} after token {1}", current_pos, current_token);
+                       if (token == Token.ERROR) {
+                               throw new Exception (string.Format ("Error at position {0} parsing url '{0}'",  current_pos, input));
+                       }
                        current_token = token;
                        return token;
                }
index c69aeae8e56aefd5e51e9bafab37401c7d2133b2..04923ad4d90b0e48945a0280edff6c0555e141e0 100644 (file)
@@ -535,5 +535,11 @@ namespace Monodoc
                                yield return indexDirectory;
                        yield return Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.ApplicationData), "monodoc");
                }
+
+               [Obsolete]
+               public string GetTitle (string url)
+               {
+                       return "Mono Documentation";
+               }
        }
 }
index b0d033d1b4e759632962a58f1323558b75868472..4d8a8d27c81087ae90863e7b8f837960482b7deb 100644 (file)
@@ -22,6 +22,9 @@ namespace Monodoc
                [Obsolete ("Use RawGenerator directly")]
                public XmlDocument GetHelpXml (string id)
                {
+                       var rendered = RenderUrl (id, rawGenerator);
+                       if (rendered == null)
+                               return null;
                        var doc = new XmlDocument ();
                        doc.LoadXml (RenderUrl (id, rawGenerator));
                        return doc;
index 1dcc72af1d4e8affb6415774f232c9415cce59dd..c15c6137786a511569b25f0f4e809a630dd4dd10 100644 (file)
@@ -81,12 +81,20 @@ namespace Monodoc.Generators.Html
 
                public string Export (Stream stream, Dictionary<string, string> extraArgs)
                {
-                       return Htmlize (XmlReader.Create (stream), extraArgs);
+                       return Htmlize (XmlReader.Create (WrapStream (new StreamReader (stream), extraArgs)), extraArgs);
                }
 
                public string Export (string input, Dictionary<string, string> extraArgs)
                {
-                       return Htmlize (XmlReader.Create (new StringReader (input)), extraArgs);
+                       return Htmlize (XmlReader.Create (WrapStream (new StringReader (input), extraArgs)), extraArgs);
+               }
+
+               TextReader WrapStream (TextReader initialReader, Dictionary<string, string> renderArgs)
+               {
+                       string show;
+                       if (renderArgs.TryGetValue ("show", out show) && show == "namespace")
+                               return new AvoidCDataTextReader (initialReader);
+                       return initialReader;
                }
                
                static void EnsureTransform ()
@@ -105,6 +113,7 @@ namespace Monodoc.Generators.Html
                public class ExtensionObject
                {
                        bool quiet = true;
+                       Dictionary<string, System.Reflection.Assembly> assemblyCache = new Dictionary<string, System.Reflection.Assembly> ();
 
                        public string Colorize(string code, string lang)
                        {
@@ -208,7 +217,11 @@ namespace Monodoc.Generators.Html
                                        System.Reflection.Assembly assembly = null;
                                
                                        try {
-                                               assembly = System.Reflection.Assembly.LoadWithPartialName(assemblyname);
+                                               if (!assemblyCache.TryGetValue (assemblyname, out assembly)) {
+                                                       assembly = System.Reflection.Assembly.LoadWithPartialName(assemblyname);
+                                                       if (assembly != null)
+                                                               assemblyCache[assemblyname] = assembly;
+                                               }
                                        } catch (Exception) {
                                                // nothing.
                                        }
@@ -264,7 +277,13 @@ namespace Monodoc.Generators.Html
                                        if (assemblyname == string.Empty)
                                                return string.Empty;
 
-                                       var assembly = System.Reflection.Assembly.LoadWithPartialName(assemblyname);
+                                       System.Reflection.Assembly assembly;
+                                       if (!assemblyCache.TryGetValue (assemblyname, out assembly)) {
+                                               assembly = System.Reflection.Assembly.LoadWithPartialName(assemblyname);
+                                               if (assembly != null)
+                                                       assemblyCache[assemblyname] = assembly;
+                                       }
+
                                        if (assembly == null)
                                                return string.Empty;
 
@@ -310,4 +329,81 @@ namespace Monodoc.Generators.Html
                        }
                }
        }
+
+       public class AvoidCDataTextReader : TextReader
+       {
+               static readonly char[] CDataPattern = new[] {
+                       '<', '!', '[', 'C', 'D', 'A', 'T', 'A', '['
+               };
+               static readonly char[] CDataClosingPattern = new[] {
+                       ']', ']', '>'
+               };
+               TextReader wrappedReader;
+               char[] backingArray = new char[9]; // "<![CDATA[".Length
+               int currentIndex = -1;
+               int eofIndex = -1;
+               bool inCData;
+
+               public AvoidCDataTextReader (TextReader wrappedReader)
+               {
+                       this.wrappedReader = wrappedReader;
+               }
+
+               public override int Peek ()
+               {
+                       if (!EnsureBuffer ())
+                               return -1;
+                       return (int)backingArray[currentIndex];
+               }
+
+               public override int Read ()
+               {
+                       if (!EnsureBuffer ())
+                               return -1;
+                       var result = (int)backingArray[currentIndex];
+                       var next = wrappedReader.Read ();
+                       if (next == -1 && eofIndex == -1)
+                               eofIndex = currentIndex;
+                       else
+                               backingArray[currentIndex] = (char)next;
+                       currentIndex = (currentIndex + 1) % backingArray.Length;
+                       return result;
+               }
+
+               void ReadLength (int length)
+               {
+                       for (int i = 0; i < length; i++)
+                               Read ();
+               }
+
+               bool EnsureBuffer ()
+               {
+                       if (currentIndex == -1) {
+                               currentIndex = 0;
+                               var read = wrappedReader.ReadBlock (backingArray, 0, backingArray.Length);
+                               if (read < backingArray.Length)
+                                       eofIndex = read;
+                               return read > 0;
+                       } else if (currentIndex == eofIndex) {
+                               return false;
+                       }
+                       if (!inCData && PatternDetect (CDataPattern)) {
+                               inCData = true;
+                               ReadLength (CDataPattern.Length);
+                               return EnsureBuffer ();
+                       }
+                       if (inCData && PatternDetect (CDataClosingPattern)) {
+                               inCData = false;
+                               ReadLength (CDataClosingPattern.Length);
+                               return EnsureBuffer ();
+                       }
+
+                       return true;
+               }
+
+               bool PatternDetect (char[] pattern)
+               {
+                       return backingArray[currentIndex] == pattern[0] && Enumerable.Range (1, pattern.Length - 1).All (i => backingArray[(currentIndex + i) % backingArray.Length] == pattern[i]);
+               }
+       }
 }
index e3371d141d0e46ab9a591ae2b590cc9532fdf0b9..efdeedf63a623c36c620cf40d09b86c715ebe79c 100644 (file)
@@ -54,7 +54,17 @@ namespace Monodoc.Providers
                                                nsSummaries[nsName] = nsElements = new XElement ("elements",
                                                                                                 new XElement ("summary"),
                                                                                                 new XElement ("remarks"));
-
+                               //Add namespace summary and remarks data from file, if available
+                                       var nsFileName = Path.Combine(asm, String.Format("ns-{0}.xml", nsName));
+                                       if(File.Exists(nsFileName)){
+                                               var nsEl = XElement.Load (nsFileName);
+
+                                               nsElements.Element ("summary").ReplaceWith (nsEl.Descendants ("summary").First ());
+                                               nsElements.Element ("remarks").ReplaceWith (nsEl.Descendants ("remarks").First ());
+                                       }else{
+                                               Console.WriteLine ("Error reading namespace XML for " + nsName);
+                                       }
+                              
                                        foreach (var type in ns.Elements ("Type")) {
                                                // Add the XML file corresponding to the type to our storage
                                                var id = indexGenerator (type);
@@ -426,8 +436,11 @@ namespace Monodoc.Providers
                public static int GetNodeLevel (Node node)
                {
                        int i = 0;
-                       for (; !node.Element.StartsWith ("root:/", StringComparison.OrdinalIgnoreCase); i++)
+                       for (; !node.Element.StartsWith ("root:/", StringComparison.OrdinalIgnoreCase); i++) {
                                node = node.Parent;
+                               if (node == null)
+                                       return i - 1;
+                       }
                        return i - 1;
                }
 
@@ -538,10 +551,11 @@ namespace Monodoc.Providers
                                break;
                        // binary operators: overloading is possible [ECMA-335 Â§10.3.2]
                        default:
-                               memberSignature =
-                                       nicename + "("
-                                       + string.Join (",", member.Element ("Parameters").Elements ("Parameter").Select (p => (string)p.Attribute ("Type")))
-                                       + ")";
+                               if (member.Element ("Parameters") != null)
+                                       memberSignature =
+                                               nicename + "("
+                                               + string.Join (",", member.Element ("Parameters").Elements ("Parameter").Select (p => (string)p.Attribute ("Type")))
+                                               + ")";
                                break;
                        }
 
@@ -556,17 +570,15 @@ namespace Monodoc.Providers
                                var fullName = reader.GetAttribute ("FullName");
                                reader.ReadToFollowing ("AssemblyName");
                                var assemblyName = reader.ReadElementString ();
-                               reader.ReadToFollowing ("summary");
-                               var summary = reader.ReadInnerXml ();
-                               reader.ReadToFollowing ("remarks");
-                               var remarks = reader.ReadInnerXml ();
+                               var summary = reader.ReadToFollowing ("summary") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("summary");
+                               var remarks = reader.ReadToFollowing ("remarks") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("remarks");
 
                                return new XElement ("class",
                                                     new XAttribute ("name", name ?? string.Empty),
                                                     new XAttribute ("fullname", fullName ?? string.Empty),
                                                     new XAttribute ("assembly", assemblyName ?? string.Empty),
-                                                    new XElement ("summary", new XCData (summary)),
-                                                    new XElement ("remarks", new XCData (remarks)));
+                                                    summary,
+                                                    remarks);
                        }
                }
        }
index d136fbfe5e4ee3c604e3085e03f246e03d91d44c..53e54c4310bec6f0a4791fec6603e4be6597bc71 100644 (file)
@@ -77,15 +77,13 @@ namespace Monodoc.Providers
                        using (var reader = XmlReader.Create (nsFile)) {
                                reader.ReadToFollowing ("Namespace");
                                var name = reader.GetAttribute ("Name");
-                               reader.ReadToFollowing ("summary");
-                               var summary = reader.ReadInnerXml ();
-                               reader.ReadToFollowing ("remarks");
-                               var remarks = reader.ReadInnerXml ();
+                               var summary = reader.ReadToFollowing ("summary") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("summary");
+                               var remarks = reader.ReadToFollowing ("remarks") ? XElement.Load (reader.ReadSubtree ()) : new XElement ("remarks");
 
                                return new XElement ("namespace",
                                                     new XAttribute ("ns", name ?? string.Empty),
-                                                    new XElement ("summary", new XCData (summary)),
-                                                    new XElement ("remarks", new XCData (remarks)));
+                                                    summary,
+                                                    remarks);
                        }
                }
 
@@ -276,7 +274,8 @@ namespace Monodoc.Providers
                Node GetNodeTypeParent (Node node)
                {
                        // Type nodes are always at level 2 so we just need to get there
-                       while (node != null && node.Parent != null && !node.Parent.Parent.Element.StartsWith ("root:/", StringComparison.OrdinalIgnoreCase))
+                       while (node != null && node.Parent != null
+                              && !node.Parent.Parent.Element.StartsWith ("root:/", StringComparison.OrdinalIgnoreCase) && node.Parent.Parent.Parent != null)
                                node = node.Parent;
                        return node;
                }
index 341f439b9688f2c15bce15f1aceee8d58cc12f9a..97937fc442a54a5ef4c3961541b42f1d2a99a010 100644 (file)
@@ -10,7 +10,6 @@
 }
 
 p {
-       text-align: justify;
        margin-top: .5em;
        margin-bottom: .5em;
 }
index 11772ee344b7784d70a2b8f181c0a7d900c23da1..243406214ceacb675a0967371c9c25bd60c3d31b 100644 (file)
                <xsl:param name="id" />
                <h2>Syntax</h2>
                <div class="Signature">
-                       <xsl:attribute name="id">
-                         <xsl:copy-of select="$id" />
-                       </xsl:attribute>
+      <xsl:if test="$id != ''">
+        <xsl:attribute name="id">
+          <xsl:copy-of select="$id" />
+        </xsl:attribute>
+      </xsl:if>
                        <xsl:copy-of select="$content" />
                </div>
        </xsl:template>
diff --git a/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs b/mcs/class/monodoc/Test/Monodoc.Generators/AvoidCDataTextReaderTests.cs
new file mode 100644 (file)
index 0000000..5ab8e84
--- /dev/null
@@ -0,0 +1,86 @@
+using System;
+using System.IO;
+using System.Linq;
+using System.Xml;
+using System.Collections.Generic;
+
+using NUnit.Framework;
+
+using Monodoc;
+using Monodoc.Generators;
+using Monodoc.Generators.Html;
+
+namespace MonoTests.Monodoc.Generators
+{
+       [TestFixture]
+       public class AvoidCDataTextReaderTest
+       {
+               void AssertSameInputOutput (string expected, string input)
+               {
+                       var processed = new AvoidCDataTextReader (new StringReader (input)).ReadToEnd ();
+                       Assert.AreEqual (expected, processed);
+               }
+
+               [Test]
+               public void NoCDataXmlTest ()
+               {
+                       var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary>
+      Provides access to the system Address Book.
+    </summary></class></elements>";
+
+                       AssertSameInputOutput (input, input);
+               }
+
+               [Test]
+               public void WithCDataXmlTest ()
+               {
+                       var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary><![CDATA[
+      Provides access to the system Address Book.]]>
+    </summary></class></elements>";
+
+                       AssertSameInputOutput (input.Replace ("<![CDATA[", string.Empty).Replace ("]]>", string.Empty), input);
+               }
+
+               [Test]
+               public void PartialCDataXmlTest ()
+               {
+                       var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary><![CDA[
+      Provides access to the system Address Book.]]>
+    </summary></class></elements>";
+
+                       AssertSameInputOutput (input, input);
+               }
+
+               [Test]
+               public void FinishWithPartialCDataXmlTest ()
+               {
+                       var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary>
+      Provides access to the system Address Book.
+    </summary></class></elements><![CDA[";
+
+                       AssertSameInputOutput (input, input);
+               }
+
+               [Test]
+               public void FinishWithCDataXmlTest ()
+               {
+                       var input = @"<elements><summary>Addressbook APIs.</summary><remarks /><class name=""ABAddressBook"" fullname=""MonoTouch.AddressBook.ABAddressBook"" assembly=""monotouch""><summary>
+      Provides access to the system Address Book.
+    </summary></class></elements><![CDATA[";
+
+                       AssertSameInputOutput (input.Replace ("<![CDATA[", string.Empty), input);
+               }
+
+               [Test]
+               public void EmptyInputTest ()
+               {
+                       AssertSameInputOutput (string.Empty, string.Empty);
+               }
+
+               [Test]
+               public void LimitedInputTest ()
+               {
+                       AssertSameInputOutput ("foo", "foo");
+               }
+       }
+}
index 0e36598fb5be2a1a14d0690ced0ae9d39665df10..867c9b793898dfb675e3aa05f15da5df70e6ec4c 100644 (file)
@@ -7,8 +7,10 @@ using NUnit.Framework;
 
 using Monodoc;
 using Monodoc.Generators;
+using Monodoc.Providers;
 
-using HtmlAgilityPack;
+// Used by ReachabilityWithCrefsTest
+// using HtmlAgilityPack;
 
 namespace MonoTests.Monodoc
 {
@@ -152,6 +154,24 @@ namespace MonoTests.Monodoc
                        Assert.IsTrue (rootTree.RenderUrl ("T:System.IComparable{T}", generator, out result), "#6");
                }
 
+               [Test]
+               public void PublicUrlOnUnattachedHelpSourceRoot ()
+               {
+                       // Unattached help source have no root:/ URL attributed
+                       var hs = new EcmaHelpSource (Path.Combine (BaseDir, "sources", "netdocs"), false);
+                       var rootTree = RootTree.LoadTree (Path.GetFullPath (BaseDir), false);
+                       hs.RootTree = rootTree;
+                       Assert.IsNull (hs.Tree.RootNode.PublicUrl);
+                       var nsChildUrl = hs.Tree.RootNode.ChildNodes.First ().PublicUrl;
+                       Assert.IsNotNull (nsChildUrl);
+                       StringAssert.StartsWith ("N:", nsChildUrl);
+                       // Verify GetNodeTypeParent
+                       var typeNode = hs.Tree.RootNode.ChildNodes.First ().ChildNodes.First ();
+                       var metaNode = typeNode.ChildNodes.First (cn => cn.Element == "M");
+                       StringAssert.StartsWith (typeNode.PublicUrl, metaNode.PublicUrl);
+               }
+
+               /*
                [Test, Ignore ("Mono documentation is full of syntax errors so we can't use it reliably for this test")]
                public void ReachabilityWithCrefsTest ()
                {
@@ -202,6 +222,6 @@ namespace MonoTests.Monodoc
                        }
 
                        Assert.AreEqual (0, errorCount, errorCount + " / " + crefs.Count);
-               }
+               }*/
        }
 }
index 350b15091bff76f5e6b5cb2e6f865ec185b2f5b8..bd772bec0c8f8118ae739d093d08c3e3308887d1 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{F6C1C101-6969-4BB5-BC74-4EE2CBFEA29E}</ProjectGuid>\r
+    <ProjectGuid>{2A219013-33EF-412C-ACA4-180E3B423624}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>618,612,672,809,1699,169,164,162,168,219,618,612</NoWarn>\r
     <OutputPath>bin\Debug\monodoc-net_4_0</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0.csproj">\r
-      <Project>{D769AAF9-10ED-4C32-8D87-8D0648E2D001}</Project>\r
+      <Project>{2DE2CFB0-3166-41D9-B0B5-EFBE309DD7B7}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
-      <Project>{1A075F2A-40CF-48B5-B817-8B03444DB7C6}</Project>\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
       <Name>System\System-net_4_0-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_0.csproj">\r
-      <Project>{802B1060-BD79-4648-A24E-D38F34AE29A0}</Project>\r
+      <Project>{1BD010C0-0588-4ACB-A9E7-483D138D29E9}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_0.csproj">\r
-      <Project>{610C7C77-5851-4B95-A3FE-B04E1B011E6A}</Project>\r
+      <Project>{CA49630B-FD24-411F-9651-B15CA72CE5B8}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 9ec13e9d1d7604b5601080bda649aa04f8251ce5..e09884e01c9a282b66fe20beedfcb43282f7bb91 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{DB76C87C-DD25-4563-9DD0-7914A84CC11D}</ProjectGuid>\r
+    <ProjectGuid>{46C0366B-72E7-4482-A6C4-4C8CE8318BDA}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>618,612,672,809,1699,169,164,162,168,219,618,612</NoWarn>\r
     <OutputPath>bin\Debug\monodoc-net_4_5</OutputPath>\r
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5.csproj">\r
-      <Project>{C41C7048-6B86-43DB-9F5E-BED7A92CD56E}</Project>\r
+      <Project>{039AD56A-E91B-4803-8328-287F70B61D14}</Project>\r
       <Name>ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
-      <Project>{34966210-D64D-419C-94A4-9A6093CE5882}</Project>\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
       <Name>System\System-net_4_5-2</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Xml.Linq\System.Xml.Linq-net_4_5.csproj">\r
-      <Project>{50961B0B-5BEC-4058-9246-5CEEE888CEC8}</Project>\r
+      <Project>{A581C8A4-F031-43BA-A744-042ECD6EA6FE}</Project>\r
       <Name>System.Xml.Linq\System.Xml.Linq-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.Configuration\System.Configuration-net_4_5.csproj">\r
-      <Project>{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}</Project>\r
+      <Project>{CA2CD67B-1308-460D-BDBA-498F63DEAA31}</Project>\r
       <Name>System.Configuration\System.Configuration-net_4_5</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 0082b114a5e847ad70757cfc4a195d2bac989bf5..ff3da0cb55912fb48becf7d655d6a40c1ad7543e 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{09121C6C-4740-4706-AFF2-6EA0E3DFA132}</ProjectGuid>\r
+    <ProjectGuid>{1AD08CB1-E56F-4E1F-B040-32A3731A9E87}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>618,612,672,809,1699</NoWarn>\r
     <OutputPath>bin\Debug\monodoc-tests-net_4_0</OutputPath>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="Test\Monodoc.Ecma\EcmaUrlTests.cs" />\r
+    <Compile Include="Test\Monodoc.Generators\AvoidCDataTextReaderTests.cs" />\r
     <Compile Include="Test\Monodoc.Generators\RawGeneratorTests.cs" />\r
+    <Compile Include="Test\Monodoc\EcmaDocTests.cs" />\r
     <Compile Include="Test\Monodoc\HelpSourceTests.cs" />\r
+    <Compile Include="Test\Monodoc\NodeTest.cs" />\r
+    <Compile Include="Test\Monodoc\RootTreeTest.cs" />\r
     <Compile Include="Test\Monodoc\SettingsTest.cs" />\r
     <Compile Include="Test\Monodoc\TreeTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_0\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\monodoc\monodoc-net_4_0.csproj">\r
-      <Project>{F6C1C101-6969-4BB5-BC74-4EE2CBFEA29E}</Project>\r
+      <Project>{2A219013-33EF-412C-ACA4-180E3B423624}</Project>\r
       <Name>monodoc\monodoc-net_4_0</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\System\System-net_4_0-2.csproj">\r
+      <Project>{8260E24F-1471-4320-AB5B-7CC7B68521E3}</Project>\r
+      <Name>System\System-net_4_0-2</Name>\r
+    </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_0.csproj">\r
-      <Project>{2590BECB-2660-49C6-93B1-B9E7D0796214}</Project>\r
+      <Project>{D121EB80-19C6-4313-9BBE-6F66556CE8B7}</Project>\r
       <Name>System.Core\System.Core-net_4_0</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_0-1.csproj">\r
-      <Project>{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}</Project>\r
+      <Project>{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}</Project>\r
       <Name>System.XML\System.Xml-net_4_0-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 461592a34347784e90072992842c5288b0a7a296..4ec9c69c1ff4efb0883b5af07b432881c43318c7 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{20C68AFD-8518-4A78-91B4-747C71CB7589}</ProjectGuid>\r
+    <ProjectGuid>{AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>618,612,672,809,1699</NoWarn>\r
     <OutputPath>bin\Debug\monodoc-tests-net_4_5</OutputPath>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <ItemGroup>\r
     <Compile Include="Test\Monodoc.Ecma\EcmaUrlTests.cs" />\r
+    <Compile Include="Test\Monodoc.Generators\AvoidCDataTextReaderTests.cs" />\r
     <Compile Include="Test\Monodoc.Generators\RawGeneratorTests.cs" />\r
+    <Compile Include="Test\Monodoc\EcmaDocTests.cs" />\r
     <Compile Include="Test\Monodoc\HelpSourceTests.cs" />\r
+    <Compile Include="Test\Monodoc\NodeTest.cs" />\r
+    <Compile Include="Test\Monodoc\RootTreeTest.cs" />\r
     <Compile Include="Test\Monodoc\SettingsTest.cs" />\r
     <Compile Include="Test\Monodoc\TreeTest.cs" />\r  </ItemGroup>\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
   <ItemGroup>\r
     <Reference Include="..\lib\net_4_5\nunit.framework.dll" />\r
     <ProjectReference Include="..\corlib\corlib-net_4_5.csproj">\r
-      <Project>{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}</Project>\r
+      <Project>{07C1F58B-9E99-47F8-A847-79EDA5157DA8}</Project>\r
       <Name>corlib\corlib-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\monodoc\monodoc-net_4_5.csproj">\r
-      <Project>{DB76C87C-DD25-4563-9DD0-7914A84CC11D}</Project>\r
+      <Project>{46C0366B-72E7-4482-A6C4-4C8CE8318BDA}</Project>\r
       <Name>monodoc\monodoc-net_4_5</Name>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\System\System-net_4_5-2.csproj">\r
+      <Project>{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}</Project>\r
+      <Name>System\System-net_4_5-2</Name>\r
+    </ProjectReference>\r
     <ProjectReference Include="..\System.Core\System.Core-net_4_5.csproj">\r
-      <Project>{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}</Project>\r
+      <Project>{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}</Project>\r
       <Name>System.Core\System.Core-net_4_5</Name>\r
     </ProjectReference>\r
     <ProjectReference Include="..\System.XML\System.Xml-net_4_5-1.csproj">\r
-      <Project>{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}</Project>\r
+      <Project>{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}</Project>\r
       <Name>System.XML\System.Xml-net_4_5-1</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index b806b8fb6e970302dd755c331a070e831781639a..b5af3b71a048f0191190b9b0a7704a9be14dc852 100644 (file)
@@ -6,3 +6,4 @@ Monodoc/SettingsTest.cs
 Monodoc.Generators/RawGeneratorTests.cs
 Monodoc/NodeTest.cs
 Monodoc/RootTreeTest.cs
+Monodoc.Generators/AvoidCDataTextReaderTests.cs
index a73a2ce297f7889ebb932795522427acf95781f6..5444595d893f0616df9d74869d703e129c4f7678 100644 (file)
@@ -10,8 +10,7 @@
     <OutputType>Library</OutputType>
     <RootNamespace>System.Reactive</RootNamespace>
     <AssemblyName>ASSEMBLY_NAME_GOES_HERE</AssemblyName>
-    <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;SIGNED;NUNIT;MONODROID</DefineConstants>
-    SIGNING_SPEC_GOES_HERE
+    <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;HAS_AWAIT;NUNIT;MONODROID;$(SignAssemblySpec)</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>True</DebugSymbols>
@@ -22,6 +21,7 @@
     <WarningLevel>4</WarningLevel>
     <AndroidLinkMode>None</AndroidLinkMode>
     <ConsolePause>False</ConsolePause>
+    <DefineConstants>DEBUG;NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;HAS_AWAIT;NUNIT;MONODROID;$(SignAssemblySpec)</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>none</DebugType>
index ba44983eb5d6ffd401767bd3b10ff99985a01f0e..a912db67e6ed2b808db1c163fb27b17d8b1f4302 100644 (file)
@@ -13,8 +13,7 @@
     <IPhoneResourcePrefix>Resources</IPhoneResourcePrefix>
     <AssemblyName>ASSEMBLY_NAME_GOES_HERE</AssemblyName>
     <ProductSignAssembly>true</ProductSignAssembly>
-    <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;NUNIT;SIGNED</DefineConstants>
-    SIGNING_SPEC_GOES_HERE
+    <DefineConstants>NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;HAS_AWAIT;NUNIT;$(SignAssemblySpec)</DefineConstants>
     <additionalargs>-delaySign</additionalargs>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
@@ -24,7 +23,7 @@
     <OutputPath>bin\Debug</OutputPath>
     <ConsolePause>False</ConsolePause>
     <WarningLevel>4</WarningLevel>
-    <DefineConstants>DEBUG;NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;NUNIT;SIGNED</DefineConstants>
+    <DefineConstants>DEBUG;NO_TASK_DELAY;NO_WINDOWS_THREADING;NO_REMOTING;NO_REFLECTION_EMIT;HAS_AWAIT;NUNIT;$(SignAssemblySpec)</DefineConstants>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>none</DebugType>
index aff44d051b12829c905b4216da3f8cbe3bf0f9a4..328f174f71d4dd87f590ea3c4e8f4841ac7a3a0a 100755 (executable)
        $ csharp -v -v
 
        This will turn on the parser debugging output and will
-       generate a lot of data when parsing its input.
+       generate a lot of data when parsing its input (make sure that
+       your parser has been compiled with the -v flag, see above for 
+       details).
 
        To start with a new completion scheme, type your C# code and
        then hit the tab key to trigger the completion engine.  In the
        We then rebuild our compiler:
 
        (cd mcs/; make cs-parser.jay)
-       (cd tools/csharplib; make install)
+       (cd class/Mono.CSharp; make install)
 
        And re-run csharp:
 
diff --git a/mcs/errors/CS0012-21-lib.il b/mcs/errors/CS0012-21-lib.il
new file mode 100644 (file)
index 0000000..b01f464
--- /dev/null
@@ -0,0 +1,31 @@
+.assembly extern mscorlib
+{
+}
+
+.assembly extern 'CS0012-lib-missing'
+{
+}
+
+.assembly 'CS0012-21-lib'
+{
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+
+.module 'CS0012-21-lib.dll'
+
+
+.class public auto ansi beforefieldinit B
+       extends class ['CS0012-lib-missing']X`1/Y/Z/W<int32>
+{
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    // Code size       7 (0x7)
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void class ['CS0012-lib-missing']X`1/Y/Z/W<int32>::.ctor()
+    IL_0006:  ret
+  }
+
+}
index fccf2d93aa3d1102d3899a2e6e020c1c72acf50e..756d130359a64a00c933e61a0301bee7edac65d2 100644 (file)
@@ -21,7 +21,7 @@ DISTFILES = \
        $(wildcard dlls/second/*.cs)
 
 TEST_SUPPORT_FILES = \
-       CS0012-lib.dll CS0012-2-lib.dll CS0012-3-lib.dll CS0012-4-lib.dll CS0012-5-lib.dll CS0012-6-lib.dll CS0012-9-lib.dll CS0012-10-lib.dll CS0012-11-lib.dll CS0012-12-lib.dll CS0012-13-lib.dll CS0012-14-lib.dll CS0012-15-lib.dll CS0012-16-lib.dll CS0012-17-lib.dll CS0012-18-lib.dll CS0029-26-lib.dll \
+       CS0012-lib.dll CS0012-2-lib.dll CS0012-3-lib.dll CS0012-4-lib.dll CS0012-5-lib.dll CS0012-6-lib.dll CS0012-9-lib.dll CS0012-10-lib.dll CS0012-11-lib.dll CS0012-12-lib.dll CS0012-13-lib.dll CS0012-14-lib.dll CS0012-15-lib.dll CS0012-16-lib.dll CS0012-17-lib.dll CS0012-18-lib.dll CS0012-21-lib.dll CS0029-26-lib.dll \
        CS0103-2-lib.dll CS0118-2-lib.dll CS0122-8-lib.dll CS0122-10-lib.dll CS0122-14-lib.dll CS0122-15-lib.dll CS0122-19-lib.dll CS0122-35-lib.dll CS0122-36-lib.dll CS0143-lib.dll CS0144-3-lib.dll CS0165-19-lib.dll \
        CS0205-3-lib.dll CS0229-3-lib.dll CS0229-4-lib.dll CS0266-25-lib.dll \
        CS0315-2-lib.dll \
diff --git a/mcs/errors/cs0012-21.cs b/mcs/errors/cs0012-21.cs
new file mode 100644 (file)
index 0000000..f313e2a
--- /dev/null
@@ -0,0 +1,11 @@
+// CS0012: The type `X`1.Y.Z.W' is defined in an assembly that is not referenced. Consider adding a reference to assembly `CS0012-lib-missing, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
+// Line: 9
+// Compiler options: -r:CS0012-21-lib.dll
+
+public class C
+{
+       public static void Main ()
+       {
+               new B ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0019-34.cs b/mcs/errors/cs0019-34.cs
deleted file mode 100644 (file)
index de0a2ee..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-// CS0019: Operator `==' cannot be applied to operands of type `int' and `null'
-// Line: 10
-// Compiler options: -langversion:ISO-1 
-
-class C
-{
-       static int Foo { get { return 3; } set {} }
-       
-       static void Main ()
-       {
-               if (Foo == null) {}
-       }
-}
diff --git a/mcs/errors/cs0019-51.cs b/mcs/errors/cs0019-51.cs
deleted file mode 100644 (file)
index 8dd9e93..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-// CS0019: Operator `+' cannot be applied to operands of type `null' and `MyTypeImplicitOnly?'
-// Line: 13
-
-struct MyTypeImplicitOnly
-{
-}
-
-class C
-{
-       static void Main ()
-       {
-               MyTypeImplicitOnly? mt = null;
-               mt = null + mt;
-       }
-}
diff --git a/mcs/errors/cs0019-69.cs b/mcs/errors/cs0019-69.cs
new file mode 100644 (file)
index 0000000..ed5d67e
--- /dev/null
@@ -0,0 +1,24 @@
+// CS0019: Operator `==' cannot be applied to operands of type `S' and `S'
+// Line: 22
+
+struct S
+{
+       public static implicit operator E (S s)
+       {
+               return 0;
+       }
+}
+
+public enum E
+{
+}
+
+class C
+{
+       public static void Main ()
+       {
+               S s;
+               S s2;
+               var x = s == s2;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0019-70.cs b/mcs/errors/cs0019-70.cs
new file mode 100644 (file)
index 0000000..a8a3787
--- /dev/null
@@ -0,0 +1,21 @@
+// CS0019: Operator `&&' cannot be applied to operands of type `S?' and `S?'
+// Line: 20
+
+struct S
+{
+       public static S operator & (S s, S i)
+       {
+               return s;
+       }
+}
+
+class C
+{
+       public static void Main ()
+       {
+               S? s = new S ();
+               S? s2 = null;
+
+               var res = s && s2;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0029-34.cs b/mcs/errors/cs0029-34.cs
new file mode 100644 (file)
index 0000000..6febb9a
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0029: Cannot implicitly convert type `string' to `MyTypeImplicitOnly?'
+// Line: 13
+
+struct MyTypeImplicitOnly
+{
+}
+
+class C
+{
+       static void Main ()
+       {
+               MyTypeImplicitOnly? mt = null;
+               mt = null + mt;
+       }
+}
diff --git a/mcs/errors/cs0034-6.cs b/mcs/errors/cs0034-6.cs
new file mode 100644 (file)
index 0000000..d6ebe8e
--- /dev/null
@@ -0,0 +1,25 @@
+// CS0034: Operator `==' is ambiguous on operands of type `Foo' and `Foo'
+// Line: 23
+
+public struct Foo
+{
+       public static implicit operator int? (Foo f)
+       {
+               return 1;
+       }
+
+       public static implicit operator bool? (Foo f)
+       {
+               return false;
+       }
+}
+
+class C
+{
+       public static void Main ()
+       {
+               Foo f;
+               Foo f2;
+               var v = f == f2;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0037-8.cs b/mcs/errors/cs0037-8.cs
deleted file mode 100644 (file)
index 5f54e10..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-// CS0037: Cannot convert null to `int' because it is a value type
-// Line: 9
-
-class C
-{
-       public static void Main ()
-       {
-               int i = 44;
-               i <<= null;
-       }
-}
index a774362dfea122dd3bb6f89f0dfccbe73aa8c4db..367cfc7d579693d1bbbfde6238d3cdc87e27ce31 100644 (file)
@@ -17,7 +17,7 @@ class X
        public static void Main ()
        {
                int a = 4, b = 5;
-               X x = (X) -a;
+X x = (X) -a;
                System.Console.WriteLine (x.i);
        }
 }
diff --git a/mcs/errors/cs0102-21.cs b/mcs/errors/cs0102-21.cs
new file mode 100644 (file)
index 0000000..bda9e2c
--- /dev/null
@@ -0,0 +1,16 @@
+// CS0102: The type `X' already contains a definition for `False'
+// Line: 11
+
+class X
+{
+       bool False<T> ()
+       {
+               return false;
+       }
+
+       bool False {
+               get {
+                       return false;
+               }
+       }
+}
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index df639d2..18d4263
@@ -1,17 +1,10 @@
-// CS0118: `Test.SomeDel' is a `type' but a `variable' was expected
-// Line: 14
+// CS0118: `C' is a `type' but a `variable' was expected
+// Line: 8
 
-using System;
-
-namespace Test
+class C
 {
-       public delegate void SomeDel (Action a);
-
-       public class TestClass
+       public static void Main ()
        {
-               public void TestMethod ()
-               {
-                       SomeDel (() => { });
-               }
+               int i = (C) +1;
        }
-}
\ No newline at end of file
+}
diff --git a/mcs/errors/cs0118-12.cs b/mcs/errors/cs0118-12.cs
deleted file mode 100644 (file)
index c8d6203..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-// CS0118: `A.Test' is a `type' but a `variable' was expected
-// Line: 10
-
-class A
-{
-       delegate string Test (string t);
-
-       public static void Main ()
-       {
-               Test ("t");
-       }
-}
diff --git a/mcs/errors/cs0119-2.cs b/mcs/errors/cs0119-2.cs
new file mode 100644 (file)
index 0000000..e3fc7da
--- /dev/null
@@ -0,0 +1,17 @@
+// CS0119: Expression denotes a `type', where a `variable', `value' or `method group' was expected
+// Line: 14
+
+using System;
+
+namespace Test
+{
+       public delegate void SomeDel (Action a);
+
+       public class TestClass
+       {
+               public void TestMethod ()
+               {
+                       SomeDel (() => { });
+               }
+       }
+}
\ No newline at end of file
old mode 100755 (executable)
new mode 100644 (file)
index 2ee3844..7b7f14b
@@ -1,10 +1,12 @@
 // CS0119: Expression denotes a `type', where a `variable', `value' or `method group' was expected
-// Line: 8
+// Line: 10
 
-class C
+class A
 {
+       delegate string Test (string t);
+
        public static void Main ()
        {
-               int i = (C) +1;
+               Test ("t");
        }
 }
diff --git a/mcs/errors/cs0120-19.cs b/mcs/errors/cs0120-19.cs
new file mode 100644 (file)
index 0000000..f7e0fee
--- /dev/null
@@ -0,0 +1,27 @@
+// CS0120: An object reference is required to access non-static member `MainClass.Callback()'
+// Line: 9
+
+using System;
+
+class MainClass : BaseClass
+{
+       public MainClass (string a, Action callback)
+               : base (a, () => Callback ())
+       {
+       }
+
+       private void Callback ()
+       {
+       }
+}
+
+public class BaseClass
+{
+       public BaseClass (string a, int b)
+       {
+       }
+
+       public BaseClass (string a, Action callback)
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0150-2.cs b/mcs/errors/cs0150-2.cs
new file mode 100644 (file)
index 0000000..7e20f3f
--- /dev/null
@@ -0,0 +1,18 @@
+// CS0150: A constant value is expected
+// Line : 14
+
+using System;
+
+public class Blah
+{
+       static readonly string Test;
+       
+       public static void Main ()
+       {
+               string s = null;
+               switch (s) {
+                       case Blah.Test:
+                               break;
+               }
+       }
+}
diff --git a/mcs/errors/cs0161-4.cs b/mcs/errors/cs0161-4.cs
new file mode 100644 (file)
index 0000000..faeaf57
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0161: `T.Main()': not all code paths return a value
+// Line: 6
+// CSC bug: The error is not reported even if it should as in other unreachable cases
+
+class T {
+       public static int Main ()
+       {
+               switch (1) {
+               case 1:
+                       return 0;
+               default:
+                       break;
+               }
+       }
+}
diff --git a/mcs/errors/cs0162-18.cs b/mcs/errors/cs0162-18.cs
new file mode 100644 (file)
index 0000000..6b393ae
--- /dev/null
@@ -0,0 +1,21 @@
+// CS0162: Unreachable code detected
+// Line: 10
+// Compiler options: -warnaserror
+
+public class X
+{
+       public static void Main ()
+       {
+               return;
+
+               switch (8) {
+               case 1:
+               case 2:
+                       break;
+               default:
+                       return;
+               }
+
+               return;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0162-19.cs b/mcs/errors/cs0162-19.cs
new file mode 100644 (file)
index 0000000..b1f6ea3
--- /dev/null
@@ -0,0 +1,14 @@
+// CS0162: Unreachable code detected
+// Line: 12
+// Compiler options: -warnaserror
+
+public class X
+{
+       static void test (int stop)
+       {
+               int pos = 0;
+               do {
+                       break;
+               } while (pos < stop);
+       }
+}
diff --git a/mcs/errors/cs0165-21.cs b/mcs/errors/cs0165-21.cs
new file mode 100644 (file)
index 0000000..2f6bbc1
--- /dev/null
@@ -0,0 +1,19 @@
+// CS0165: Use of unassigned local variable `v'
+// Line: 17
+
+using System;
+
+class C
+{
+       void Test (int arg)
+       {
+               int v;
+               switch (arg) {
+                       case 1:
+                               v = 0;
+                               break;
+               }
+
+               Console.WriteLine (v);
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0177-13.cs b/mcs/errors/cs0177-13.cs
new file mode 100644 (file)
index 0000000..b655a65
--- /dev/null
@@ -0,0 +1,14 @@
+// CS0177: The out parameter `baz' must be assigned to before control leaves the current method
+// Line: 6
+
+static class A
+{
+       public static void Foo (int i, out object baz)
+       {
+               switch (i) {
+               case 0:
+                       baz = 1;
+                       return;
+               }
+       }
+}
\ No newline at end of file
index 96da3d7d0e7678f51146684fd153b8e551f18c97..3eae90ffd6ebbea6a10510e061f7986582f362ec 100644 (file)
@@ -7,8 +7,6 @@ unsafe class X {
        {
                int a = 0;
                if (*a == 0)
-                       return 1;
-               
-               return 0;
+                       return;
        }
 }
diff --git a/mcs/errors/cs0208-17.cs b/mcs/errors/cs0208-17.cs
new file mode 100644 (file)
index 0000000..a0127ab
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0208: Cannot take the address of, get the size of, or declare a pointer to a managed type `T'
+// Line: 7
+// Compiler options: -unsafe
+
+unsafe class Foo<T> where T : struct
+{
+       public T* Elements {
+               get {
+                       return null;
+               }
+       }
+}
diff --git a/mcs/errors/cs0266-27.cs b/mcs/errors/cs0266-27.cs
new file mode 100644 (file)
index 0000000..a9c84e7
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0266: Cannot implicitly convert type `E?' to `E'. An explicit conversion exists (are you missing a cast?)
+// Line: 13
+
+enum E
+{
+}
+
+class C
+{
+       public static void Main ()
+       {
+               E e = 0;
+               E r = e + null;
+       }
+}
diff --git a/mcs/errors/cs0266-28.cs b/mcs/errors/cs0266-28.cs
new file mode 100644 (file)
index 0000000..364ae8e
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0266: Cannot implicitly convert type `int?' to `E'. An explicit conversion exists (are you missing a cast?)
+// Line: 13
+
+enum E
+{
+}
+
+class C
+{
+       public static void Main ()
+       {
+               E e = 0;
+               E r = e - null;
+       }
+}
diff --git a/mcs/errors/cs0411-15.cs b/mcs/errors/cs0411-15.cs
deleted file mode 100644 (file)
index ed39e45..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-// CS0411: The type arguments for method `C.Foo<T>(IFoo<T>, IFoo<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly
-// Line: 17
-
-interface IFoo<in T>
-{
-}
-
-class C
-{
-       public static void Foo<T> (IFoo<T> e1, IFoo<T> e2)
-       {
-       }
-       
-       public static void Main ()
-       {
-               IFoo<int> a = null;
-               IFoo<object> b = null;
-               Foo (a, b);
-       }
-}
diff --git a/mcs/errors/cs0411-7.cs b/mcs/errors/cs0411-7.cs
deleted file mode 100644 (file)
index c22648e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-// CS0411: The type arguments for method `C.Foo<T>(T, System.Collections.Generic.Comparer<T>)' cannot be inferred from the usage. Try specifying the type arguments explicitly
-// Line: 20
-
-using System;
-using System.Collections.Generic;
-
-public class C
-{
-       static void Foo<T>(T t, Comparer<T> tc)
-       {
-       }
-       
-       static int Compare (int a, int b)
-       {
-               return -1;
-       }
-       
-       public static void Main ()
-       {
-               Foo (1, Compare);
-       }
-}
diff --git a/mcs/errors/cs0429-3.cs b/mcs/errors/cs0429-3.cs
new file mode 100644 (file)
index 0000000..b8572b5
--- /dev/null
@@ -0,0 +1,11 @@
+// CS0429: Unreachable expression code detected
+// Line: 9
+// Compiler options: -warn:4 -warnaserror
+
+class Main
+{
+       public void Method (int i)
+       {
+               var x = true ? 1 : i;
+       }
+}
diff --git a/mcs/errors/cs0452-11.cs b/mcs/errors/cs0452-11.cs
new file mode 100644 (file)
index 0000000..f0681aa
--- /dev/null
@@ -0,0 +1,10 @@
+// CS0452: The type `int' must be a reference type in order to use it as type parameter `T' in the generic type or method `Program.M<T>(T, T)'
+// Line: 8
+
+class Program
+{
+       public static void M<T> (T item1, T item2 = null) where T : class
+       {
+               M (1);
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0458-14.cs b/mcs/errors/cs0458-14.cs
new file mode 100644 (file)
index 0000000..865b7ba
--- /dev/null
@@ -0,0 +1,16 @@
+// CS0458: The result of the expression is always `null' of type `int?'
+// Line: 14
+// Compiler options: -warnaserror -warn:2
+
+public enum E
+{
+}
+
+class C
+{
+       public static void Main ()
+       {
+               E? e = null;
+               var res = e - null;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0458-15.cs b/mcs/errors/cs0458-15.cs
new file mode 100644 (file)
index 0000000..1174b41
--- /dev/null
@@ -0,0 +1,26 @@
+// CS0458: The result of the expression is always `null' of type `short?'
+// Line: 24
+// Compiler options: -warnaserror -warn:2
+
+struct S
+{
+       public static short operator + (S s, S i)
+       {
+               return 2;
+       }
+
+       public static int? operator + (S? s, int? i)
+       {
+               return 2;
+       }
+
+}
+
+class C
+{
+       public static void Main ()
+       {
+               S? s = new S ();
+               var x = s + (S?)null;
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0458-16.cs b/mcs/errors/cs0458-16.cs
new file mode 100644 (file)
index 0000000..f43cea2
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0458: The result of the expression is always `null' of type `int?'
+// Line: 9
+// Compiler options: -warnaserror -warn:2
+
+public class C
+{
+       public static void Main ()
+       {
+               int? s = null;
+               int? v = s + null;
+       }
+}
diff --git a/mcs/errors/cs0458-17.cs b/mcs/errors/cs0458-17.cs
new file mode 100644 (file)
index 0000000..748f773
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0458: The result of the expression is always `null' of type `int?'
+// Line: 10
+// Compiler options: -warnaserror -warn:2
+
+class C
+{
+       public static void Main ()
+       {
+               int i = 44;
+               i <<= null;
+       }
+}
diff --git a/mcs/errors/cs0464-4.cs b/mcs/errors/cs0464-4.cs
new file mode 100644 (file)
index 0000000..0fdf607
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0464: The result of comparing type `int?' with null is always `false'
+// Line: 10
+// Compiler options: -warnaserror -warn:2
+
+class C
+{
+       public static void Main ()
+       {
+               int? k = 1;
+               var x = k > null;
+       }
+}
\ No newline at end of file
index b6ae39620265cc6b22e42507f88276f187fbe23d..bea7b5268d8b033b54a6e95b3451e44a141faef6 100644 (file)
@@ -1,4 +1,4 @@
-// CS0464: The result of comparing type `int' with null is always `false'
+// CS0464: The result of comparing type `int?' with null is always `false'
 // Line: 9
 // Compiler options: -warnaserror -warn:2
 
index 5af1c08b0d296c78fcf46233118deb9763812820..9c99b3a446dcf9674e40961b5db21a2b37e57111 100644 (file)
@@ -1,4 +1,4 @@
-// CS0472: The result of comparing value type `int' with null is always `false'
+// CS0472: The result of comparing value type `long' with null is always `false'
 // Line: 9
 // Compiler options: -warnaserror -warn:2
 
diff --git a/mcs/errors/cs0472-5.cs b/mcs/errors/cs0472-5.cs
new file mode 100644 (file)
index 0000000..f699d71
--- /dev/null
@@ -0,0 +1,14 @@
+// CS0472: The result of comparing value type `byte' with null is always `false'
+// Line: 9
+// Compiler options: -warnaserror -warn:2
+
+class C
+{
+       public static bool Test (byte value)
+       {
+               if (value == null)
+                       return false;
+
+               return true;
+       }
+}
diff --git a/mcs/errors/cs0534-10.cs b/mcs/errors/cs0534-10.cs
new file mode 100644 (file)
index 0000000..6af491c
--- /dev/null
@@ -0,0 +1,18 @@
+// CS0534: `C' does not implement inherited abstract member `B.Foo()'
+// Line: 16
+
+class A
+{
+       public virtual void Foo ()
+       {
+       }
+}
+
+abstract class B : A
+{
+       public abstract override void Foo ();
+}
+
+class C : B
+{
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0534-11.cs b/mcs/errors/cs0534-11.cs
new file mode 100644 (file)
index 0000000..7d67ac6
--- /dev/null
@@ -0,0 +1,17 @@
+// CS0534: `Foo' does not implement inherited abstract member `SomeAbstract.SomeProperty.get'
+// Line: 13
+
+public class SomeProperty
+{
+}
+
+public abstract class SomeAbstract
+{
+       public abstract SomeProperty SomeProperty { get; }
+}
+
+public class Foo : SomeAbstract
+{
+       public static SomeProperty SomeProperty { get { return null; } }
+}
+
index e2e5e1069b85d6c332b562b9217ef38f96c3aabe..f2150288f187c27f379f6f8f2e1b1b457d952389 100644 (file)
@@ -1,4 +1,4 @@
-// CS0534: `C' does not implement inherited abstract member `A.Foo(string)'
+// CS0534: `C' does not implement inherited abstract member `B.Foo(string)'
 // Line: 13
 
 public abstract class A
diff --git a/mcs/errors/cs0540-3.cs b/mcs/errors/cs0540-3.cs
new file mode 100644 (file)
index 0000000..99f5f5e
--- /dev/null
@@ -0,0 +1,27 @@
+// CS0540: `Foo.ISomeProp.SomeProperty': containing type does not implement interface `ISomeProp'
+// Line: 18
+
+public class SomeProperty
+{
+}
+
+public abstract class SomeAbstract : ISomeProp
+{
+       public abstract SomeProperty SomeProperty { get; }
+}
+
+interface ISomeProp
+{
+       SomeProperty SomeProperty { get; }
+}
+
+public class Foo : SomeAbstract
+{
+       SomeProperty ISomeProp.SomeProperty { get { return null; } }
+
+       public override SomeProperty SomeProperty { get { return null; } }
+
+       public static void Main ()
+       {
+       }
+}
diff --git a/mcs/errors/cs0576-3.cs b/mcs/errors/cs0576-3.cs
new file mode 100644 (file)
index 0000000..2d18df0
--- /dev/null
@@ -0,0 +1,15 @@
+// CS0576: Namespace `global::' contains a definition with same name as alias `A'
+// Line: 12
+
+using A = System;
+
+namespace A.Foo
+{
+       class X
+       {
+               public static void Main ()
+               {
+                       A.GG ();
+               }
+       }
+}
\ No newline at end of file
index 9b0f8789db0954d00e3632f69abbdd8a801f74d2..104d2dbd0a6da342e6a9ddec48178a237e469a61 100644 (file)
@@ -1,11 +1,11 @@
-// CS0647: Error during emitting `System.Runtime.CompilerServices.MethodImplAttribute' attribute. The reason is `Incorrect argument value.'
+// CS0647: Error during emitting `System.Runtime.CompilerServices.MethodImplAttribute' attribute. The reason is `Incorrect argument value'
 // Line: 8
 
 using System.Runtime.CompilerServices;
 
 class Test
 {
-       [MethodImplAttribute(444)]
+       [MethodImplAttribute(445)]
        public void test ()
        {
        }
diff --git a/mcs/errors/cs0647-20.cs b/mcs/errors/cs0647-20.cs
new file mode 100644 (file)
index 0000000..2b03f1c
--- /dev/null
@@ -0,0 +1,12 @@
+// CS0647: Error during emitting `System.Runtime.CompilerServices.MethodImplAttribute' attribute. The reason is `Incorrect argument value'
+// Line: 8
+
+using System.Runtime.CompilerServices;
+
+class Program
+{
+       [MethodImpl((MethodImplOptions)255)]
+       void Foo()
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0658-3.cs b/mcs/errors/cs0658-3.cs
new file mode 100644 (file)
index 0000000..a53a934
--- /dev/null
@@ -0,0 +1,5 @@
+// CS0658: `value' is invalid attribute target. All attributes in this attribute section will be ignored
+// Line : 5
+// Compiler options: -warnaserror -warn:1
+
+[reply] ["asd"]  
\ No newline at end of file
diff --git a/mcs/errors/cs0658-4.cs b/mcs/errors/cs0658-4.cs
new file mode 100644 (file)
index 0000000..5073abc
--- /dev/null
@@ -0,0 +1,18 @@
+// CS0658: `)' is invalid attribute target. All attributes in this attribute section will be ignored
+// Line : 9
+// Compiler options: -warnaserror -warn:1
+
+namespace CompilerCrashWithAttributes
+{
+       public class Main
+       {
+               [MyAttribute1, MyAttribute1)]
+               public Main ()
+               {
+               }
+       }
+
+       public class MyAttribute1 : Attribute
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs0717-2.cs b/mcs/errors/cs0717-2.cs
new file mode 100644 (file)
index 0000000..f64faa3
--- /dev/null
@@ -0,0 +1,7 @@
+// CS0717: `System.Console' is not a valid constraint. Static classes cannot be used as constraints
+// Line: 6
+
+abstract class C
+{
+       public abstract void Foo<U> () where U : System.Console;
+}
diff --git a/mcs/errors/cs1503-14.cs b/mcs/errors/cs1503-14.cs
new file mode 100644 (file)
index 0000000..26422fa
--- /dev/null
@@ -0,0 +1,25 @@
+// CS1503: Argument `#2' cannot convert `IContravariant<object>' expression to type `ICovariant<string>'
+// Line: 23
+
+interface IContravariant<in T>
+{
+}
+
+interface ICovariant<out T>
+{
+}
+
+class C
+{
+       public static void Test<T> (ICovariant<T> e1, ICovariant<T> e2)
+       {
+       }
+
+       public static void Main ()
+       {
+               ICovariant<string> a_2 = null;
+               IContravariant<object> b_2 = null;
+
+               Test (a_2, b_2);
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1503-15.cs b/mcs/errors/cs1503-15.cs
new file mode 100644 (file)
index 0000000..4313fcf
--- /dev/null
@@ -0,0 +1,20 @@
+// CS1503: Argument `#2' cannot convert `IFoo<object>' expression to type `IFoo<int>'
+// Line: 18
+
+interface IFoo<in T>
+{
+}
+
+class C
+{
+       public static void Foo<T> (IFoo<T> e1, IFoo<T> e2)
+       {
+       }
+       
+       public static void Main ()
+       {
+               IFoo<int> a = null;
+               IFoo<object> b = null;
+               Foo (a, b);
+       }
+}
diff --git a/mcs/errors/cs1503-16.cs b/mcs/errors/cs1503-16.cs
new file mode 100644 (file)
index 0000000..24fa1e6
--- /dev/null
@@ -0,0 +1,22 @@
+// CS1503: Argument `#2' cannot convert `method group' expression to type `System.Collections.Generic.Comparer<int>'
+// Line: 20
+
+using System;
+using System.Collections.Generic;
+
+public class C
+{
+       static void Foo<T>(T t, Comparer<T> tc)
+       {
+       }
+       
+       static int Compare (int a, int b)
+       {
+               return -1;
+       }
+       
+       public static void Main ()
+       {
+               Foo (1, Compare);
+       }
+}
diff --git a/mcs/errors/cs1648-2.cs b/mcs/errors/cs1648-2.cs
new file mode 100644 (file)
index 0000000..b470e10
--- /dev/null
@@ -0,0 +1,23 @@
+// CS1648: Members of readonly field `Test.p' cannot be modified (except in a constructor or a variable initializer)
+// Line: 17
+
+using System;
+
+public class Test
+{
+       struct Container
+       {
+               public int foo { get; set; }
+       }
+       
+       readonly Container p;
+       
+       void Foo ()
+       {
+               p.foo = 0;
+       }
+
+       public static void Main ()
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1648-3.cs b/mcs/errors/cs1648-3.cs
new file mode 100644 (file)
index 0000000..7afc29f
--- /dev/null
@@ -0,0 +1,26 @@
+// CS1648: Members of readonly field `Test.p' cannot be modified (except in a constructor or a variable initializer)
+// Line: 17
+
+using System;
+
+public class Test
+{
+       struct Container
+       {
+               public int this[int arg] {
+                       set {
+                       }
+               }
+       }
+       
+       readonly Container p;
+       
+       void Foo ()
+       {
+               p[0] = 0;
+       }
+
+       public static void Main ()
+       {
+       }
+}
\ No newline at end of file
diff --git a/mcs/errors/cs1650-2.cs b/mcs/errors/cs1650-2.cs
new file mode 100644 (file)
index 0000000..9aa902d
--- /dev/null
@@ -0,0 +1,18 @@
+// CS1650: Fields of static readonly field `C.s' cannot be assigned to (except in a static constructor or a variable initializer)
+// Line: 15
+
+struct S
+{
+       public int x { get; set; }
+}
+
+class C
+{
+       static readonly S s;
+
+       public static void Main (string[] args)
+       {
+               s.x = 42;
+       }
+}
+
index d7ed5a505f147d8afc027d5d66840a903340f866..a7035ef01951051449f0857d98e2c53cdaafc262 100644 (file)
@@ -1,7 +1,6 @@
 // CS1661: Cannot convert `lambda expression' to delegate type `C.WithOutParam' since there is a parameter mismatch
 // Line: 10
 
-
 class C
 {
        delegate void WithOutParam (out string value);
@@ -9,5 +8,5 @@ class C
        static void Main() 
        {
                WithOutParam o = (string l) => { return; };
-    }
+       }
 }
diff --git a/mcs/errors/cs1661-3.cs b/mcs/errors/cs1661-3.cs
new file mode 100644 (file)
index 0000000..d437e01
--- /dev/null
@@ -0,0 +1,12 @@
+// CS1661: Cannot convert `anonymous method' to delegate type `System.Predicate<T>' since there is a parameter mismatch
+// Line: 8
+
+class Test<T>
+{
+       void test (Test<T> t, System.Predicate<T> p)
+       {
+               test (t, delegate (Test<T> item) {
+                       return false;
+               });
+       }
+}
diff --git a/mcs/errors/cs1678-2.cs b/mcs/errors/cs1678-2.cs
new file mode 100644 (file)
index 0000000..03a7119
--- /dev/null
@@ -0,0 +1,16 @@
+// CS1678: Parameter `1' is declared as type `T' but should be `IStream<T>'
+// Line: 14
+
+using System;
+
+interface IStream<T>
+{
+}
+
+static class X
+{
+       public static IStream<U> Select<T, U> (IStream<T> stream, Func<IStream<T>, U> selector)
+       {
+               return Select<T, U> (stream, (T _) => selector(stream));
+       }
+}
index fae8c1922372f21463bd89a44a0af281efc8a12d..dfd5352859a61c9c2f774185729c2aa38f3fa264 100644 (file)
@@ -1,8 +1,6 @@
 // CS1678: Parameter `1' is declared as type `long' but should be `int'
-// Line: 11
-//
-// Signature mismatch.
-//
+// Line: 9
+
 delegate void D (int x);
 
 class X {
diff --git a/mcs/errors/cs1739-4.cs b/mcs/errors/cs1739-4.cs
new file mode 100644 (file)
index 0000000..ab18a00
--- /dev/null
@@ -0,0 +1,14 @@
+// CS1739: The best overloaded method match for `Program.M(int, int, int)' does not contain a parameter named `whatever'
+// Line: 8
+
+public class Program
+{
+       public static void Main ()
+       {
+               M (z: 1, whatever: 0);
+       }
+
+       void M (int x = 0, int y = 0, int z = 0)
+       {
+       }
+}
diff --git a/mcs/errors/cs1750-4.cs b/mcs/errors/cs1750-4.cs
new file mode 100644 (file)
index 0000000..4499780
--- /dev/null
@@ -0,0 +1,23 @@
+// CS1750: Optional parameter expression of type `null' cannot be converted to parameter type `A'
+// Line: 8
+
+using System;
+
+class GenericClass<T>
+{
+       public GenericClass (GenericClass<T> g = null, A a = null)
+       {
+       }
+}
+
+class DerivedClass<T> : GenericClass<T>
+{
+       public DerivedClass (GenericClass<T> g) : base(g)
+       {
+       }
+}
+
+public struct A
+{
+       public int Field;
+}
index 5d05d2ad6766f3bcd7e4264273210a53e983d2e3..cbad5a36cf827d4e439d0aa053eac24762d86eea 100644 (file)
@@ -15,6 +15,7 @@
 cs0080.cs 
 
 cs0162-7.cs NO ERROR
+cs0165-3.cs
 
 # Operators
 cs0457-2.cs
index 19a567e0ca5c2ea659d14cc67d8fbace0e18e35a..72a8a25b0f8ba8bf55e78ecbd91a2f5dc09ea7a5 100644 (file)
@@ -2463,7 +2463,6 @@ instr                     : INSTR_NONE
                                         case MiscInstr.ldc_r8:\r
                                                fpdata = (byte []) $2;\r
                                                if (!BitConverter.IsLittleEndian) {\r
-                                                       // FIXME: handle the stupid ARM FPA format\r
                                                        System.Array.Reverse (fpdata, 0, 8);\r
                                                }\r
                                                 double d = BitConverter.ToDouble (fpdata, 0);\r
index cd9d1099f65ef1f58ba620a50bccf8fdfe931915..80468e43ccafa8f01bc755e7b7cc99e671580807 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>MultiByte</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 0e90b56126ac287d553fa059525a8ec33f94c9d7..27b1485f56a92473f0ca42559ea8b3edb8b4620d 100644 (file)
@@ -191,15 +191,27 @@ namespace Mono.CSharp {
                sealed class ThisInitializer : Statement
                {
                        readonly HoistedThis hoisted_this;
+                       readonly AnonymousMethodStorey parent;
 
-                       public ThisInitializer (HoistedThis hoisted_this)
+                       public ThisInitializer (HoistedThis hoisted_this, AnonymousMethodStorey parent)
                        {
                                this.hoisted_this = hoisted_this;
+                               this.parent = parent;
                        }
 
                        protected override void DoEmit (EmitContext ec)
                        {
-                               hoisted_this.EmitAssign (ec, new CompilerGeneratedThis (ec.CurrentType, loc), false, false);
+                               Expression source;
+
+                               if (parent == null)
+                                       source = new CompilerGeneratedThis (ec.CurrentType, loc);
+                               else {
+                                       source = new FieldExpr (parent.HoistedThis.Field, Location.Null) {
+                                               InstanceExpression = new CompilerGeneratedThis (ec.CurrentType, Location.Null)
+                                       };
+                               }
+
+                               hoisted_this.EmitAssign (ec, source, false, false);
                        }
 
                        protected override void CloneTo (CloneContext clonectx, Statement target)
@@ -229,22 +241,24 @@ namespace Mono.CSharp {
                public Expression Instance;
 
                bool initialize_hoisted_this;
+               AnonymousMethodStorey hoisted_this_parent;
 
                public AnonymousMethodStorey (ExplicitBlock block, TypeDefinition parent, MemberBase host, TypeParameters tparams, string name, MemberKind kind)
-                       : base (parent, MakeMemberName (host, name, parent.Module.CounterAnonymousContainers, tparams, block.StartLocation),
+                       : base (parent, MakeMemberName (host, name, parent.PartialContainer.CounterAnonymousContainers, tparams, block.StartLocation),
                                tparams, 0, kind)
                {
                        OriginalSourceBlock = block;
-                       ID = parent.Module.CounterAnonymousContainers++;
+                       ID = parent.PartialContainer.CounterAnonymousContainers++;
                }
 
-               public void AddCapturedThisField (EmitContext ec)
+               public void AddCapturedThisField (EmitContext ec, AnonymousMethodStorey parent)
                {
                        TypeExpr type_expr = new TypeExpression (ec.CurrentType, Location);
                        Field f = AddCompilerGeneratedField ("$this", type_expr);
                        hoisted_this = new HoistedThis (this, f);
 
                        initialize_hoisted_this = true;
+                       hoisted_this_parent = parent;
                }
 
                public Field AddCapturedVariable (string name, TypeSpec type)
@@ -315,8 +329,11 @@ namespace Mono.CSharp {
 
                        var hoisted = localVariable.HoistedVariant;
                        if (hoisted != null && hoisted.Storey != this && hoisted.Storey is StateMachine) {
-                               // TODO: It's too late the field is defined in HoistedLocalVariable ctor
+                               //
+                               // Variable is already hoisted but we need it in storey which can be shared
+                               //
                                hoisted.Storey.hoisted_locals.Remove (hoisted);
+                               hoisted.Storey.Members.Remove (hoisted.Field);
                                hoisted = null;
                        }
 
@@ -550,7 +567,7 @@ namespace Mono.CSharp {
                        // referenced indirectly
                        //
                        if (initialize_hoisted_this) {
-                               rc.CurrentBlock.AddScopeStatement (new ThisInitializer (hoisted_this));
+                               rc.CurrentBlock.AddScopeStatement (new ThisInitializer (hoisted_this, hoisted_this_parent));
                        }
 
                        //
@@ -728,6 +745,12 @@ namespace Mono.CSharp {
                        this.field = field;
                }
 
+               public Field Field {
+                       get {
+                               return field;
+                       }
+               }
+
                public AnonymousMethodStorey Storey {
                        get {
                                return storey;
@@ -848,12 +871,6 @@ namespace Mono.CSharp {
 
                #region Properties
 
-               public Field Field {
-                       get {
-                               return field;
-                       }
-               }
-
                public bool IsAssigned { get; set; }
 
                public ParameterReference Parameter {
@@ -893,12 +910,6 @@ namespace Mono.CSharp {
                        : base (storey, field)
                {
                }
-
-               public Field Field {
-                       get {
-                               return field;
-                       }
-               }
        }
 
        //
@@ -959,6 +970,12 @@ namespace Mono.CSharp {
                        }
                }
 
+               public override bool IsSideEffectFree {
+                       get {
+                               return true;
+                       }
+               }
+
                public ParametersCompiled Parameters {
                        get {
                                return Block.Parameters;
@@ -1010,9 +1027,9 @@ namespace Mono.CSharp {
                        return null;
                }
 
-               protected bool VerifyExplicitParameters (ResolveContext ec, TypeSpec delegate_type, AParametersCollection parameters)
+               protected bool VerifyExplicitParameters (ResolveContext ec, TypeInferenceContext tic, TypeSpec delegate_type, AParametersCollection parameters)
                {
-                       if (VerifyParameterCompatibility (ec, delegate_type, parameters, ec.IsInProbingMode))
+                       if (VerifyParameterCompatibility (ec, tic, delegate_type, parameters, ec.IsInProbingMode))
                                return true;
 
                        if (!ec.IsInProbingMode)
@@ -1023,7 +1040,7 @@ namespace Mono.CSharp {
                        return false;
                }
 
-               protected bool VerifyParameterCompatibility (ResolveContext ec, TypeSpec delegate_type, AParametersCollection invoke_pd, bool ignore_errors)
+               protected bool VerifyParameterCompatibility (ResolveContext ec, TypeInferenceContext tic, TypeSpec delegate_type, AParametersCollection invoke_pd, bool ignore_errors)
                {
                        if (Parameters.Count != invoke_pd.Count) {
                                if (ignore_errors)
@@ -1044,10 +1061,10 @@ namespace Mono.CSharp {
                                                return false;
                                        
                                        if (p_mod == Parameter.Modifier.NONE)
-                                               ec.Report.Error (1677, loc, "Parameter `{0}' should not be declared with the `{1}' keyword",
-                                                             (i + 1).ToString (), Parameter.GetModifierSignature (Parameters.FixedParameters [i].ModFlags));
+                                               ec.Report.Error (1677, Parameters[i].Location, "Parameter `{0}' should not be declared with the `{1}' keyword",
+                                                             (i + 1).ToString (), Parameter.GetModifierSignature (Parameters [i].ModFlags));
                                        else
-                                               ec.Report.Error (1676, loc, "Parameter `{0}' must be declared with the `{1}' keyword",
+                                               ec.Report.Error (1676, Parameters[i].Location, "Parameter `{0}' must be declared with the `{1}' keyword",
                                                              (i+1).ToString (), Parameter.GetModifierSignature (p_mod));
                                        error = true;
                                }
@@ -1056,19 +1073,15 @@ namespace Mono.CSharp {
                                        continue;
 
                                TypeSpec type = invoke_pd.Types [i];
+
+                               if (tic != null)
+                                       type = tic.InflateGenericArgument (ec, type);
                                
-                               // We assume that generic parameters are always inflated
-                               if (TypeManager.IsGenericParameter (type))
-                                       continue;
-                               
-                               if (TypeManager.HasElementType (type) && TypeManager.IsGenericParameter (TypeManager.GetElementType (type)))
-                                       continue;
-                               
-                               if (!TypeSpecComparer.IsEqual (invoke_pd.Types [i], Parameters.Types [i])) {
+                               if (!TypeSpecComparer.IsEqual (type, Parameters.Types [i])) {
                                        if (ignore_errors)
                                                return false;
                                        
-                                       ec.Report.Error (1678, loc, "Parameter `{0}' is declared as type `{1}' but should be `{2}'",
+                                       ec.Report.Error (1678, Parameters [i].Location, "Parameter `{0}' is declared as type `{1}' but should be `{2}'",
                                                      (i+1).ToString (),
                                                      Parameters.Types [i].GetSignatureForError (),
                                                      invoke_pd.Types [i].GetSignatureForError ());
@@ -1082,7 +1095,7 @@ namespace Mono.CSharp {
                //
                // Infers type arguments based on explicit arguments
                //
-               public bool ExplicitTypeInference (ResolveContext ec, TypeInferenceContext type_inference, TypeSpec delegate_type)
+               public bool ExplicitTypeInference (TypeInferenceContext type_inference, TypeSpec delegate_type)
                {
                        if (!HasExplicitParameters)
                                return false;
@@ -1296,7 +1309,7 @@ namespace Mono.CSharp {
                                return ParametersCompiled.CreateFullyResolved (fixedpars, delegate_parameters.Types);
                        }
 
-                       if (!VerifyExplicitParameters (ec, delegate_type, delegate_parameters)) {
+                       if (!VerifyExplicitParameters (ec, tic, delegate_type, delegate_parameters)) {
                                return null;
                        }
 
@@ -1509,7 +1522,7 @@ namespace Mono.CSharp {
 
                        var bc = ec as BlockContext;
                        if (bc != null)
-                               aec.FlowOffset = bc.FlowOffset;
+                               aec.AssignmentInfoOffset = bc.AssignmentInfoOffset;
 
                        var errors = ec.Report.Errors;
 
@@ -1522,10 +1535,14 @@ namespace Mono.CSharp {
 
                                //
                                // If e is synchronous the inferred return type is T
-                               // If e is asynchronous the inferred return type is Task<T>
+                               // If e is asynchronous and the body of F is either an expression classified as nothing
+                               // or a statement block where no return statements have expressions, the inferred return type is Task
+                               // If e is async and has an inferred result type T, the inferred return type is Task<T>
                                //
                                if (block.IsAsync && ReturnType != null) {
-                                       ReturnType = ec.Module.PredefinedTypes.TaskGeneric.TypeSpec.MakeGenericType (ec, new [] { ReturnType });
+                                       ReturnType = ReturnType.Kind == MemberKind.Void ?
+                                               ec.Module.PredefinedTypes.Task.TypeSpec :
+                                               ec.Module.PredefinedTypes.TaskGeneric.TypeSpec.MakeGenericType (ec, new [] { ReturnType });
                                }
                        }
 
@@ -1661,26 +1678,32 @@ namespace Mono.CSharp {
                                        if (src_block.HasCapturedThis) {
                                                //
                                                // Remove hoisted 'this' request when simple instance method is
-                                               // enough (no hoisted variables only 'this')
+                                               // enough. No hoisted variables only 'this' and don't need to
+                                               // propagate this to value type state machine.
                                                //
-                                               if (src_block.ParametersBlock.StateMachine == null)
+                                               StateMachine sm_parent;
+                                               var pb = src_block.ParametersBlock;
+                                               do {
+                                                       sm_parent = pb.StateMachine;
+                                                       pb = pb.Parent == null ? null : pb.Parent.ParametersBlock;
+                                               } while (sm_parent == null && pb != null);
+
+                                               if (sm_parent == null) {
                                                        top_block.RemoveThisReferenceFromChildrenBlock (src_block);
-
-                                               //
-                                               // Special case where parent class is used to emit instance method
-                                               // because currect storey is of value type (async host). We cannot
-                                               // use ldftn on non-boxed instances either to share mutated state
-                                               //
-                                               if (sm != null && sm.Kind == MemberKind.Struct) {
-                                                       parent = sm.Parent.PartialContainer;
+                                               } else if (sm_parent.Kind == MemberKind.Struct) {
+                                                       //
+                                                       // Special case where parent class is used to emit instance method
+                                                       // because currect storey is of value type (async host) and we cannot
+                                                       // use ldftn on non-boxed instances either to share mutated state
+                                                       //
+                                                       parent = sm_parent.Parent.PartialContainer;
+                                               } else if (sm is IteratorStorey) {
+                                                       //
+                                                       // For iterators we can host everything in one class
+                                                       //
+                                                       parent = storey = sm;
                                                }
                                        }
-
-                                       //
-                                       // For iterators we can host everything in one class
-                                       //
-                                       if (sm is IteratorStorey)
-                                               parent = storey = sm;
                                }
 
                                modifiers = storey != null ? Modifiers.INTERNAL : Modifiers.PRIVATE;
@@ -1695,7 +1718,7 @@ namespace Mono.CSharp {
                                parent = ec.CurrentTypeDefinition.Parent.PartialContainer;
 
                        string name = CompilerGeneratedContainer.MakeName (parent != storey ? block_name : null,
-                               "m", null, ec.Module.CounterAnonymousMethods++);
+                               "m", null, parent.PartialContainer.CounterAnonymousMethods++);
 
                        MemberName member_name;
                        if (storey == null && ec.CurrentTypeParameters != null) {
@@ -1803,12 +1826,8 @@ namespace Mono.CSharp {
                                // Special case for value type storey where this is not lifted but
                                // droped off to parent class
                                //
-                               for (var b = Block.Parent; b != null; b = b.Parent) {
-                                       if (b.ParametersBlock.StateMachine != null) {
-                                               ec.Emit (OpCodes.Ldfld, b.ParametersBlock.StateMachine.HoistedThis.Field.Spec);
-                                               break;
-                                       }
-                               }
+                               if (ec.CurrentAnonymousMethod != null && ec.AsyncTaskStorey != null)
+                                       ec.Emit (OpCodes.Ldfld, ec.AsyncTaskStorey.HoistedThis.Field.Spec);
                        }
 
                        var delegate_method = method.Spec;
@@ -1987,7 +2006,7 @@ namespace Mono.CSharp {
 
                        Method tostring = new Method (this, new TypeExpression (Compiler.BuiltinTypes.String, loc),
                                Modifiers.PUBLIC | Modifiers.OVERRIDE | Modifiers.DEBUGGER_HIDDEN, new MemberName ("ToString", loc),
-                               Mono.CSharp.ParametersCompiled.EmptyReadOnlyParameters, null);
+                               ParametersCompiled.EmptyReadOnlyParameters, null);
 
                        ToplevelBlock equals_block = new ToplevelBlock (Compiler, equals.ParameterInfo, loc);
 
@@ -2096,7 +2115,7 @@ namespace Mono.CSharp {
                        Method hashcode = new Method (this, new TypeExpression (Compiler.BuiltinTypes.Int, loc),
                                Modifiers.PUBLIC | Modifiers.OVERRIDE | Modifiers.DEBUGGER_HIDDEN,
                                new MemberName ("GetHashCode", loc),
-                               Mono.CSharp.ParametersCompiled.EmptyReadOnlyParameters, null);
+                               ParametersCompiled.EmptyReadOnlyParameters, null);
 
                        //
                        // Modified FNV with good avalanche behavior and uniform
index e018e2606a6fa635fc475870204ead5e2b900840..4bbb7f3231377eb9c76dfc15d732a0c1a8c00284 100644 (file)
@@ -7,7 +7,7 @@
 //
 // Copyright 2001, 2002, 2003 Ximian, Inc.
 // Copyright 2004-2011 Novell, Inc.
-// Copyright 2011 Xamarin Inc
+// Copyright 2011-2013 Xamarin Inc
 //
 
 
@@ -74,6 +74,9 @@ namespace Mono.CSharp
                Dictionary<ITypeDefinition, Attribute> emitted_forwarders;
                AssemblyAttributesPlaceholder module_target_attrs;
 
+               // Win32 version info values
+               string vi_product, vi_product_version, vi_company, vi_copyright, vi_trademark;
+
                protected AssemblyDefinition (ModuleContainer module, string name)
                {
                        this.module = module;
@@ -347,15 +350,24 @@ namespace Mono.CSharp
                        } else if (a.Type == pa.RuntimeCompatibility) {
                                wrap_non_exception_throws_custom = true;
                        } else if (a.Type == pa.AssemblyFileVersion) {
-                               string value = a.GetString ();
-                               if (string.IsNullOrEmpty (value) || IsValidAssemblyVersion (value, false) == null) {
+                               vi_product_version = a.GetString ();
+                               if (string.IsNullOrEmpty (vi_product_version) || IsValidAssemblyVersion (vi_product_version, false) == null) {
                                        Report.Warning (1607, 1, a.Location, "The version number `{0}' specified for `{1}' is invalid",
-                                               value, a.Name);
+                                               vi_product_version, a.Name);
                                        return;
                                }
+                       } else if (a.Type == pa.AssemblyProduct) {
+                               vi_product = a.GetString ();
+                       } else if (a.Type == pa.AssemblyCompany) {
+                               vi_company = a.GetString ();
+                       } else if (a.Type == pa.AssemblyDescription) {
+                               // TODO: Needs extra api
+                       } else if (a.Type == pa.AssemblyCopyright) {
+                               vi_copyright = a.GetString ();
+                       } else if (a.Type == pa.AssemblyTrademark) {
+                               vi_trademark = a.GetString ();
                        }
 
-
                        SetCustomAttribute (ctor, cdata);
                }
 
@@ -749,7 +761,7 @@ namespace Mono.CSharp
                        if (Compiler.Settings.Win32ResourceFile != null) {
                                Builder.DefineUnmanagedResource (Compiler.Settings.Win32ResourceFile);
                        } else {
-                               Builder.DefineVersionInfoResource ();
+                               Builder.DefineVersionInfoResource (vi_product, vi_product_version, vi_company, vi_copyright, vi_trademark);
                        }
 
                        if (Compiler.Settings.Win32IconFile != null) {
@@ -907,7 +919,7 @@ namespace Mono.CSharp
                                                return;
                                        }
 
-                                       var mtype = texpr.Type.MemberDefinition as ClassOrStruct;
+                                       var mtype = texpr.MemberDefinition as ClassOrStruct;
                                        if (mtype == null) {
                                                Report.Error (1556, "`{0}' specified for Main method must be a valid class or struct", main_class);
                                                return;
@@ -1098,13 +1110,13 @@ namespace Mono.CSharp
                }
        }
 
-       abstract class AssemblyReferencesLoader<T>
+       abstract class AssemblyReferencesLoader<T> where T : class
        {
                protected readonly CompilerContext compiler;
 
                protected readonly List<string> paths;
 
-               public AssemblyReferencesLoader (CompilerContext compiler)
+               protected AssemblyReferencesLoader (CompilerContext compiler)
                {
                        this.compiler = compiler;
 
@@ -1167,15 +1179,27 @@ namespace Mono.CSharp
                                if (loaded.Contains (key))
                                        continue;
 
-                               // A corlib assembly is the first assembly which contains System.Object
-                               if (corlib_assembly == null && HasObjectType (a)) {
-                                       corlib_assembly = a;
-                                       continue;
-                               }
-
                                loaded.Add (key);
                        }
 
+                       if (corlib_assembly == null) {
+                               //
+                               // Requires second pass because HasObjectType can trigger assembly load event
+                               //
+                               for (int i = 0; i < loaded.Count; ++i) {
+                                       var assembly = loaded [i];
+
+                                       //
+                                       // corlib assembly is the first referenced assembly which contains System.Object
+                                       //
+                                       if (HasObjectType (assembly.Item2)) {
+                                               corlib_assembly = assembly.Item2;
+                                               loaded.RemoveAt (i);
+                                               break;
+                                       }
+                               }
+                       }
+
                        foreach (var entry in module.Compiler.Settings.AssemblyReferencesAliases) {
                                a = LoadAssemblyFile (entry.Item2, false);
                                if (a == null)
index cd32b0978662b70ce5e293fa3e677ee81a0fab8c..49595edd0f473212d53faef69c0af454ae60bfbf 100644 (file)
@@ -804,8 +804,19 @@ namespace Mono.CSharp {
                        // Otherwise, if the selected operator is a predefined operator
                        //
                        Binary b = source as Binary;
-                       if (b == null && source is ReducedExpression)
-                               b = ((ReducedExpression) source).OriginalExpression as Binary;
+                       if (b == null) {
+                               if (source is ReducedExpression)
+                                       b = ((ReducedExpression) source).OriginalExpression as Binary;
+                               else if (source is ReducedExpression.ReducedConstantExpression) {
+                                       b = ((ReducedExpression.ReducedConstantExpression) source).OriginalExpression as Binary;
+                               } else if (source is Nullable.LiftedBinaryOperator) {
+                                       var po = ((Nullable.LiftedBinaryOperator) source);
+                                       if (po.UserOperator == null)
+                                               b = po.Binary;
+                               } else if (source is TypeCast) {
+                                       b = ((TypeCast) source).Child as Binary;
+                               }
+                       }
 
                        if (b != null) {
                                //
index 6997d7ca85042729b61b8a0204ee01dc54ae584a..daa0073136204c4679d02a28290e89e11654c31b 100644 (file)
@@ -195,7 +195,9 @@ namespace Mono.CSharp
 
                protected override void DoEmit (EmitContext ec)
                {
-                       GetResultExpression (ec).Emit (ec);
+                       using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
+                               GetResultExpression (ec).Emit (ec);
+                       }
                }
 
                public Expression GetResultExpression (EmitContext ec)
@@ -219,39 +221,39 @@ namespace Mono.CSharp
 
                public void EmitPrologue (EmitContext ec)
                {
-                       awaiter = ((AsyncTaskStorey) machine_initializer.Storey).AddAwaiter (expr.Type, loc);
+                       awaiter = ((AsyncTaskStorey) machine_initializer.Storey).AddAwaiter (expr.Type);
 
                        var fe_awaiter = new FieldExpr (awaiter, loc);
                        fe_awaiter.InstanceExpression = new CompilerGeneratedThis (ec.CurrentType, loc);
 
-                       //
-                       // awaiter = expr.GetAwaiter ();
-                       //
+                               Label skip_continuation = ec.DefineLabel ();
+
                        using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
+                               //
+                               // awaiter = expr.GetAwaiter ();
+                               //
                                fe_awaiter.EmitAssign (ec, expr, false, false);
-                       }
 
-                       Label skip_continuation = ec.DefineLabel ();
+                               Expression completed_expr;
+                               if (IsDynamic) {
+                                       var rc = new ResolveContext (ec.MemberContext);
 
-                       Expression completed_expr;
-                       if (IsDynamic) {
-                               var rc = new ResolveContext (ec.MemberContext);
+                                       Arguments dargs = new Arguments (1);
+                                       dargs.Add (new Argument (fe_awaiter));
+                                       completed_expr = new DynamicMemberBinder ("IsCompleted", dargs, loc).Resolve (rc);
 
-                               Arguments dargs = new Arguments (1);
-                               dargs.Add (new Argument (fe_awaiter));
-                               completed_expr = new DynamicMemberBinder ("IsCompleted", dargs, loc).Resolve (rc);
+                                       dargs = new Arguments (1);
+                                       dargs.Add (new Argument (completed_expr));
+                                       completed_expr = new DynamicConversion (ec.Module.Compiler.BuiltinTypes.Bool, 0, dargs, loc).Resolve (rc);
+                               } else {
+                                       var pe = PropertyExpr.CreatePredefined (awaiter_definition.IsCompleted, loc);
+                                       pe.InstanceExpression = fe_awaiter;
+                                       completed_expr = pe;
+                               }
 
-                               dargs = new Arguments (1);
-                               dargs.Add (new Argument (completed_expr));
-                               completed_expr = new DynamicConversion (ec.Module.Compiler.BuiltinTypes.Bool, 0, dargs, loc).Resolve (rc);
-                       } else {
-                               var pe = PropertyExpr.CreatePredefined (awaiter_definition.IsCompleted, loc);
-                               pe.InstanceExpression = fe_awaiter;
-                               completed_expr = pe;
+                               completed_expr.EmitBranchable (ec, skip_continuation, true);
                        }
 
-                       completed_expr.EmitBranchable (ec, skip_continuation, true);
-
                        base.DoEmit (ec);
 
                        //
@@ -407,11 +409,6 @@ namespace Mono.CSharp
                        return ctx;
                }
 
-               public override Expression CreateExpressionTree (ResolveContext ec)
-               {
-                       return base.CreateExpressionTree (ec);
-               }
-
                public override void Emit (EmitContext ec)
                {
                        throw new NotImplementedException ();
@@ -481,12 +478,12 @@ namespace Mono.CSharp
 
                #endregion
 
-               public Field AddAwaiter (TypeSpec type, Location loc)
+               public Field AddAwaiter (TypeSpec type)
                {
                        if (mutator != null)
                                type = mutator.Mutate (type);
 
-                       List<Field> existing_fields = null;
+                       List<Field> existing_fields;
                        if (awaiter_fields.TryGetValue (type, out existing_fields)) {
                                foreach (var f in existing_fields) {
                                        if (f.IsAvailableForReuse) {
@@ -741,7 +738,9 @@ namespace Mono.CSharp
                        var args = new Arguments (2);
                        args.Add (new Argument (awaiter, Argument.AType.Ref));
                        args.Add (new Argument (new CompilerGeneratedThis (CurrentType, Location), Argument.AType.Ref));
-                       mg.EmitCall (ec, args);
+                       using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
+                               mg.EmitCall (ec, args);
+                       }
                }
 
                public void EmitInitializer (EmitContext ec)
@@ -817,7 +816,9 @@ namespace Mono.CSharp
                        Arguments args = new Arguments (1);
                        args.Add (new Argument (exceptionVariable));
 
-                       mg.EmitCall (ec, args);
+                       using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
+                               mg.EmitCall (ec, args);
+                       }
                }
 
                public void EmitSetResult (EmitContext ec)
@@ -839,7 +840,9 @@ namespace Mono.CSharp
                                args.Add (new Argument (new LocalVariableReference (hoisted_return, Location)));
                        }
 
-                       mg.EmitCall (ec, args);
+                       using (ec.With (BuilderContext.Options.OmitDebugInfo, true)) {
+                               mg.EmitCall (ec, args);
+                       }
                }
 
                protected override TypeSpec[] ResolveBaseTypes (out FullNamedExpression base_class)
index 6bbdb09b174f134d5a5cdf8f9af6df50e95a9d79..87174664d48c31202fac13d59a1e44b2e973b4d8 100644 (file)
@@ -1,14 +1,14 @@
 //
-// attribute.cs: Attribute Handler
+// attribute.cs: Attributes handling
 //
 // Author: Ravi Pratap (ravi@ximian.com)
-//         Marek Safar (marek.safar@seznam.cz)
+//         Marek Safar (marek.safar@gmail.com)
 //
 // Dual licensed under the terms of the MIT X11 or GNU GPL
 //
 // Copyright 2001-2003 Ximian, Inc (http://www.ximian.com)
 // Copyright 2003-2008 Novell, Inc.
-// Copyright 2011 Xamarin Inc
+// Copyright 2011-2013 Xamarin Inc
 //
 
 using System;
@@ -385,6 +385,19 @@ namespace Mono.CSharp {
                        return HasSecurityAttribute && IsSecurityActionValid ();
                }
 
+               static bool IsValidMethodImplOption (int value)
+               {
+                       //
+                       // Allow to use AggressiveInlining on any runtime/corlib
+                       //
+                       MethodImplOptions all = (MethodImplOptions) 256;
+                       foreach (MethodImplOptions v in System.Enum.GetValues (typeof (MethodImplOptions))) {
+                               all |= v;
+                       }
+
+                       return ((MethodImplOptions) value | all) == all;
+               }
+
                static bool IsValidArgumentType (TypeSpec t)
                {
                        if (t.IsArray) {
@@ -1025,10 +1038,14 @@ namespace Mono.CSharp {
                                                                        if (string.IsNullOrEmpty (value))
                                                                                Error_AttributeEmitError ("DllName cannot be empty or null");
                                                                }
-                                                       } else if (Type == predefined.MethodImpl && pt.BuiltinType == BuiltinTypeSpec.Type.Short &&
-                                                               !System.Enum.IsDefined (typeof (MethodImplOptions), ((Constant) arg_expr).GetValue ().ToString ())) {
-                                                               Error_AttributeEmitError ("Incorrect argument value.");
-                                                               return;
+                                                       } else if (Type == predefined.MethodImpl) {
+                                                               if (pos_args.Count == 1) {
+                                                                       var value = (int) ((Constant) arg_expr).GetValueAsLong ();
+
+                                                                       if (!IsValidMethodImplOption (value)) {
+                                                                               Error_AttributeEmitError ("Incorrect argument value");
+                                                                       }
+                                                               }
                                                        }
                                                }
 
@@ -1055,7 +1072,7 @@ namespace Mono.CSharp {
                                cdata = encoder.ToArray ();
                        }
 
-                       if (!ctor.DeclaringType.IsConditionallyExcluded (context, Location)) {
+                       if (!ctor.DeclaringType.IsConditionallyExcluded (context)) {
                                try {
                                        foreach (Attributable target in targets)
                                                target.ApplyAttributeBuilder (this, ctor, cdata, predefined);
@@ -1141,7 +1158,7 @@ namespace Mono.CSharp {
 
                public Attributes (List<Attribute> attrs)
                {
-                       Attrs = attrs;
+                       Attrs = attrs ?? new List<Attribute> ();
                }
 
                public void AddAttribute (Attribute attr)
@@ -1633,6 +1650,7 @@ namespace Mono.CSharp {
                public readonly PredefinedAttribute UnsafeValueType;
                public readonly PredefinedAttribute UnmanagedFunctionPointer;
                public readonly PredefinedDebuggerBrowsableAttribute DebuggerBrowsable;
+               public readonly PredefinedAttribute DebuggerStepThrough;
 
                // New in .NET 3.5
                public readonly PredefinedAttribute Extension;
@@ -1650,6 +1668,11 @@ namespace Mono.CSharp {
                public readonly PredefinedDecimalAttribute DecimalConstant;
                public readonly PredefinedAttribute StructLayout;
                public readonly PredefinedAttribute FieldOffset;
+               public readonly PredefinedAttribute AssemblyProduct;
+               public readonly PredefinedAttribute AssemblyCompany;
+               public readonly PredefinedAttribute AssemblyDescription;
+               public readonly PredefinedAttribute AssemblyCopyright;
+               public readonly PredefinedAttribute AssemblyTrademark;
                public readonly PredefinedAttribute CallerMemberNameAttribute;
                public readonly PredefinedAttribute CallerLineNumberAttribute;
                public readonly PredefinedAttribute CallerFilePathAttribute;
@@ -1694,6 +1717,7 @@ namespace Mono.CSharp {
                        UnsafeValueType = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "UnsafeValueTypeAttribute");
                        UnmanagedFunctionPointer = new PredefinedAttribute (module, "System.Runtime.InteropServices", "UnmanagedFunctionPointerAttribute");
                        DebuggerBrowsable = new PredefinedDebuggerBrowsableAttribute (module, "System.Diagnostics", "DebuggerBrowsableAttribute");
+                       DebuggerStepThrough = new PredefinedAttribute (module, "System.Diagnostics", "DebuggerStepThroughAttribute");
 
                        Extension = new PredefinedAttribute (module, "System.Runtime.CompilerServices", "ExtensionAttribute");
 
@@ -1703,6 +1727,11 @@ namespace Mono.CSharp {
                        DecimalConstant = new PredefinedDecimalAttribute (module, "System.Runtime.CompilerServices", "DecimalConstantAttribute");
                        StructLayout = new PredefinedAttribute (module, "System.Runtime.InteropServices", "StructLayoutAttribute");
                        FieldOffset = new PredefinedAttribute (module, "System.Runtime.InteropServices", "FieldOffsetAttribute");
+                       AssemblyProduct = new PredefinedAttribute (module, "System.Reflection", "AssemblyProductAttribute");
+                       AssemblyCompany = new PredefinedAttribute (module, "System.Reflection", "AssemblyCompanyAttribute");
+                       AssemblyDescription = new PredefinedAttribute (module, "System.Reflection", "AssemblyDescriptionAttribute");
+                       AssemblyCopyright = new PredefinedAttribute (module, "System.Reflection", "AssemblyCopyrightAttribute");
+                       AssemblyTrademark = new PredefinedAttribute (module, "System.Reflection", "AssemblyTrademarkAttribute");
 
                        AsyncStateMachine = new PredefinedStateMachineAttribute (module, "System.Runtime.CompilerServices", "AsyncStateMachineAttribute");
 
@@ -1820,7 +1849,7 @@ namespace Mono.CSharp {
                        //
                        // Handle all parameter-less attributes as optional
                        //
-                       if (!IsDefined)
+                       if (!Define ())
                                return false;
 
                        ctor = (MethodSpec) MemberCache.FindMember (type, MemberFilter.Constructor (ParametersCompiled.EmptyReadOnlyParameters), BindingRestriction.DeclaredOnly);
@@ -1978,7 +2007,7 @@ namespace Mono.CSharp {
                        if (ac != null) {
                                element = GetTransformationFlags (ac.Element);
                                if (element == null)
-                                       return null;
+                                       return new bool[] { false, false };
 
                                bool[] res = new bool[element.Length + 1];
                                res[0] = false;
index 2e453ab724ee715f7561985da524b23d1ec88724..96062f2748e744c51360f607ad2de8f492dc889d 100644 (file)
@@ -183,11 +183,11 @@ namespace Mono.CSharp {
                        switch (oper){
                        case Binary.Operator.BitwiseOr:
                                //
-                               // bool? operator &(bool? x, bool? y);
+                               // bool? operator |(bool? x, bool? y);
                                //
                                if ((lt.BuiltinType == BuiltinTypeSpec.Type.Bool && right is NullLiteral) ||
                                        (rt.BuiltinType == BuiltinTypeSpec.Type.Bool && left is NullLiteral)) {
-                                       var b = new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                       var b = new Binary (oper, left, right).ResolveOperator (ec);
 
                                        // false | null => null
                                        // null | false => null
@@ -231,7 +231,7 @@ namespace Mono.CSharp {
                                //
                                if ((lt.BuiltinType == BuiltinTypeSpec.Type.Bool && right is NullLiteral) ||
                                        (rt.BuiltinType == BuiltinTypeSpec.Type.Bool && left is NullLiteral)) {
-                                       var b = new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                       var b = new Binary (oper, left, right).ResolveOperator (ec);
 
                                        // false & null => false
                                        // null & false => false
@@ -495,7 +495,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                if (!DoBinaryNumericPromotions (ec, ref left, ref right))
@@ -592,7 +592,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                if (!DoBinaryNumericPromotions (ec, ref left, ref right))
@@ -688,7 +688,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                if (!DoBinaryNumericPromotions (ec, ref left, ref right))
@@ -788,7 +788,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                if (!DoBinaryNumericPromotions (ec, ref left, ref right))
@@ -878,7 +878,7 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                IntConstant ic = right.ConvertImplicitly (ec.BuiltinTypes.Int) as IntConstant;
@@ -899,7 +899,7 @@ namespace Mono.CSharp {
 
                                // null << value => null
                                if (left is NullLiteral)
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, left, right).ResolveOperator (ec);
 
                                left = left.ConvertImplicitly (ec.BuiltinTypes.Int);
                                if (left.Type.BuiltinType == BuiltinTypeSpec.Type.Int)
@@ -915,12 +915,12 @@ namespace Mono.CSharp {
                                if (left is NullLiteral && right is NullLiteral) {
                                        var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                        lifted_int.ResolveAsType (ec);
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                }
 
                                IntConstant sic = right.ConvertImplicitly (ec.BuiltinTypes.Int) as IntConstant;
                                if (sic == null){
-                                       Binary.Error_OperatorCannotBeApplied (ec, left, right, oper, loc); ;
+                                       Binary.Error_OperatorCannotBeApplied (ec, left, right, oper, loc);
                                        return null;
                                }
                                int rshift_val = sic.Value;
@@ -935,7 +935,7 @@ namespace Mono.CSharp {
 
                                // null >> value => null
                                if (left is NullLiteral)
-                                       return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                       return (Constant) new Binary (oper, left, right).ResolveOperator (ec);
 
                                left = left.ConvertImplicitly (ec.BuiltinTypes.Int);
                                if (left.Type.BuiltinType == BuiltinTypeSpec.Type.Int)
@@ -1037,11 +1037,7 @@ namespace Mono.CSharp {
                                        if (left is NullLiteral) {
                                                var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                                lifted_int.ResolveAsType (ec);
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
-                                       }
-
-                                       if (left is Nullable.LiftedNull) {
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                               return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                        }
                                }
 
@@ -1077,11 +1073,7 @@ namespace Mono.CSharp {
                                        if (left is NullLiteral) {
                                                var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                                lifted_int.ResolveAsType (ec);
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
-                                       }
-
-                                       if (left is Nullable.LiftedNull) {
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                               return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                        }
                                }
 
@@ -1117,11 +1109,7 @@ namespace Mono.CSharp {
                                        if (left is NullLiteral) {
                                                var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                                lifted_int.ResolveAsType (ec);
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
-                                       }
-
-                                       if (left is Nullable.LiftedNull) {
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                               return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                        }
                                }
 
@@ -1157,11 +1145,7 @@ namespace Mono.CSharp {
                                        if (left is NullLiteral) {
                                                var lifted_int = new Nullable.NullableType (ec.BuiltinTypes.Int, loc);
                                                lifted_int.ResolveAsType (ec);
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, lifted_int, right).Resolve (ec);
-                                       }
-
-                                       if (left is Nullable.LiftedNull) {
-                                               return (Constant) new Nullable.LiftedBinaryOperator (oper, left, right).Resolve (ec);
+                                               return (Constant) new Binary (oper, lifted_int, right).ResolveOperator (ec);
                                        }
                                }
 
index f33ddc37920805c9a4aa00b5b2e2d84882c180f3..6382365f6fc8cb5a70debdad3496fb04c812f39a 100644 (file)
@@ -53,7 +53,11 @@ namespace Mono.CSharp
 
                protected bool is_defined;
 
-               public TypeContainer (TypeContainer parent, MemberName name, Attributes attrs, MemberKind kind)
+               public int CounterAnonymousMethods { get; set; }
+               public int CounterAnonymousContainers { get; set; }
+               public int CounterSwitchTypes { get; set; }
+
+               protected TypeContainer (TypeContainer parent, MemberName name, Attributes attrs, MemberKind kind)
                        : base (parent, name, attrs)
                {
                        this.Kind = kind;
@@ -98,9 +102,9 @@ namespace Mono.CSharp
                        get; set;
                }
 
-               public virtual void AddCompilerGeneratedClass (CompilerGeneratedContainer c)
+               public void AddCompilerGeneratedClass (CompilerGeneratedContainer c)
                {
-                       containers.Add (c);
+                       AddTypeContainerMember (c);
                }
 
                public virtual void AddPartial (TypeDefinition next_part)
@@ -187,15 +191,14 @@ namespace Mono.CSharp
 
                        next_part.PartialContainer = existing;
 
-                       if (containers == null)
-                               containers = new List<TypeContainer> ();
+                       existing.AddPartialPart (next_part);
 
-                       containers.Add (next_part);
+                       AddTypeContainerMember (next_part);
                }
 
                public virtual void AddTypeContainer (TypeContainer tc)
                {
-                       containers.Add (tc);
+                       AddTypeContainerMember (tc);
 
                        var tparams = tc.MemberName.TypeParameters;
                        if (tparams != null && tc.PartialContainer != null) {
@@ -210,6 +213,11 @@ namespace Mono.CSharp
                        }
                }
 
+               protected virtual void AddTypeContainerMember (TypeContainer tc)
+               {
+                       containers.Add (tc);
+               }
+
                public virtual void CloseContainer ()
                {
                        if (containers != null) {
@@ -356,7 +364,6 @@ namespace Mono.CSharp
 
                public string GetSignatureForMetadata ()
                {
-#if STATIC
                        if (Parent is TypeDefinition) {
                                return Parent.GetSignatureForMetadata () + "+" + TypeNameParser.Escape (MemberName.Basename);
                        }
@@ -364,9 +371,6 @@ namespace Mono.CSharp
                        var sb = new StringBuilder ();
                        CreateMetadataName (sb);
                        return sb.ToString ();
-#else
-                       throw new NotImplementedException ();
-#endif
                }
 
                public virtual void RemoveContainer (TypeContainer cont)
@@ -516,6 +520,9 @@ namespace Mono.CSharp
 
                protected List<FullNamedExpression> type_bases;
 
+               // Partial parts for classes only
+               List<TypeDefinition> class_partial_parts;
+
                TypeDefinition InTransit;
 
                public TypeBuilder TypeBuilder;
@@ -553,7 +560,7 @@ namespace Mono.CSharp
                /// </remarks>
                PendingImplementation pending;
 
-               public TypeDefinition (TypeContainer parent, MemberName name, Attributes attrs, MemberKind kind)
+               protected TypeDefinition (TypeContainer parent, MemberName name, Attributes attrs, MemberKind kind)
                        : base (parent, name, attrs, kind)
                {
                        PartialContainer = this;
@@ -745,7 +752,7 @@ namespace Mono.CSharp
                                }
                        }
 
-                       AddNameToContainer (symbol, symbol.MemberName.Basename);
+                       AddNameToContainer (symbol, symbol.MemberName.Name);
                        members.Add (symbol);
                }
 
@@ -753,21 +760,17 @@ namespace Mono.CSharp
                {
                        AddNameToContainer (tc, tc.Basename);
 
-                       if (containers == null)
-                               containers = new List<TypeContainer> ();
-
-                       members.Add (tc);
                        base.AddTypeContainer (tc);
                }
 
-               public override void AddCompilerGeneratedClass (CompilerGeneratedContainer c)
+               protected override void AddTypeContainerMember (TypeContainer tc)
                {
-                       members.Add (c);
+                       members.Add (tc);
 
                        if (containers == null)
                                containers = new List<TypeContainer> ();
 
-                       base.AddCompilerGeneratedClass (c);
+                       base.AddTypeContainerMember (tc);
                }
 
                //
@@ -865,6 +868,17 @@ namespace Mono.CSharp
                        AddMember (op);
                }
 
+               public void AddPartialPart (TypeDefinition part)
+               {
+                       if (Kind != MemberKind.Class)
+                               return;
+
+                       if (class_partial_parts == null)
+                               class_partial_parts = new List<TypeDefinition> ();
+
+                       class_partial_parts.Add (part);
+               }
+
                public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
                {
                        if (has_normal_indexers && a.Type == pa.DefaultMember) {
@@ -961,7 +975,7 @@ namespace Mono.CSharp
                                        if (s == null) {
                                                s = EmptyExpressionStatement.Instance;
                                        } else if (!fi.IsSideEffectFree) {
-                                               has_complex_initializer |= true;
+                                               has_complex_initializer = true;
                                        }
 
                                        init [i] = s;
@@ -1066,9 +1080,9 @@ namespace Mono.CSharp
                        }
                }
 
-               public virtual void AddBasesForPart (List<FullNamedExpression> bases)
+               public virtual void SetBaseTypes (List<FullNamedExpression> baseTypes)
                {
-                       type_bases = bases;
+                       type_bases = baseTypes;
                }
 
                /// <summary>
@@ -1178,7 +1192,7 @@ namespace Mono.CSharp
                                }
 
                                bool pair_found = false;
-                               for (int ii = i + 1; ii < members.Count; ++ii) {
+                               for (int ii = 0; ii < members.Count; ++ii) {
                                        var o_b = members[ii] as Operator;
                                        if (o_b == null || o_b.OperatorType != matching_type)
                                                continue;
@@ -1432,6 +1446,14 @@ namespace Mono.CSharp
                }
 
                protected bool DefineBaseTypes ()
+               {
+                       if (IsPartialPart && Kind == MemberKind.Class)
+                               return true;
+
+                       return DoDefineBaseType ();
+               }
+
+               bool DoDefineBaseType ()
                {
                        iface_exprs = ResolveBaseTypes (out base_type_expr);
                        bool set_base_type;
@@ -1521,19 +1543,43 @@ namespace Mono.CSharp
                        }
 
                        if (set_base_type) {
-                               if (base_type != null) {
-                                       spec.BaseType = base_type;
+                               SetBaseType ();
+                       }
+
+                       //
+                       // Base type of partial container has to be resolved before we
+                       // resolve any nested types of the container. We need to know
+                       // partial parts because the base type can be specified in file
+                       // defined after current container
+                       //
+                       if (class_partial_parts != null) {
+                               foreach (var pp in class_partial_parts)
+                                       pp.DoDefineBaseType ();
 
-                                       // Set base type after type creation
-                                       TypeBuilder.SetParent (base_type.GetMetaInfo ());
-                               } else {
-                                       TypeBuilder.SetParent (null);
-                               }
                        }
 
                        return true;
                }
 
+               void SetBaseType ()
+               {
+                       if (base_type == null) {
+                               TypeBuilder.SetParent (null);
+                               return;
+                       }
+
+                       if (spec.BaseType == base_type)
+                               return;
+
+                       spec.BaseType = base_type;
+
+                       if (IsPartialPart)
+                               spec.UpdateInflatedInstancesBaseType ();
+
+                       // Set base type after type creation
+                       TypeBuilder.SetParent (base_type.GetMetaInfo ());
+               }
+
                public override void ExpandBaseInterfaces ()
                {
                        if (!IsPartialPart)
@@ -1778,7 +1824,7 @@ namespace Mono.CSharp
 
                                        if (iface_type.Arity > 0) {
                                                // TODO: passing `this' is wrong, should be base type iface instead
-                                               TypeManager.CheckTypeVariance (iface_type, Variance.Covariant, this);
+                                               VarianceDecl.CheckTypeVariance (iface_type, Variance.Covariant, this);
 
                                                if (((InflatedTypeSpec) iface_type).HasDynamicArgument () && !IsCompilerGenerated) {
                                                        Report.Error (1966, Location,
@@ -2085,8 +2131,13 @@ namespace Mono.CSharp
 
                        base.Emit ();
 
-                       for (int i = 0; i < members.Count; i++)
-                               members[i].Emit ();
+                       for (int i = 0; i < members.Count; i++) {
+                               var m = members[i];
+                               if ((m.caching_flags & Flags.CloseTypeCreated) != 0)
+                                       continue;
+
+                               m.Emit ();
+                       }
 
                        EmitIndexerName ();
                        CheckAttributeClsCompliance ();
@@ -2256,11 +2307,20 @@ namespace Mono.CSharp
                /// </summary>
                public bool VerifyImplements (InterfaceMemberBase mb)
                {
-                       var ifaces = spec.Interfaces;
+                       var ifaces = PartialContainer.Interfaces;
                        if (ifaces != null) {
                                foreach (TypeSpec t in ifaces){
                                        if (t == mb.InterfaceType)
                                                return true;
+
+                                       var expanded_base = t.Interfaces;
+                                       if (expanded_base == null)
+                                               continue;
+
+                                       foreach (var bt in expanded_base) {
+                                               if (bt == mb.InterfaceType)
+                                                       return true;
+                                       }
                                }
                        }
                        
@@ -2427,7 +2487,7 @@ namespace Mono.CSharp
 
                SecurityType declarative_security;
 
-               public ClassOrStruct (TypeContainer parent, MemberName name, Attributes attrs, MemberKind kind)
+               protected ClassOrStruct (TypeContainer parent, MemberName name, Attributes attrs, MemberKind kind)
                        : base (parent, name, attrs, kind)
                {
                }
@@ -2577,14 +2637,14 @@ namespace Mono.CSharp
                        visitor.Visit (this);
                }
 
-               public override void AddBasesForPart (List<FullNamedExpression> bases)
+               public override void SetBaseTypes (List<FullNamedExpression> baseTypes)
                {
                        var pmn = MemberName;
                        if (pmn.Name == "Object" && !pmn.IsGeneric && Parent.MemberName.Name == "System" && Parent.MemberName.Left == null)
                                Report.Error (537, Location,
                                        "The class System.Object cannot have a base class or implement an interface.");
 
-                       base.AddBasesForPart (bases);
+                       base.SetBaseTypes (baseTypes);
                }
 
                public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
@@ -2610,7 +2670,7 @@ namespace Mono.CSharp
                                return;
                        }
 
-                       if (a.Type.IsConditionallyExcluded (this, Location))
+                       if (a.Type.IsConditionallyExcluded (this))
                                return;
 
                        base.ApplyAttributeBuilder (a, ctor, cdata, pa);
@@ -3090,7 +3150,7 @@ namespace Mono.CSharp
                readonly Modifiers explicit_mod_flags;
                public MethodAttributes flags;
 
-               public InterfaceMemberBase (TypeDefinition parent, FullNamedExpression type, Modifiers mod, Modifiers allowed_mod, MemberName name, Attributes attrs)
+               protected InterfaceMemberBase (TypeDefinition parent, FullNamedExpression type, Modifiers mod, Modifiers allowed_mod, MemberName name, Attributes attrs)
                        : base (parent, type, mod, allowed_mod, Modifiers.PRIVATE, name, attrs)
                {
                        IsInterface = parent.Kind == MemberKind.Interface;
@@ -3208,7 +3268,7 @@ namespace Mono.CSharp
                                        }
                                }
 
-                               if (!IsInterface && base_member.IsAbstract && !overrides) {
+                               if (!IsInterface && base_member.IsAbstract && !overrides && !IsStatic) {
                                        Report.SymbolRelatedToPreviousError (base_member);
                                        Report.Error (533, Location, "`{0}' hides inherited abstract member `{1}'",
                                                GetSignatureForError (), base_member.GetSignatureForError ());
@@ -3334,7 +3394,11 @@ namespace Mono.CSharp
                                        Parent.PartialContainer.VerifyImplements (this);
                                }
 
-                               ModifiersExtensions.Check (Modifiers.AllowedExplicitImplFlags, explicit_mod_flags, 0, Location, Report);
+                               Modifiers allowed_explicit = Modifiers.AllowedExplicitImplFlags;
+                               if (this is Method)
+                                       allowed_explicit |= Modifiers.ASYNC;
+
+                               ModifiersExtensions.Check (allowed_explicit, explicit_mod_flags, 0, Location, Report);
                        }
 
                        return base.Define ();
@@ -3378,7 +3442,7 @@ namespace Mono.CSharp
                {
                        base.DoMemberTypeDependentChecks ();
 
-                       TypeManager.CheckTypeVariance (MemberType, ExpectedMemberTypeVariance, this);
+                       VarianceDecl.CheckTypeVariance (MemberType, ExpectedMemberTypeVariance, this);
                }
 
                public override void Emit()
index 9bb7066758d4d12a332b04ae472497558b776eed..319151bd093a16b6329431fc1c77b25071afd0cc 100644 (file)
@@ -248,6 +248,21 @@ namespace Mono.CSharp
                        return true;
                }
 
+               public void MarkCallEntry (Location loc)
+               {
+                       if (!EmitAccurateDebugInfo)
+                               return;
+
+                       //
+                       // TODO: This should emit different kind of sequence point to make
+                       // step-over work for statement over multiple lines
+                       //
+                       // Debugging experience for Foo (A () + B ()) where A and B are
+                       // on separate lines is not great
+                       //
+                       Mark (loc);
+               }
+
                public void DefineLocalVariable (string name, LocalBuilder builder)
                {
                        if ((flags & Options.OmitDebugInfo) != 0)
@@ -258,6 +273,9 @@ namespace Mono.CSharp
 
                public void BeginCatchBlock (TypeSpec type)
                {
+                       if (IsAnonymousStoreyMutateRequired)
+                               type = CurrentAnonymousMethod.Storey.Mutator.Mutate (type);
+
                        ig.BeginCatchBlock (type.GetMetaInfo ());
                }
 
@@ -281,6 +299,16 @@ namespace Mono.CSharp
 #endif
                }
 
+               public void BeginCompilerScope ()
+               {
+                       if ((flags & Options.OmitDebugInfo) != 0)
+                               return;
+
+#if NET_4_0
+                       methodSymbols.StartBlock (CodeBlockEntry.Type.CompilerGenerated, ig.ILOffset);
+#endif
+               }
+
                public void EndExceptionBlock ()
                {
                        ig.EndExceptionBlock ();
@@ -941,7 +969,7 @@ namespace Mono.CSharp
                public void Emit (EmitContext ec, MethodSpec method, Arguments Arguments, Location loc)
                {
                        // Speed up the check by not doing it on not allowed targets
-                       if (method.ReturnType.Kind == MemberKind.Void && method.IsConditionallyExcluded (ec.MemberContext, loc))
+                       if (method.ReturnType.Kind == MemberKind.Void && method.IsConditionallyExcluded (ec.MemberContext))
                                return;
 
                        EmitPredefined (ec, method, Arguments, loc);
@@ -1011,11 +1039,7 @@ namespace Mono.CSharp
                                // Emit explicit sequence point for expressions like Foo.Bar () to help debugger to
                                // break at right place when LHS expression can be stepped-into
                                //
-                               // TODO: The list is probably not comprehensive, need to do more testing
-                               //
-                               if (InstanceExpression is PropertyExpr || InstanceExpression is Invocation || InstanceExpression is IndexerExpr ||
-                                       InstanceExpression is New || InstanceExpression is DelegateInvocation)
-                                       ec.Mark (loc.Value);
+                               ec.MarkCallEntry (loc.Value);
                        }
 
                        //
index a1bb8ec00f48c249eebd4ec1928ab0110c9dce1e..6eb42cddada0a51de2f96f54fe9c35b0b6cd294e 100644 (file)
@@ -109,28 +109,56 @@ namespace Mono.CSharp {
                        this.targs = targs;
                }
                
-               protected override Expression DoResolve (ResolveContext ec)
+               protected override Expression DoResolve (ResolveContext rc)
                {
-                       Expression expr_resolved = expr.Resolve (ec,
-                               ResolveFlags.VariableOrValue | ResolveFlags.Type);
+                       var sn = expr as SimpleName;
+                       const ResolveFlags flags = ResolveFlags.VariableOrValue | ResolveFlags.Type;
+
+                       //
+                       // Resolve the expression with flow analysis turned off, we'll do the definite
+                       // assignment checks later.  This is because we don't know yet what the expression
+                       // will resolve to - it may resolve to a FieldExpr and in this case we must do the
+                       // definite assignment check on the actual field and not on the whole struct.
+                       //
+                       using (rc.Set (ResolveContext.Options.OmitStructFlowAnalysis)) {
+                               if (sn != null) {
+                                       expr = sn.LookupNameExpression (rc, MemberLookupRestrictions.ReadAccess | MemberLookupRestrictions.ExactArity);
+
+                                       //
+                                       // Resolve expression which does have type set as we need expression type
+                                       // with disable flow analysis as we don't know whether left side expression
+                                       // is used as variable or type
+                                       //
+                                       if (expr is VariableReference || expr is ConstantExpr || expr is Linq.TransparentMemberAccess) {
+                                               using (rc.With (ResolveContext.Options.DoFlowAnalysis, false)) {
+                                                       expr = expr.Resolve (rc);
+                                               }
+                                       } else if (expr is TypeParameterExpr) {
+                                               expr.Error_UnexpectedKind (rc, flags, sn.Location);
+                                               expr = null;
+                                       }
+                               } else {
+                                       expr = expr.Resolve (rc, flags);
+                               }
+                       }
 
-                       if (expr_resolved == null)
+                       if (expr == null)
                                return null;
 
-                       TypeSpec expr_type = expr_resolved.Type;
+                       TypeSpec expr_type = expr.Type;
                        if (expr_type.IsPointer || expr_type.Kind == MemberKind.Void || expr_type == InternalType.NullLiteral || expr_type == InternalType.AnonymousMethod) {
-                               expr_resolved.Error_OperatorCannotBeApplied (ec, loc, ".", expr_type);
+                               expr.Error_OperatorCannotBeApplied (rc, loc, ".", expr_type);
                                return null;
                        }
 
                        if (targs != null) {
-                               if (!targs.Resolve (ec))
+                               if (!targs.Resolve (rc))
                                        return null;
                        }
 
                        var results = new List<string> ();
-                       if (expr_resolved is Namespace){
-                               Namespace nexpr = expr_resolved as Namespace;
+                       if (expr is Namespace) {
+                               Namespace nexpr = expr as Namespace;
                                string namespaced_partial;
 
                                if (partial_name == null)
@@ -138,11 +166,11 @@ namespace Mono.CSharp {
                                else
                                        namespaced_partial = nexpr.Name + "." + partial_name;
 
-                               ec.CurrentMemberDefinition.GetCompletionStartingWith (namespaced_partial, results);
+                               rc.CurrentMemberDefinition.GetCompletionStartingWith (namespaced_partial, results);
                                if (partial_name != null)
                                        results = results.Select (l => l.Substring (partial_name.Length)).ToList ();
                        } else {
-                               var r = MemberCache.GetCompletitionMembers (ec, expr_type, partial_name).Select (l => l.Name);
+                               var r = MemberCache.GetCompletitionMembers (rc, expr_type, partial_name).Select (l => l.Name);
                                AppendResults (results, partial_name, r);
                        }
 
index da41e1ebad5eac2ad2df972d889cca45b8ecbdf6..eef90b34603c80175df19f75373cc6c0502e6b62 100644 (file)
@@ -106,6 +106,11 @@ namespace Mono.CSharp {
                                        "The type `{0}' cannot be declared const", t.GetSignatureForError ());
                        }
                }
+
+               public override void Accept (StructuralVisitor visitor)
+               {
+                       visitor.Visit (this);
+               }
        }
 
        public class ConstSpec : FieldSpec
index aceaedf7e7bf9471059428823a1a10b0f233723b..799d81bfac6adb3706ede095c5177c615d7714e4 100644 (file)
@@ -3,11 +3,11 @@
 //
 // Author:
 //   Miguel de Icaza (miguel@ximian.com)
-//   Marek Safar (marek.safar@seznam.cz)
+//   Marek Safar (marek.safar@gmail.com)
 //
 // Copyright 2001-2003 Ximian, Inc.
 // Copyright 2003-2008 Novell, Inc.
-// Copyright 2011 Xamarin Inc
+// Copyright 2011-2013 Xamarin Inc
 //
 
 using System;
@@ -70,7 +70,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public Constant ImplicitConversionRequired (ResolveContext ec, TypeSpec type, Location loc)
+               public Constant ImplicitConversionRequired (ResolveContext ec, TypeSpec type)
                {
                        Constant c = ConvertImplicitly (type);
                        if (c == null)
@@ -89,7 +89,7 @@ namespace Mono.CSharp {
                        if (this.type == type)
                                return this;
 
-                       if (Convert.ImplicitNumericConversion (this, type) == null) 
+                       if (!Convert.ImplicitNumericConversionExists (this.type, type))
                                return null;
 
                        bool fail;                      
@@ -162,6 +162,88 @@ namespace Mono.CSharp {
 #endif
                }
 
+               //
+               // Returns a constant instance based on value and type. This is probing version of
+               // CreateConstantFromValue
+               //
+               public static Constant ExtractConstantFromValue (TypeSpec t, object v, Location loc)
+               {
+                       switch (t.BuiltinType) {
+                       case BuiltinTypeSpec.Type.Int:
+                               if (v is int)
+                                       return new IntConstant (t, (int) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.String:
+                               if (v is string)
+                                       return new StringConstant (t, (string) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.UInt:
+                               if (v is uint)
+                                       return new UIntConstant (t, (uint) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.Long:
+                               if (v is long)
+                                       return new LongConstant (t, (long) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.ULong:
+                               if (v is ulong)
+                                       return new ULongConstant (t, (ulong) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.Float:
+                               if (v is float)
+                                       return new FloatConstant (t, (float) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.Double:
+                               if (v is double)
+                                       return new DoubleConstant (t, (double) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.Short:
+                               if (v is short)
+                                       return new ShortConstant (t, (short) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.UShort:
+                               if (v is ushort)
+                                       return new UShortConstant (t, (ushort) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.SByte:
+                               if (v is sbyte)
+                                       return new SByteConstant (t, (sbyte) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.Byte:
+                               if (v is byte)
+                                       return new ByteConstant (t, (byte) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.Char:
+                               if (v is char)
+                                       return new CharConstant (t, (char) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.Bool:
+                               if (v is bool)
+                                       return new BoolConstant (t, (bool) v, loc);
+                               break;
+                       case BuiltinTypeSpec.Type.Decimal:
+                               if (v is decimal)
+                                       return new DecimalConstant (t, (decimal) v, loc);
+                               break;
+                       }
+
+                       if (t.IsEnum) {
+                               var real_type = EnumSpec.GetUnderlyingType (t);
+                               return new EnumConstant (CreateConstantFromValue (real_type, v, loc), t);
+                       }
+
+                       if (v == null) {
+                               if (t.IsNullableType)
+                                       return Nullable.LiftedNull.Create (t, loc);
+
+                               if (TypeSpec.IsReferenceType (t))
+                                       return new NullConstant (t, loc);
+                       }
+
+                       return null;
+               }
+
+
                public override Expression CreateExpressionTree (ResolveContext ec)
                {
                        Arguments args = new Arguments (2);
@@ -2019,6 +2101,14 @@ namespace Mono.CSharp {
                {
                        return null;
                }
+
+               public override Constant ConvertImplicitly (TypeSpec type)
+               {
+                       if (IsDefaultValue && type.BuiltinType == BuiltinTypeSpec.Type.Object)
+                               return new NullConstant (type, loc);
+
+                       return base.ConvertImplicitly (type);
+               }
        }
 
        //
index f636ffdb0a004740dad6eacb846f872068f3f54b..06d6994c04a1b95905d75f22f29c832f53acce7f 100644 (file)
@@ -73,7 +73,10 @@ namespace Mono.CSharp
 
                readonly TypeSpec return_type;
 
-               public int FlowOffset;
+               //
+               // Tracks the last offset used by VariableInfo
+               //
+               public int AssignmentInfoOffset;
 
                public BlockContext (IMemberContext mc, ExplicitBlock block, TypeSpec returnType)
                        : base (mc)
@@ -325,7 +328,7 @@ namespace Mono.CSharp
                // it's public so that we can use a struct at the callsite
                public struct FlagsHandle : IDisposable
                {
-                       ResolveContext ec;
+                       readonly ResolveContext ec;
                        readonly Options invmask, oldval;
 
                        public FlagsHandle (ResolveContext ec, Options flagsToSet)
@@ -513,10 +516,12 @@ namespace Mono.CSharp
 
                        //
                        // Capture only if this or any of child blocks contain await
-                       // or it's a parameter
+                       // or it's a parameter or we need to access variable from 
+                       // different parameter block
                        //
                        if (CurrentAnonymousMethod is AsyncInitializer)
-                               return local.IsParameter || local.Block.Explicit.HasAwait || CurrentBlock.Explicit.HasAwait;
+                               return local.IsParameter || local.Block.Explicit.HasAwait || CurrentBlock.Explicit.HasAwait ||
+                                       local.Block.ParametersBlock != CurrentBlock.ParametersBlock.Original;
 
                        return local.Block.ParametersBlock != CurrentBlock.ParametersBlock.Original;
                }
@@ -730,7 +735,7 @@ namespace Mono.CSharp
                // it's public so that we can use a struct at the callsite
                public struct FlagsHandle : IDisposable
                {
-                       BuilderContext ec;
+                       readonly BuilderContext ec;
                        readonly Options invmask, oldval;
 
                        public FlagsHandle (BuilderContext ec, Options flagsToSet)
index 3c5ebeae4b3cbeb7ec73acdd7fe7c1cd6a122f3e..63e87ebc32ca55bc6be69c82f0702eb73c25135e 100644 (file)
@@ -34,7 +34,7 @@ namespace Mono.CSharp {
                //
                static bool ArrayToIList (ArrayContainer array, TypeSpec list, bool isExplicit)
                {
-                       if (array.Rank != 1 || !list.IsGenericIterateInterface)
+                       if (array.Rank != 1 || !list.IsArrayGenericInterface)
                                return false;
 
                        var arg_type = list.TypeArguments[0];
@@ -55,7 +55,7 @@ namespace Mono.CSharp {
                
                static bool IList_To_Array(TypeSpec list, ArrayContainer array)
                {
-                       if (array.Rank != 1 || !list.IsGenericIterateInterface)
+                       if (array.Rank != 1 || !list.IsArrayGenericInterface)
                                return false;
 
                        var arg_type = list.TypeArguments[0];
@@ -479,7 +479,7 @@ namespace Mono.CSharp {
                        }
                        
                        if (expr_type != expr.Type)
-                               return new Nullable.Lifted (conv, unwrap, target_type).Resolve (ec);
+                               return new Nullable.LiftedConversion (conv, unwrap, target_type).Resolve (ec);
 
                        return Nullable.Wrap.Create (conv, target_type);
                }
@@ -1097,14 +1097,16 @@ namespace Mono.CSharp {
                        TypeSpec source_type = source.Type;
                        TypeSpec target_type = target;
                        Expression source_type_expr;
+                       bool nullable_source = false;
 
                        if (source_type.IsNullableType) {
                                // No unwrapping conversion S? -> T for non-reference types
                                if (implicitOnly && !TypeSpec.IsReferenceType (target_type) && !target_type.IsNullableType) {
                                        source_type_expr = source;
                                } else {
-                                       source_type_expr = Nullable.Unwrap.Create (source);
+                                       source_type_expr = Nullable.Unwrap.CreateUnwrapped (source);
                                        source_type = source_type_expr.Type;
+                                       nullable_source = true;
                                }
                        } else {
                                source_type_expr = source;
@@ -1231,26 +1233,48 @@ namespace Mono.CSharp {
                        //
                        if (t_x != target_type) {
                                //
-                               // User operator is of T?, no need to lift it
+                               // User operator is of T?
                                //
-                               if (t_x == target && t_x.IsNullableType)
-                                       return source;
+                               if (t_x.IsNullableType && target.IsNullableType) {
+                                       //
+                                       // User operator return type does not match target type we need
+                                       // yet another conversion. This should happen for promoted numeric
+                                       // types only
+                                       //
+                                       if (t_x != target) {
+                                               var unwrap = Nullable.Unwrap.CreateUnwrapped (source);
 
-                               source = implicitOnly ?
-                                       ImplicitConversionStandard (ec, source, target_type, loc) :
-                                       ExplicitConversionStandard (ec, source, target_type, loc);
+                                               source = implicitOnly ?
+                                                       ImplicitConversionStandard (ec, unwrap, target_type, loc) :
+                                                       ExplicitConversionStandard (ec, unwrap, target_type, loc);
 
-                               if (source == null)
-                                       return null;
+                                               if (source == null)
+                                                       return null;
+
+                                               source = new Nullable.LiftedConversion (source, unwrap, target).Resolve (ec);
+                                       }
+                               } else {
+                                       source = implicitOnly ?
+                                               ImplicitConversionStandard (ec, source, target_type, loc) :
+                                               ExplicitConversionStandard (ec, source, target_type, loc);
+
+                                       if (source == null)
+                                               return null;
+                               }
                        }
 
+
                        //
-                       // Source expression is of nullable type, lift the result in the case it's null and
-                       // not nullable/lifted user operator is used
+                       // Source expression is of nullable type and underlying conversion returns
+                       // only non-nullable type we need to lift it manually
                        //
-                       if (source_type_expr is Nullable.Unwrap && !s_x.IsNullableType && (TypeSpec.IsReferenceType (target) || target_type != target))
-                               source = new Nullable.Lifted (source, source_type_expr, target).Resolve (ec);
-                       else if (target_type != target)
+                       if (nullable_source && !s_x.IsNullableType)
+                               return new Nullable.LiftedConversion (source, source_type_expr, target).Resolve (ec);
+
+                       //
+                       // Target is of nullable type but source type is not, wrap the result expression
+                       //
+                       if (target.IsNullableType && !t_x.IsNullableType)
                                source = Nullable.Wrap.Create (source, target);
 
                        return source;
@@ -1414,6 +1438,9 @@ namespace Mono.CSharp {
                                Expression am = ame.Compatible (ec, target_type);
                                if (am != null)
                                        return am.Resolve (ec);
+
+                               // Avoid CS1503 after CS1661
+                               return ErrorExpression.Instance;
                        }
 
                        if (expr_type == InternalType.Arglist && target_type == ec.Module.PredefinedTypes.ArgIterator.TypeSpec)
@@ -2165,7 +2192,7 @@ namespace Mono.CSharp {
                                        if (e == null)
                                                return null;
 
-                                       return new Nullable.Lifted (e, unwrap, target_type).Resolve (ec);
+                                       return new Nullable.LiftedConversion (e, unwrap, target_type).Resolve (ec);
                                }
                                if (expr_type.BuiltinType == BuiltinTypeSpec.Type.Object) {
                                        return new UnboxCast (expr, target_type);
index e3160fea160e360ba1d61d0b5562dc8f2d84e505..0c4aa6be32a6aa3447b4eeab19fc27597840d521 100644 (file)
@@ -116,6 +116,8 @@ namespace Mono.CSharp
                // Keeps track of global data changes to undo on parser error
                //
                public Undo undo;
+
+               bool? interactive_async;
                
                Stack<Linq.QueryBlock> linq_clause_blocks;
 
@@ -562,6 +564,7 @@ namespace_name
          {
                var lt = (LocatedToken) $3;
                $$ = new MemberName ((MemberName) $1, lt.Value, lt.Location);           
+               lbag.AddLocation ($$, GetLocation ($2));
          }
        | error
          {
@@ -667,7 +670,7 @@ attribute_sections
                var sect = (List<Attribute>) $2;
                if (attrs == null)
                        attrs = new Attributes (sect);
-               else
+               else if (sect != null)
                        attrs.AddAttributes (sect);
                $$ = attrs;
          }
@@ -736,7 +739,7 @@ attribute_section_cont
          }
        | error
          {
-               $$ = CheckAttributeTarget (GetTokenName (yyToken), GetLocation ($1)); 
+               CheckAttributeTarget (GetTokenName (yyToken), GetLocation ($1)); 
                $$ = null;
          }
        ;       
@@ -970,7 +973,11 @@ struct_declaration
          }
          opt_semicolon
          {
-               lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($14), GetLocation ($16));
+               if ($16 == null) {
+                       lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($14));
+               } else {
+                       lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($14), GetLocation ($16));
+               }
                $$ = pop_current_class ();
          }
        | opt_attributes opt_modifiers opt_partial STRUCT error
@@ -1138,6 +1145,7 @@ opt_field_initializer
          {
                --lexer.parsing_block;
                current_field.Initializer = (Expression) $3;
+               lbag.AppendToMember (current_field, GetLocation ($1));
                end_block (lexer.Location);
                current_local_parameters = null;
          }
@@ -1938,7 +1946,11 @@ interface_declaration
          }
          opt_semicolon 
          {
-           lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($13));
+               if ($15 == null) {
+                       lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($13));
+               } else {
+                       lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($13), GetLocation ($15));
+               }
                $$ = pop_current_class ();
          }
        | opt_attributes opt_modifiers opt_partial INTERFACE error
@@ -2921,7 +2933,7 @@ type_parameter
        : opt_attributes opt_type_parameter_variance IDENTIFIER
          {
                var lt = (LocatedToken)$3;
-               $$ = new TypeParameter (new MemberName (lt.Value, lt.Location), (Attributes)$1, (Variance) $2);
+               $$ = new TypeParameter (new MemberName (lt.Value, lt.Location), (Attributes)$1, (VarianceDecl) $2);
          }
        | error
          {
@@ -2930,7 +2942,7 @@ type_parameter
                else
                        Error_SyntaxError (yyToken);
                        
-               $$ = new TypeParameter (MemberName.Null, null, Variance.None);
+               $$ = new TypeParameter (MemberName.Null, null, null);
          }
        ;
 
@@ -3300,14 +3312,17 @@ member_initializer
        | OPEN_BRACE expression_list CLOSE_BRACE
          {
                if ($2 == null)
-                       $$ = null;
+                       $$ = new CollectionElementInitializer (GetLocation ($1));
                else
                        $$ = new CollectionElementInitializer ((List<Expression>)$2, GetLocation ($1));
+
+               lbag.AddLocation ($$, GetLocation ($2));
          }
        | OPEN_BRACE CLOSE_BRACE
          {
                report.Error (1920, GetLocation ($1), "An element initializer cannot be empty");
-               $$ = null;
+               $$ = new CollectionElementInitializer (GetLocation ($1));
+               lbag.AddLocation ($$, GetLocation ($2));
          }
        ;
 
@@ -3923,9 +3938,12 @@ unary_expression
                         if (current_anonymous_method is LambdaExpression) {
                                report.Error (4034, GetLocation ($1),
                                        "The `await' operator can only be used when its containing lambda expression is marked with the `async' modifier");
-                       } else if (current_anonymous_method is AnonymousMethodExpression) {
+                       } else if (current_anonymous_method != null) {
                                report.Error (4035, GetLocation ($1),
                                        "The `await' operator can only be used when its containing anonymous method is marked with the `async' modifier");
+                       } else if (interactive_async != null) {
+                               current_block.Explicit.RegisterAsyncAwait ();
+                               interactive_async = true;
                        } else {
                                report.Error (4033, GetLocation ($1),
                                        "The `await' operator can only be used when its containing method is marked with the `async' modifier");
@@ -4647,7 +4665,11 @@ class_declaration
          }
          opt_semicolon 
          {
-               lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($13), GetLocation ($15));
+               if ($15 == null) {
+                       lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($13));
+               } else {
+                       lbag.AppendToMember (current_container, GetLocation ($11), GetLocation ($13), GetLocation ($15));
+               }
                $$ = pop_current_class ();
          }
        ;       
@@ -4779,13 +4801,13 @@ opt_class_base
        : /* empty */
        | COLON type_list
         {
-               current_type.AddBasesForPart ((List<FullNamedExpression>) $2);
+               current_type.SetBaseTypes ((List<FullNamedExpression>) $2);
         }
        | COLON type_list error
          {
                Error_SyntaxError (yyToken);
 
-               current_type.AddBasesForPart ((List<FullNamedExpression>) $2);
+               current_type.SetBaseTypes ((List<FullNamedExpression>) $2);
          }
        ;
 
@@ -4896,7 +4918,7 @@ type_parameter_constraint
 opt_type_parameter_variance
        : /* empty */
          {
-               $$ = Variance.None;
+               $$ = null;
          }
        | type_parameter_variance
          {
@@ -4910,11 +4932,11 @@ opt_type_parameter_variance
 type_parameter_variance
        : OUT
          {
-               $$ = Variance.Covariant;
+               $$ = new VarianceDecl (Variance.Covariant, GetLocation ($1));
          }
        | IN
          {
-               $$ = Variance.Contravariant;
+               $$ = new VarianceDecl (Variance.Contravariant, GetLocation ($1));
          }
        ;
 
@@ -5377,10 +5399,7 @@ interactive_statement_expression
        : expression
          {
                Expression expr = (Expression) $1;
-               ExpressionStatement s;
-
-               s = new OptionalAssign (new SimpleName ("$retval", lexer.Location), expr, lexer.Location);
-               $$ = new StatementExpression (s);
+               $$ = new StatementExpression (new OptionalAssign (expr, lexer.Location));
          }
        | error
          {
@@ -5806,6 +5825,11 @@ throw_statement
                $$ = new Throw ((Expression) $2, GetLocation ($1));
                lbag.AddStatement ($$, GetLocation ($3));
          }
+       | THROW expression error
+         {
+               Error_SyntaxError (yyToken);
+               $$ = new Throw ((Expression) $2, GetLocation ($1));
+         }
        | THROW error
          {
                Error_SyntaxError (yyToken);
@@ -6038,6 +6062,7 @@ fixed_statement
          
                Fixed f = new Fixed ((Fixed.VariableDeclaration) $9, (Statement) $10, GetLocation ($1));
                current_block.AddStatement (f);
+               lbag.AddStatement (f, GetLocation ($2), GetLocation ($8));
                $$ = end_block (GetLocation ($8));
          }
        ;
@@ -6154,7 +6179,9 @@ first_from_clause
          
                var lt = (LocatedToken) $2;
                var rv = new Linq.RangeVariable (lt.Value, lt.Location);
-               $$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, rv, GetLocation ($1)));
+               var clause = new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, rv, GetLocation ($1));
+               lbag.AddLocation (clause, GetLocation ($3));
+               $$ = new Linq.QueryExpression (clause);
          }
        | FROM_FIRST type identifier_inside_body IN expression
          {
@@ -6162,11 +6189,11 @@ first_from_clause
          
                var lt = (LocatedToken) $3;
                var rv = new Linq.RangeVariable (lt.Value, lt.Location);
-               $$ = new Linq.QueryExpression (
-                       new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
+               var clause = new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
                                IdentifierType = (FullNamedExpression)$2
-                       }
-               );
+               };
+               lbag.AddLocation (clause, GetLocation ($4));
+               $$ = new Linq.QueryExpression (clause);
          }
        ;
 
@@ -6177,7 +6204,9 @@ nested_from_clause
          
                var lt = (LocatedToken) $2;
                var rv = new Linq.RangeVariable (lt.Value, lt.Location);
-               $$ = new Linq.QueryExpression (new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, rv, GetLocation ($1)));
+               var clause = new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$4, rv, GetLocation ($1));
+               lbag.AddLocation (clause, GetLocation ($3));
+               $$ = new Linq.QueryExpression (clause);
          }
        | FROM type identifier_inside_body IN expression
          {
@@ -6185,11 +6214,11 @@ nested_from_clause
          
                var lt = (LocatedToken) $3;
                var rv = new Linq.RangeVariable (lt.Value, lt.Location);
-               $$ = new Linq.QueryExpression (
-                       new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
+               var clause = new Linq.QueryStartClause ((Linq.QueryBlock)current_block, (Expression)$5, rv, GetLocation ($1)) {
                                IdentifierType = (FullNamedExpression)$2
-                       }
-               );
+               };
+               lbag.AddLocation (clause, GetLocation ($4));
+               $$ = new Linq.QueryExpression (clause);
          }
        ;
        
@@ -6208,6 +6237,7 @@ from_clause
                current_block = current_block.Parent;
                
                ((Linq.QueryBlock)current_block).AddRangeVariable (sn);
+               lbag.AddLocation ($$, GetLocation ($3));
          }       
        | FROM type identifier_inside_body IN
          {
@@ -6226,6 +6256,8 @@ from_clause
                current_block = current_block.Parent;
                
                ((Linq.QueryBlock)current_block).AddRangeVariable (sn);
+               
+               lbag.AddLocation ($$, GetLocation ($4));
          }
        ;       
 
@@ -6475,6 +6507,7 @@ join_clause
                        $$ = new Linq.Join (block, sn, (Expression)$6, outer_selector, (Linq.QueryBlock) current_block, GetLocation ($1)) {
                                IdentifierType = (FullNamedExpression)$2
                        };
+                       lbag.AddLocation ($$, GetLocation ($3), GetLocation ($6), GetLocation ($9));
                } else {
                        //
                        // Set equals right side parent to beginning of linq query, it is not accessible therefore cannot cause name collisions
@@ -6648,27 +6681,30 @@ interactive_parsing
                        mods |= Modifiers.UNSAFE;
 
                current_local_parameters = pars;
-               Method method = new Method (
+               var method = new InteractiveMethod (
                        current_type,
                        new TypeExpression (compiler.BuiltinTypes.Void, Location.Null),
                        mods,
-                       new MemberName ("Host"),
-                       pars,
-                       null /* attributes */);
+                       pars);
                        
                current_type.AddMember (method);                        
-
                oob_stack.Push (method);
+
+               interactive_async = false;
+
                ++lexer.parsing_block;
                start_block (lexer.Location);
          }             
          interactive_statement_list opt_COMPLETE_COMPLETION
          {
                --lexer.parsing_block;
-               Method method = (Method) oob_stack.Pop ();
-
+               var method = (InteractiveMethod) oob_stack.Pop ();
                method.Block = (ToplevelBlock) end_block(lexer.Location);
 
+               if (interactive_async == true) {
+                       method.ChangeToAsync ();
+               }
+
                InteractiveResult = (Class) pop_current_class ();
                current_local_parameters = null;
          } 
@@ -7002,7 +7038,7 @@ public CSharpParser (SeekableStreamReader reader, CompilationSourceFile file, Re
        lang_version = settings.Version;
        yacc_verbose_flag = settings.VerboseParserFlag;
        doc_support = settings.DocumentationFile != null;
-       lexer = new Tokenizer (reader, file, session);
+       lexer = new Tokenizer (reader, file, session, report);
        oob_stack = new Stack<object> ();
        lbag = session.LocationsBag;
        use_global_stacks = session.UseJayGlobalArrays;
index b59aab461834e328f5b85890045af3f97b3fbd8f..2018829ed04559aafcf5829061b5792b399d42b1 100644 (file)
@@ -188,6 +188,8 @@ namespace Mono.CSharp
                readonly SeekableStreamReader reader;
                readonly CompilationSourceFile source_file;
                readonly CompilerContext context;
+               readonly Report Report;
+
 
                SourceFile current_source;
                Location hidden_block_start;
@@ -250,6 +252,9 @@ namespace Mono.CSharp
                public const int EvalCompilationUnitParserCharacter = 0x100001;
                public const int EvalUsingDeclarationsParserCharacter = 0x100002;
                public const int DocumentationXref = 0x100003;
+
+               const int UnicodeLS = 0x2028;
+               const int UnicodePS = 0x2029;
                
                //
                // XML documentation buffer. The save point is used to divide
@@ -427,7 +432,7 @@ namespace Mono.CSharp
                        }
                }
 
-               public Tokenizer (SeekableStreamReader input, CompilationSourceFile file, ParserSession session)
+               public Tokenizer (SeekableStreamReader input, CompilationSourceFile file, ParserSession session, Report report)
                {
                        this.source_file = file;
                        this.context = file.Compiler;
@@ -436,6 +441,7 @@ namespace Mono.CSharp
                        this.id_builder = session.IDBuilder;
                        this.number_builder = session.NumberBuilder;
                        this.ltb = new LocatedTokenBuffer (session.LocatedTokens);
+                       this.Report = report;
 
                        reader = input;
 
@@ -1806,18 +1812,25 @@ namespace Mono.CSharp
                                x = reader.Read ();
                        }
                        
-                       if (x == '\r') {
-                               if (peek_char () == '\n') {
-                                       putback_char = -1;
-                               }
+                       if (x <= 13) {
+                               if (x == '\r') {
+                                       if (peek_char () == '\n') {
+                                               putback_char = -1;
+                                       }
 
-                               x = '\n';
-                               advance_line ();
-                       } else if (x == '\n') {
+                                       x = '\n';
+                                       advance_line ();
+                               } else if (x == '\n') {
+                                       advance_line ();
+                               } else {
+                                       col++;
+                               }
+                       } else if (x >= UnicodeLS && x <= UnicodePS) {
                                advance_line ();
                        } else {
                                col++;
                        }
+
                        return x;
                }
 
@@ -1849,7 +1862,7 @@ namespace Mono.CSharp
                                throw new InternalErrorException (string.Format ("Secondary putback [{0}] putting back [{1}] is not allowed", (char)putback_char, (char) c), Location);
                        }
 
-                       if (c == '\n' || col == 0) {
+                       if (c == '\n' || col == 0 || (c >= UnicodeLS && c <= UnicodePS)) {
                                // It won't happen though.
                                line--;
                                ref_line--;
@@ -1931,7 +1944,7 @@ namespace Mono.CSharp
                        int has_identifier_argument = (int)(cmd & PreprocessorDirective.RequiresArgument);
                        int pos = 0;
 
-                       while (c != -1 && c != '\n') {
+                       while (c != -1 && c != '\n' && c != UnicodeLS && c != UnicodePS) {
                                if (c == '\\' && has_identifier_argument >= 0) {
                                        if (has_identifier_argument != 0) {
                                                has_identifier_argument = 1;
@@ -1958,10 +1971,7 @@ namespace Mono.CSharp
                                        // Eat single-line comments
                                        //
                                        get_char ();
-                                       do {
-                                               c = get_char ();
-                                       } while (c != -1 && c != '\n');
-
+                                       ReadToEndOfLine ();
                                        break;
                                }
 
@@ -2023,10 +2033,7 @@ namespace Mono.CSharp
                                //
                                // Eat any remaining characters to continue parsing on next line
                                //
-                               while (c != -1 && c != '\n') {
-                                       c = get_char ();
-                               }
-
+                               ReadToEndOfLine ();
                                return false;
                        }
 
@@ -2035,10 +2042,7 @@ namespace Mono.CSharp
                                //
                                // Eat any remaining characters to continue parsing on next line
                                //
-                               while (c != -1 && c != '\n') {
-                                       c = get_char ();
-                               }
-
+                               ReadToEndOfLine ();
                                return new_line != 0;
                        }
 
@@ -2052,13 +2056,11 @@ namespace Mono.CSharp
                                c = 0;
                        }
 
-                       if (c != '\n' && c != '/' && c != '"') {
+                       if (c != '\n' && c != '/' && c != '"' && c != UnicodeLS && c != UnicodePS) {
                                //
                                // Eat any remaining characters to continue parsing on next line
                                //
-                               while (c != -1 && c != '\n') {
-                                       c = get_char ();
-                               }
+                               ReadToEndOfLine ();
 
                                Report.Error (1578, loc, "Filename, single-line comment or end-of-line expected");
                                return true;
@@ -2074,16 +2076,15 @@ namespace Mono.CSharp
                                }
                        }
 
-                       if (c == '\n') {
+                       if (c == '\n' || c == UnicodeLS || c == UnicodePS) {
+
                        } else if (c == '/') {
                                ReadSingleLineComment ();
                        } else {
                                //
                                // Eat any remaining characters to continue parsing on next line
                                //
-                               while (c != -1 && c != '\n') {
-                                       c = get_char ();
-                               }
+                               ReadToEndOfLine ();
 
                                Error_EndLineExpected ();
                                return true;
@@ -2318,7 +2319,7 @@ namespace Mono.CSharp
                string TokenizeFileName (ref int c)
                {
                        var string_builder = new StringBuilder ();
-                       while (c != -1 && c != '\n') {
+                       while (c != -1 && c != '\n' && c != UnicodeLS && c != UnicodePS) {
                                c = get_char ();
                                if (c == '"') {
                                        c = get_char ();
@@ -2366,31 +2367,34 @@ namespace Mono.CSharp
                                        Report.Warning (1692, 1, Location, "Invalid number");
 
                                        // Read everything till the end of the line or file
-                                       do {
-                                               c = get_char ();
-                                       } while (c != -1 && c != '\n');
+                                       ReadToEndOfLine ();
                                }
                        }
 
                        return number;
                }
 
+               void ReadToEndOfLine ()
+               {
+                       int c;
+                       do {
+                               c = get_char ();
+                       } while (c != -1 && c != '\n' && c != UnicodeLS && c != UnicodePS);
+               }
+
                void ReadSingleLineComment ()
                {
                        if (peek_char () != '/')
                                Report.Warning (1696, 1, Location, "Single-line comment or end-of-line expected");
 
                        // Read everything till the end of the line or file
-                       int c;
-                       do {
-                               c = get_char ();
-                       } while (c != -1 && c != '\n');
+                       ReadToEndOfLine ();
                }
 
                /// <summary>
                /// Handles #pragma directive
                /// </summary>
-               void ParsePragmaDirective (string arg)
+               void ParsePragmaDirective ()
                {
                        int c;
                        int length = TokenizePreprocessorIdentifier (out c);
@@ -2410,7 +2414,7 @@ namespace Mono.CSharp
 
                                                var loc = Location;
 
-                                               if (c == '\n' || c == '/') {
+                                               if (c == '\n' || c == '/' || c == UnicodeLS || c == UnicodePS) {
                                                        if (c == '/')
                                                                ReadSingleLineComment ();
 
@@ -2436,7 +2440,7 @@ namespace Mono.CSharp
                                                                                Report.RegisterWarningRegion (loc).WarningEnable (loc, code, context);
                                                                        }
                                                                }
-                                                       } while (code >= 0 && c != '\n' && c != -1);
+                                                       } while (code >= 0 && c != '\n' && c != -1 && c != UnicodeLS && c != UnicodePS);
                                                }
 
                                                return;
@@ -2446,8 +2450,7 @@ namespace Mono.CSharp
                                Report.Warning (1634, 1, Location, "Expected disable or restore");
 
                                // Eat any remaining characters on the line
-                               while (c != '\n' && c != -1)
-                                       c = get_char ();
+                               ReadToEndOfLine ();
 
                                return;
                        }
@@ -2861,7 +2864,7 @@ namespace Mono.CSharp
                                        Report.FeatureIsNotAvailable (context, Location, "#pragma");
                                }
 
-                               ParsePragmaDirective (arg);
+                               ParsePragmaDirective ();
                                return true;
 
                        case PreprocessorDirective.Line:
@@ -2927,7 +2930,7 @@ namespace Mono.CSharp
                                        return Token.LITERAL;
                                }
 
-                               if (c == '\n') {
+                               if (c == '\n' || c == UnicodeLS || c == UnicodePS) {
                                        if (!quoted) {
                                                Report.Error (1010, Location, "Newline in constant");
 
@@ -3150,6 +3153,8 @@ namespace Mono.CSharp
                                        case '\v':
                                        case '\r':
                                        case '\n':
+                                       case UnicodeLS:
+                                       case UnicodePS:
                                        case '/':
                                                next = peek_token ();
                                                if (next == Token.COMMA || next == Token.CLOSE_BRACKET)
@@ -3180,6 +3185,7 @@ namespace Mono.CSharp
                                                case Token.FOREACH:
                                                case Token.TYPEOF:
                                                case Token.WHILE:
+                                               case Token.SWITCH:
                                                case Token.USING:
                                                case Token.DEFAULT:
                                                case Token.DELEGATE:
@@ -3367,7 +3373,7 @@ namespace Mono.CSharp
                                                        }
                                                }
 
-                                               while ((d = get_char ()) != -1 && d != '\n');
+                                               ReadToEndOfLine ();
 
                                                any_token_seen |= tokens_seen;
                                                tokens_seen = false;
@@ -3405,7 +3411,7 @@ namespace Mono.CSharp
                                                        if (docAppend)
                                                                xml_comment_buffer.Append ((char) d);
                                                        
-                                                       if (d == '\n'){
+                                                       if (d == '\n' || d == UnicodeLS || d == UnicodePS){
                                                                any_token_seen |= tokens_seen;
                                                                tokens_seen = false;
                                                                // 
@@ -3455,6 +3461,8 @@ namespace Mono.CSharp
                                        return is_number (c, false);
 
                                case '\n': // white space
+                               case UnicodeLS:
+                               case UnicodePS:
                                        any_token_seen |= tokens_seen;
                                        tokens_seen = false;
                                        comments_seen = false;
@@ -3491,7 +3499,7 @@ namespace Mono.CSharp
                                                        continue;
                                                }
 
-                                               if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\v' )
+                                               if (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '\v' || c == UnicodeLS || c == UnicodePS)
                                                        continue;
 
                                                if (c == '#') {
@@ -3575,7 +3583,7 @@ namespace Mono.CSharp
                                return Token.LITERAL;
                        }
 
-                       if (c == '\n') {
+                       if (c == '\n' || c == UnicodeLS || c == UnicodePS) {
                                Report.Error (1010, start_location, "Newline in constant");
                                return Token.ERROR;
                        }
@@ -3596,7 +3604,7 @@ namespace Mono.CSharp
 
                                // Try to recover, read until newline or next "'"
                                while ((c = get_char ()) != -1) {
-                                       if (c == '\n' || c == '\'')
+                                       if (c == '\n' || c == '\'' || c == UnicodeLS || c == UnicodePS)
                                                break;
                                }
                        }
@@ -3725,10 +3733,6 @@ namespace Mono.CSharp
                        return null;
                }
 
-               Report Report {
-                       get { return context.Report; }
-               }
-
                void reset_doc_comment ()
                {
                        xml_comment_buffer.Length = 0;
index e7f27aa7d626a32151675707335df0dc6312ff5f..56d423ad23d6ccb754014c5a28a574cb027f69f1 100644 (file)
@@ -303,7 +303,7 @@ namespace Mono.CSharp {
                /// </summary>
                internal Flags caching_flags;
 
-               public MemberCore (TypeContainer parent, MemberName name, Attributes attrs)
+               protected MemberCore (TypeContainer parent, MemberName name, Attributes attrs)
                {
                        this.Parent = parent;
                        member_name = name;
@@ -435,7 +435,7 @@ namespace Mono.CSharp {
                                if ((mod_flags & Modifiers.COMPILER_GENERATED) != 0)
                                        return true;
 
-                               return Parent == null ? false : Parent.IsCompilerGenerated;
+                               return Parent != null && Parent.IsCompilerGenerated;
                        }
                }
 
@@ -884,7 +884,7 @@ namespace Mono.CSharp {
                                if (GetAttributeObsolete () != null)
                                        return true;
 
-                               return Parent == null ? false : Parent.IsObsolete;
+                               return Parent != null && Parent.IsObsolete;
                        }
                }
 
@@ -893,7 +893,7 @@ namespace Mono.CSharp {
                                if ((ModFlags & Modifiers.UNSAFE) != 0)
                                        return true;
 
-                               return Parent == null ? false : Parent.IsUnsafe;
+                               return Parent != null && Parent.IsUnsafe;
                        }
                }
 
@@ -1085,7 +1085,12 @@ namespace Mono.CSharp {
                // will contain types only but it can have numerous values for members
                // like methods where both return type and all parameters are checked
                //
-               public List<TypeSpec> GetMissingDependencies ()
+               public List<MissingTypeSpecReference> GetMissingDependencies ()
+               {
+                       return GetMissingDependencies (this);
+               }
+
+               public List<MissingTypeSpecReference> GetMissingDependencies (MemberSpec caller)
                {
                        if ((state & (StateFlags.MissingDependency | StateFlags.MissingDependency_Undetected)) == 0)
                                return null;
@@ -1093,11 +1098,11 @@ namespace Mono.CSharp {
                        state &= ~StateFlags.MissingDependency_Undetected;
 
                        var imported = definition as ImportedDefinition;
-                       List<TypeSpec> missing;
+                       List<MissingTypeSpecReference> missing;
                        if (imported != null) {
-                               missing = ResolveMissingDependencies ();
+                               missing = ResolveMissingDependencies (caller);
                        } else if (this is ElementTypeSpec) {
-                               missing = ((ElementTypeSpec) this).Element.GetMissingDependencies ();
+                               missing = ((ElementTypeSpec) this).Element.GetMissingDependencies (caller);
                        } else {
                                missing = null;
                        }
@@ -1109,7 +1114,7 @@ namespace Mono.CSharp {
                        return missing;
                }
 
-               public abstract List<TypeSpec> ResolveMissingDependencies ();
+               public abstract List<MissingTypeSpecReference> ResolveMissingDependencies (MemberSpec caller);
 
                protected virtual bool IsNotCLSCompliant (out bool attrValue)
                {
@@ -1161,7 +1166,7 @@ namespace Mono.CSharp {
                        var ctype = ctx.CurrentType;
 
                        if (ma == Modifiers.PRIVATE) {
-                               if (ctype == null)
+                               if (ctype == null || parentType == null)
                                        return false;
                                //
                                // It's only accessible to the current class or children
@@ -1227,7 +1232,7 @@ namespace Mono.CSharp {
                        return (state & StateFlags.CLSCompliant) != 0;
                }
 
-               public bool IsConditionallyExcluded (IMemberContext ctx, Location loc)
+               public bool IsConditionallyExcluded (IMemberContext ctx)
                {
                        if ((Kind & (MemberKind.Class | MemberKind.Method)) == 0)
                                return false;
index 13a2a4c7bcf971abd38c1b322d7cf01d890b441c..cabb7dff00e4939721b22f07060adef398eabdf0 100644 (file)
@@ -181,7 +181,7 @@ namespace Mono.CSharp {
                                return false;
                        }
 
-                       TypeManager.CheckTypeVariance (ret_type, Variance.Covariant, this);
+                       VarianceDecl.CheckTypeVariance (ret_type, Variance.Covariant, this);
 
                        var resolved_rt = new TypeExpression (ret_type, Location);
                        InvokeBuilder = new Method (this, resolved_rt, MethodModifiers, new MemberName (InvokeMethodName), p, null);
@@ -191,13 +191,13 @@ namespace Mono.CSharp {
                        // Don't emit async method for compiler generated delegates (e.g. dynamic site containers)
                        //
                        if (!IsCompilerGenerated) {
-                               DefineAsyncMethods (Parameters.CallingConvention, resolved_rt);
+                               DefineAsyncMethods (resolved_rt);
                        }
 
                        return true;
                }
 
-               void DefineAsyncMethods (CallingConventions cc, TypeExpression returnType)
+               void DefineAsyncMethods (TypeExpression returnType)
                {
                        var iasync_result = Module.PredefinedTypes.IAsyncResult;
                        var async_callback = Module.PredefinedTypes.AsyncCallback;
@@ -454,7 +454,7 @@ namespace Mono.CSharp {
                        Arguments delegate_arguments = new Arguments (pd.Count);
                        for (int i = 0; i < pd.Count; ++i) {
                                Argument.AType atype_modifier;
-                               switch (pd.FixedParameters [i].ModFlags) {
+                               switch (pd.FixedParameters [i].ModFlags & Parameter.Modifier.RefOutMask) {
                                case Parameter.Modifier.REF:
                                        atype_modifier = Argument.AType.Ref;
                                        break;
@@ -541,7 +541,7 @@ namespace Mono.CSharp {
                                Error_ConversionFailed (ec, delegate_method, ret_expr);
                        }
 
-                       if (delegate_method.IsConditionallyExcluded (ec, loc)) {
+                       if (delegate_method.IsConditionallyExcluded (ec)) {
                                ec.Report.SymbolRelatedToPreviousError (delegate_method);
                                MethodOrOperator m = delegate_method.MemberDefinition as MethodOrOperator;
                                if (m != null && m.IsPartialDefinition) {
@@ -663,7 +663,7 @@ namespace Mono.CSharp {
                //
                // Returns true when type is MVAR or has MVAR reference
                //
-               static bool ContainsMethodTypeParameter (TypeSpec type)
+               public static bool ContainsMethodTypeParameter (TypeSpec type)
                {
                        var tps = type as TypeParameterSpec;
                        if (tps != null)
@@ -686,7 +686,7 @@ namespace Mono.CSharp {
                {
                        var expr = base.DoResolve (ec);
                        if (expr == null)
-                               return null;
+                               return ErrorExpression.Instance;
 
                        if (ec.IsInProbingMode)
                                return expr;
@@ -857,7 +857,7 @@ namespace Mono.CSharp {
                        //
                        var call = new CallEmitter ();
                        call.InstanceExpression = InstanceExpr;
-                       call.EmitPredefined (ec, method, arguments);
+                       call.EmitPredefined (ec, method, arguments, loc);
                }
 
                public override void EmitStatement (EmitContext ec)
index 46fdb3c9e1555239000539caa08551ed7ee1273f..4abcf6a0ef40a10f85aa879270c0495c22b161f6 100644 (file)
@@ -147,16 +147,13 @@ namespace Mono.CSharp
                                }
 
                                // FIXME: it could be done with XmlReader
-                               var ds_target = mc as TypeContainer;
-                               if (ds_target == null)
-                                       ds_target = mc.Parent;
 
                                foreach (XmlElement see in n.SelectNodes (".//see"))
-                                       HandleSee (mc, ds_target, see);
+                                       HandleSee (mc, see);
                                foreach (XmlElement seealso in n.SelectNodes (".//seealso"))
-                                       HandleSeeAlso (mc, ds_target, seealso);
+                                       HandleSeeAlso (mc, seealso);
                                foreach (XmlElement see in n.SelectNodes (".//exception"))
-                                       HandleException (mc, ds_target, see);
+                                       HandleException (mc, see);
                                foreach (XmlElement node in n.SelectNodes (".//typeparam"))
                                        HandleTypeParam (mc, node);
                                foreach (XmlElement node in n.SelectNodes (".//typeparamref"))
@@ -228,25 +225,25 @@ namespace Mono.CSharp
                //
                // Handles <see> elements.
                //
-               void HandleSee (MemberCore mc, TypeContainer ds, XmlElement see)
+               void HandleSee (MemberCore mc, XmlElement see)
                {
-                       HandleXrefCommon (mc, ds, see);
+                       HandleXrefCommon (mc, see);
                }
 
                //
                // Handles <seealso> elements.
                //
-               void HandleSeeAlso (MemberCore mc, TypeContainer ds, XmlElement seealso)
+               void HandleSeeAlso (MemberCore mc, XmlElement seealso)
                {
-                       HandleXrefCommon (mc, ds, seealso);
+                       HandleXrefCommon (mc, seealso);
                }
 
                //
                // Handles <exception> elements.
                //
-               void HandleException (MemberCore mc, TypeContainer ds, XmlElement seealso)
+               void HandleException (MemberCore mc, XmlElement seealso)
                {
-                       HandleXrefCommon (mc, ds, seealso);
+                       HandleXrefCommon (mc, seealso);
                }
 
                //
@@ -319,7 +316,7 @@ namespace Mono.CSharp
                //
                // Processes "see" or "seealso" elements from cref attribute.
                //
-               void HandleXrefCommon (MemberCore mc, TypeContainer ds, XmlElement xref)
+               void HandleXrefCommon (MemberCore mc, XmlElement xref)
                {
                        string cref = xref.GetAttribute ("cref");
                        // when, XmlReader, "if (cref == null)"
@@ -340,7 +337,7 @@ namespace Mono.CSharp
                        var report = new Report (doc_module.Compiler, new NullReportPrinter ());
 
                        if (session == null)
-                               session = new ParserSession () {
+                               session = new ParserSession {
                                        UseJayGlobalArrays = true
                                };
 
index 45c9719ea6a51b987ade77acc0da32e5fa0b18b5..ad1853a4a4ea530bf1bb1d25ff27c468477487ca 100644 (file)
@@ -57,7 +57,7 @@ namespace Mono.CSharp
                                SeekableStreamReader reader = new SeekableStreamReader (input, ctx.Settings.Encoding);
                                var file = new CompilationSourceFile (module, sourceFile);
 
-                               Tokenizer lexer = new Tokenizer (reader, file, session);
+                               Tokenizer lexer = new Tokenizer (reader, file, session, ctx.Report);
                                int token, tokens = 0, errors = 0;
 
                                while ((token = lexer.token ()) != Token.EOF){
@@ -78,7 +78,7 @@ namespace Mono.CSharp
 
                        Location.Initialize (sources);
 
-                       var session = new ParserSession () {
+                       var session = new ParserSession {
                                UseJayGlobalArrays = true,
                                LocatedTokens = new LocatedToken[15000]
                        };
index 0246c43a1b67fa9cba25972b19e283fd7558a5b2..2124f0fda088d89e5febb0092edb68e3dd115246 100644 (file)
@@ -224,8 +224,8 @@ namespace Mono.CSharp
                //
                protected class BinderFlags : EnumConstant
                {
-                       DynamicExpressionStatement statement;
-                       CSharpBinderFlags flags;
+                       readonly DynamicExpressionStatement statement;
+                       readonly CSharpBinderFlags flags;
 
                        public BinderFlags (CSharpBinderFlags flags, DynamicExpressionStatement statement)
                                : base (statement.loc)
@@ -391,7 +391,7 @@ namespace Mono.CSharp
                        if (!has_ref_out_argument) {
                                string d_name = isStatement ? "Action" : "Func";
 
-                               TypeExpr te = null;
+                               TypeSpec te = null;
                                Namespace type_ns = module.GlobalRootNamespace.GetNamespace ("System", true);
                                if (type_ns != null) {
                                        te = type_ns.LookupType (module, d_name, dyn_args_count + default_args, LookupMode.Normal, loc);
@@ -412,9 +412,9 @@ namespace Mono.CSharp
                                                targs[targs.Length - 1] = new TypeExpression (t, loc);
                                        }
 
-                                       del_type = new GenericTypeExpr (te.Type, new TypeArguments (targs), loc);
+                                       del_type = new GenericTypeExpr (te, new TypeArguments (targs), loc);
                                        if (targs_for_instance != null)
-                                               del_type_instance_access = new GenericTypeExpr (te.Type, new TypeArguments (targs_for_instance), loc);
+                                               del_type_instance_access = new GenericTypeExpr (te, new TypeArguments (targs_for_instance), loc);
                                        else
                                                del_type_instance_access = del_type;
                                }
index a9edf6f470bad70c426c02ca64767695036647cb..0e2cb2a6bcaf424321ed472c98a6eaee9de34433 100644 (file)
@@ -315,7 +315,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public void Error_TypeArgumentsCannotBeUsed (IMemberContext context, MemberSpec member, int arity, Location loc)
+               public void Error_TypeArgumentsCannotBeUsed (IMemberContext context, MemberSpec member, Location loc)
                {
                        // Better message for possible generic expressions
                        if (member != null && (member.Kind & MemberKind.GenericMask) != 0) {
@@ -339,7 +339,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public void Error_TypeArgumentsCannotBeUsed (IMemberContext context, string exprType, string name, Location loc)
+               public static void Error_TypeArgumentsCannotBeUsed (IMemberContext context, string exprType, string name, Location loc)
                {
                        context.Module.Compiler.Report.Error (307, loc, "The {0} `{1}' cannot be used with type arguments",
                                exprType, name);
@@ -373,6 +373,11 @@ namespace Mono.CSharp {
                        rc.Report.Error (242, loc, "The operation in question is undefined on void pointers");
                }
 
+               public static void Warning_UnreachableExpression (ResolveContext rc, Location loc)
+               {
+                       rc.Report.Warning (429, 4, loc, "Unreachable expression code detected");
+               }
+
                public ResolveFlags ExprClassToResolveFlags {
                        get {
                                switch (eclass) {
@@ -435,8 +440,14 @@ namespace Mono.CSharp {
                /// </remarks>
                public Expression Resolve (ResolveContext ec, ResolveFlags flags)
                {
-                       if (eclass != ExprClass.Unresolved)
+                       if (eclass != ExprClass.Unresolved) {
+                               if ((flags & ExprClassToResolveFlags) == 0) {
+                                       Error_UnexpectedKind (ec, flags, loc);
+                                       return null;
+                               }
+
                                return this;
+                       }
                        
                        Expression e;
                        try {
@@ -455,7 +466,8 @@ namespace Mono.CSharp {
 
                                return e;
                        } catch (Exception ex) {
-                               if (loc.IsNull || ec.Module.Compiler.Settings.DebugFlags > 0 || ex is CompletionResult || ec.Report.IsDisabled || ex is FatalException)
+                               if (loc.IsNull || ec.Module.Compiler.Settings.DebugFlags > 0 || ex is CompletionResult || ec.Report.IsDisabled || ex is FatalException ||
+                                       ec.Report.Printer is NullReportPrinter)
                                        throw;
 
                                ec.Report.Error (584, loc, "Internal compiler error: {0}", ex.Message);
@@ -511,6 +523,23 @@ namespace Mono.CSharp {
                        return e;
                }
 
+               public Constant ResolveLabelConstant (ResolveContext rc)
+               {
+                       var expr = Resolve (rc);
+                       if (expr == null)
+                               return null;
+
+                       Constant c = expr as Constant;
+                       if (c == null) {
+                               if (expr.type != InternalType.ErrorType)
+                                       rc.Report.Error (150, expr.StartLocation, "A constant value is expected");
+
+                               return null;
+                       }
+
+                       return c;
+               }
+
                public virtual void EncodeAttributeValue (IMemberContext rc, AttributeEncoder enc, TypeSpec targetType)
                {
                        rc.Module.Compiler.Report.Error (182, loc,
@@ -761,8 +790,18 @@ namespace Mono.CSharp {
                                        }
 
                                        if ((restrictions & MemberLookupRestrictions.InvocableOnly) != 0) {
-                                               if (member is MethodSpec)
+                                               if (member is MethodSpec) {
+                                                       //
+                                                       // Interface members that are hidden by class members are removed from the set. This
+                                                       // step only has an effect if T is a type parameter and T has both an effective base 
+                                                       // class other than object and a non-empty effective interface set
+                                                       //
+                                                       var tps = queried_type as TypeParameterSpec;
+                                                       if (tps != null && tps.HasTypeConstraint)
+                                                               members = RemoveHiddenTypeParameterMethods (members);
+
                                                        return new MethodGroupExpr (members, queried_type, loc);
+                                               }
 
                                                if (!Invocation.IsMemberInvocable (member))
                                                        continue;
@@ -817,6 +856,54 @@ namespace Mono.CSharp {
                        return null;
                }
 
+               static IList<MemberSpec> RemoveHiddenTypeParameterMethods (IList<MemberSpec> members)
+               {
+                       if (members.Count < 2)
+                               return members;
+
+                       //
+                       // If M is a method, then all non-method members declared in an interface declaration
+                       // are removed from the set, and all methods with the same signature as M declared in
+                       // an interface declaration are removed from the set
+                       //
+
+                       bool copied = false;
+                       for (int i = 0; i < members.Count; ++i) {
+                               var method = members[i] as MethodSpec;
+                               if (method == null) {
+                                       if (!copied) {
+                                               copied = true;
+                                               members = new List<MemberSpec> (members);
+                                       } 
+                                       
+                                       members.RemoveAt (i--);
+                                       continue;
+                               }
+
+                               if (!method.DeclaringType.IsInterface)
+                                       continue;
+
+                               for (int ii = 0; ii < members.Count; ++ii) {
+                                       var candidate = members[ii] as MethodSpec;
+                                       if (candidate == null || !candidate.DeclaringType.IsClass)
+                                               continue;
+
+                                       if (!TypeSpecComparer.Override.IsEqual (candidate.Parameters, method.Parameters))
+                                               continue;
+
+                                       if (!copied) {
+                                               copied = true;
+                                               members = new List<MemberSpec> (members);
+                                       }
+
+                                       members.RemoveAt (i--);
+                                       break;
+                               }
+                       }
+
+                       return members;
+               }
+
                protected virtual void Error_NegativeArrayIndex (ResolveContext ec, Location loc)
                {
                        throw new NotImplementedException ();
@@ -907,7 +994,7 @@ namespace Mono.CSharp {
                /// <summary>
                ///   Reports that we were expecting `expr' to be of class `expected'
                /// </summary>
-               public void Error_UnexpectedKind (IMemberContext ctx, Expression memberExpr, string expected, string was, Location loc)
+               public static void Error_UnexpectedKind (IMemberContext ctx, Expression memberExpr, string expected, string was, Location loc)
                {
                        var name = memberExpr.GetSignatureForError ();
 
@@ -1253,8 +1340,20 @@ namespace Mono.CSharp {
                public static Expression Create (Expression child, TypeSpec type)
                {
                        Constant c = child as Constant;
-                       if (c != null)
-                               return new EmptyConstantCast (c, type);
+                       if (c != null) {
+                               var enum_constant = c as EnumConstant;
+                               if (enum_constant != null)
+                                       c = enum_constant.Child;
+
+                               if (!(c is ReducedExpression.ReducedConstantExpression)) {
+                                       if (c.Type == type)
+                                               return c;
+
+                                       var res = c.ConvertImplicitly (type);
+                                       if (res != null)
+                                               return res;
+                               }
+                       }
 
                        EmptyCast e = child as EmptyCast;
                        if (e != null)
@@ -1536,7 +1635,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public override Constant ConvertExplicitly(bool in_checked_context, TypeSpec target_type)
+               public override Constant ConvertExplicitly (bool in_checked_context, TypeSpec target_type)
                {
                        if (Child.Type == target_type)
                                return Child;
@@ -1680,7 +1779,11 @@ namespace Mono.CSharp {
                public override void Emit (EmitContext ec)
                {
                        base.Emit (ec);
+                       Emit (ec, mode);
+               }
 
+               public static void Emit (EmitContext ec, Mode mode)
+               {
                        if (ec.HasSet (EmitContext.Options.CheckedScope)) {
                                switch (mode){
                                case Mode.I1_U1: ec.Emit (OpCodes.Conv_Ovf_U1); break;
@@ -1949,7 +2052,7 @@ namespace Mono.CSharp {
        //
        public class ReducedExpression : Expression
        {
-               sealed class ReducedConstantExpression : EmptyConstantCast
+               public sealed class ReducedConstantExpression : EmptyConstantCast
                {
                        readonly Expression orig_expr;
 
@@ -1959,6 +2062,12 @@ namespace Mono.CSharp {
                                this.orig_expr = orig_expr;
                        }
 
+                       public Expression OriginalExpression {
+                               get {
+                                       return orig_expr;
+                               }
+                       }
+
                        public override Constant ConvertImplicitly (TypeSpec target_type)
                        {
                                Constant c = base.ConvertImplicitly (target_type);
@@ -2361,7 +2470,7 @@ namespace Mono.CSharp {
 
                protected override Expression DoResolve (ResolveContext rc)
                {
-                       var e = SimpleNameResolve (rc, null, false);
+                       var e = SimpleNameResolve (rc, null);
 
                        var fe = e as FieldExpr;
                        if (fe != null) {
@@ -2373,7 +2482,7 @@ namespace Mono.CSharp {
 
                public override Expression DoResolveLValue (ResolveContext ec, Expression right_side)
                {
-                       return SimpleNameResolve (ec, right_side, false);
+                       return SimpleNameResolve (ec, right_side);
                }
 
                protected virtual void Error_TypeOrNamespaceNotFound (IMemberContext ctx)
@@ -2381,7 +2490,7 @@ namespace Mono.CSharp {
                        if (ctx.CurrentType != null) {
                                var member = MemberLookup (ctx, false, ctx.CurrentType, Name, 0, MemberLookupRestrictions.ExactArity, loc) as MemberExpr;
                                if (member != null) {
-                                       member.Error_UnexpectedKind (ctx, member, "type", member.KindName, loc);
+                                       Error_UnexpectedKind (ctx, member, "type", member.KindName, loc);
                                        return;
                                }
                        }
@@ -2397,7 +2506,7 @@ namespace Mono.CSharp {
 
                        retval = ctx.LookupNamespaceOrType (Name, -System.Math.Max (1, Arity), LookupMode.Probing, loc);
                        if (retval != null) {
-                               Error_TypeArgumentsCannotBeUsed (ctx, retval.Type, Arity, loc);
+                               Error_TypeArgumentsCannotBeUsed (ctx, retval.Type, loc);
                                return;
                        }
 
@@ -2420,15 +2529,15 @@ namespace Mono.CSharp {
                        }
                }
 
-               public override FullNamedExpression ResolveAsTypeOrNamespace (IMemberContext ec)
+               public override FullNamedExpression ResolveAsTypeOrNamespace (IMemberContext mc)
                {
-                       FullNamedExpression fne = ec.LookupNamespaceOrType (Name, Arity, LookupMode.Normal, loc);
+                       FullNamedExpression fne = mc.LookupNamespaceOrType (Name, Arity, LookupMode.Normal, loc);
 
                        if (fne != null) {
                                if (fne.Type != null && Arity > 0) {
                                        if (HasTypeArguments) {
                                                GenericTypeExpr ct = new GenericTypeExpr (fne.Type, targs, loc);
-                                               if (ct.ResolveAsType (ec) == null)
+                                               if (ct.ResolveAsType (mc) == null)
                                                        return null;
 
                                                return ct;
@@ -2444,21 +2553,21 @@ namespace Mono.CSharp {
                                        return fne;
                        }
 
-                       if (Arity == 0 && Name == "dynamic" && ec.Module.Compiler.Settings.Version > LanguageVersion.V_3) {
-                               if (!ec.Module.PredefinedAttributes.Dynamic.IsDefined) {
-                                       ec.Module.Compiler.Report.Error (1980, Location,
+                       if (Arity == 0 && Name == "dynamic" && mc.Module.Compiler.Settings.Version > LanguageVersion.V_3) {
+                               if (!mc.Module.PredefinedAttributes.Dynamic.IsDefined) {
+                                       mc.Module.Compiler.Report.Error (1980, Location,
                                                "Dynamic keyword requires `{0}' to be defined. Are you missing System.Core.dll assembly reference?",
-                                               ec.Module.PredefinedAttributes.Dynamic.GetSignatureForError ());
+                                               mc.Module.PredefinedAttributes.Dynamic.GetSignatureForError ());
                                }
 
                                fne = new DynamicTypeExpr (loc);
-                               fne.ResolveAsType (ec);
+                               fne.ResolveAsType (mc);
                        }
 
                        if (fne != null)
                                return fne;
 
-                       Error_TypeOrNamespaceNotFound (ec);
+                       Error_TypeOrNamespaceNotFound (mc);
                        return null;
                }
 
@@ -2626,7 +2735,7 @@ namespace Mono.CSharp {
                                                } else {
                                                        var me = MemberLookup (rc, false, rc.CurrentType, Name, Arity, restrictions & ~MemberLookupRestrictions.InvocableOnly, loc) as MemberExpr;
                                                        if (me != null) {
-                                                               me.Error_UnexpectedKind (rc, me, "method group", me.KindName, loc);
+                                                               Error_UnexpectedKind (rc, me, "method group", me.KindName, loc);
                                                                return ErrorExpression.Instance;
                                                        }
                                                }
@@ -2634,12 +2743,15 @@ namespace Mono.CSharp {
                                                e = rc.LookupNamespaceOrType (Name, -System.Math.Max (1, Arity), LookupMode.Probing, loc);
                                                if (e != null) {
                                                        if (e.Type.Arity != Arity) {
-                                                               Error_TypeArgumentsCannotBeUsed (rc, e.Type, Arity, loc);
+                                                               Error_TypeArgumentsCannotBeUsed (rc, e.Type, loc);
                                                                return e;
                                                        }
 
                                                        if (e is TypeExpr) {
-                                                               e.Error_UnexpectedKind (rc, e, "variable", e.ExprClassName, loc);
+                                                               // TypeExpression does not have correct location
+                                                               if (e is TypeExpression)
+                                                                       e = new TypeExpression (e.Type, loc);
+
                                                                return e;
                                                        }
                                                }
@@ -2661,19 +2773,19 @@ namespace Mono.CSharp {
                        }
                }
                
-               Expression SimpleNameResolve (ResolveContext ec, Expression right_side, bool intermediate)
+               Expression SimpleNameResolve (ResolveContext ec, Expression right_side)
                {
                        Expression e = LookupNameExpression (ec, right_side == null ? MemberLookupRestrictions.ReadAccess : MemberLookupRestrictions.None);
 
                        if (e == null)
                                return null;
 
-                       if (right_side != null) {
-                               if (e is FullNamedExpression && e.eclass != ExprClass.Unresolved) {
-                                       e.Error_UnexpectedKind (ec, e, "variable", e.ExprClassName, loc);
-                                   return null;
-                               }
+                       if (e is FullNamedExpression && e.eclass != ExprClass.Unresolved) {
+                               Error_UnexpectedKind (ec, e, "variable", e.ExprClassName, loc);
+                               return e;
+                       }
 
+                       if (right_side != null) {
                                e = e.ResolveLValue (ec, right_side);
                        } else {
                                e = e.Resolve (ec);
@@ -2726,7 +2838,7 @@ namespace Mono.CSharp {
 
                        TypeExpr te = fne as TypeExpr;
                        if (te == null) {
-                               fne.Error_UnexpectedKind (mc, fne, "type", fne.ExprClassName, loc);
+                               Error_UnexpectedKind (mc, fne, "type", fne.ExprClassName, loc);
                                return null;
                        }
 
@@ -2890,7 +3002,21 @@ namespace Mono.CSharp {
                                //
                                TypeSpec[] targs = null;
                                if (method.DeclaringType != InstanceExpression.Type) {
-                                       var base_override = MemberCache.FindMember (InstanceExpression.Type, new MemberFilter (method), BindingRestriction.InstanceOnly | BindingRestriction.OverrideOnly) as MethodSpec;
+                                       //
+                                       // Candidate can have inflated MVAR parameters and we need to find
+                                       // base match for original definition not inflated parameter types
+                                       //
+                                       var parameters = method.Parameters;
+                                       if (method.Arity > 0) {
+                                               parameters = ((IParametersMember) method.MemberDefinition).Parameters;
+                                               var inflated = method.DeclaringType as InflatedTypeSpec;
+                                               if (inflated != null) {
+                                                       parameters = parameters.Inflate (inflated.CreateLocalInflator (rc));
+                                               }
+                                       }
+
+                                       var filter = new MemberFilter (method.Name, method.Arity, MemberKind.Method, parameters, null);
+                                       var base_override = MemberCache.FindMember (InstanceExpression.Type, filter, BindingRestriction.InstanceOnly | BindingRestriction.OverrideOnly) as MethodSpec;
                                        if (base_override != null && base_override.DeclaringType != method.DeclaringType) {
                                                if (base_override.IsGeneric)
                                                        targs = method.TypeArguments;
@@ -2934,6 +3060,7 @@ namespace Mono.CSharp {
                        // Only base will allow this invocation to happen.
                        //
                        if (method.IsAbstract) {
+                               rc.Report.SymbolRelatedToPreviousError (method);
                                Error_CannotCallAbstractBase (rc, method.GetSignatureForError ());
                        }
 
@@ -3043,16 +3170,28 @@ namespace Mono.CSharp {
                        //
                        // Check intermediate value modification which won't have any effect
                        //
-                       if (rhs != null && InstanceExpression.Type.IsStruct &&
-                               (InstanceExpression is PropertyExpr || InstanceExpression is IndexerExpr || InstanceExpression is Invocation)) {
-
-                               if (rc.CurrentInitializerVariable != null) {
-                                       rc.Report.Error (1918, loc, "Members of value type `{0}' cannot be assigned using a property `{1}' object initializer",
-                                               InstanceExpression.Type.GetSignatureForError (), InstanceExpression.GetSignatureForError ());
-                               } else {
-                                       rc.Report.Error (1612, loc,
-                                               "Cannot modify a value type return value of `{0}'. Consider storing the value in a temporary variable",
-                                               InstanceExpression.GetSignatureForError ());
+                       if (rhs != null && InstanceExpression.Type.IsStruct) {
+                               var fexpr = InstanceExpression as FieldExpr;
+                               if (fexpr != null) {
+                                       if (!fexpr.Spec.IsReadOnly || rc.HasAny (ResolveContext.Options.FieldInitializerScope | ResolveContext.Options.ConstructorScope))
+                                               return true;
+
+                                       if (fexpr.IsStatic) {
+                                               rc.Report.Error (1650, loc, "Fields of static readonly field `{0}' cannot be assigned to (except in a static constructor or a variable initializer)",
+                                                       fexpr.GetSignatureForError ());
+                                       } else {
+                                               rc.Report.Error (1648, loc, "Members of readonly field `{0}' cannot be modified (except in a constructor or a variable initializer)",
+                                                       fexpr.GetSignatureForError ());
+                                       }
+                               } else if (InstanceExpression is PropertyExpr || InstanceExpression is IndexerExpr || InstanceExpression is Invocation) {
+                                       if (rc.CurrentInitializerVariable != null) {
+                                               rc.Report.Error (1918, loc, "Members of value type `{0}' cannot be assigned using a property `{1}' object initializer",
+                                                       InstanceExpression.Type.GetSignatureForError (), InstanceExpression.GetSignatureForError ());
+                                       } else {
+                                               rc.Report.Error (1612, loc,
+                                                       "Cannot modify a value type return value of `{0}'. Consider storing the value in a temporary variable",
+                                                       InstanceExpression.GetSignatureForError ());
+                                       }
                                }
                        }
 
@@ -3420,6 +3559,12 @@ namespace Mono.CSharp {
                        }
                }
 
+               public override bool IsSideEffectFree {
+                       get {
+                               return InstanceExpression == null || InstanceExpression.IsSideEffectFree;
+                       }
+               }
+
                public override bool IsStatic {
                        get {
                                if (best_candidate != null)
@@ -3474,7 +3619,7 @@ namespace Mono.CSharp {
                                return null;
                        }
 
-                       if (best_candidate.IsConditionallyExcluded (ec, loc))
+                       if (best_candidate.IsConditionallyExcluded (ec))
                                ec.Report.Error (765, loc,
                                        "Partial methods with only a defining declaration or removed conditional methods cannot be used in an expression tree");
                        
@@ -3569,7 +3714,7 @@ namespace Mono.CSharp {
                                                        InstanceExpression = ProbeIdenticalTypeName (ec, InstanceExpression, simple_name);
                                                }
 
-                                               InstanceExpression.Resolve (ec);
+                                               InstanceExpression.Resolve (ec, ResolveFlags.VariableOrValue | ResolveFlags.MethodGroup | ResolveFlags.Type);
                                        }
                                }
 
@@ -3643,10 +3788,9 @@ namespace Mono.CSharp {
                //
                public virtual MethodGroupExpr LookupExtensionMethod (ResolveContext rc)
                {
-                       if (InstanceExpression == null)
+                       if (InstanceExpression == null || InstanceExpression.eclass == ExprClass.Type)
                                return null;
 
-                       InstanceExpression = InstanceExpression.Resolve (rc);
                        if (!IsExtensionMethodArgument (InstanceExpression))
                                return null;
 
@@ -4364,6 +4508,11 @@ namespace Mono.CSharp {
                                                                arg_moved = true;
                                                        }
 
+                                                       if (arguments == orig_args) {
+                                                               arguments = new Arguments (orig_args.Count);
+                                                               arguments.AddRange (orig_args);
+                                                       }
+
                                                        arguments[index] = arguments[i];
                                                        arguments[i] = temp;
 
@@ -4672,7 +4821,7 @@ namespace Mono.CSharp {
                                // is used as argument or delegate conversion
                                //
                                if (!Convert.ImplicitConversionExists (ec, argument.Expr, parameter)) {
-                                       return 2;
+                                       return parameter.IsDelegate && argument.Expr is AnonymousMethodExpression ? 2 : 3;
                                }
                        }
 
@@ -4879,8 +5028,7 @@ namespace Mono.CSharp {
                                                }
 
                                                // Restore expanded arguments
-                                               if (candidate_args != args)
-                                                       candidate_args = args;
+                                               candidate_args = args;
                                        }
                                } while (best_candidate_rate != 0 && (type_members = base_provider.GetBaseMembers (type_members[0].DeclaringType.BaseType)) != null);
 
@@ -5085,7 +5233,7 @@ namespace Mono.CSharp {
 
                        if (ta_count != best_candidate.Arity && (ta_count > 0 || ((IParametersMember) best_candidate).Parameters.IsEmpty)) {
                                var mg = new MethodGroupExpr (new [] { best_candidate }, best_candidate.DeclaringType, loc);
-                               mg.Error_TypeArgumentsCannotBeUsed (rc, best_candidate, ta_count, loc);
+                               mg.Error_TypeArgumentsCannotBeUsed (rc, best_candidate, loc);
                                return;
                        }
 
@@ -5118,7 +5266,7 @@ namespace Mono.CSharp {
                                                if (ms.TypeArguments != null)
                                                        constr_ok = new ConstraintChecker (rc.MemberContext).CheckAll (ms.GetGenericMethodDefinition (), ms.TypeArguments, ms.Constraints, loc);
 
-                                               if (ta_count == 0) {
+                                               if (ta_count == 0 && ms.TypeArguments == null) {
                                                        if (custom_errors != null && custom_errors.TypeInferenceFailed (rc, best_candidate))
                                                                return;
 
@@ -5173,6 +5321,9 @@ namespace Mono.CSharp {
 
                        for (; a_idx < arg_count; a_idx++, ++a_pos) {
                                a = args[a_idx];
+                               if (a == null)
+                                       continue;
+
                                if (p_mod != Parameter.Modifier.PARAMS) {
                                        p_mod = pd.FixedParameters[a_idx].ModFlags;
                                        pt = ptypes[a_idx];
@@ -5214,7 +5365,7 @@ namespace Mono.CSharp {
                                                                "The best overloaded method match for `{0}' does not contain a parameter named `{1}'",
                                                                TypeManager.CSharpSignature (member), na.Name);
                                                }
-                                       } else if (args[name_index] != a) {
+                                       } else if (args[name_index] != a && args[name_index] != null) {
                                                if (IsDelegateInvoke)
                                                        ec.Report.SymbolRelatedToPreviousError (DelegateType);
                                                else
@@ -5234,7 +5385,7 @@ namespace Mono.CSharp {
                                        return false;
                                }
 
-                               Expression conv = null;
+                               Expression conv;
                                if (a.ArgType == Argument.AType.ExtensionType) {
                                        if (a.Expr.Type == pt || TypeSpecComparer.IsEqual (a.Expr.Type, pt)) {
                                                conv = a.Expr;
@@ -5259,6 +5410,7 @@ namespace Mono.CSharp {
                                        params_initializers.Add (a.Expr);
                                        args.RemoveAt (a_idx--);
                                        --arg_count;
+                                       a.Expr = conv;
                                        continue;
                                }
 
@@ -5612,43 +5764,50 @@ namespace Mono.CSharp {
                        } while (fe != null);
                }
 
-               static readonly int [] codes = {
-                       191,    // instance, write access
-                       192,    // instance, out access
-                       198,    // static, write access
-                       199,    // static, out access
-                       1648,   // member of value instance, write access
-                       1649,   // member of value instance, out access
-                       1650,   // member of value static, write access
-                       1651    // member of value static, out access
-               };
-
-               static readonly string [] msgs = {
-                       /*0191*/ "A readonly field `{0}' cannot be assigned to (except in a constructor or a variable initializer)",
-                       /*0192*/ "A readonly field `{0}' cannot be passed ref or out (except in a constructor)",
-                       /*0198*/ "A static readonly field `{0}' cannot be assigned to (except in a static constructor or a variable initializer)",
-                       /*0199*/ "A static readonly field `{0}' cannot be passed ref or out (except in a static constructor)",
-                       /*1648*/ "Members of readonly field `{0}' cannot be modified (except in a constructor or a variable initializer)",
-                       /*1649*/ "Members of readonly field `{0}' cannot be passed ref or out (except in a constructor)",
-                       /*1650*/ "Fields of static readonly field `{0}' cannot be assigned to (except in a static constructor or a variable initializer)",
-                       /*1651*/ "Fields of static readonly field `{0}' cannot be passed ref or out (except in a static constructor)"
-               };
-
-               // The return value is always null.  Returning a value simplifies calling code.
-               Expression Report_AssignToReadonly (ResolveContext ec, Expression right_side)
-               {
-                       int i = 0;
-                       if (right_side == EmptyExpression.OutAccess || right_side == EmptyExpression.LValueMemberOutAccess)
-                               i += 1;
-                       if (IsStatic)
-                               i += 2;
-                       if (right_side == EmptyExpression.LValueMemberAccess || right_side == EmptyExpression.LValueMemberOutAccess)
-                               i += 4;
-                       ec.Report.Error (codes [i], loc, msgs [i], GetSignatureForError ());
+               Expression Error_AssignToReadonly (ResolveContext rc, Expression right_side)
+               {
+                       // The return value is always null.  Returning a value simplifies calling code.
+       
+                       if (right_side == EmptyExpression.OutAccess) {
+                               if (IsStatic) {
+                                       rc.Report.Error (199, loc, "A static readonly field `{0}' cannot be passed ref or out (except in a static constructor)",
+                                               GetSignatureForError ());
+                               } else {
+                                       rc.Report.Error (192, loc, "A readonly field `{0}' cannot be passed ref or out (except in a constructor)",
+                                               GetSignatureForError ());
+                               }
+
+                               return null;
+                       }
+
+                       if (right_side == EmptyExpression.LValueMemberAccess) {
+                               // Already reported as CS1648/CS1650
+                               return null;
+                       }
+
+                       if (right_side == EmptyExpression.LValueMemberOutAccess) {
+                               if (IsStatic) {
+                                       rc.Report.Error (1651, loc, "Fields of static readonly field `{0}' cannot be passed ref or out (except in a static constructor)",
+                                               GetSignatureForError ());
+                               } else {
+                                       rc.Report.Error (1649, loc, "Members of readonly field `{0}' cannot be passed ref or out (except in a constructor)",
+                                               GetSignatureForError ());
+                               }
+
+                               return null;
+                       }
+
+                       if (IsStatic) {
+                               rc.Report.Error (198, loc, "A static readonly field `{0}' cannot be assigned to (except in a static constructor or a variable initializer)",
+                                       GetSignatureForError ());
+                       } else {
+                               rc.Report.Error (191, loc, "A readonly field `{0}' cannot be assigned to (except in a constructor or a variable initializer)",
+                                       GetSignatureForError ());
+                       }
 
                        return null;
                }
-               
+
                override public Expression DoResolveLValue (ResolveContext ec, Expression right_side)
                {
                        if (spec is FixedFieldSpec) {
@@ -5673,19 +5832,19 @@ namespace Mono.CSharp {
                        if (spec.IsReadOnly) {
                                // InitOnly fields can only be assigned in constructors or initializers
                                if (!ec.HasAny (ResolveContext.Options.FieldInitializerScope | ResolveContext.Options.ConstructorScope))
-                                       return Report_AssignToReadonly (ec, right_side);
+                                       return Error_AssignToReadonly (ec, right_side);
 
                                if (ec.HasSet (ResolveContext.Options.ConstructorScope)) {
 
                                        // InitOnly fields cannot be assigned-to in a different constructor from their declaring type
                                        if (ec.CurrentMemberDefinition.Parent.PartialContainer.Definition != spec.DeclaringType.GetDefinition ())
-                                               return Report_AssignToReadonly (ec, right_side);
+                                               return Error_AssignToReadonly (ec, right_side);
                                        // static InitOnly fields cannot be assigned-to in an instance constructor
                                        if (IsStatic && !ec.IsStatic)
-                                               return Report_AssignToReadonly (ec, right_side);
+                                               return Error_AssignToReadonly (ec, right_side);
                                        // instance constructors can't modify InitOnly fields of other instances of the same type
                                        if (!IsStatic && !(InstanceExpression is This))
-                                               return Report_AssignToReadonly (ec, right_side);
+                                               return Error_AssignToReadonly (ec, right_side);
                                }
                        }
 
@@ -6106,7 +6265,7 @@ namespace Mono.CSharp {
                                        }
                                }
                        } else {
-                               args = arguments == null ? new Arguments (1) : arguments;
+                               args = arguments ?? new Arguments (1);
 
                                if (leave_copy) {
                                        source.Emit (ec);
@@ -6320,7 +6479,7 @@ namespace Mono.CSharp {
                                                best_candidate.GetSignatureForError ());
                                        return false;
                                }
-                       } else if (!best_candidate.Get.IsAccessible (rc)) {
+                       } else if (!best_candidate.Get.IsAccessible (rc) || !best_candidate.Get.DeclaringType.IsAccessible (rc)) {
                                if (best_candidate.HasDifferentAccessibility) {
                                        rc.Report.SymbolRelatedToPreviousError (best_candidate.Get);
                                        rc.Report.Error (271, loc, "The property or indexer `{0}' cannot be used in this context because the get accessor is inaccessible",
@@ -6347,7 +6506,7 @@ namespace Mono.CSharp {
                                return false;
                        }
 
-                       if (!best_candidate.Set.IsAccessible (rc)) {
+                       if (!best_candidate.Set.IsAccessible (rc) || !best_candidate.Set.DeclaringType.IsAccessible (rc)) {
                                if (best_candidate.HasDifferentAccessibility) {
                                        rc.Report.SymbolRelatedToPreviousError (best_candidate.Set);
                                        rc.Report.Error (272, loc, "The property or indexer `{0}' cannot be used in this context because the set accessor is inaccessible",
@@ -6610,7 +6769,7 @@ namespace Mono.CSharp {
                        // Don't capture temporary variables except when using
                        // state machine redirection and block yields
                        //
-                       if (ec.CurrentAnonymousMethod != null && ec.CurrentAnonymousMethod is StateMachineInitializer &&
+                       if (ec.CurrentAnonymousMethod is StateMachineInitializer &&
                                (ec.CurrentBlock.Explicit.HasYield || ec.CurrentBlock.Explicit.HasAwait) &&
                                ec.IsVariableCapturingRequired) {
                                AnonymousMethodStorey storey = li.Block.Explicit.CreateAnonymousMethodStorey (ec);
@@ -6669,7 +6828,7 @@ namespace Mono.CSharp {
                        get { return null; }
                }
 
-               public override void VerifyAssigned (ResolveContext rc)
+               public override void VerifyDefiniteAssignment (ResolveContext rc)
                {
                }
        }
index 1081e0e551e55849bf18118da5bab9b941b87d3d..d2a031bd01960a220b28583df64f92fbae01991d 100644 (file)
@@ -66,7 +66,7 @@ namespace Mono.CSharp {
 
                        var underlying = ((Enum) Parent).UnderlyingType;
                        if (expr != null) {
-                               expr = expr.ImplicitConversionRequired (rc, underlying, Location);
+                               expr = expr.ImplicitConversionRequired (rc, underlying);
                                if (expr != null && !IsValidEnumType (expr.Type)) {
                                        Enum.Error_1008 (Location, Report);
                                        expr = null;
index b1ac4dd3eee7a3f6be968bd0ccd4f6d4a77a2e5f..3ae03c0f14bb602d30ec9846d9904f8664a89701 100644 (file)
@@ -131,6 +131,12 @@ namespace Mono.CSharp
                        Location.Initialize (ctx.SourceFiles);
                }
 
+               /// <summary>
+               /// When set evaluator will automatically wait on Task of async methods. When not
+               /// set it's called responsibility to handle Task execution
+               /// </summary>
+               public bool WaitOnTask { get; set; }
+
                /// <summary>
                ///   If true, turns type expressions into valid expressions
                ///   and calls the describe method on it
@@ -429,7 +435,7 @@ namespace Mono.CSharp
                                throw new ArgumentException ("Syntax error on input: partial input");
                        
                        if (result_set == false)
-                               throw new ArgumentException ("The expression did not set a result");
+                               throw new ArgumentException ("The expression failed to resolve");
 
                        return result;
                }
@@ -453,7 +459,7 @@ namespace Mono.CSharp
                //
                InputKind ToplevelOrStatement (SeekableStreamReader seekable)
                {
-                       Tokenizer tokenizer = new Tokenizer (seekable, source_file, new ParserSession ());
+                       Tokenizer tokenizer = new Tokenizer (seekable, source_file, new ParserSession (), ctx.Report);
                        
                        // Prefer contextual block keywords over identifiers
                        tokenizer.parsing_block++;
@@ -655,13 +661,49 @@ namespace Mono.CSharp
                                        new TypeExpression (base_class_imported, host.Location)
                                };
 
-                               host.AddBasesForPart (baseclass_list);
-
-                               host.CreateContainer ();
-                               host.DefineContainer ();
-                               host.Define ();
+                               host.SetBaseTypes (baseclass_list);
 
                                expression_method = (Method) host.Members[0];
+
+                               if ((expression_method.ModFlags & Modifiers.ASYNC) != 0) {
+                                       //
+                                       // Host method is async. When WaitOnTask is set we wrap it with wait
+                                       //
+                                       // void AsyncWait (ref object $retval) {
+                                       //      $retval = Host();
+                                       //      ((Task)$retval).Wait();  // When WaitOnTask is set
+                                       // }
+                                       //
+                                       var p = new ParametersCompiled (
+                                               new Parameter (new TypeExpression (module.Compiler.BuiltinTypes.Object, Location.Null), "$retval", Parameter.Modifier.REF, null, Location.Null)
+                                       );
+
+                                       var method = new Method(host, new TypeExpression(module.Compiler.BuiltinTypes.Void, Location.Null),
+                                               Modifiers.PUBLIC | Modifiers.STATIC, new MemberName("AsyncWait"), p, null);
+
+                                       method.Block = new ToplevelBlock(method.Compiler, p, Location.Null);
+                                       method.Block.AddStatement(new StatementExpression (new SimpleAssign(
+                                               new SimpleName(p [0].Name, Location.Null),
+                                               new Invocation(new SimpleName(expression_method.MemberName.Name, Location.Null), new Arguments(0)),
+                                               Location.Null), Location.Null));
+
+                                       if (WaitOnTask) {
+                                               var task = new Cast (expression_method.TypeExpression, new SimpleName (p [0].Name, Location.Null), Location.Null);
+
+                                               method.Block.AddStatement (new StatementExpression (new Invocation (
+                                                               new MemberAccess (task, "Wait", Location.Null),
+                                                       new Arguments (0)), Location.Null));
+                                       }
+
+                                       host.AddMember(method);
+
+                                       expression_method = method;
+                               }
+
+                               host.CreateContainer();
+                               host.DefineContainer();
+                               host.Define();
+
                        } else {
                                expression_method = null;
                        }
@@ -1056,6 +1098,27 @@ namespace Mono.CSharp
 #endif
        }
 
+       class InteractiveMethod : Method
+       {
+               public InteractiveMethod(TypeDefinition parent, FullNamedExpression returnType, Modifiers mod, ParametersCompiled parameters)
+                       : base(parent, returnType, mod, new MemberName("Host"), parameters, null)
+               {
+               }
+
+               public void ChangeToAsync ()
+               {
+                       ModFlags |= Modifiers.ASYNC;
+                       ModFlags &= ~Modifiers.UNSAFE;
+                       type_expr = new TypeExpression(Module.PredefinedTypes.Task.TypeSpec, Location);
+                       parameters = ParametersCompiled.EmptyReadOnlyParameters;
+               }
+
+               public override string GetSignatureForError()
+               {
+                       return "InteractiveHost";
+               }
+       }
+
        class HoistedEvaluatorVariable : HoistedVariable
        {
                public HoistedEvaluatorVariable (Field field)
@@ -1076,11 +1139,17 @@ namespace Mono.CSharp
        ///    the return value for an invocation.
        /// </summary>
        class OptionalAssign : SimpleAssign {
-               public OptionalAssign (Expression t, Expression s, Location loc)
-                       : base (t, s, loc)
+               public OptionalAssign (Expression s, Location loc)
+                       : base (null, s, loc)
                {
                }
 
+               public override Location StartLocation {
+                       get {
+                               return Location.Null;
+                       }
+               }
+
                protected override Expression DoResolve (ResolveContext ec)
                {
                        Expression clone = source.Clone (new CloneContext ());
@@ -1093,7 +1162,7 @@ namespace Mono.CSharp
                        // A useful feature for the REPL: if we can resolve the expression
                        // as a type, Describe the type;
                        //
-                       if (ec.Module.Evaluator.DescribeTypeExpressions){
+                       if (ec.Module.Evaluator.DescribeTypeExpressions && !(ec.CurrentAnonymousMethod is AsyncInitializer)) {
                                var old_printer = ec.Report.SetPrinter (new SessionReportPrinter ());
                                Expression tclone;
                                try {
@@ -1119,17 +1188,34 @@ namespace Mono.CSharp
                        }
 
                        source = clone;
+
+                       var host = (Method) ec.MemberContext.CurrentMemberDefinition;
+
+                       if (host.ParameterInfo.IsEmpty) {
+                               eclass = ExprClass.Value;
+                               type = InternalType.FakeInternalType;
+                               return this;
+                       }
+
+                       target = new SimpleName (host.ParameterInfo[0].Name, Location);
+
                        return base.DoResolve (ec);
                }
+
+               public override void EmitStatement(EmitContext ec)
+               {
+                       if (target == null) {
+                               source.Emit (ec);
+                               return;
+                       }
+
+                       base.EmitStatement(ec);
+               }
        }
 
        public class Undo
        {
                List<Action> undo_actions;
-               
-               public Undo ()
-               {
-               }
 
                public void AddTypeContainer (TypeContainer current_container, TypeDefinition tc)
                {
index 8d5bf8ae01e893f48c07eb72891c6445a110063a..5729d7581baa508915f3bd10a8835fca1d589bf2 100644 (file)
@@ -80,7 +80,7 @@ namespace Mono.CSharp
                public override void Emit (EmitContext ec)
                {
                        var call = new CallEmitter ();
-                       call.EmitPredefined (ec, oper, arguments);
+                       call.EmitPredefined (ec, oper, arguments, loc);
                }
 
                public override SLE.Expression MakeExpression (BuilderContext ctx)
@@ -1319,7 +1319,7 @@ namespace Mono.CSharp
                protected Expression expr;
                protected TypeSpec probe_type_expr;
                
-               public Probe (Expression expr, Expression probe_type, Location l)
+               protected Probe (Expression expr, Expression probe_type, Location l)
                {
                        ProbeType = probe_type;
                        loc = l;
@@ -1505,9 +1505,16 @@ namespace Mono.CSharp
                                //
                                if (Convert.ExplicitReferenceConversionExists (d, t))
                                        return this;
+
+                               //
+                               // open generic type
+                               //
+                               if (d is InflatedTypeSpec && InflatedTypeSpec.ContainsTypeParameter (d))
+                                       return this;
                        } else {
-                               if (TypeManager.IsGenericParameter (t))
-                                       return ResolveGenericParameter (ec, d, (TypeParameterSpec) t);
+                               var tps = t as TypeParameterSpec;
+                               if (tps != null)
+                                       return ResolveGenericParameter (ec, d, tps);
 
                                if (t.BuiltinType == BuiltinTypeSpec.Type.Dynamic) {
                                        ec.Report.Warning (1981, 3, loc,
@@ -1529,11 +1536,17 @@ namespace Mono.CSharp
                                        }
                                } else {
                                        if (Convert.ImplicitReferenceConversionExists (d, t)) {
+                                               var c = expr as Constant;
+                                               if (c != null)
+                                                       return CreateConstantResult (ec, !c.IsNull);
+
                                                //
                                                // Do not optimize for imported type
                                                //
-                                               if (d.MemberDefinition.IsImported && d.BuiltinType != BuiltinTypeSpec.Type.None)
+                                               if (d.MemberDefinition.IsImported && d.BuiltinType != BuiltinTypeSpec.Type.None &&
+                                                       d.MemberDefinition.DeclaringAssembly != t.MemberDefinition.DeclaringAssembly) {
                                                        return this;
+                                               }
                                                
                                                //
                                                // Turn is check into simple null check for implicitly convertible reference types
@@ -1543,9 +1556,14 @@ namespace Mono.CSharp
                                                        this).Resolve (ec);
                                        }
 
-                                       if (Convert.ExplicitReferenceConversionExists (d, t)) {
+                                       if (Convert.ExplicitReferenceConversionExists (d, t))
+                                               return this;
+
+                                       //
+                                       // open generic type
+                                       //
+                                       if ((d is InflatedTypeSpec || d.IsArray) && InflatedTypeSpec.ContainsTypeParameter (d))
                                                return this;
-                                       }
                                }
                        }
 
@@ -1559,8 +1577,8 @@ namespace Mono.CSharp
                                        return CreateConstantResult (ec, false);
                        }
 
-                       if (TypeManager.IsGenericParameter (expr.Type)) {
-                               if (expr.Type == d && TypeSpec.IsValueType (t))
+                       if (expr.Type.IsGenericParameter) {
+                               if (expr.Type == d && TypeSpec.IsValueType (t) && TypeSpec.IsValueType (d))
                                        return CreateConstantResult (ec, true);
 
                                expr = new BoxedCast (expr, d);
@@ -1662,8 +1680,10 @@ namespace Mono.CSharp
                                return this;
                        }
 
-                       ec.Report.Error (39, loc, "Cannot convert type `{0}' to `{1}' via a built-in conversion",
-                               etype.GetSignatureForError (), type.GetSignatureForError ());
+                       if (etype != InternalType.ErrorType) {
+                               ec.Report.Error (39, loc, "Cannot convert type `{0}' to `{1}' via a built-in conversion",
+                                       etype.GetSignatureForError (), type.GetSignatureForError ());
+                       }
 
                        return null;
                }
@@ -1868,6 +1888,8 @@ namespace Mono.CSharp
                {
                        protected readonly TypeSpec left;
                        protected readonly TypeSpec right;
+                       protected readonly TypeSpec left_unwrap;
+                       protected readonly TypeSpec right_unwrap;
                        public readonly Operator OperatorsMask;
                        public TypeSpec ReturnType;
 
@@ -1891,45 +1913,213 @@ namespace Mono.CSharp
                                if ((op_mask & Operator.ValuesOnlyMask) != 0)
                                        throw new InternalErrorException ("Only masked values can be used");
 
+                               if ((op_mask & Operator.NullableMask) != 0) {
+                                       left_unwrap = Nullable.NullableInfo.GetUnderlyingType (ltype);
+                                       right_unwrap = Nullable.NullableInfo.GetUnderlyingType (rtype);
+                               } else {
+                                       left_unwrap = ltype;
+                                       right_unwrap = rtype;
+                               }
+
                                this.left = ltype;
                                this.right = rtype;
                                this.OperatorsMask = op_mask;
                                this.ReturnType = return_type;
                        }
 
-                       public virtual Expression ConvertResult (ResolveContext ec, Binary b)
+                       public bool IsLifted {
+                               get {
+                                       return (OperatorsMask & Operator.NullableMask) != 0;
+                               }
+                       }
+
+                       public virtual Expression ConvertResult (ResolveContext rc, Binary b)
                        {
+                               Constant c;
+
+                               var left_expr = b.left;
+                               var right_expr = b.right;
+
                                b.type = ReturnType;
 
-                               b.left = Convert.ImplicitConversion (ec, b.left, left, b.left.Location);
-                               b.right = Convert.ImplicitConversion (ec, b.right, right, b.right.Location);
+                               if (IsLifted) {
+                                       if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion)) {
+                                               b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                                               b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+                                       }
+
+                                       if (right_expr.IsNull) {
+                                               if ((b.oper & Operator.EqualityMask) != 0) {
+                                                       if (!left_expr.Type.IsNullableType && BuiltinTypeSpec.IsPrimitiveType (left_expr.Type))
+                                                               return b.CreateLiftedValueTypeResult (rc, left_expr.Type);
+                                               } else if ((b.oper & Operator.BitwiseMask) != 0) {
+                                                       if (left_unwrap.BuiltinType != BuiltinTypeSpec.Type.Bool)
+                                                               return Nullable.LiftedNull.CreateFromExpression (rc, b);
+                                               } else {
+                                                       b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                                                       b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+
+                                                       if ((b.Oper & (Operator.ArithmeticMask | Operator.ShiftMask)) != 0)
+                                                               return Nullable.LiftedNull.CreateFromExpression (rc, b);
+
+                                                       return b.CreateLiftedValueTypeResult (rc, left);
+                                               }
+                                       } else if (left_expr.IsNull) {
+                                               if ((b.oper & Operator.EqualityMask) != 0) {
+                                                       if (!right_expr.Type.IsNullableType && BuiltinTypeSpec.IsPrimitiveType (right_expr.Type))
+                                                               return b.CreateLiftedValueTypeResult (rc, right_expr.Type);
+                                               } else if ((b.oper & Operator.BitwiseMask) != 0) {
+                                                       if (right_unwrap.BuiltinType != BuiltinTypeSpec.Type.Bool)
+                                                               return Nullable.LiftedNull.CreateFromExpression (rc, b);
+                                               } else {
+                                                       b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                                                       b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+
+                                                       if ((b.Oper & (Operator.ArithmeticMask | Operator.ShiftMask)) != 0)
+                                                               return Nullable.LiftedNull.CreateFromExpression (rc, b);
+
+                                                       return b.CreateLiftedValueTypeResult (rc, right);
+                                               }
+                                       }
+                               }
 
                                //
                                // A user operators does not support multiple user conversions, but decimal type
                                // is considered to be predefined type therefore we apply predefined operators rules
                                // and then look for decimal user-operator implementation
                                //
-                               if (left.BuiltinType == BuiltinTypeSpec.Type.Decimal)
-                                       return b.ResolveUserOperator (ec, b.left, b.right);
+                               if (left.BuiltinType == BuiltinTypeSpec.Type.Decimal) {
+                                       b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                                       b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+
+                                       return b.ResolveUserOperator (rc, b.left, b.right);
+                               }
 
-                               var c = b.right as Constant;
+                               c = right_expr as Constant;
                                if (c != null) {
-                                       if (c.IsDefaultValue && (b.oper == Operator.Addition || b.oper == Operator.Subtraction || (b.oper == Operator.BitwiseOr && !(b is Nullable.LiftedBinaryOperator))))
-                                               return ReducedExpression.Create (b.left, b).Resolve (ec);
+                                       if (c.IsDefaultValue) {
+                                               //
+                                               // Optimizes
+                                               // 
+                                               // (expr + 0) to expr
+                                               // (expr - 0) to expr
+                                               // (bool? | false) to bool?
+                                               //
+                                               if (b.oper == Operator.Addition || b.oper == Operator.Subtraction ||
+                                                       (b.oper == Operator.BitwiseOr && left_unwrap.BuiltinType == BuiltinTypeSpec.Type.Bool && c is BoolConstant)) {
+                                                       b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                                                       return ReducedExpression.Create (b.left, b).Resolve (rc);
+                                               }
+
+                                               //
+                                               // Optimizes (value &/&& 0) to 0
+                                               //
+                                               if ((b.oper == Operator.BitwiseAnd || b.oper == Operator.LogicalAnd) && !IsLifted) {
+                                                       Constant side_effect = new SideEffectConstant (c, b.left, c.Location);
+                                                       return ReducedExpression.Create (side_effect, b);
+                                               }
+                                       } else {
+                                               //
+                                               // Optimizes (bool? & true) to bool?
+                                               //
+                                               if (IsLifted && left_unwrap.BuiltinType == BuiltinTypeSpec.Type.Bool && b.oper == Operator.BitwiseAnd) {
+                                                       return ReducedExpression.Create (b.left, b).Resolve (rc);
+                                               }
+                                       }
+
                                        if ((b.oper == Operator.Multiply || b.oper == Operator.Division) && c.IsOneInteger)
-                                               return ReducedExpression.Create (b.left, b).Resolve (ec);
-                                       return b;
+                                               return ReducedExpression.Create (b.left, b).Resolve (rc);
+
+                                       if ((b.oper & Operator.ShiftMask) != 0 && c is IntConstant) {
+                                               b.right = new IntConstant (rc.BuiltinTypes, ((IntConstant) c).Value & GetShiftMask (left_unwrap), b.right.Location);
+                                       }
                                }
 
                                c = b.left as Constant;
                                if (c != null) {
-                                       if (c.IsDefaultValue && (b.oper == Operator.Addition || (b.oper == Operator.BitwiseOr && !(b is Nullable.LiftedBinaryOperator))))
-                                               return ReducedExpression.Create (b.right, b).Resolve (ec);
+                                       if (c.IsDefaultValue) {
+                                               //
+                                               // Optimizes
+                                               // 
+                                               // (0 + expr) to expr
+                                               // (false | bool?) to bool?
+                                               //
+                                               if (b.oper == Operator.Addition ||
+                                                       (b.oper == Operator.BitwiseOr && right_unwrap.BuiltinType == BuiltinTypeSpec.Type.Bool && c is BoolConstant)) {
+                                                       b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+                                                       return ReducedExpression.Create (b.right, b).Resolve (rc);
+                                               }
+
+                                               //
+                                               // Optimizes (false && expr) to false
+                                               //
+                                               if (b.oper == Operator.LogicalAnd && c.Type.BuiltinType == BuiltinTypeSpec.Type.Bool) {
+                                                       // No rhs side-effects
+                                                       Expression.Warning_UnreachableExpression (rc, b.right.StartLocation);
+                                                       return ReducedExpression.Create (c, b);
+                                               }
+
+                                               //
+                                               // Optimizes (0 & value) to 0
+                                               //
+                                               if (b.oper == Operator.BitwiseAnd && !IsLifted) {
+                                                       Constant side_effect = new SideEffectConstant (c, b.right, c.Location);
+                                                       return ReducedExpression.Create (side_effect, b);
+                                               }
+                                       } else {
+                                               //
+                                               // Optimizes (true & bool?) to bool?
+                                               //
+                                               if (IsLifted && left_unwrap.BuiltinType == BuiltinTypeSpec.Type.Bool && b.oper == Operator.BitwiseAnd) {
+                                                       return ReducedExpression.Create (b.right, b).Resolve (rc);
+                                               }
+
+                                               //
+                                               // Optimizes (true || expr) to true
+                                               //
+                                               if (b.oper == Operator.LogicalOr && c.Type.BuiltinType == BuiltinTypeSpec.Type.Bool) {
+                                                       // No rhs side-effects
+                                                       Expression.Warning_UnreachableExpression (rc, b.right.StartLocation);
+                                                       return ReducedExpression.Create (c, b);
+                                               }
+                                       }
+
                                        if (b.oper == Operator.Multiply && c.IsOneInteger)
-                                               return ReducedExpression.Create (b.right, b).Resolve (ec);
-                                       return b;
+                                               return ReducedExpression.Create (b.right, b).Resolve (rc);
                                }
 
+                               if (IsLifted) {
+                                       var lifted = new Nullable.LiftedBinaryOperator (b);
+
+                                       TypeSpec ltype, rtype;
+                                       if (b.left.Type.IsNullableType) {
+                                               lifted.UnwrapLeft = new Nullable.Unwrap (b.left);
+                                               ltype = left_unwrap;
+                                       } else {
+                                               ltype = left;
+                                       }
+
+                                       if (b.right.Type.IsNullableType) {
+                                               lifted.UnwrapRight = new Nullable.Unwrap (b.right);
+                                               rtype = right_unwrap;
+                                       } else {
+                                               rtype = right;
+                                       }
+
+                                       lifted.Left = b.left.IsNull ?
+                                               b.left :
+                                               Convert.ImplicitConversion (rc, lifted.UnwrapLeft ?? b.left, ltype, b.left.Location);
+
+                                       lifted.Right = b.right.IsNull ?
+                                               b.right :
+                                               Convert.ImplicitConversion (rc, lifted.UnwrapRight ?? b.right, rtype, b.right.Location);
+
+                                       return lifted.Resolve (rc);
+                               }
+
+                               b.left = Convert.ImplicitConversion (rc, b.left, left, b.left.Location);
+                               b.right = Convert.ImplicitConversion (rc, b.right, right, b.right.Location);
+
                                return b;
                        }
 
@@ -1953,16 +2143,22 @@ namespace Mono.CSharp
 
                        public PredefinedOperator ResolveBetterOperator (ResolveContext ec, PredefinedOperator best_operator)
                        {
+                               if ((OperatorsMask & Operator.DecomposedMask) != 0)
+                                       return best_operator;
+
+                               if ((best_operator.OperatorsMask & Operator.DecomposedMask) != 0)
+                                       return this;
+
                                int result = 0;
                                if (left != null && best_operator.left != null) {
-                                       result = OverloadResolver.BetterTypeConversion (ec, best_operator.left, left);
+                                       result = OverloadResolver.BetterTypeConversion (ec, best_operator.left_unwrap, left_unwrap);
                                }
 
                                //
                                // When second argument is same as the first one, the result is same
                                //
                                if (right != null && (left != right || best_operator.left != best_operator.right)) {
-                                       result |= OverloadResolver.BetterTypeConversion (ec, best_operator.right, right);
+                                       result |= OverloadResolver.BetterTypeConversion (ec, best_operator.right_unwrap, right_unwrap);
                                }
 
                                if (result == 0 || result > 2)
@@ -2007,44 +2203,6 @@ namespace Mono.CSharp
                        }
                }
 
-               sealed class PredefinedShiftOperator : PredefinedOperator
-               {
-                       public PredefinedShiftOperator (TypeSpec ltype, TypeSpec rtype, Operator op_mask)
-                               : base (ltype, rtype, op_mask)
-                       {
-                       }
-
-                       public override Expression ConvertResult (ResolveContext ec, Binary b)
-                       {
-                               b.left = Convert.ImplicitConversion (ec, b.left, left, b.left.Location);
-
-                               Expression expr_tree_expr = Convert.ImplicitConversion (ec, b.right, right, b.right.Location);
-
-                               int right_mask = left.BuiltinType == BuiltinTypeSpec.Type.Int || left.BuiltinType == BuiltinTypeSpec.Type.UInt ? 0x1f : 0x3f;
-
-                               //
-                               // b = b.left >> b.right & (0x1f|0x3f)
-                               //
-                               b.right = new Binary (Operator.BitwiseAnd,
-                                       b.right, new IntConstant (ec.BuiltinTypes, right_mask, b.right.Location)).Resolve (ec);
-
-                               //
-                               // Expression tree representation does not use & mask
-                               //
-                               b.right = ReducedExpression.Create (b.right, expr_tree_expr).Resolve (ec);
-                               b.type = ReturnType;
-
-                               //
-                               // Optimize shift by 0
-                               //
-                               var c = b.right as Constant;
-                               if (c != null && c.IsDefaultValue)
-                                       return ReducedExpression.Create (b.left, b).Resolve (ec);
-
-                               return b;
-                       }
-               }
-
                sealed class PredefinedEqualityOperator : PredefinedOperator
                {
                        MethodSpec equal_method, inequal_method;
@@ -2198,21 +2356,23 @@ namespace Mono.CSharp
                        LogicalMask             = 1 << 10,
                        AdditionMask    = 1 << 11,
                        SubtractionMask = 1 << 12,
-                       RelationalMask  = 1 << 13
+                       RelationalMask  = 1 << 13,
+
+                       DecomposedMask  = 1 << 19,
+                       NullableMask    = 1 << 20,
                }
 
-               protected enum State
+               [Flags]
+               enum State : byte
                {
                        None = 0,
                        Compound = 1 << 1,
-                       LeftNullLifted = 1 << 2,
-                       RightNullLifted = 1 << 3
                }
 
                readonly Operator oper;
-               protected Expression left, right;
-               protected State state;
-               Expression enum_conversion;
+               Expression left, right;
+               State state;
+               ConvCast.Mode enum_conversion;
 
                public Binary (Operator oper, Expression left, Expression right, bool isCompound)
                        : this (oper, left, right)
@@ -2353,7 +2513,7 @@ namespace Mono.CSharp
                                oper, l, r);
                }
                
-               protected void Error_OperatorCannotBeApplied (ResolveContext ec, Expression left, Expression right)
+               void Error_OperatorCannotBeApplied (ResolveContext ec, Expression left, Expression right)
                {
                        Error_OperatorCannotBeApplied (ec, left, right, OperName (oper), loc);
                }
@@ -2452,7 +2612,7 @@ namespace Mono.CSharp
                        return left.ContainsEmitWithAwait () || right.ContainsEmitWithAwait ();
                }
 
-               public static void EmitOperatorOpcode (EmitContext ec, Operator oper, TypeSpec l)
+               public static void EmitOperatorOpcode (EmitContext ec, Operator oper, TypeSpec l, Expression right)
                {
                        OpCode opcode;
 
@@ -2509,6 +2669,11 @@ namespace Mono.CSharp
                                break;
 
                        case Operator.RightShift:
+                               if (!(right is IntConstant)) {
+                                       ec.EmitInt (GetShiftMask (l));
+                                       ec.Emit (OpCodes.And);
+                               }
+
                                if (IsUnsigned (l))
                                        opcode = OpCodes.Shr_Un;
                                else
@@ -2516,6 +2681,11 @@ namespace Mono.CSharp
                                break;
                                
                        case Operator.LeftShift:
+                               if (!(right is IntConstant)) {
+                                       ec.EmitInt (GetShiftMask (l));
+                                       ec.Emit (OpCodes.And);
+                               }
+
                                opcode = OpCodes.Shl;
                                break;
 
@@ -2584,6 +2754,11 @@ namespace Mono.CSharp
                        ec.Emit (opcode);
                }
 
+               static int GetShiftMask (TypeSpec type)
+               {
+                       return type.BuiltinType == BuiltinTypeSpec.Type.Int || type.BuiltinType == BuiltinTypeSpec.Type.UInt ? 0x1f : 0x3f;
+               }
+
                static bool IsUnsigned (TypeSpec t)
                {
                        switch (t.BuiltinType) {
@@ -2603,8 +2778,10 @@ namespace Mono.CSharp
                        return t.BuiltinType == BuiltinTypeSpec.Type.Float || t.BuiltinType == BuiltinTypeSpec.Type.Double;
                }
 
-               Expression ResolveOperator (ResolveContext ec)
+               public Expression ResolveOperator (ResolveContext rc)
                {
+                       eclass = ExprClass.Value;
+
                        TypeSpec l = left.Type;
                        TypeSpec r = right.Type;
                        Expression expr;
@@ -2613,57 +2790,109 @@ namespace Mono.CSharp
                        //
                        // Handles predefined primitive types
                        //
-                       if (BuiltinTypeSpec.IsPrimitiveType (l) && BuiltinTypeSpec.IsPrimitiveType (r)) {
+                       if ((BuiltinTypeSpec.IsPrimitiveType (l) || (l.IsNullableType && BuiltinTypeSpec.IsPrimitiveType (Nullable.NullableInfo.GetUnderlyingType (l)))) &&
+                               (BuiltinTypeSpec.IsPrimitiveType (r) || (r.IsNullableType && BuiltinTypeSpec.IsPrimitiveType (Nullable.NullableInfo.GetUnderlyingType (r))))) {
                                if ((oper & Operator.ShiftMask) == 0) {
-                                       if (l.BuiltinType != BuiltinTypeSpec.Type.Bool && !DoBinaryOperatorPromotion (ec))
+                                       if (!DoBinaryOperatorPromotion (rc))
                                                return null;
 
-                                       primitives_only = true;
+                                       primitives_only = BuiltinTypeSpec.IsPrimitiveType (l) && BuiltinTypeSpec.IsPrimitiveType (r);
                                }
                        } else {
                                // Pointers
                                if (l.IsPointer || r.IsPointer)
-                                       return ResolveOperatorPointer (ec, l, r);
+                                       return ResolveOperatorPointer (rc, l, r);
+
+                               // User operators
+                               expr = ResolveUserOperator (rc, left, right);
+                               if (expr != null)
+                                       return expr;
+
 
-                               // Enums
                                bool lenum = l.IsEnum;
                                bool renum = r.IsEnum;
-                               if (lenum || renum) {
-                                       expr = ResolveOperatorEnum (ec, lenum, renum, l, r);
+                               if ((oper & (Operator.ComparisonMask | Operator.BitwiseMask)) != 0) {
+                                       //
+                                       // Enumerations
+                                       //
+                                       if (IsEnumOrNullableEnum (l) || IsEnumOrNullableEnum (r)) {
+                                               expr = ResolveSingleEnumOperators (rc, lenum, renum, l, r);
 
-                                       if (expr != null)
-                                               return expr;
-                               }
+                                               if (expr == null)
+                                                       return null;
 
-                               // Delegates
-                               if ((oper == Operator.Addition || oper == Operator.Subtraction) && (l.IsDelegate || r.IsDelegate)) {
-                                               
-                                       expr = ResolveOperatorDelegate (ec, l, r);
+                                               if ((oper & Operator.BitwiseMask) != 0) {
+                                                       expr = EmptyCast.Create (expr, type);
+                                                       AddEnumResultCast (type);
 
-                                       // TODO: Can this be ambiguous
-                                       if (expr != null)
+                                                       if (oper == Operator.BitwiseAnd && left.Type.IsEnum && right.Type.IsEnum) {
+                                                               expr = OptimizeAndOperation (expr);
+                                                       }
+                                               }
+
+                                               left = ConvertEnumOperandToUnderlyingType (rc, left);
+                                               right = ConvertEnumOperandToUnderlyingType (rc, right);
                                                return expr;
-                               }
+                                       }
+                               } else if ((oper == Operator.Addition || oper == Operator.Subtraction)) {
+                                       if (IsEnumOrNullableEnum (l) || IsEnumOrNullableEnum (r)) {
+                                               //
+                                               // Enumerations
+                                               //
+                                               expr = ResolveEnumOperators (rc, lenum, renum, l, r);
 
-                               // User operators
-                               expr = ResolveUserOperator (ec, left, right);
-                               if (expr != null)
-                                       return expr;
+                                               //
+                                               // We cannot break here there is also Enum + String possible match
+                                               // which is not ambiguous with predefined enum operators
+                                               //
+                                               if (expr != null) {
+                                                       left = ConvertEnumOperandToUnderlyingType (rc, left);
+                                                       right = ConvertEnumOperandToUnderlyingType (rc, right);
 
-                               // Predefined reference types equality
-                               if ((oper & Operator.EqualityMask) != 0) {
-                                       expr = ResolveOperatorEquality (ec, l, r);
-                                       if (expr != null)
-                                               return expr;
+                                                       return expr;
+                                               }
+                                       } else if (l.IsDelegate || r.IsDelegate) {
+                                               //
+                                               // Delegates
+                                               //
+                                               expr = ResolveOperatorDelegate (rc, l, r);
+
+                                               // TODO: Can this be ambiguous
+                                               if (expr != null)
+                                                       return expr;
+                                       }
                                }
                        }
+                       
+                       //
+                       // Equality operators are more complicated
+                       //
+                       if ((oper & Operator.EqualityMask) != 0) {
+                               return ResolveEquality (rc, l, r, primitives_only);
+                       }
+
+                       expr = ResolveOperatorPredefined (rc, rc.BuiltinTypes.OperatorsBinaryStandard, primitives_only);
+                       if (expr != null)
+                               return expr;
 
-                       return ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryStandard, primitives_only, null);
+                       if (primitives_only)
+                               return null;
+
+                       //
+                       // Lifted operators have lower priority
+                       //
+                       return ResolveOperatorPredefined (rc, rc.Module.OperatorsBinaryLifted, false);
                }
 
+               static bool IsEnumOrNullableEnum (TypeSpec type)
+               {
+                       return type.IsEnum || (type.IsNullableType && Nullable.NullableInfo.GetUnderlyingType (type).IsEnum);
+               }
+
+
                // at least one of 'left' or 'right' is an enumeration constant (EnumConstant or SideEffectConstant or ...)
                // if 'left' is not an enumeration constant, create one from the type of 'right'
-               Constant EnumLiftUp (ResolveContext ec, Constant left, Constant right, Location loc)
+               Constant EnumLiftUp (ResolveContext ec, Constant left, Constant right)
                {
                        switch (oper) {
                        case Operator.BitwiseOr:
@@ -2765,8 +2994,9 @@ namespace Mono.CSharp
                public static PredefinedOperator[] CreateStandardOperatorsTable (BuiltinTypes types)
                {
                        TypeSpec bool_type = types.Bool;
-                       return new PredefinedOperator[] {
-                               new PredefinedOperator (types.Int, Operator.ArithmeticMask | Operator.BitwiseMask),
+
+                       return new [] {
+                               new PredefinedOperator (types.Int, Operator.ArithmeticMask | Operator.BitwiseMask | Operator.ShiftMask),
                                new PredefinedOperator (types.UInt, Operator.ArithmeticMask | Operator.BitwiseMask),
                                new PredefinedOperator (types.Long, Operator.ArithmeticMask | Operator.BitwiseMask),
                                new PredefinedOperator (types.ULong, Operator.ArithmeticMask | Operator.BitwiseMask),
@@ -2783,15 +3013,64 @@ namespace Mono.CSharp
                                new PredefinedOperator (types.Decimal, Operator.ComparisonMask, bool_type),
 
                                new PredefinedStringOperator (types.String, Operator.AdditionMask, types.String),
-                               new PredefinedStringOperator (types.String, types.Object, Operator.AdditionMask, types.String),
-                               new PredefinedStringOperator (types.Object, types.String, Operator.AdditionMask, types.String),
+                               // Remaining string operators are in lifted tables
 
                                new PredefinedOperator (bool_type, Operator.BitwiseMask | Operator.LogicalMask | Operator.EqualityMask, bool_type),
 
-                               new PredefinedShiftOperator (types.Int, types.Int, Operator.ShiftMask),
-                               new PredefinedShiftOperator (types.UInt, types.Int, Operator.ShiftMask),
-                               new PredefinedShiftOperator (types.Long, types.Int, Operator.ShiftMask),
-                               new PredefinedShiftOperator (types.ULong, types.Int, Operator.ShiftMask)
+                               new PredefinedOperator (types.UInt, types.Int, Operator.ShiftMask),
+                               new PredefinedOperator (types.Long, types.Int, Operator.ShiftMask),
+                               new PredefinedOperator (types.ULong, types.Int, Operator.ShiftMask)
+                       };
+
+               }
+               public static PredefinedOperator[] CreateStandardLiftedOperatorsTable (ModuleContainer module)
+               {
+                       var nullable = module.PredefinedTypes.Nullable.TypeSpec;
+                       if (nullable == null)
+                               return new PredefinedOperator [0];
+
+                       var types = module.Compiler.BuiltinTypes;
+                       var bool_type = types.Bool;
+
+                       var nullable_bool = nullable.MakeGenericType (module, new[] { bool_type });
+                       var nullable_int = nullable.MakeGenericType (module, new[] { types.Int });
+                       var nullable_uint = nullable.MakeGenericType (module, new[] { types.UInt });
+                       var nullable_long = nullable.MakeGenericType (module, new[] { types.Long });
+                       var nullable_ulong = nullable.MakeGenericType (module, new[] { types.ULong });
+                       var nullable_float = nullable.MakeGenericType (module, new[] { types.Float });
+                       var nullable_double = nullable.MakeGenericType (module, new[] { types.Double });
+                       var nullable_decimal = nullable.MakeGenericType (module, new[] { types.Decimal });
+
+                       return new[] {
+                               new PredefinedOperator (nullable_int, Operator.NullableMask | Operator.ArithmeticMask | Operator.BitwiseMask | Operator.ShiftMask),
+                               new PredefinedOperator (nullable_uint, Operator.NullableMask | Operator.ArithmeticMask | Operator.BitwiseMask),
+                               new PredefinedOperator (nullable_long, Operator.NullableMask | Operator.ArithmeticMask | Operator.BitwiseMask),
+                               new PredefinedOperator (nullable_ulong, Operator.NullableMask | Operator.ArithmeticMask | Operator.BitwiseMask),
+                               new PredefinedOperator (nullable_float, Operator.NullableMask | Operator.ArithmeticMask),
+                               new PredefinedOperator (nullable_double, Operator.NullableMask | Operator.ArithmeticMask),
+                               new PredefinedOperator (nullable_decimal, Operator.NullableMask | Operator.ArithmeticMask),
+
+                               new PredefinedOperator (nullable_int, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_uint, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_long, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_ulong, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_float, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_double, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+                               new PredefinedOperator (nullable_decimal, Operator.NullableMask | Operator.ComparisonMask, bool_type),
+
+                               new PredefinedOperator (nullable_bool, Operator.NullableMask | Operator.BitwiseMask, nullable_bool),
+
+                               new PredefinedOperator (nullable_uint, nullable_int, Operator.NullableMask | Operator.ShiftMask),
+                               new PredefinedOperator (nullable_long, nullable_int, Operator.NullableMask | Operator.ShiftMask),
+                               new PredefinedOperator (nullable_ulong, nullable_int, Operator.NullableMask | Operator.ShiftMask),
+
+                               //
+                               // Not strictly lifted but need to be in second group otherwise expressions like
+                               // int + null would resolve to +(object, string) instead of +(int?, int?)
+                               //
+                               new PredefinedStringOperator (types.String, types.Object, Operator.AdditionMask, types.String),
+                               new PredefinedStringOperator (types.Object, types.String, Operator.AdditionMask, types.String),
+
                        };
                }
 
@@ -2799,113 +3078,168 @@ namespace Mono.CSharp
                {
                        TypeSpec bool_type = types.Bool;
 
-                       return new PredefinedOperator[] {
+                       return new[] {
                                new PredefinedEqualityOperator (types.String, bool_type),
                                new PredefinedEqualityOperator (types.Delegate, bool_type),
-                               new PredefinedOperator (bool_type, Operator.EqualityMask, bool_type)
+                               new PredefinedOperator (bool_type, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.Int, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.UInt, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.Long, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.ULong, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.Float, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.Double, Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (types.Decimal, Operator.EqualityMask, bool_type),
+                       };
+               }
+
+               public static PredefinedOperator[] CreateEqualityLiftedOperatorsTable (ModuleContainer module)
+               {
+                       var nullable = module.PredefinedTypes.Nullable.TypeSpec;
+
+                       if (nullable == null)
+                               return new PredefinedOperator [0];
+
+                       var types = module.Compiler.BuiltinTypes;
+                       var bool_type = types.Bool;
+                       var nullable_bool = nullable.MakeGenericType (module, new [] { bool_type });
+                       var nullable_int = nullable.MakeGenericType (module, new[] { types.Int });
+                       var nullable_uint = nullable.MakeGenericType (module, new[] { types.UInt });
+                       var nullable_long = nullable.MakeGenericType (module, new[] { types.Long });
+                       var nullable_ulong = nullable.MakeGenericType (module, new[] { types.ULong });
+                       var nullable_float = nullable.MakeGenericType (module, new[] { types.Float });
+                       var nullable_double = nullable.MakeGenericType (module, new[] { types.Double });
+                       var nullable_decimal = nullable.MakeGenericType (module, new[] { types.Decimal });
+
+                       return new [] {
+                               new PredefinedOperator (nullable_bool, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_int, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_uint, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_long, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_ulong, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_float, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_double, Operator.NullableMask | Operator.EqualityMask, bool_type),
+                               new PredefinedOperator (nullable_decimal, Operator.NullableMask | Operator.EqualityMask, bool_type)
                        };
                }
 
                //
-               // Rules used during binary numeric promotion
+               // 7.2.6.2 Binary numeric promotions
                //
-               static bool DoNumericPromotion (ResolveContext rc, ref Expression prim_expr, ref Expression second_expr, TypeSpec type)
+               bool DoBinaryOperatorPromotion (ResolveContext rc)
                {
-                       Expression temp;
+                       TypeSpec ltype = left.Type;
+                       if (ltype.IsNullableType) {
+                               ltype = Nullable.NullableInfo.GetUnderlyingType (ltype);
+                       }
 
-                       Constant c = prim_expr as Constant;
-                       if (c != null) {
-                               temp = c.ConvertImplicitly (type);
-                               if (temp != null) {
-                                       prim_expr = temp;
-                                       return true;
-                               }
+                       //
+                       // This is numeric promotion code only
+                       //
+                       if (ltype.BuiltinType == BuiltinTypeSpec.Type.Bool)
+                               return true;
+
+                       TypeSpec rtype = right.Type;
+                       if (rtype.IsNullableType) {
+                               rtype = Nullable.NullableInfo.GetUnderlyingType (rtype);
                        }
 
-                       if (type.BuiltinType == BuiltinTypeSpec.Type.UInt) {
-                               switch (prim_expr.Type.BuiltinType) {
-                               case BuiltinTypeSpec.Type.Int:
-                               case BuiltinTypeSpec.Type.Short:
-                               case BuiltinTypeSpec.Type.SByte:
-                               case BuiltinTypeSpec.Type.Long:
-                                       type = rc.BuiltinTypes.Long;
+                       var lb = ltype.BuiltinType;
+                       var rb = rtype.BuiltinType;
+                       TypeSpec type;
+                       Expression expr;
 
-                                       if (type != second_expr.Type) {
-                                               c = second_expr as Constant;
-                                               if (c != null)
-                                                       temp = c.ConvertImplicitly (type);
-                                               else
-                                                       temp = Convert.ImplicitNumericConversion (second_expr, type);
-                                               if (temp == null)
-                                                       return false;
-                                               second_expr = temp;
-                                       }
-                                       break;
+                       if (lb == BuiltinTypeSpec.Type.Decimal || rb == BuiltinTypeSpec.Type.Decimal) {
+                               type = rc.BuiltinTypes.Decimal;
+                       } else if (lb == BuiltinTypeSpec.Type.Double || rb == BuiltinTypeSpec.Type.Double) {
+                               type = rc.BuiltinTypes.Double;
+                       } else if (lb == BuiltinTypeSpec.Type.Float || rb == BuiltinTypeSpec.Type.Float) {
+                               type = rc.BuiltinTypes.Float;
+                       } else if (lb == BuiltinTypeSpec.Type.ULong || rb == BuiltinTypeSpec.Type.ULong) {
+                               type = rc.BuiltinTypes.ULong;
+
+                               if (IsSignedType (lb)) {
+                                       expr = ConvertSignedConstant (left, type);
+                                       if (expr == null)
+                                               return false;
+                                       left = expr;
+                               } else if (IsSignedType (rb)) {
+                                       expr = ConvertSignedConstant (right, type);
+                                       if (expr == null)
+                                               return false;
+                                       right = expr;
                                }
-                       } else if (type.BuiltinType == BuiltinTypeSpec.Type.ULong) {
-                               //
-                               // A compile-time error occurs if the other operand is of type sbyte, short, int, or long
-                               //
-                               switch (type.BuiltinType) {
-                               case BuiltinTypeSpec.Type.Int:
-                               case BuiltinTypeSpec.Type.Long:
-                               case BuiltinTypeSpec.Type.Short:
-                               case BuiltinTypeSpec.Type.SByte:
-                                       return false;
+
+                       } else if (lb == BuiltinTypeSpec.Type.Long || rb == BuiltinTypeSpec.Type.Long) {
+                               type = rc.BuiltinTypes.Long;
+                       } else if (lb == BuiltinTypeSpec.Type.UInt || rb == BuiltinTypeSpec.Type.UInt) {
+                               type = rc.BuiltinTypes.UInt;
+
+                               if (IsSignedType (lb)) {
+                                       expr = ConvertSignedConstant (left, type);
+                                       if (expr == null)
+                                               type = rc.BuiltinTypes.Long;
+                               } else if (IsSignedType (rb)) {
+                                       expr = ConvertSignedConstant (right, type);
+                                       if (expr == null)
+                                               type = rc.BuiltinTypes.Long;
                                }
+                       } else {
+                               type = rc.BuiltinTypes.Int;
                        }
 
-                       temp = Convert.ImplicitNumericConversion (prim_expr, type);
-                       if (temp == null)
-                               return false;
-
-                       prim_expr = temp;
-                       return true;
-               }
+                       if (ltype != type) {
+                               expr = PromoteExpression (rc, left, type);
+                               if (expr == null)
+                                       return false;
 
-               //
-               // 7.2.6.2 Binary numeric promotions
-               //
-               public bool DoBinaryOperatorPromotion (ResolveContext ec)
-               {
-                       TypeSpec ltype = left.Type;
-                       TypeSpec rtype = right.Type;
-                       Expression temp;
+                               left = expr;
+                       }
 
-                       foreach (TypeSpec t in ec.BuiltinTypes.BinaryPromotionsTypes) {
-                               if (t == ltype)
-                                       return t == rtype || DoNumericPromotion (ec, ref right, ref left, t);
+                       if (rtype != type) {
+                               expr = PromoteExpression (rc, right, type);
+                               if (expr == null)
+                                       return false;
 
-                               if (t == rtype)
-                                       return t == ltype || DoNumericPromotion (ec, ref left, ref right, t);
+                               right = expr;
                        }
 
-                       TypeSpec int32 = ec.BuiltinTypes.Int;
-                       if (ltype != int32) {
-                               Constant c = left as Constant;
-                               if (c != null)
-                                       temp = c.ConvertImplicitly (int32);
-                               else
-                                       temp = Convert.ImplicitNumericConversion (left, int32);
+                       return true;
+               }
 
-                               if (temp == null)
-                                       return false;
-                               left = temp;
+               static bool IsSignedType (BuiltinTypeSpec.Type type)
+               {
+                       switch (type) {
+                       case BuiltinTypeSpec.Type.Int:
+                       case BuiltinTypeSpec.Type.Short:
+                       case BuiltinTypeSpec.Type.SByte:
+                       case BuiltinTypeSpec.Type.Long:
+                               return true;
+                       default:
+                               return false;
                        }
+               }
 
-                       if (rtype != int32) {
-                               Constant c = right as Constant;
-                               if (c != null)
-                                       temp = c.ConvertImplicitly (int32);
-                               else
-                                       temp = Convert.ImplicitNumericConversion (right, int32);
+               static Expression ConvertSignedConstant (Expression expr, TypeSpec type)
+               {
+                       var c = expr as Constant;
+                       if (c == null)
+                               return null;
 
-                               if (temp == null)
-                                       return false;
-                               right = temp;
+                       return c.ConvertImplicitly (type);
+               }
+
+               static Expression PromoteExpression (ResolveContext rc, Expression expr, TypeSpec type)
+               {
+                       if (expr.Type.IsNullableType) {
+                               return Convert.ImplicitConversionStandard (rc, expr,
+                                       rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc, new[] { type }), expr.Location);
                        }
 
-                       return true;
+                       var c = expr as Constant;
+                       if (c != null)
+                               return c.ConvertImplicitly (type);
+
+                       return Convert.ImplicitNumericConversion (expr, type);
                }
 
                protected override Expression DoResolve (ResolveContext ec)
@@ -2929,31 +3263,18 @@ namespace Mono.CSharp
                        if (left == null)
                                return null;
 
-                       Constant lc = left as Constant;
-
-                       if (lc != null && lc.Type.BuiltinType == BuiltinTypeSpec.Type.Bool &&
-                               ((oper == Operator.LogicalAnd && lc.IsDefaultValue) ||
-                                (oper == Operator.LogicalOr && !lc.IsDefaultValue))) {
-
-                               // FIXME: resolve right expression as unreachable
-                               // right.Resolve (ec);
-
-                               ec.Report.Warning (429, 4, right.StartLocation, "Unreachable expression code detected");
-                               return left;
-                       }
-
                        right = right.Resolve (ec);
                        if (right == null)
                                return null;
 
-                       eclass = ExprClass.Value;
+                       Constant lc = left as Constant;
                        Constant rc = right as Constant;
 
                        // The conversion rules are ignored in enum context but why
                        if (!ec.HasSet (ResolveContext.Options.EnumScope) && lc != null && rc != null && (left.Type.IsEnum || right.Type.IsEnum)) {
-                               lc = EnumLiftUp (ec, lc, rc, loc);
+                               lc = EnumLiftUp (ec, lc, rc);
                                if (lc != null)
-                                       rc = EnumLiftUp (ec, rc, lc, loc);
+                                       rc = EnumLiftUp (ec, rc, lc);
                        }
 
                        if (rc != null && lc != null) {
@@ -2972,93 +3293,87 @@ namespace Mono.CSharp
                                CheckOutOfRangeComparison (ec, rc, left.Type);
                        }
 
-                       if (left.Type.BuiltinType == BuiltinTypeSpec.Type.Dynamic || right.Type.BuiltinType == BuiltinTypeSpec.Type.Dynamic) {
-                               var lt = left.Type;
-                               var rt = right.Type;
-                               if (lt.Kind == MemberKind.Void || lt == InternalType.MethodGroup || lt == InternalType.AnonymousMethod ||
-                                       rt.Kind == MemberKind.Void || rt == InternalType.MethodGroup || rt == InternalType.AnonymousMethod) {
-                                       Error_OperatorCannotBeApplied (ec, left, right);
-                                       return null;
-                               }
+                       if (left.Type.BuiltinType == BuiltinTypeSpec.Type.Dynamic || right.Type.BuiltinType == BuiltinTypeSpec.Type.Dynamic)
+                               return DoResolveDynamic (ec);
 
-                               Arguments args;
+                       return DoResolveCore (ec, left, right);
+               }
 
-                               //
-                               // Special handling for logical boolean operators which require rhs not to be
-                               // evaluated based on lhs value
-                               //
-                               if ((oper & Operator.LogicalMask) != 0) {
-                                       Expression cond_left, cond_right, expr;
+               Expression DoResolveDynamic (ResolveContext rc)
+               {
+                       var lt = left.Type;
+                       var rt = right.Type;
+                       if (lt.Kind == MemberKind.Void || lt == InternalType.MethodGroup || lt == InternalType.AnonymousMethod ||
+                               rt.Kind == MemberKind.Void || rt == InternalType.MethodGroup || rt == InternalType.AnonymousMethod) {
+                               Error_OperatorCannotBeApplied (rc, left, right);
+                               return null;
+                       }
+
+                       Arguments args;
 
-                                       args = new Arguments (2);
+                       //
+                       // Special handling for logical boolean operators which require rhs not to be
+                       // evaluated based on lhs value
+                       //
+                       if ((oper & Operator.LogicalMask) != 0) {
+                               Expression cond_left, cond_right, expr;
 
-                                       if (lt.BuiltinType == BuiltinTypeSpec.Type.Dynamic) {
-                                               LocalVariable temp = LocalVariable.CreateCompilerGenerated (lt, ec.CurrentBlock, loc);
+                               args = new Arguments (2);
 
-                                               var cond_args = new Arguments (1);
-                                               cond_args.Add (new Argument (new SimpleAssign (temp.CreateReferenceExpression (ec, loc), left).Resolve (ec)));
+                               if (lt.BuiltinType == BuiltinTypeSpec.Type.Dynamic) {
+                                       LocalVariable temp = LocalVariable.CreateCompilerGenerated (lt, rc.CurrentBlock, loc);
 
-                                               //
-                                               // dynamic && bool => IsFalse (temp = left) ? temp : temp && right;
-                                               // dynamic || bool => IsTrue (temp = left) ? temp : temp || right;
-                                               //
-                                               left = temp.CreateReferenceExpression (ec, loc);
-                                               if (oper == Operator.LogicalAnd) {
-                                                       expr = DynamicUnaryConversion.CreateIsFalse (ec, cond_args, loc);
-                                                       cond_left = left;
-                                               } else {
-                                                       expr = DynamicUnaryConversion.CreateIsTrue (ec, cond_args, loc);
-                                                       cond_left = left;
-                                               }
+                                       var cond_args = new Arguments (1);
+                                       cond_args.Add (new Argument (new SimpleAssign (temp.CreateReferenceExpression (rc, loc), left).Resolve (rc)));
 
-                                               args.Add (new Argument (left));
-                                               args.Add (new Argument (right));
-                                               cond_right = new DynamicExpressionStatement (this, args, loc);
+                                       //
+                                       // dynamic && bool => IsFalse (temp = left) ? temp : temp && right;
+                                       // dynamic || bool => IsTrue (temp = left) ? temp : temp || right;
+                                       //
+                                       left = temp.CreateReferenceExpression (rc, loc);
+                                       if (oper == Operator.LogicalAnd) {
+                                               expr = DynamicUnaryConversion.CreateIsFalse (rc, cond_args, loc);
+                                               cond_left = left;
                                        } else {
-                                               LocalVariable temp = LocalVariable.CreateCompilerGenerated (ec.BuiltinTypes.Bool, ec.CurrentBlock, loc);
+                                               expr = DynamicUnaryConversion.CreateIsTrue (rc, cond_args, loc);
+                                               cond_left = left;
+                                       }
 
-                                               args.Add (new Argument (temp.CreateReferenceExpression (ec, loc).Resolve (ec)));
-                                               args.Add (new Argument (right));
-                                               right = new DynamicExpressionStatement (this, args, loc);
+                                       args.Add (new Argument (left));
+                                       args.Add (new Argument (right));
+                                       cond_right = new DynamicExpressionStatement (this, args, loc);
+                               } else {
+                                       LocalVariable temp = LocalVariable.CreateCompilerGenerated (rc.BuiltinTypes.Bool, rc.CurrentBlock, loc);
 
-                                               //
-                                               // bool && dynamic => (temp = left) ? temp && right : temp;
-                                               // bool || dynamic => (temp = left) ? temp : temp || right;
-                                               //
-                                               if (oper == Operator.LogicalAnd) {
-                                                       cond_left = right;
-                                                       cond_right = temp.CreateReferenceExpression (ec, loc);
-                                               } else {
-                                                       cond_left = temp.CreateReferenceExpression (ec, loc);
-                                                       cond_right = right;
-                                               }
+                                       args.Add (new Argument (temp.CreateReferenceExpression (rc, loc).Resolve (rc)));
+                                       args.Add (new Argument (right));
+                                       right = new DynamicExpressionStatement (this, args, loc);
 
-                                               expr = new BooleanExpression (new SimpleAssign (temp.CreateReferenceExpression (ec, loc), left));
+                                       //
+                                       // bool && dynamic => (temp = left) ? temp && right : temp;
+                                       // bool || dynamic => (temp = left) ? temp : temp || right;
+                                       //
+                                       if (oper == Operator.LogicalAnd) {
+                                               cond_left = right;
+                                               cond_right = temp.CreateReferenceExpression (rc, loc);
+                                       } else {
+                                               cond_left = temp.CreateReferenceExpression (rc, loc);
+                                               cond_right = right;
                                        }
 
-                                       return new Conditional (expr, cond_left, cond_right, loc).Resolve (ec);
+                                       expr = new BooleanExpression (new SimpleAssign (temp.CreateReferenceExpression (rc, loc), left));
                                }
 
-                               args = new Arguments (2);
-                               args.Add (new Argument (left));
-                               args.Add (new Argument (right));
-                               return new DynamicExpressionStatement (this, args, loc).Resolve (ec);
-                       }
-
-                       if (ec.Module.Compiler.Settings.Version >= LanguageVersion.ISO_2 &&
-                               ((left.Type.IsNullableType && (right is NullLiteral || right.Type.IsNullableType || TypeSpec.IsValueType (right.Type))) ||
-                               (TypeSpec.IsValueType (left.Type) && right is NullLiteral) ||
-                               (right.Type.IsNullableType && (left is NullLiteral || left.Type.IsNullableType || TypeSpec.IsValueType (left.Type))) ||
-                               (TypeSpec.IsValueType (right.Type) && left is NullLiteral))) {
-                               var lifted = new Nullable.LiftedBinaryOperator (oper, left, right);
-                               lifted.state = state;
-                               return lifted.Resolve (ec);
+                               return new Conditional (expr, cond_left, cond_right, loc).Resolve (rc);
                        }
 
-                       return DoResolveCore (ec, left, right);
+                       args = new Arguments (2);
+                       args.Add (new Argument (left));
+                       args.Add (new Argument (right));
+                       return new DynamicExpressionStatement (this, args, loc).Resolve (rc);
                }
 
-               protected Expression DoResolveCore (ResolveContext ec, Expression left_orig, Expression right_orig)
+               Expression DoResolveCore (ResolveContext ec, Expression left_orig, Expression right_orig)
                {
                        Expression expr = ResolveOperator (ec);
                        if (expr == null)
@@ -3074,6 +3389,11 @@ namespace Mono.CSharp
                }
 
                public override SLE.Expression MakeExpression (BuilderContext ctx)
+               {
+                       return MakeExpression (ctx, left, right);
+               }
+
+               public SLE.Expression MakeExpression (BuilderContext ctx, Expression left, Expression right)
                {
                        var le = left.MakeExpression (ctx);
                        var re = right.MakeExpression (ctx);
@@ -3160,15 +3480,14 @@ namespace Mono.CSharp
                        if (method == null)
                                return new EmptyExpression (ec.BuiltinTypes.Decimal);
 
-                       MethodGroupExpr mg = MethodGroupExpr.CreatePredefined (method, ec.BuiltinTypes.Delegate, loc);
-                       Expression expr = new UserOperatorCall (mg.BestCandidate, args, CreateExpressionTree, loc);
+                       Expression expr = new UserOperatorCall (method, args, CreateExpressionTree, loc);
                        return new ClassCast (expr, l);
                }
 
                //
-               // Enumeration operators
+               // Resolves enumeration operators where only single predefined overload exists, handles lifted versions too
                //
-               Expression ResolveOperatorEnum (ResolveContext ec, bool lenum, bool renum, TypeSpec ltype, TypeSpec rtype)
+               Expression ResolveSingleEnumOperators (ResolveContext rc, bool lenum, bool renum, TypeSpec ltype, TypeSpec rtype)
                {
                        //
                        // bool operator == (E x, E y);
@@ -3182,264 +3501,393 @@ namespace Mono.CSharp
                        // E operator | (E x, E y);
                        // E operator ^ (E x, E y);
                        //
-                       // U operator - (E e, E f)
-                       // E operator - (E e, U x)
-                       // E operator - (U x, E e)      // LAMESPEC: Not covered by the specification
-                       //
-                       // E operator + (E e, U x)
-                       // E operator + (U x, E e)
-                       //
-                       Expression ltemp = left;
-                       Expression rtemp = right;
-                       TypeSpec underlying_type;
-                       TypeSpec underlying_type_result;
-                       TypeSpec res_type;
                        Expression expr;
-                       
-                       //
-                       // LAMESPEC: There is never ambiguous conversion between enum operators
-                       // the one which contains more enum parameters always wins even if there
-                       // is an implicit conversion involved
-                       //
-                       if ((oper & (Operator.ComparisonMask | Operator.BitwiseMask)) != 0) {
-                               if (renum) {
-                                       underlying_type = EnumSpec.GetUnderlyingType (rtype);
-                                       expr = Convert.ImplicitConversion (ec, left, rtype, loc);
-                                       if (expr == null)
-                                               return null;
+                       if ((oper & Operator.ComparisonMask) != 0) {
+                               type = rc.BuiltinTypes.Bool;
+                       } else {
+                               if (lenum)
+                                       type = ltype;
+                               else if (renum)
+                                       type = rtype;
+                               else if (ltype.IsNullableType && Nullable.NullableInfo.GetUnderlyingType (ltype).IsEnum)
+                                       type = ltype;
+                               else
+                                       type = rtype;
+                       }
 
-                                       left = expr;
-                                       ltype = expr.Type;
-                               } else if (lenum) {
-                                       underlying_type = EnumSpec.GetUnderlyingType (ltype);
-                                       expr = Convert.ImplicitConversion (ec, right, ltype, loc);
-                                       if (expr == null)
-                                               return null;
+                       if (ltype == rtype) {
+                               if (lenum || renum)
+                                       return this;
+
+                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                               lifted.Left = left;
+                               lifted.Right = right;
+                               return lifted.Resolve (rc);
+                       }
 
+                       if (renum && !ltype.IsNullableType) {
+                               expr = Convert.ImplicitConversion (rc, left, rtype, loc);
+                               if (expr != null) {
+                                       left = expr;
+                                       return this;
+                               }
+                       } else if (lenum && !rtype.IsNullableType) {
+                               expr = Convert.ImplicitConversion (rc, right, ltype, loc);
+                               if (expr != null) {
                                        right = expr;
-                                       rtype = expr.Type;
-                               } else {
-                                       return null;
+                                       return this;
                                }
+                       }
 
-                               if ((oper & Operator.BitwiseMask) != 0) {
-                                       res_type = ltype;
-                                       underlying_type_result = underlying_type;
-                               } else {
-                                       res_type = null;
-                                       underlying_type_result = null;
-                               }
-                       } else if (oper == Operator.Subtraction) {
-                               if (renum) {
-                                       underlying_type = EnumSpec.GetUnderlyingType (rtype);
-                                       if (ltype != rtype) {
-                                               expr = Convert.ImplicitConversion (ec, left, rtype, left.Location);
-                                               if (expr == null) {
-                                                       expr = Convert.ImplicitConversion (ec, left, underlying_type, left.Location);
-                                                       if (expr == null)
-                                                               return null;
-
-                                                       res_type = rtype;
-                                               } else {
-                                                       res_type = underlying_type;
-                                               }
+                       //
+                       // Now try lifted version of predefined operator
+                       //
+                       var nullable_type = rc.Module.PredefinedTypes.Nullable.TypeSpec;
+                       if (nullable_type != null) {
+                               if (renum && !ltype.IsNullableType) {
+                                       var lifted_type = nullable_type.MakeGenericType (rc.Module, new[] { rtype });
 
+                                       expr = Convert.ImplicitConversion (rc, left, lifted_type, loc);
+                                       if (expr != null) {
                                                left = expr;
-                                       } else {
-                                               res_type = underlying_type;
+                                               right = Convert.ImplicitConversion (rc, right, lifted_type, loc);
                                        }
 
-                                       underlying_type_result = underlying_type;
-                               } else if (lenum) {
-                                       underlying_type = EnumSpec.GetUnderlyingType (ltype);
-                                       expr = Convert.ImplicitConversion (ec, right, ltype, right.Location);
-                                       if (expr == null || expr is EnumConstant) {
-                                               expr = Convert.ImplicitConversion (ec, right, underlying_type, right.Location);
-                                               if (expr == null)
-                                                       return null;
+                                       if ((oper & Operator.BitwiseMask) != 0)
+                                               type = lifted_type;
 
-                                               res_type = ltype;
-                                       } else {
-                                               res_type = underlying_type;
+                                       if (left.IsNull) {
+                                               if ((oper & Operator.BitwiseMask) != 0)
+                                                       return Nullable.LiftedNull.CreateFromExpression (rc, this);
+
+                                               return CreateLiftedValueTypeResult (rc, rtype);
                                        }
 
-                                       right = expr;
-                                       underlying_type_result = underlying_type;
-                               } else {
-                                       return null;
-                               }
-                       } else if (oper == Operator.Addition) {
-                               if (lenum) {
-                                       underlying_type = EnumSpec.GetUnderlyingType (ltype);
-                                       res_type = ltype;
+                                       if (expr != null) {
+                                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                                               lifted.Left = expr;
+                                               lifted.Right = right;
+                                               return lifted.Resolve (rc);
+                                       }
+                               } else if (lenum && !rtype.IsNullableType) {
+                                       var lifted_type = nullable_type.MakeGenericType (rc.Module, new[] { ltype });
+
+                                       expr = Convert.ImplicitConversion (rc, right, lifted_type, loc);
+                                       if (expr != null) {
+                                               right = expr;
+                                               left = Convert.ImplicitConversion (rc, left, lifted_type, loc);
+                                       }
+
+                                       if ((oper & Operator.BitwiseMask) != 0)
+                                               type = lifted_type;
+
+                                       if (right.IsNull) {
+                                               if ((oper & Operator.BitwiseMask) != 0)
+                                                       return Nullable.LiftedNull.CreateFromExpression (rc, this);
 
-                                       if (rtype != underlying_type && (state & (State.RightNullLifted | State.LeftNullLifted)) == 0) {
-                                               expr = Convert.ImplicitConversion (ec, right, underlying_type, right.Location);
+                                               return CreateLiftedValueTypeResult (rc, ltype);
+                                       }
+
+                                       if (expr != null) {
+                                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                                               lifted.Left = left;
+                                               lifted.Right = expr;
+                                               return lifted.Resolve (rc);
+                                       }
+                               } else if (rtype.IsNullableType && Nullable.NullableInfo.GetUnderlyingType (rtype).IsEnum) {
+                                       if (left.IsNull) {
+                                               if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion))
+                                                       left = Convert.ImplicitConversion (rc, left, rtype, left.Location);
+
+                                               if ((oper & Operator.RelationalMask) != 0)
+                                                       return CreateLiftedValueTypeResult (rc, rtype);
+
+                                               if ((oper & Operator.BitwiseMask) != 0)
+                                                       return Nullable.LiftedNull.CreateFromExpression (rc, this);
+
+                                               // Equality operators are valid between E? and null
+                                               expr = left;
+                                       } else {
+                                               expr = Convert.ImplicitConversion (rc, left, Nullable.NullableInfo.GetUnderlyingType (rtype), loc);
                                                if (expr == null)
                                                        return null;
+                                       }
 
-                                               right = expr;
+                                       if (expr != null) {
+                                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                                               lifted.Left = expr;
+                                               lifted.Right = right;
+                                               return lifted.Resolve (rc);
                                        }
-                               } else {
-                                       underlying_type = EnumSpec.GetUnderlyingType (rtype);
-                                       res_type = rtype;
-                                       if (ltype != underlying_type) {
-                                               expr = Convert.ImplicitConversion (ec, left, underlying_type, left.Location);
+                               } else if (ltype.IsNullableType && Nullable.NullableInfo.GetUnderlyingType (ltype).IsEnum) {
+                                       if (right.IsNull) {
+                                               if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion))
+                                                       right = Convert.ImplicitConversion (rc, right, ltype, right.Location);
+
+                                               if ((oper & Operator.RelationalMask) != 0)
+                                                       return CreateLiftedValueTypeResult (rc, ltype);
+
+                                               if ((oper & Operator.BitwiseMask) != 0)
+                                                       return Nullable.LiftedNull.CreateFromExpression (rc, this);
+
+                                               // Equality operators are valid between E? and null
+                                               expr = right;
+                                       } else {
+                                               expr = Convert.ImplicitConversion (rc, right, Nullable.NullableInfo.GetUnderlyingType (ltype), loc);
                                                if (expr == null)
                                                        return null;
+                                       }
 
-                                               left = expr;
+                                       if (expr != null) {
+                                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                                               lifted.Left = left;
+                                               lifted.Right = expr;
+                                               return lifted.Resolve (rc);
                                        }
                                }
-
-                               underlying_type_result = underlying_type;
-                       } else {
-                               return null;
                        }
 
-                       // Unwrap the constant correctly, so DoBinaryOperatorPromotion can do the magic
-                       // with constants and expressions
-                       if (left.Type != underlying_type) {
-                               if (left is Constant)
-                                       left = ((Constant) left).ConvertExplicitly (false, underlying_type);
+                       return null;
+               }
+
+               static Expression ConvertEnumOperandToUnderlyingType (ResolveContext rc, Expression expr)
+               {
+                       TypeSpec underlying_type;
+                       if (expr.Type.IsNullableType) {
+                               var nt = Nullable.NullableInfo.GetUnderlyingType (expr.Type);
+                               if (nt.IsEnum)
+                                       underlying_type = EnumSpec.GetUnderlyingType (nt);
                                else
-                                       left = EmptyCast.Create (left, underlying_type);
+                                       underlying_type = nt;
+                       } else if (expr.Type.IsEnum) {
+                               underlying_type = EnumSpec.GetUnderlyingType (expr.Type);
+                       } else {
+                               underlying_type = expr.Type;
                        }
 
-                       if (right.Type != underlying_type) {
-                               if (right is Constant)
-                                       right = ((Constant) right).ConvertExplicitly (false, underlying_type);
-                               else
-                                       right = EmptyCast.Create (right, underlying_type);
+                       switch (underlying_type.BuiltinType) {
+                       case BuiltinTypeSpec.Type.SByte:
+                       case BuiltinTypeSpec.Type.Byte:
+                       case BuiltinTypeSpec.Type.Short:
+                       case BuiltinTypeSpec.Type.UShort:
+                               underlying_type = rc.BuiltinTypes.Int;
+                               break;
                        }
 
+                       if (expr.Type.IsNullableType)
+                               underlying_type = rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { underlying_type });
+
+                       if (expr.Type == underlying_type)
+                               return expr;
+
+                       return EmptyCast.Create (expr, underlying_type);
+               }
+
+               Expression ResolveEnumOperators (ResolveContext rc, bool lenum, bool renum, TypeSpec ltype, TypeSpec rtype)
+               {
+                       //
+                       // U operator - (E e, E f)
+                       // E operator - (E e, U x)  // Internal decomposition operator
+                       // E operator - (U x, E e)      // Internal decomposition operator
                        //
-                       // C# specification uses explicit cast syntax which means binary promotion
-                       // should happen, however it seems that csc does not do that
+                       // E operator + (E e, U x)
+                       // E operator + (U x, E e)
                        //
-                       if (!DoBinaryOperatorPromotion (ec)) {
-                               left = ltemp;
-                               right = rtemp;
-                               return null;
+
+                       TypeSpec enum_type;
+
+                       if (lenum)
+                               enum_type = ltype;
+                       else if (renum)
+                               enum_type = rtype;
+                       else if (ltype.IsNullableType && Nullable.NullableInfo.GetUnderlyingType (ltype).IsEnum)
+                               enum_type = ltype;
+                       else
+                               enum_type = rtype;
+
+                       Expression expr;
+                       if (!enum_type.IsNullableType) {
+                               expr = ResolveOperatorPredefined (rc, rc.Module.GetPredefinedEnumAritmeticOperators (enum_type, false), false);
+                               if (expr != null) {
+                                       if (oper == Operator.Subtraction)
+                                               expr = ConvertEnumSubtractionResult (rc, expr);
+                                       else
+                                               expr = ConvertEnumAdditionalResult (expr, enum_type);
+
+                                       AddEnumResultCast (expr.Type);
+
+                                       return expr;
+                               }
+
+                               enum_type = rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { enum_type });
                        }
 
-                       if (underlying_type_result != null && left.Type != underlying_type_result) {
-                               enum_conversion = Convert.ExplicitNumericConversion (ec, new EmptyExpression (left.Type), underlying_type_result);
+                       expr = ResolveOperatorPredefined (rc, rc.Module.GetPredefinedEnumAritmeticOperators (enum_type, true), false);
+                       if (expr != null) {
+                               if (oper == Operator.Subtraction)
+                                       expr = ConvertEnumSubtractionResult (rc, expr);
+                               else
+                                       expr = ConvertEnumAdditionalResult (expr, enum_type);
+
+                               AddEnumResultCast (expr.Type);
                        }
 
-                       expr = ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryStandard, true, res_type);
-                       if (expr == null)
-                               return null;
+                       return expr;
+               }
 
-                       if (!IsCompound)
-                               return expr;
+               static Expression ConvertEnumAdditionalResult (Expression expr, TypeSpec enumType)
+               {
+                       return EmptyCast.Create (expr, enumType);
+               }
 
+               Expression ConvertEnumSubtractionResult (ResolveContext rc, Expression expr)
+               {
                        //
-                       // Section: 7.16.2
+                       // Enumeration subtraction has different result type based on
+                       // best overload
                        //
+                       TypeSpec result_type;
+                       if (left.Type == right.Type) {
+                               var c = right as EnumConstant;
+                               if (c != null && c.IsZeroInteger && !right.Type.IsEnum) {
+                                       //
+                                       // LAMESPEC: This is quite unexpected for expression E - 0 the return type is
+                                       // E which is not what expressions E - 1 or 0 - E return
+                                       //
+                                       result_type = left.Type;
+                               } else {
+                                       result_type = left.Type.IsNullableType ?
+                                               Nullable.NullableInfo.GetEnumUnderlyingType (rc.Module, left.Type) :
+                                               EnumSpec.GetUnderlyingType (left.Type);
+                               }
+                       } else {
+                               if (IsEnumOrNullableEnum (left.Type)) {
+                                       result_type = left.Type;
+                               } else {
+                                       result_type = right.Type;
+                               }
 
-                       //
-                       // If the return type of the selected operator is implicitly convertible to the type of x
-                       //
-                       if (Convert.ImplicitConversionExists (ec, expr, ltype))
-                               return expr;
+                               if (expr is Nullable.LiftedBinaryOperator && !result_type.IsNullableType)
+                                       result_type = rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { result_type });
+                       }
 
-                       //
-                       // Otherwise, if the selected operator is a predefined operator, if the return type of the
-                       // selected operator is explicitly convertible to the type of x, and if y is implicitly
-                       // convertible to the type of x or the operator is a shift operator, then the operation
-                       // is evaluated as x = (T)(x op y), where T is the type of x
-                       //
-                       expr = Convert.ExplicitConversion (ec, expr, ltype, loc);
-                       if (expr == null)
-                               return null;
+                       return EmptyCast.Create (expr, result_type);
+               }
 
-                       if (Convert.ImplicitConversionExists (ec, ltemp, ltype))
-                               return expr;
+               void AddEnumResultCast (TypeSpec type)
+               {
+                       if (type.IsNullableType)
+                               type = Nullable.NullableInfo.GetUnderlyingType (type);
 
-                       return null;
+                       if (type.IsEnum)
+                               type = EnumSpec.GetUnderlyingType (type);
+
+                       switch (type.BuiltinType) {
+                       case BuiltinTypeSpec.Type.SByte:
+                               enum_conversion = ConvCast.Mode.I4_I1;
+                               break;
+                       case BuiltinTypeSpec.Type.Byte:
+                               enum_conversion = ConvCast.Mode.I4_U1;
+                               break;
+                       case BuiltinTypeSpec.Type.Short:
+                               enum_conversion = ConvCast.Mode.I4_I2;
+                               break;
+                       case BuiltinTypeSpec.Type.UShort:
+                               enum_conversion = ConvCast.Mode.I4_U2;
+                               break;
+                       }
                }
 
                //
-               // 7.9.6 Reference type equality operators
+               // Equality operators rules
                //
-               Expression ResolveOperatorEquality (ResolveContext ec, TypeSpec l, TypeSpec r)
+               Expression ResolveEquality (ResolveContext ec, TypeSpec l, TypeSpec r, bool primitives_only)
                {
                        Expression result;
                        type = ec.BuiltinTypes.Bool;
+                       bool no_arg_conv = false;
 
-                       //
-                       // a, Both operands are reference-type values or the value null
-                       // b, One operand is a value of type T where T is a type-parameter and
-                       // the other operand is the value null. Furthermore T does not have the
-                       // value type constraint
-                       //
-                       // LAMESPEC: Very confusing details in the specification, basically any
-                       // reference like type-parameter is allowed
-                       //
-                       var tparam_l = l as TypeParameterSpec;
-                       var tparam_r = r as TypeParameterSpec;
-                       if (tparam_l != null) {
-                               if (right is NullLiteral && !tparam_l.HasSpecialStruct) {
-                                       left = new BoxedCast (left, ec.BuiltinTypes.Object);
-                                       return this;
-                               }
+                       if (!primitives_only) {
 
-                               if (!tparam_l.IsReferenceType)
-                                       return null;
+                               //
+                               // a, Both operands are reference-type values or the value null
+                               // b, One operand is a value of type T where T is a type-parameter and
+                               // the other operand is the value null. Furthermore T does not have the
+                               // value type constraint
+                               //
+                               // LAMESPEC: Very confusing details in the specification, basically any
+                               // reference like type-parameter is allowed
+                               //
+                               var tparam_l = l as TypeParameterSpec;
+                               var tparam_r = r as TypeParameterSpec;
+                               if (tparam_l != null) {
+                                       if (right is NullLiteral) {
+                                               if (tparam_l.GetEffectiveBase ().BuiltinType == BuiltinTypeSpec.Type.ValueType)
+                                                       return null;
 
-                               l = tparam_l.GetEffectiveBase ();
-                               left = new BoxedCast (left, l);
-                       } else if (left is NullLiteral && tparam_r == null) {
-                               if (!TypeSpec.IsReferenceType (r) || r.Kind == MemberKind.InternalCompilerType)
-                                       return null;
+                                               left = new BoxedCast (left, ec.BuiltinTypes.Object);
+                                               return this;
+                                       }
 
-                               return this;
-                       }
+                                       if (!tparam_l.IsReferenceType)
+                                               return null;
 
-                       if (tparam_r != null) {
-                               if (left is NullLiteral && !tparam_r.HasSpecialStruct) {
-                                       right = new BoxedCast (right, ec.BuiltinTypes.Object);
-                                       return this;
+                                       l = tparam_l.GetEffectiveBase ();
+                                       left = new BoxedCast (left, l);
+                               } else if (left is NullLiteral && tparam_r == null) {
+                                       if (TypeSpec.IsReferenceType (r))
+                                               return this;
+
+                                       if (r.Kind == MemberKind.InternalCompilerType)
+                                               return null;
                                }
 
-                               if (!tparam_r.IsReferenceType)
-                                       return null;
+                               if (tparam_r != null) {
+                                       if (left is NullLiteral) {
+                                               if (tparam_r.GetEffectiveBase ().BuiltinType == BuiltinTypeSpec.Type.ValueType)
+                                                       return null;
 
-                               r = tparam_r.GetEffectiveBase ();
-                               right = new BoxedCast (right, r);
-                       } else if (right is NullLiteral) {
-                               if (!TypeSpec.IsReferenceType (l) || l.Kind == MemberKind.InternalCompilerType)
-                                       return null;
+                                               right = new BoxedCast (right, ec.BuiltinTypes.Object);
+                                               return this;
+                                       }
 
-                               return this;
-                       }
+                                       if (!tparam_r.IsReferenceType)
+                                               return null;
 
-                       bool no_arg_conv = false;
+                                       r = tparam_r.GetEffectiveBase ();
+                                       right = new BoxedCast (right, r);
+                               } else if (right is NullLiteral) {
+                                       if (TypeSpec.IsReferenceType (l))
+                                               return this;
 
-                       //
-                       // LAMESPEC: method groups can be compared when they convert to other side delegate
-                       //
-                       if (l.IsDelegate) {
-                               if (right.eclass == ExprClass.MethodGroup) {
-                                       result = Convert.ImplicitConversion (ec, right, l, loc);
+                                       if (l.Kind == MemberKind.InternalCompilerType)
+                                               return null;
+                               }
+
+                               //
+                               // LAMESPEC: method groups can be compared when they convert to other side delegate
+                               //
+                               if (l.IsDelegate) {
+                                       if (right.eclass == ExprClass.MethodGroup) {
+                                               result = Convert.ImplicitConversion (ec, right, l, loc);
+                                               if (result == null)
+                                                       return null;
+
+                                               right = result;
+                                               r = l;
+                                       } else if (r.IsDelegate && l != r) {
+                                               return null;
+                                       }
+                               } else if (left.eclass == ExprClass.MethodGroup && r.IsDelegate) {
+                                       result = Convert.ImplicitConversionRequired (ec, left, r, loc);
                                        if (result == null)
                                                return null;
 
-                                       right = result;
-                                       r = l;
-                               } else if (r.IsDelegate && l != r) {
-                                       return null;
+                                       left = result;
+                                       l = r;
+                               } else {
+                                       no_arg_conv = l == r && !l.IsStruct;
                                }
-                       } else if (left.eclass == ExprClass.MethodGroup && r.IsDelegate) {
-                               result = Convert.ImplicitConversionRequired (ec, left, r, loc);
-                               if (result == null)
-                                       return null;
-
-                               left = result;
-                               l = r;
-                       } else {
-                               no_arg_conv = l == r && !l.IsStruct;
                        }
 
                        //
@@ -3457,9 +3905,34 @@ namespace Mono.CSharp
                        // not apply when both operands are of same reference type
                        //
                        if (r.BuiltinType != BuiltinTypeSpec.Type.Object && l.BuiltinType != BuiltinTypeSpec.Type.Object) {
-                               result = ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryEquality, no_arg_conv, null);
+                               result = ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryEquality, no_arg_conv);  
                                if (result != null)
                                        return result;
+
+                               //
+                               // Now try lifted version of predefined operators
+                               //
+                               if (no_arg_conv && !l.IsNullableType) {
+                                       //
+                                       // Optimizes cases which won't match
+                                       //
+                               } else {
+                                       result = ResolveOperatorPredefined (ec, ec.Module.OperatorsBinaryEqualityLifted, no_arg_conv);
+                                       if (result != null)
+                                               return result;
+                               }
+
+                               //
+                               // The == and != operators permit one operand to be a value of a nullable
+                               // type and the other to be the null literal, even if no predefined or user-defined
+                               // operator (in unlifted or lifted form) exists for the operation.
+                               //
+                               if ((l.IsNullableType && right.IsNull) || (r.IsNullableType && left.IsNull)) {
+                                       var lifted = new Nullable.LiftedBinaryOperator (this);
+                                       lifted.Left = left;
+                                       lifted.Right = right;
+                                       return lifted.Resolve (ec);
+                               }
                        }
 
                        //
@@ -3527,13 +4000,13 @@ namespace Mono.CSharp
                                return this;
                        }
 
-                       return ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryUnsafe, false, null);
+                       return ResolveOperatorPredefined (ec, ec.BuiltinTypes.OperatorsBinaryUnsafe, false);
                }
 
                //
                // Build-in operators method overloading
                //
-               protected virtual Expression ResolveOperatorPredefined (ResolveContext ec, PredefinedOperator [] operators, bool primitives_only, TypeSpec enum_type)
+               Expression ResolveOperatorPredefined (ResolveContext ec, PredefinedOperator [] operators, bool primitives_only)
                {
                        PredefinedOperator best_operator = null;
                        TypeSpec l = left.Type;
@@ -3574,41 +4047,62 @@ namespace Mono.CSharp
                        if (best_operator == null)
                                return null;
 
-                       Expression expr = best_operator.ConvertResult (ec, this);
+                       return best_operator.ConvertResult (ec, this);
+               }
 
-                       //
-                       // Optimize &/&& constant expressions with 0 value
-                       //
-                       if (oper == Operator.BitwiseAnd || oper == Operator.LogicalAnd) {
-                               Constant rc = right as Constant;
-                               Constant lc = left as Constant;
-                               if (((lc != null && lc.IsDefaultValue) || (rc != null && rc.IsDefaultValue)) && !(this is Nullable.LiftedBinaryOperator)) {
-                                       //
-                                       // The result is a constant with side-effect
-                                       //
-                                       Constant side_effect = rc == null ?
-                                               new SideEffectConstant (lc, right, loc) :
-                                               new SideEffectConstant (rc, left, loc);
+               //
+               // Optimize & constant expressions with 0 value
+               //
+               Expression OptimizeAndOperation (Expression expr)
+               {
+                       Constant rc = right as Constant;
+                       Constant lc = left as Constant;
+                       if ((lc != null && lc.IsDefaultValue) || (rc != null && rc.IsDefaultValue)) {
+                               //
+                               // The result is a constant with side-effect
+                               //
+                               Constant side_effect = rc == null ?
+                                       new SideEffectConstant (lc, right, loc) :
+                                       new SideEffectConstant (rc, left, loc);
 
-                                       return ReducedExpression.Create (side_effect, expr);
-                               }
+                               return ReducedExpression.Create (side_effect, expr);
                        }
 
-                       if (enum_type == null)
-                               return expr;
+                       return expr;
+               }
 
-                       //
-                       // HACK: required by enum_conversion
-                       //
-                       expr.Type = enum_type;
-                       return EmptyCast.Create (expr, enum_type);
+               //
+               // Value types can be compared with the null literal because of the lifting
+               // language rules. However the result is always true or false.
+               //
+               public Expression CreateLiftedValueTypeResult (ResolveContext rc, TypeSpec valueType)
+               {
+                       if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion)) {
+                               type = rc.BuiltinTypes.Bool;
+                               return this;
+                       }
+
+                       // FIXME: Handle side effect constants
+                       Constant c = new BoolConstant (rc.BuiltinTypes, Oper == Operator.Inequality, loc);
+
+                       if ((Oper & Operator.EqualityMask) != 0) {
+                               rc.Report.Warning (472, 2, loc, "The result of comparing value type `{0}' with null is always `{1}'",
+                                       valueType.GetSignatureForError (), c.GetValueAsLiteral ());
+                       } else {
+                               rc.Report.Warning (464, 2, loc, "The result of comparing type `{0}' with null is always `{1}'",
+                                       valueType.GetSignatureForError (), c.GetValueAsLiteral ());
+                       }
+
+                       return c;
                }
 
                //
                // Performs user-operator overloading
                //
-               protected virtual Expression ResolveUserOperator (ResolveContext ec, Expression left, Expression right)
+               Expression ResolveUserOperator (ResolveContext rc, Expression left, Expression right)
                {
+                       Expression oper_expr;
+
                        var op = ConvertBinaryToUserOperator (oper);
                        var l = left.Type;
                        if (l.IsNullableType)
@@ -3630,7 +4124,7 @@ namespace Mono.CSharp
 
                        Arguments args = new Arguments (2);
                        Argument larg = new Argument (left);
-                       args.Add (larg);
+                       args.Add (larg);        
                        Argument rarg = new Argument (right);
                        args.Add (rarg);
 
@@ -3644,50 +4138,198 @@ namespace Mono.CSharp
                                left_operators = right_operators;
                        }
 
-                       var res = new OverloadResolver (left_operators, OverloadResolver.Restrictions.ProbingOnly | 
-                               OverloadResolver.Restrictions.NoBaseMembers | OverloadResolver.Restrictions.BaseMembersIncluded, loc);
+                       const OverloadResolver.Restrictions restr = OverloadResolver.Restrictions.ProbingOnly |
+                               OverloadResolver.Restrictions.NoBaseMembers | OverloadResolver.Restrictions.BaseMembersIncluded;
 
-                       var oper_method = res.ResolveOperator (ec, ref args);
-                       if (oper_method == null)
-                               return null;
+                       var res = new OverloadResolver (left_operators, restr, loc);
 
-                       var llifted = (state & State.LeftNullLifted) != 0;
-                       var rlifted = (state & State.RightNullLifted) != 0;
-                       if ((Oper & Operator.EqualityMask) != 0) {
-                               var parameters = oper_method.Parameters;
-                               // LAMESPEC: No idea why this is not allowed
-                               if ((left is Nullable.Unwrap || right is Nullable.Unwrap) && parameters.Types [0] != parameters.Types [1])
+                       var oper_method = res.ResolveOperator (rc, ref args);
+                       if (oper_method == null) {
+                               //
+                               // Logical && and || cannot be lifted
+                               //
+                               if ((oper & Operator.LogicalMask) != 0)
+                                       return null;
+
+                               //
+                               // Apply lifted user operators only for liftable types. Implicit conversion
+                               // to nullable types is not allowed
+                               //
+                               if (!IsLiftedOperatorApplicable ())
+                                       return null;
+
+                               // TODO: Cache the result in module container
+                               var lifted_methods = CreateLiftedOperators (rc, left_operators);
+                               if (lifted_methods == null)
+                                       return null;
+
+                               res = new OverloadResolver (lifted_methods, restr | OverloadResolver.Restrictions.ProbingOnly, loc);
+
+                               oper_method = res.ResolveOperator (rc, ref args);
+                               if (oper_method == null)
                                        return null;
 
-                               // Binary operation was lifted but we have found a user operator
-                               // which requires value-type argument, we downgrade ourself back to
-                               // binary operation
-                               // LAMESPEC: The user operator is not called (it cannot be we are passing null to struct)
-                               // but compilation succeeds
-                               if ((llifted && !parameters.Types[0].IsStruct) || (rlifted && !parameters.Types[1].IsStruct)) {
-                                       state &= ~(State.LeftNullLifted | State.RightNullLifted);
+                               MethodSpec best_original = null;
+                               foreach (MethodSpec ms in left_operators) {
+                                       if (ms.MemberDefinition == oper_method.MemberDefinition) {
+                                               best_original = ms;
+                                               break;
+                                       }
                                }
-                       }
 
-                       Expression oper_expr;
+                               if (rc.HasSet (ResolveContext.Options.ExpressionTreeConversion)) {
+                                       //
+                                       // Expression trees use lifted notation in this case
+                                       //
+                                       this.left = Convert.ImplicitConversion (rc, left, oper_method.Parameters.Types[0], left.Location);
+                                       this.right = Convert.ImplicitConversion (rc, right, oper_method.Parameters.Types[1], left.Location);
+                               }
+
+                               var ptypes = best_original.Parameters.Types;
+
+                               if (left.IsNull || right.IsNull) {
+                                       //
+                                       // The lifted operator produces the value false if one or both operands are null for
+                                       // relational operators.
+                                       //
+                                       if ((oper & Operator.ComparisonMask) != 0) {
+                                               //
+                                               // CSC BUG: This should be different warning, csc reports CS0458 with bool? which is wrong
+                                               // because return type is actually bool
+                                               //
+                                               // For some reason CSC does not report this warning for equality operators
+                                               //
+                                               return CreateLiftedValueTypeResult (rc, left.IsNull ? ptypes [1] : ptypes [0]);
+                                       }
 
-                       // TODO: CreateExpressionTree is allocated every time
+                                       // The lifted operator produces a null value if one or both operands are null
+                                       //
+                                       if ((oper & (Operator.ArithmeticMask | Operator.ShiftMask | Operator.BitwiseMask)) != 0) {
+                                               type = oper_method.ReturnType;
+                                               return Nullable.LiftedNull.CreateFromExpression (rc, this);
+                                       }
+                               }
+
+                               type = oper_method.ReturnType;
+                               var lifted = new Nullable.LiftedBinaryOperator (this);
+                               lifted.UserOperator = best_original;
+
+                               if (left.Type.IsNullableType && !ptypes[0].IsNullableType) {
+                                       lifted.UnwrapLeft = new Nullable.Unwrap (left);
+                               }
+
+                               if (right.Type.IsNullableType && !ptypes[1].IsNullableType) {
+                                       lifted.UnwrapRight = new Nullable.Unwrap (right);
+                               }
+
+                               lifted.Left = Convert.ImplicitConversion (rc, lifted.UnwrapLeft ?? left, ptypes[0], left.Location);
+                               lifted.Right = Convert.ImplicitConversion (rc, lifted.UnwrapRight ?? right, ptypes[1], right.Location);
+
+                               return lifted.Resolve (rc);
+                       }
+                       
                        if ((oper & Operator.LogicalMask) != 0) {
+                               // TODO: CreateExpressionTree is allocated every time           
                                oper_expr = new ConditionalLogicalOperator (oper_method, args, CreateExpressionTree,
-                                       oper == Operator.LogicalAnd, loc).Resolve (ec);
+                                       oper == Operator.LogicalAnd, loc).Resolve (rc);
                        } else {
                                oper_expr = new UserOperatorCall (oper_method, args, CreateExpressionTree, loc);
                        }
 
-                       if (!llifted)
-                               this.left = larg.Expr;
-
-                       if (!rlifted)
-                               this.right = rarg.Expr;
+                       this.left = larg.Expr;
+                       this.right = rarg.Expr;
 
                        return oper_expr;
                }
 
+               bool IsLiftedOperatorApplicable ()
+               {
+                       if (left.Type.IsNullableType) {
+                               if ((oper & Operator.EqualityMask) != 0)
+                                       return !right.IsNull;
+
+                               return true;
+                       }
+
+                       if (right.Type.IsNullableType) {
+                               if ((oper & Operator.EqualityMask) != 0)
+                                       return !left.IsNull;
+
+                               return true;
+                       }
+
+                       if (TypeSpec.IsValueType (left.Type))
+                               return right.IsNull;
+
+                       if (TypeSpec.IsValueType (right.Type))
+                               return left.IsNull;
+
+                       return false;
+               }
+
+               List<MemberSpec> CreateLiftedOperators (ResolveContext rc, IList<MemberSpec> operators)
+               {
+                       var nullable_type = rc.Module.PredefinedTypes.Nullable.TypeSpec;
+                       if (nullable_type == null)
+                               return null;
+
+                       //
+                       // Lifted operators permit predefined and user-defined operators that operate
+                       // on non-nullable value types to also be used with nullable forms of those types.
+                       // Lifted operators are constructed from predefined and user-defined operators
+                       // that meet certain requirements
+                       //
+                       List<MemberSpec> lifted = null;
+                       foreach (MethodSpec oper in operators) {
+                               TypeSpec rt;
+                               if ((Oper & Operator.ComparisonMask) != 0) {
+                                       //
+                                       // Result type must be of type bool for lifted comparison operators
+                                       //
+                                       rt = oper.ReturnType;
+                                       if (rt.BuiltinType != BuiltinTypeSpec.Type.Bool)
+                                               continue;
+                               } else {
+                                       if (!TypeSpec.IsNonNullableValueType (oper.ReturnType))
+                                               continue;
+
+                                       rt = null;
+                               }
+
+                               var ptypes = oper.Parameters.Types;
+                               if (!TypeSpec.IsNonNullableValueType (ptypes [0]) || !TypeSpec.IsNonNullableValueType (ptypes [1]))
+                                       continue;
+
+                               //
+                               // LAMESPEC: I am not sure why but for equality operators to be lifted
+                               // both types have to match
+                               //
+                               if ((Oper & Operator.EqualityMask) != 0 && ptypes [0] != ptypes [1])
+                                       continue;
+
+                               if (lifted == null)
+                                       lifted = new List<MemberSpec> ();
+
+                               //
+                               // The lifted form is constructed by adding a single ? modifier to each operand and
+                               // result type except for comparison operators where return type is bool
+                               //
+                               if (rt == null)
+                                       rt = nullable_type.MakeGenericType (rc.Module, new[] { oper.ReturnType });
+
+                               var parameters = ParametersCompiled.CreateFullyResolved (
+                                       nullable_type.MakeGenericType (rc.Module, new [] { ptypes[0] }),
+                                       nullable_type.MakeGenericType (rc.Module, new [] { ptypes[1] }));
+
+                               var lifted_op = new MethodSpec (oper.Kind, oper.DeclaringType, oper.MemberDefinition,
+                                       rt, parameters, oper.Modifiers);
+
+                               lifted.Add (lifted_op);
+                       }
+
+                       return lifted;
+               }
+
                //
                // Merge two sets of user operators into one, they are mostly distinguish
                // except when they share base type and it contains an operator
@@ -3735,6 +4377,14 @@ namespace Mono.CSharp
                /// </remarks>
                public override void EmitBranchable (EmitContext ec, Label target, bool on_true)
                {
+                       if (ec.HasSet (BuilderContext.Options.AsyncBody) && right.ContainsEmitWithAwait ()) {
+                               left = left.EmitToField (ec);
+
+                               if ((oper & Operator.LogicalMask) == 0) {
+                                       right = right.EmitToField (ec);
+                               }
+                       }
+
                        //
                        // This is more complicated than it looks, but its just to avoid
                        // duplicated tests: basically, we allow ==, !=, >, <, >= and <=
@@ -3887,11 +4537,6 @@ namespace Mono.CSharp
                }
                
                public override void Emit (EmitContext ec)
-               {
-                       EmitOperator (ec, left.Type);
-               }
-
-               protected virtual void EmitOperator (EmitContext ec, TypeSpec l)
                {
                        if (ec.HasSet (BuilderContext.Options.AsyncBody) && right.ContainsEmitWithAwait ()) {
                                left = left.EmitToField (ec);
@@ -3932,16 +4577,22 @@ namespace Mono.CSharp
                                }
                        }
 
+                       EmitOperator (ec, left, right);
+               }
+
+               public void EmitOperator (EmitContext ec, Expression left, Expression right)
+               {
                        left.Emit (ec);
                        right.Emit (ec);
-                       EmitOperatorOpcode (ec, oper, l);
+
+                       EmitOperatorOpcode (ec, oper, left.Type, right);
 
                        //
-                       // Nullable enum could require underlying type cast and we cannot simply wrap binary
-                       // expression because that would wrap lifted binary operation
+                       // Emit result enumerable conversion this way because it's quite complicated get it
+                       // to resolved tree because expression tree cannot see it.
                        //
-                       if (enum_conversion != null)
-                               enum_conversion.Emit (ec);
+                       if (enum_conversion != 0)
+                               ConvCast.Emit (ec, enum_conversion);
                }
 
                public override void EmitSideEffect (EmitContext ec)
@@ -4011,7 +4662,7 @@ namespace Mono.CSharp
                        return CreateExpressionTree (ec, null);
                }
 
-               Expression CreateExpressionTree (ResolveContext ec, Expression method)          
+               public Expression CreateExpressionTree (ResolveContext ec, Expression method)           
                {
                        string method_name;
                        bool lift_arg = false;
@@ -4328,7 +4979,7 @@ namespace Mono.CSharp
 
        public class PointerArithmetic : Expression {
                Expression left, right;
-               Binary.Operator op;
+               readonly Binary.Operator op;
 
                //
                // We assume that `l' is always a pointer
@@ -4460,7 +5111,7 @@ namespace Mono.CSharp
                                        if (rtype.BuiltinType == BuiltinTypeSpec.Type.Long || rtype.BuiltinType == BuiltinTypeSpec.Type.ULong)
                                                ec.Emit (OpCodes.Conv_I8);
 
-                                       Binary.EmitOperatorOpcode (ec, Binary.Operator.Multiply, rtype);
+                                       Binary.EmitOperatorOpcode (ec, Binary.Operator.Multiply, rtype, right);
                                }
 
                                if (left_const == null) {
@@ -4469,7 +5120,7 @@ namespace Mono.CSharp
                                        else if (rtype.BuiltinType == BuiltinTypeSpec.Type.ULong)
                                                ec.Emit (OpCodes.Conv_U);
 
-                                       Binary.EmitOperatorOpcode (ec, op, op_type);
+                                       Binary.EmitOperatorOpcode (ec, op, op_type, right);
                                }
                        }
                }
@@ -4703,8 +5354,8 @@ namespace Mono.CSharp
                                // Don't issue the warning for constant expressions
                                //
                                if (!(is_false ? true_expr is Constant : false_expr is Constant)) {
-                                       ec.Report.Warning (429, 4, is_false ? true_expr.Location : false_expr.Location,
-                                               "Unreachable expression code detected");
+                                       // CSC: Missing warning
+                                       Warning_UnreachableExpression (ec, is_false ? true_expr.Location : false_expr.Location);
                                }
 
                                return ReducedExpression.Create (
@@ -4758,7 +5409,7 @@ namespace Mono.CSharp
                #region Abstract
                public abstract HoistedVariable GetHoistedVariable (AnonymousExpression ae);
                public abstract void SetHasAddressTaken ();
-               public abstract void VerifyAssigned (ResolveContext rc);
+               public abstract void VerifyDefiniteAssignment (ResolveContext rc);
 
                public abstract bool IsLockedByStatement { get; set; }
 
@@ -4991,9 +5642,9 @@ namespace Mono.CSharp
 
                #endregion
 
-               public override void VerifyAssigned (ResolveContext rc)
+               public override void VerifyDefiniteAssignment (ResolveContext rc)
                {
-                       VariableInfo variable_info = local_info.VariableInfo;
+                       VariableInfo variable_info = VariableInfo;
                        if (variable_info == null)
                                return;
 
@@ -5038,7 +5689,7 @@ namespace Mono.CSharp
                {
                        local_info.SetIsUsed ();
 
-                       VerifyAssigned (ec);
+                       VerifyDefiniteAssignment (ec);
 
                        DoResolveBase (ec);
                        return this;
@@ -5258,24 +5909,12 @@ namespace Mono.CSharp
                        return Parameter.ExpressionTreeVariableReference ();
                }
 
-               //
-               // Notice that for ref/out parameters, the type exposed is not the
-               // same type exposed externally.
-               //
-               // for "ref int a":
-               //   externally we expose "int&"
-               //   here we expose       "int".
-               //
-               // We record this in "is_ref".  This means that the type system can treat
-               // the type as it is expected, but when we generate the code, we generate
-               // the alternate kind of code.
-               //
                protected override Expression DoResolve (ResolveContext ec)
                {
                        if (!DoResolveBase (ec))
                                return null;
 
-                       VerifyAssigned (ec);
+                       VerifyDefiniteAssignment (ec);
                        return this;
                }
 
@@ -5288,15 +5927,17 @@ namespace Mono.CSharp
                        return base.DoResolveLValue (ec, right_side);
                }
 
-               public override void VerifyAssigned (ResolveContext rc)
+               public override void VerifyDefiniteAssignment (ResolveContext rc)
                {
-                       // HACK: Variables are not captured in probing mode
-                       if (rc.IsInProbingMode)
+                       VariableInfo variable_info = VariableInfo;
+                       if (variable_info == null)
                                return;
 
-                       if (HasOutModifier && !VariableInfo.IsAssigned (rc)) {
-                               rc.Report.Error (269, loc, "Use of unassigned out parameter `{0}'", Name);
-                       }
+                       if (variable_info.IsAssigned (rc))
+                               return;
+
+                       rc.Report.Error (269, loc, "Use of unassigned out parameter `{0}'", Name);
+                       variable_info.SetAssigned (rc);
                }
        }
        
@@ -5373,7 +6014,17 @@ namespace Mono.CSharp
 
                        var emg = MethodGroup as ExtensionMethodGroupExpr;
                        if (emg != null) {
-                               return MethodGroupExpr.CreatePredefined (candidate, candidate.DeclaringType, MethodGroup.Location);
+                               var mg = MethodGroupExpr.CreatePredefined (candidate, candidate.DeclaringType, MethodGroup.Location);
+                               if (candidate.IsGeneric) {
+                                       var targs = new TypeExpression [candidate.Arity];
+                                       for (int i = 0; i < targs.Length; ++i) {
+                                               targs[i] = new TypeExpression (candidate.TypeArguments[i], MethodGroup.Location);
+                                       }
+
+                                       mg.SetTypeArguments (null, new TypeArguments (targs));
+                               }
+
+                               return mg;
                        }
 
                        return MethodGroup;
@@ -5419,7 +6070,7 @@ namespace Mono.CSharp
                                if (member_expr != null)
                                        member_expr = member_expr.Resolve (ec);
                        } else {
-                               member_expr = expr.Resolve (ec, ResolveFlags.VariableOrValue | ResolveFlags.MethodGroup);
+                               member_expr = expr.Resolve (ec);
                        }
 
                        if (member_expr == null)
@@ -5448,7 +6099,7 @@ namespace Mono.CSharp
                                } else {
                                        if (member_expr is RuntimeValueExpression) {
                                                ec.Report.Error (Report.RuntimeErrorId, loc, "Cannot invoke a non-delegate type `{0}'",
-                                                       member_expr.Type.GetSignatureForError ()); ;
+                                                       member_expr.Type.GetSignatureForError ());
                                                return null;
                                        }
 
@@ -5937,14 +6588,16 @@ namespace Mono.CSharp
                                }
 
                                if (vr != null) {
+                                       ec.MarkCallEntry (loc);
                                        ec.Emit (OpCodes.Call, method);
                                        return false;
                                }
                        }
                        
                        if (type is TypeParameterSpec)
-                               return DoEmitTypeParameter (ec);                        
+                               return DoEmitTypeParameter (ec);
 
+                       ec.MarkCallEntry (loc);
                        ec.Emit (OpCodes.Newobj, method);
                        return true;
                }
@@ -6162,7 +6815,7 @@ namespace Mono.CSharp
                protected List<Expression> arguments;
                
                protected TypeSpec array_element_type;
-               int num_arguments = 0;
+               int num_arguments;
                protected int dimensions;
                protected readonly ComposedTypeSpecifier rank;
                Expression first_emit;
@@ -7176,7 +7829,7 @@ namespace Mono.CSharp
                        // Nothing
                }
 
-               public override void VerifyAssigned (ResolveContext rc)
+               public override void VerifyDefiniteAssignment (ResolveContext rc)
                {
                }
                
@@ -8002,7 +8655,7 @@ namespace Mono.CSharp
 
                                e = e.ResolveLValue (rc, right_side);
                        } else {
-                               e = e.Resolve (rc, ResolveFlags.VariableOrValue | ResolveFlags.Type);
+                               e = e.Resolve (rc, ResolveFlags.VariableOrValue | ResolveFlags.Type | ResolveFlags.MethodGroup);
                        }
 
                        return e;
@@ -8089,7 +8742,7 @@ namespace Mono.CSharp
                                if (sn != null) {
                                        var vr = expr as VariableReference;
                                        if (vr != null)
-                                               vr.VerifyAssigned (rc);
+                                               vr.VerifyDefiniteAssignment (rc);
                                }
 
                                Arguments args = new Arguments (1);
@@ -8129,7 +8782,7 @@ namespace Mono.CSharp
                                                        if (sn != null && !errorMode) {
                                                                var vr = expr as VariableReference;
                                                                if (vr != null)
-                                                                       vr.VerifyAssigned (rc);
+                                                                       vr.VerifyDefiniteAssignment (rc);
                                                        }
 
                                                        // TODO: it should really skip the checks bellow
@@ -8211,7 +8864,7 @@ namespace Mono.CSharp
                        if (sn != null && !(me is FieldExpr && TypeSpec.IsValueType (expr_type))) {
                                var vr = expr as VariableReference;
                                if (vr != null)
-                                       vr.VerifyAssigned (rc);
+                                       vr.VerifyDefiniteAssignment (rc);
                        }
 
                        return me;
@@ -8314,13 +8967,13 @@ namespace Mono.CSharp
                        var nested = MemberCache.FindNestedType (expr_type, Name, -System.Math.Max (1, Arity));
 
                        if (nested != null) {
-                               Error_TypeArgumentsCannotBeUsed (rc, nested, Arity, expr.Location);
+                               Error_TypeArgumentsCannotBeUsed (rc, nested, expr.Location);
                                return;
                        }
 
                        var any_other_member = MemberLookup (rc, false, expr_type, Name, 0, MemberLookupRestrictions.None, loc);
                        if (any_other_member != null) {
-                               any_other_member.Error_UnexpectedKind (rc, any_other_member, "type", any_other_member.ExprClassName, loc);
+                               Error_UnexpectedKind (rc, any_other_member, "type", any_other_member.ExprClassName, loc);
                                return;
                        }
 
@@ -8338,7 +8991,7 @@ namespace Mono.CSharp
                        if (ec.Module.Compiler.Settings.Version > LanguageVersion.ISO_2 && !ec.IsRuntimeBinder && MethodGroupExpr.IsExtensionMethodArgument (expr)) {
                                ec.Report.SymbolRelatedToPreviousError (type);
 
-                               var cand = ec.Module.GlobalRootNamespace.FindExtensionMethodNamespaces (ec, type, name, Arity);
+                               var cand = ec.Module.GlobalRootNamespace.FindExtensionMethodNamespaces (ec, name, Arity);
                                string missing;
                                // a using directive or an assembly reference
                                if (cand != null) {
@@ -9441,6 +10094,7 @@ namespace Mono.CSharp
                public override void Emit (EmitContext ec)
                {
                        source.Emit (ec);
+                       ec.MarkCallEntry (loc);
                        ec.Emit (OpCodes.Call, method);
                }
 
@@ -9957,6 +10611,12 @@ namespace Mono.CSharp
                        this.loc = loc;
                }
 
+               public CollectionElementInitializer (Location loc)
+                       : base (null, null)
+               {
+                       this.loc = loc;
+               }
+
                public override Expression CreateExpressionTree (ResolveContext ec)
                {
                        Arguments args = new Arguments (2);
@@ -10455,11 +11115,6 @@ namespace Mono.CSharp
                        eclass = ExprClass.Value;
                        return this;
                }
-
-               public override void EmitStatement (EmitContext ec)
-               {
-                       base.EmitStatement (ec);
-               }
                
                public override object Accept (StructuralVisitor visitor)
                {
index 95c561980abe079514c970b633f938c634e139f8..fa3b07334da6f9a6e2d458de502e49e0df54ed8d 100644 (file)
@@ -358,9 +358,9 @@ namespace Mono.CSharp
                        return fs;
                }
 
-               public override List<TypeSpec> ResolveMissingDependencies ()
+               public override List<MissingTypeSpecReference> ResolveMissingDependencies (MemberSpec caller)
                {
-                       return memberType.ResolveMissingDependencies ();
+                       return memberType.ResolveMissingDependencies (this);
                }
        }
 
@@ -370,7 +370,7 @@ namespace Mono.CSharp
        public class FixedField : FieldBase
        {
                public const string FixedElementName = "FixedElementField";
-               static int GlobalCounter = 0;
+               static int GlobalCounter;
 
                TypeBuilder fixed_buffer_type;
 
@@ -400,7 +400,7 @@ namespace Mono.CSharp
 
                public override Constant ConvertInitializer (ResolveContext rc, Constant expr)
                {
-                       return expr.ImplicitConversionRequired (rc, rc.BuiltinTypes.Int, Location);
+                       return expr.ImplicitConversionRequired (rc, rc.BuiltinTypes.Int);
                }
 
                public override bool Define ()
index e71051994e0e07af7d8519fb2fa50c28471bdcd7..3e2b2c82dab33511775ee9740b9964bab188c3b2 100644 (file)
@@ -800,7 +800,7 @@ namespace Mono.CSharp
                }
        }
 
-       public  class FlowBranchingAsync : FlowBranchingBlock
+       public class FlowBranchingAsync : FlowBranchingBlock
        {
                readonly AsyncInitializer async_init;
 
@@ -1317,14 +1317,16 @@ namespace Mono.CSharp
                }
        }
 
-       // <summary>
-       //   This is used by the flow analysis code to store information about a single local variable
-       //   or parameter.  Depending on the variable's type, we need to allocate one or more elements
-       //   in the BitVector - if it's a fundamental or reference type, we just need to know whether
-       //   it has been assigned or not, but for structs, we need this information for each of its fields.
-       // </summary>
-       public class VariableInfo {
+       //
+       // This is used by definite assignment analysis code to store information about a local variable
+       // or parameter.  Depending on the variable's type, we need to allocate one or more elements
+       // in the BitVector - if it's a fundamental or reference type, we just need to know whether
+       // it has been assigned or not, but for structs, we need this information for each of its fields.
+       //
+       public class VariableInfo
+       {
                readonly string Name;
+
                readonly TypeInfo TypeInfo;
 
                // <summary>
@@ -1337,12 +1339,12 @@ namespace Mono.CSharp
                //   The first bit always specifies whether the variable as such has been assigned while
                //   the remaining bits contain this information for each of a struct's fields.
                // </summary>
-               public readonly int Length;
+               readonly int Length;
 
                // <summary>
                //   If this is a parameter of local variable.
                // </summary>
-               public readonly bool IsParameter;
+               public bool IsParameter;
 
                VariableInfo[] sub_info;
 
@@ -1369,7 +1371,7 @@ namespace Mono.CSharp
                        Initialize ();
                }
 
-               protected void Initialize ()
+               void Initialize ()
                {
                        TypeInfo[] sub_fields = TypeInfo.SubStructInfo;
                        if (sub_fields != null) {
@@ -1382,16 +1384,21 @@ namespace Mono.CSharp
                                sub_info = new VariableInfo [0];
                }
 
-               public VariableInfo (LocalVariable local_info, int offset)
-                       : this (local_info.Name, local_info.Type, offset)
+               public static VariableInfo Create (BlockContext bc, LocalVariable variable)
                {
-                       this.IsParameter = false;
+                       var info = new VariableInfo (variable.Name, variable.Type, bc.AssignmentInfoOffset);
+                       bc.AssignmentInfoOffset += info.Length;
+                       return info;
                }
 
-               public VariableInfo (ParametersCompiled ip, int i, int offset)
-                       : this (ip.FixedParameters [i].Name, ip.Types [i], offset)
+               public static VariableInfo Create (BlockContext bc, Parameter parameter)
                {
-                       this.IsParameter = true;
+                       var info = new VariableInfo (parameter.Name, parameter.Type, bc.AssignmentInfoOffset) {
+                               IsParameter = true
+                       };
+
+                       bc.AssignmentInfoOffset += info.Length;
+                       return info;
                }
 
                public bool IsAssigned (ResolveContext ec)
index 88771a8d4e196e74d8917da5157a27aead7b88a5..5a24c6898b5f8d0744eef1d11519e4320171d818 100644 (file)
@@ -28,6 +28,50 @@ using System.Reflection.Emit;
 #endif
 
 namespace Mono.CSharp {
+       public class VarianceDecl
+       {
+               public VarianceDecl (Variance variance, Location loc)
+               {
+                       this.Variance = variance;
+                       this.Location = loc;
+               }
+
+               public Variance Variance { get; private set; }
+               public Location Location { get; private set; }
+
+               public static Variance CheckTypeVariance (TypeSpec t, Variance expected, IMemberContext member)
+               {
+                       var tp = t as TypeParameterSpec;
+                       if (tp != null) {
+                               var v = tp.Variance;
+                               if (expected == Variance.None && v != expected ||
+                                       expected == Variance.Covariant && v == Variance.Contravariant ||
+                                       expected == Variance.Contravariant && v == Variance.Covariant) {
+                                       ((TypeParameter) tp.MemberDefinition).ErrorInvalidVariance (member, expected);
+                               }
+
+                               return expected;
+                       }
+
+                       if (t.TypeArguments.Length > 0) {
+                               var targs_definition = t.MemberDefinition.TypeParameters;
+                               TypeSpec[] targs = TypeManager.GetTypeArguments (t);
+                               for (int i = 0; i < targs.Length; ++i) {
+                                       var v = targs_definition[i].Variance;
+                                       CheckTypeVariance (targs[i], (Variance) ((int) v * (int) expected), member);
+                               }
+
+                               return expected;
+                       }
+
+                       var ac = t as ArrayContainer;
+                       if (ac != null)
+                               return CheckTypeVariance (ac.Element, expected, member);
+
+                       return Variance.None;
+               }
+       }
+
        public enum Variance
        {
                //
@@ -73,9 +117,9 @@ namespace Mono.CSharp {
        //
        public class Constraints
        {
-               SimpleMemberName tparam;
-               List<FullNamedExpression> constraints;
-               Location loc;
+               readonly SimpleMemberName tparam;
+               readonly List<FullNamedExpression> constraints;
+               readonly Location loc;
                bool resolved;
                bool resolving;
                
@@ -235,7 +279,7 @@ namespace Mono.CSharp {
                                        // is valid with respect to T
                                        //
                                        if (tp.IsMethodTypeParameter) {
-                                               TypeManager.CheckTypeVariance (type, Variance.Contravariant, context);
+                                               VarianceDecl.CheckTypeVariance (type, Variance.Contravariant, context);
                                        }
 
                                        var tp_def = constraint_tp.MemberDefinition as TypeParameter;
@@ -354,26 +398,28 @@ namespace Mono.CSharp {
        //
        public class TypeParameter : MemberCore, ITypeDefinition
        {
-               static readonly string[] attribute_target = new string [] { "type parameter" };
+               static readonly string[] attribute_target = { "type parameter" };
                
                Constraints constraints;
                GenericTypeParameterBuilder builder;
                readonly TypeParameterSpec spec;
 
-               public TypeParameter (int index, MemberName name, Constraints constraints, Attributes attrs, Variance variance)
+               public TypeParameter (int index, MemberName name, Constraints constraints, Attributes attrs, Variance Variance)
                        : base (null, name, attrs)
                {
                        this.constraints = constraints;
-                       this.spec = new TypeParameterSpec (null, index, this, SpecialConstraint.None, variance, null);
+                       this.spec = new TypeParameterSpec (null, index, this, SpecialConstraint.None, Variance, null);
                }
 
                //
                // Used by parser
                //
-               public TypeParameter (MemberName name, Attributes attrs, Variance variance)
+               public TypeParameter (MemberName name, Attributes attrs, VarianceDecl variance)
                        : base (null, name, attrs)
                {
-                       this.spec = new TypeParameterSpec (null, -1, this, SpecialConstraint.None, variance, null);
+                       var var = variance == null ? Variance.None : variance.Variance;
+                       this.spec = new TypeParameterSpec (null, -1, this, SpecialConstraint.None, var, null);
+                       this.VarianceDecl = variance;
                }
                
                public TypeParameter (TypeParameterSpec spec, TypeSpec parentSpec, MemberName name, Attributes attrs)
@@ -482,6 +528,8 @@ namespace Mono.CSharp {
                        }
                }
 
+               public VarianceDecl VarianceDecl { get; private set; }
+
                #endregion
 
                //
@@ -511,7 +559,7 @@ namespace Mono.CSharp {
 
                        // Copy constraint from resolved part to partial container
                        spec.SpecialConstraint = tp.spec.SpecialConstraint;
-                       spec.Interfaces = tp.spec.Interfaces;
+                       spec.InterfacesDefined = tp.spec.InterfacesDefined;
                        spec.TypeArguments = tp.spec.TypeArguments;
                        spec.BaseType = tp.spec.BaseType;
                        
@@ -583,8 +631,21 @@ namespace Mono.CSharp {
                        if (spec.InterfacesDefined != null)
                                builder.SetInterfaceConstraints (spec.InterfacesDefined.Select (l => l.GetMetaInfo ()).ToArray ());
 
-                       if (spec.TypeArguments != null)
-                               builder.SetInterfaceConstraints (spec.TypeArguments.Select (l => l.GetMetaInfo ()).ToArray ());
+                       if (spec.TypeArguments != null) {
+                               var meta_constraints = new List<MetaType> (spec.TypeArguments.Length);
+                               foreach (var c in spec.TypeArguments) {
+                                       //
+                                       // Inflated type parameters can collide with special constraint types, don't
+                                       // emit any such type parameter.
+                                       //
+                                       if (c.BuiltinType == BuiltinTypeSpec.Type.Object || c.BuiltinType == BuiltinTypeSpec.Type.ValueType)
+                                               continue;
+
+                                       meta_constraints.Add (c.GetMetaInfo ());
+                               }
+
+                               builder.SetInterfaceConstraints (meta_constraints.ToArray ());
+                       }
 
                        builder.SetGenericParameterAttributes (attr);
                }
@@ -812,10 +873,7 @@ namespace Mono.CSharp {
                public TypeSpec[] InterfacesDefined {
                        get {
                                if (ifaces_defined == null) {
-                                       if (ifaces == null)
-                                               return null;
-
-                                       ifaces_defined = ifaces.ToArray ();
+                                       ifaces_defined = ifaces == null ? TypeSpec.EmptyTypes : ifaces.ToArray ();
                                }
 
                                return ifaces_defined.Length == 0 ? null : ifaces_defined;
@@ -1189,6 +1247,8 @@ namespace Mono.CSharp {
                                tps.ifaces_defined = new TypeSpec[defined.Length];
                                for (int i = 0; i < defined.Length; ++i)
                                        tps.ifaces_defined [i] = inflator.Inflate (defined[i]);
+                       } else if (ifaces_defined == TypeSpec.EmptyTypes) {
+                               tps.ifaces_defined = TypeSpec.EmptyTypes;
                        }
 
                        var ifaces = Interfaces;
@@ -1196,6 +1256,7 @@ namespace Mono.CSharp {
                                tps.ifaces = new List<TypeSpec> (ifaces.Count);
                                for (int i = 0; i < ifaces.Count; ++i)
                                        tps.ifaces.Add (inflator.Inflate (ifaces[i]));
+                               tps.state |= StateFlags.InterfacesExpanded;
                        }
 
                        if (targs != null) {
@@ -1208,6 +1269,10 @@ namespace Mono.CSharp {
                public override MemberSpec InflateMember (TypeParameterInflator inflator)
                {
                        var tps = (TypeParameterSpec) MemberwiseClone ();
+#if DEBUG
+                       tps.ID += 1000000;
+#endif
+
                        InflateConstraints (inflator, tps);
                        return tps;
                }
@@ -1665,7 +1730,7 @@ namespace Mono.CSharp {
                        }
                }
 
-               public override bool IsGenericIterateInterface {
+               public override bool IsArrayGenericInterface {
                        get {
                                return (open_type.state & StateFlags.GenericIterateInterface) != 0;
                        }
@@ -1722,7 +1787,7 @@ namespace Mono.CSharp {
                        return false;
                }
 
-               TypeParameterInflator CreateLocalInflator (IModuleContext context)
+               public TypeParameterInflator CreateLocalInflator (IModuleContext context)
                {
                        TypeParameterSpec[] tparams_full;
                        TypeSpec[] targs_full = targs;
@@ -1774,7 +1839,7 @@ namespace Mono.CSharp {
                        return new TypeParameterInflator (context, this, tparams_full, targs_full);
                }
 
-               MetaType CreateMetaInfo (TypeParameterMutator mutator)
+               MetaType CreateMetaInfo ()
                {
                        //
                        // Converts nested type arguments into right order
@@ -1824,7 +1889,7 @@ namespace Mono.CSharp {
                public override MetaType GetMetaInfo ()
                {
                        if (info == null)
-                               info = CreateMetaInfo (null);
+                               info = CreateMetaInfo ();
 
                        return info;
                }
@@ -2494,8 +2559,8 @@ namespace Mono.CSharp {
                        //
                        // Check the interfaces constraints
                        //
-                       if (tparam.Interfaces != null) {
-                               foreach (TypeSpec iface in tparam.Interfaces) {
+                       if (tparam.InterfacesDefined != null) {
+                               foreach (TypeSpec iface in tparam.InterfacesDefined) {
                                        if (!CheckConversion (mc, context, atype, tparam, iface, loc)) {
                                                if (mc == null)
                                                        return false;
@@ -2638,40 +2703,6 @@ namespace Mono.CSharp {
                }
        }
 
-       public partial class TypeManager
-       {
-               public static Variance CheckTypeVariance (TypeSpec t, Variance expected, IMemberContext member)
-               {
-                       var tp = t as TypeParameterSpec;
-                       if (tp != null) {
-                               Variance v = tp.Variance;
-                               if (expected == Variance.None && v != expected ||
-                                       expected == Variance.Covariant && v == Variance.Contravariant ||
-                                       expected == Variance.Contravariant && v == Variance.Covariant) {
-                                       ((TypeParameter)tp.MemberDefinition).ErrorInvalidVariance (member, expected);
-                               }
-
-                               return expected;
-                       }
-
-                       if (t.TypeArguments.Length > 0) {
-                               var targs_definition = t.MemberDefinition.TypeParameters;
-                               TypeSpec[] targs = GetTypeArguments (t);
-                               for (int i = 0; i < targs.Length; ++i) {
-                                       Variance v = targs_definition[i].Variance;
-                                       CheckTypeVariance (targs[i], (Variance) ((int)v * (int)expected), member);
-                               }
-
-                               return expected;
-                       }
-
-                       if (t.IsArray)
-                               return CheckTypeVariance (GetElementType (t), expected, member);
-
-                       return Variance.None;
-               }
-       }
-
        //
        // Implements C# type inference
        //
@@ -2752,7 +2783,7 @@ namespace Mono.CSharp {
                                //
                                AnonymousMethodExpression am = a.Expr as AnonymousMethodExpression;
                                if (am != null) {
-                                       if (am.ExplicitTypeInference (ec, tic, method_parameter))
+                                       if (am.ExplicitTypeInference (tic, method_parameter))
                                                --score; 
                                        continue;
                                }
@@ -2818,7 +2849,7 @@ namespace Mono.CSharp {
                                var mi = Delegate.GetInvokeMethod (t_i);
                                TypeSpec rtype = mi.ReturnType;
 
-                               if (tic.IsReturnTypeNonDependent (ec, mi, rtype)) {
+                               if (tic.IsReturnTypeNonDependent (mi, rtype)) {
                                        // It can be null for default arguments
                                        if (arguments[i] == null)
                                                continue;
@@ -2917,15 +2948,20 @@ namespace Mono.CSharp {
 
                public void AddCommonTypeBound (TypeSpec type)
                {
-                       AddToBounds (new BoundInfo (type, BoundKind.Lower), 0);
+                       AddToBounds (new BoundInfo (type, BoundKind.Lower), 0, false);
+               }
+
+               public void AddCommonTypeBoundAsync (TypeSpec type)
+               {
+                       AddToBounds (new BoundInfo (type, BoundKind.Lower), 0, true);
                }
 
-               void AddToBounds (BoundInfo bound, int index)
+               void AddToBounds (BoundInfo bound, int index, bool voidAllowed)
                {
                        //
                        // Some types cannot be used as type arguments
                        //
-                       if (bound.Type.Kind == MemberKind.Void || bound.Type.IsPointer || bound.Type.IsSpecialRuntimeType ||
+                       if ((bound.Type.Kind == MemberKind.Void && !voidAllowed) || bound.Type.IsPointer || bound.Type.IsSpecialRuntimeType ||
                                bound.Type == InternalType.MethodGroup || bound.Type == InternalType.AnonymousMethod)
                                return;
 
@@ -2999,7 +3035,7 @@ namespace Mono.CSharp {
                        if (pos == -1)
                                return 0;
 
-                       AddToBounds (new BoundInfo (u, BoundKind.Exact), pos);
+                       AddToBounds (new BoundInfo (u, BoundKind.Exact), pos, false);
                        return 1;
                }
 
@@ -3106,87 +3142,100 @@ namespace Mono.CSharp {
                        }
 
                        //
-                       // Determines a unique type from which there is
-                       // a standard implicit conversion to all the other
-                       // candidate types.
+                       // The set of candidate types Uj starts out as the set of
+                       // all types in the set of bounds for Xi
                        //
-                       TypeSpec best_candidate = null;
-                       int cii;
-                       int candidates_count = candidates.Count;
-                       for (int ci = 0; ci < candidates_count; ++ci) {
-                               BoundInfo bound = candidates [ci];
-                               for (cii = 0; cii < candidates_count; ++cii) {
-                                       if (cii == ci)
-                                               continue;
+                       var applicable = new bool [candidates.Count];
+                       for (int ci = 0; ci < applicable.Length; ++ci)
+                               applicable [ci] = true;
+
+                       for (int ci = 0; ci < applicable.Length; ++ci) {
+                               var bound = candidates [ci];
+                               int cii = 0;
+
+                               switch (bound.Kind) {
+                               case BoundKind.Exact:
+                                       for (; cii != applicable.Length; ++cii) {
+                                               if (ci == cii)
+                                                       continue;
 
-                                       BoundInfo cbound = candidates[cii];
-                                       
-                                       // Same type parameters with different bounds
-                                       if (cbound.Type == bound.Type) {
-                                               if (bound.Kind != BoundKind.Exact)
-                                                       bound = cbound;
+                                               if (!applicable[cii])
+                                                       break;
 
-                                               continue;
+                                               //
+                                               // For each exact bound U of Xi all types Uj which are not identical
+                                               // to U are removed from the candidate set
+                                               //
+                                               if (candidates [cii].Type != bound.Type)
+                                                       applicable[cii] = false;
                                        }
 
-                                       if (bound.Kind == BoundKind.Exact || cbound.Kind == BoundKind.Exact) {
-                                               if (cbound.Kind == BoundKind.Lower) {
-                                                       if (!Convert.ImplicitConversionExists (ec, cbound.GetTypeExpression (), bound.Type)) {
-                                                               break;
-                                                       }
-
+                                       break;
+                               case BoundKind.Lower:
+                                       for (; cii != applicable.Length; ++cii) {
+                                               if (ci == cii)
                                                        continue;
-                                               }
-                                               if (cbound.Kind == BoundKind.Upper) {
-                                                       if (!Convert.ImplicitConversionExists (ec, bound.GetTypeExpression (), cbound.Type)) {
-                                                               break;
-                                                       }
 
-                                                       continue;
+                                               if (!applicable[cii])
+                                                       break;
+
+                                               //
+                                               // For each lower bound U of Xi all types Uj to which there is not an implicit conversion
+                                               // from U are removed from the candidate set
+                                               //
+                                               if (!Convert.ImplicitConversionExists (ec, bound.GetTypeExpression (), candidates [cii].Type)) {
+                                                       applicable[cii] = false;
                                                }
-                                               
-                                               if (bound.Kind != BoundKind.Exact) {
-                                                       if (!Convert.ImplicitConversionExists (ec, bound.GetTypeExpression (), cbound.Type)) {
-                                                               break;
-                                                       }
+                                       }
 
-                                                       bound = cbound;
+                                       break;
+
+                               case BoundKind.Upper:
+                                       for (; cii != applicable.Length; ++cii) {
+                                               if (ci == cii)
                                                        continue;
-                                               }
-                                               
-                                               break;
+
+                                               if (!applicable[cii])
+                                                       break;
+
+                                               //
+                                               // For each upper bound U of Xi all types Uj from which there is not an implicit conversion
+                                               // to U are removed from the candidate set
+                                               //
+                                               if (!Convert.ImplicitConversionExists (ec, candidates[cii].GetTypeExpression (), bound.Type))
+                                                       applicable[cii] = false;
                                        }
 
-                                       if (bound.Kind == BoundKind.Lower) {
-                                               if (cbound.Kind == BoundKind.Lower) {
-                                                       if (!Convert.ImplicitConversionExists (ec, cbound.GetTypeExpression (), bound.Type)) {
-                                                               break;
-                                                       }
-                                               } else {
-                                                       if (!Convert.ImplicitConversionExists (ec, bound.GetTypeExpression (), cbound.Type)) {
-                                                               break;
-                                                       }
+                                       break;
+                               }
+                       }
 
-                                                       bound = cbound;
-                                               }
+                       TypeSpec best_candidate = null;
+                       for (int ci = 0; ci < applicable.Length; ++ci) {
+                               if (!applicable[ci])
+                                       continue;
 
+                               var bound = candidates [ci];
+                               if (bound.Type == best_candidate)
+                                       continue;
+
+                               int cii = 0;
+                               for (; cii < applicable.Length; ++cii) {
+                                       if (ci == cii)
                                                continue;
-                                       }
 
-                                       if (bound.Kind == BoundKind.Upper) {
-                                               if (!Convert.ImplicitConversionExists (ec, bound.GetTypeExpression (), cbound.Type)) {
-                                                       break;
-                                               }
-                                       } else {
-                                               throw new NotImplementedException ("variance conversion");
-                                       }
+                                       if (!applicable[cii])
+                                               continue;
+
+                                       if (!Convert.ImplicitConversionExists (ec, candidates[cii].GetTypeExpression (), bound.Type))
+                                               break;
                                }
 
-                               if (cii != candidates_count)
+                               if (cii != applicable.Length)
                                        continue;
 
                                //
-                               // We already have the best candidate, break if thet are different
+                               // We already have the best candidate, break if it's different (non-unique)
                                //
                                // Dynamic is never ambiguous as we prefer dynamic over other best candidate types
                                //
@@ -3265,8 +3314,13 @@ namespace Mono.CSharp {
                // Tests whether all delegate input arguments are fixed and generic output type
                // requires output type inference 
                //
-               public bool IsReturnTypeNonDependent (ResolveContext ec, MethodSpec invoke, TypeSpec returnType)
+               public bool IsReturnTypeNonDependent (MethodSpec invoke, TypeSpec returnType)
                {
+                       AParametersCollection d_parameters = invoke.Parameters;
+
+                       if (d_parameters.IsEmpty)
+                               return true;
+
                        while (returnType.IsArray)
                                returnType = ((ArrayContainer) returnType).Element;
 
@@ -3274,11 +3328,6 @@ namespace Mono.CSharp {
                                if (IsFixed (returnType))
                                    return false;
                        } else if (TypeManager.IsGenericType (returnType)) {
-                               if (returnType.IsDelegate) {
-                                       invoke = Delegate.GetInvokeMethod (returnType);
-                                       return IsReturnTypeNonDependent (ec, invoke, invoke.ReturnType);
-                               }
-                                       
                                TypeSpec[] g_args = TypeManager.GetTypeArguments (returnType);
                                
                                // At least one unfixed return type has to exist 
@@ -3289,7 +3338,6 @@ namespace Mono.CSharp {
                        }
 
                        // All generic input arguments have to be fixed
-                       AParametersCollection d_parameters = invoke.Parameters;
                        return AllTypesAreFixed (d_parameters.Types);
                }
 
@@ -3331,7 +3379,7 @@ namespace Mono.CSharp {
                        // If V is one of the unfixed type arguments
                        int pos = IsUnfixed (v);
                        if (pos != -1) {
-                               AddToBounds (new BoundInfo (u, inversed ? BoundKind.Upper : BoundKind.Lower), pos);
+                               AddToBounds (new BoundInfo (u, inversed ? BoundKind.Upper : BoundKind.Lower), pos, false);
                                return 1;
                        }                       
 
@@ -3349,7 +3397,7 @@ namespace Mono.CSharp {
                                        return LowerBoundInference (u_ac.Element, v_ac.Element, inversed);
                                }
 
-                               if (u_ac.Rank != 1 || !v.IsGenericIterateInterface)
+                               if (u_ac.Rank != 1 || !v.IsArrayGenericInterface)
                                        return 0;
 
                                var v_i = TypeManager.GetTypeArguments (v) [0];
@@ -3499,7 +3547,7 @@ namespace Mono.CSharp {
                                var invoke = Delegate.GetInvokeMethod (t);
                                TypeSpec rtype = invoke.ReturnType;
 
-                               if (!IsReturnTypeNonDependent (ec, invoke, rtype))
+                               if (!IsReturnTypeNonDependent (invoke, rtype))
                                        return 0;
 
                                // LAMESPEC: Standard does not specify that all methodgroup arguments
index 3c8cf89b2eb3bd02ad339c30b40b69b5823cc164..3204ed11a085b849c962ef4b2cc31b8c75b322dc 100644 (file)
@@ -91,17 +91,21 @@ namespace Mono.CSharp
 
                public void ImportAssembly (Assembly assembly, RootNamespace targetNamespace)
                {
-                       // It can be used more than once when importing same assembly
-                       // into 2 or more global aliases
-                       // TODO: Should be just Add
-                       GetAssemblyDefinition (assembly);
-
-                       var all_types = assembly.GetTypes ();
-                       ImportTypes (all_types, targetNamespace, true);
-
-                       all_types = assembly.ManifestModule.__GetExportedTypes ();
-                       if (all_types.Length != 0)
-                               ImportForwardedTypes (all_types, targetNamespace);
+                       try {
+                               // It can be used more than once when importing same assembly
+                               // into 2 or more global aliases
+                               // TODO: Should be just Add
+                               GetAssemblyDefinition (assembly);
+
+                               var all_types = assembly.GetTypes ();
+                               ImportTypes (all_types, targetNamespace, true);
+
+                               all_types = assembly.ManifestModule.__GetExportedTypes ();
+                               if (all_types.Length != 0)
+                                       ImportForwardedTypes (all_types, targetNamespace);
+                       } catch (Exception e) {
+                               throw new InternalErrorException (e, "Failed to import assembly `{0}'", assembly.FullName);
+                       }
                }
 
                public ImportedModuleDefinition ImportModule (Module module, RootNamespace targetNamespace)
@@ -222,7 +226,7 @@ namespace Mono.CSharp
                readonly StaticImporter importer;
                readonly Universe domain;
                Assembly corlib;
-               List<Tuple<AssemblyName, string, Assembly>> loaded_names;
+               readonly List<Tuple<AssemblyName, string, Assembly>> loaded_names;
                static readonly Dictionary<string, string[]> sdk_directory;
 
                static StaticLoader ()
@@ -237,7 +241,7 @@ namespace Mono.CSharp
                        : base (compiler)
                {
                        this.importer = importer;
-                       domain = new Universe (UniverseOptions.MetadataOnly | UniverseOptions.ResolveMissingMembers);
+                       domain = new Universe (UniverseOptions.MetadataOnly | UniverseOptions.ResolveMissingMembers | UniverseOptions.DisableFusion);
                        domain.AssemblyResolve += AssemblyReferenceResolver;
                        loaded_names = new List<Tuple<AssemblyName, string, Assembly>> ();
 
@@ -303,7 +307,7 @@ namespace Mono.CSharp
 
                        foreach (var assembly in domain.GetAssemblies ()) {
                                AssemblyComparisonResult result;
-                               if (!Fusion.CompareAssemblyIdentityPure (refname, false, assembly.FullName, false, out result)) {
+                               if (!domain.CompareAssemblyIdentity (refname, false, assembly.FullName, false, out result)) {
                                        if ((result == AssemblyComparisonResult.NonEquivalentVersion || result == AssemblyComparisonResult.NonEquivalentPartialVersion) &&
                                                (version_mismatch == null || version_mismatch.GetName ().Version < assembly.GetName ().Version) &&
                                                !is_fx_assembly) {
index 35d32c1d11643fd948721584b4d95282174cf297..72538a2da18ecf16cded87dfe6ee278b9feffbfa 100644 (file)
@@ -56,10 +56,10 @@ namespace Mono.CSharp
                        //
                        // Returns true when object at local position has dynamic attribute flag
                        //
-                       public bool IsDynamicObject (MetadataImporter importer)
+                       public bool IsDynamicObject ()
                        {
                                if (provider != null)
-                                       ReadAttribute (importer);
+                                       ReadAttribute ();
 
                                return flags != null && Position < flags.Length && flags[Position];
                        }
@@ -67,15 +67,15 @@ namespace Mono.CSharp
                        //
                        // Returns true when DynamicAttribute exists
                        //
-                       public bool HasDynamicAttribute (MetadataImporter importer)
+                       public bool HasDynamicAttribute ()
                        {
                                if (provider != null)
-                                       ReadAttribute (importer);
+                                       ReadAttribute ();
 
                                return flags != null;
                        }
 
-                       void ReadAttribute (MetadataImporter importer)
+                       void ReadAttribute ()
                        {
                                IList<CustomAttributeData> cad;
                                if (provider is MemberInfo) {
@@ -152,7 +152,7 @@ namespace Mono.CSharp
 
                public FieldSpec CreateField (FieldInfo fi, TypeSpec declaringType)
                {
-                       Modifiers mod = 0;
+                       Modifiers mod;
                        var fa = fi.Attributes;
                        switch (fa & FieldAttributes.FieldAccessMask) {
                                case FieldAttributes.Public:
@@ -324,10 +324,9 @@ namespace Mono.CSharp
                                        //    IFoo<A<T>> foo;   // A<T> is definition in this case
                                        // }
                                        //
-                                       // TODO: Is full logic from CreateType needed here as well?
-                                       //
                                        if (!IsMissingType (type) && type.IsGenericTypeDefinition) {
-                                               var targs = CreateGenericArguments (0, type.GetGenericArguments (), dtype);
+                                               var start_pos = spec.DeclaringType == null ? 0 : spec.DeclaringType.MemberDefinition.TypeParametersCount;
+                                               var targs = CreateGenericArguments (start_pos, type.GetGenericArguments (), dtype);
                                                spec = spec.MakeGenericType (module, targs);
                                        }
                                }
@@ -714,7 +713,7 @@ namespace Mono.CSharp
                        TypeSpec spec;
                        if (import_cache.TryGetValue (type, out spec)) {
                                if (spec.BuiltinType == BuiltinTypeSpec.Type.Object) {
-                                       if (dtype.IsDynamicObject (this))
+                                       if (dtype.IsDynamicObject ())
                                                return module.Compiler.BuiltinTypes.Dynamic;
 
                                        return spec;
@@ -723,7 +722,7 @@ namespace Mono.CSharp
                                if (!spec.IsGeneric || type.IsGenericTypeDefinition)
                                        return spec;
 
-                               if (!dtype.HasDynamicAttribute (this))
+                               if (!dtype.HasDynamicAttribute ())
                                        return spec;
 
                                // We've found same object in the cache but this one has a dynamic custom attribute
@@ -774,24 +773,34 @@ namespace Mono.CSharp
 
                                        for (int i = nested_hierarchy.Count; i != 0; --i) {
                                                var t = nested_hierarchy [i - 1];
-                                               spec = MemberCache.FindNestedType (spec, t.Name, t.Arity);
+                                               if (t.Kind == MemberKind.MissingType)
+                                                       spec = t;
+                                               else
+                                                       spec = MemberCache.FindNestedType (spec, t.Name, t.Arity);
+
                                                if (t.Arity > 0) {
                                                        spec = spec.MakeGenericType (module, targs.Skip (targs_pos).Take (spec.Arity).ToArray ());
                                                        targs_pos += t.Arity;
                                                }
                                        }
 
-                                       string name = type.Name;
-                                       int index = name.IndexOf ('`');
-                                       if (index > 0)
-                                               name = name.Substring (0, index);
+                                       if (spec.Kind == MemberKind.MissingType) {
+                                               spec = new TypeSpec (MemberKind.MissingType, spec, new ImportedTypeDefinition (type_def, this), type_def, Modifiers.PUBLIC);
+                                               spec.MemberCache = MemberCache.Empty;
+                                       } else {
+                                               if ((type_def.Attributes & TypeAttributes.VisibilityMask) == TypeAttributes.NestedPrivate && IgnorePrivateMembers)
+                                                       return null;
 
-                                       spec = MemberCache.FindNestedType (spec, name, targs.Length - targs_pos);
-                                       if (spec == null)
-                                               return null;
+                                               string name = type.Name;
+                                               int index = name.IndexOf ('`');
+                                               if (index > 0)
+                                                       name = name.Substring (0, index);
 
-                                       if (spec.Arity > 0) {
-                                               spec = spec.MakeGenericType (module, targs.Skip (targs_pos).ToArray ());
+                                               spec = MemberCache.FindNestedType (spec, name, targs.Length - targs_pos);
+
+                                               if (spec.Arity > 0) {
+                                                       spec = spec.MakeGenericType (module, targs.Skip (targs_pos).ToArray ());
+                                               }
                                        }
                                }
 
@@ -847,9 +856,10 @@ namespace Mono.CSharp
 
                                if (kind == MemberKind.Class) {
                                        if ((ma & TypeAttributes.Sealed) != 0) {
-                                               mod |= Modifiers.SEALED;
                                                if ((ma & TypeAttributes.Abstract) != 0)
                                                        mod |= Modifiers.STATIC;
+                                               else
+                                                       mod |= Modifiers.SEALED;
                                        } else if ((ma & TypeAttributes.Abstract) != 0) {
                                                mod |= Modifiers.ABSTRACT;
                                        }
@@ -1362,7 +1372,7 @@ namespace Mono.CSharp
                protected AttributesBag cattrs;
                protected readonly MetadataImporter importer;
 
-               public ImportedDefinition (MemberInfo provider, MetadataImporter importer)
+               protected ImportedDefinition (MemberInfo provider, MetadataImporter importer)
                {
                        this.provider = provider;
                        this.importer = importer;
@@ -1883,7 +1893,7 @@ namespace Mono.CSharp
 
                }
 
-               public static void Error_MissingDependency (IMemberContext ctx, List<TypeSpec> types, Location loc)
+               public static void Error_MissingDependency (IMemberContext ctx, List<MissingTypeSpecReference> missing, Location loc)
                {
                        // 
                        // Report details about missing type and most likely cause of the problem.
@@ -1894,8 +1904,8 @@ namespace Mono.CSharp
 
                        var report = ctx.Module.Compiler.Report;
 
-                       for (int i = 0; i < types.Count; ++i) {
-                               var t = types [i];
+                       for (int i = 0; i < missing.Count; ++i) {
+                               var t = missing [i].Type;
 
                                //
                                // Report missing types only once
@@ -1905,6 +1915,10 @@ namespace Mono.CSharp
 
                                string name = t.GetSignatureForError ();
 
+                               var caller = missing[i].Caller;
+                               if (caller.Kind != MemberKind.MissingType)
+                                       report.SymbolRelatedToPreviousError (caller);
+
                                if (t.MemberDefinition.DeclaringAssembly == ctx.Module.DeclaringAssembly) {
                                        report.Error (1683, loc,
                                                "Reference to type `{0}' claims it is defined in this assembly, but it is not defined in source or any added modules",
@@ -2097,7 +2111,13 @@ namespace Mono.CSharp
                                                if (get == null && set == null)
                                                        continue;
 
-                                               imported = importer.CreateProperty (p, declaringType, get, set);
+                                               try {
+                                                       imported = importer.CreateProperty (p, declaringType, get, set);
+                                               } catch (Exception ex) {
+                                                       throw new InternalErrorException (ex, "Could not import property `{0}' inside `{1}'",
+                                                               p.Name, declaringType.GetSignatureForError ());
+                                               }
+
                                                if (imported == null)
                                                        continue;
 
index 0241978e2a4d9c41a0b382182bd3d8c4a56d61bc..7868c6a2c9d49b576a63cc69b088fd6e9c722a2d 100644 (file)
@@ -65,7 +65,7 @@ namespace Mono.CSharp {
                        AParametersCollection d_params = Delegate.GetParameters (delegateType);
 
                        if (HasExplicitParameters) {
-                               if (!VerifyExplicitParameters (ec, delegateType, d_params))
+                               if (!VerifyExplicitParameters (ec, tic, delegateType, d_params))
                                        return null;
 
                                return Parameters;
@@ -75,7 +75,7 @@ namespace Mono.CSharp {
                        // If L has an implicitly typed parameter list we make implicit parameters explicit
                        // Set each parameter of L is given the type of the corresponding parameter in D
                        //
-                       if (!VerifyParameterCompatibility (ec, delegateType, d_params, ec.IsInProbingMode))
+                       if (!VerifyParameterCompatibility (ec, tic, delegateType, d_params, ec.IsInProbingMode))
                                return null;
 
                        TypeSpec [] ptypes = new TypeSpec [Parameters.Count];
index a3a676980d68964fe36f27cb5db5a57f20d9b01c..36afc59a166294ae4b4c7d46785bcf3d4b0746a5 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{4882E7A2-D53E-4C00-8D9D-2B89F5B6798D}</ProjectGuid>\r
+    <ProjectGuid>{523E59D0-4059-4E06-95DA-691E167615A7}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\mcs-build</OutputPath>\r
     <Compile Include="..\..\external\ikvm\reflect\Reader\*.cs" />\r
     <Compile Include="..\..\external\ikvm\reflect\Writer\*.cs" />\r
     <Compile Include="..\build\common\Consts.cs" />\r
-    <Compile Include="..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
+    <Compile Include="..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\tools\monop\outline.cs" />\r
     <Compile Include="anonymous.cs" />\r
     <Compile Include="argument.cs" />\r
@@ -127,7 +127,7 @@ $(ProjectDir)\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(Project
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-build.csproj">\r
-      <Project>{B8B2866D-592F-4888-A1CB-697AD0F3CADE}</Project>\r
+      <Project>{2BD930A2-88A9-4AD0-ADE7-1531552DF896}</Project>\r
       <Name>corlib\corlib-build</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 93183b40fef60ed7f5c70b4fc61312d4ac92744d..2c761830ec53ae8002640c123e01622398e1b2f6 100644 (file)
@@ -5,7 +5,7 @@
     <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>\r
     <ProductVersion>9.0.30729</ProductVersion>\r
     <SchemaVersion>2.0</SchemaVersion>\r
-    <ProjectGuid>{AD97431A-3538-4597-9C5C-97137A9ECCA1}</ProjectGuid>\r
+    <ProjectGuid>{C43E1948-715C-4711-9442-13652674CE49}</ProjectGuid>\r
     <OutputType>Library</OutputType>\r
     <NoWarn>1699</NoWarn>\r
     <OutputPath>bin\Debug\mcs-net_4_5</OutputPath>\r
     <Compile Include="..\..\external\ikvm\reflect\Reader\*.cs" />\r
     <Compile Include="..\..\external\ikvm\reflect\Writer\*.cs" />\r
     <Compile Include="..\build\common\Consts.cs" />\r
-    <Compile Include="..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolTable.cs" />\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\SourceMethodBuilder.cs" />\r
+    <Compile Include="..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs" />\r
     <Compile Include="..\tools\monop\outline.cs" />\r
     <Compile Include="anonymous.cs" />\r
     <Compile Include="argument.cs" />\r
@@ -127,7 +127,7 @@ $(ProjectDir)\..\jay\jay.exe -ct &lt; $(ProjectDir)\..\jay\skeleton.cs $(Project
   </PropertyGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\corlib\corlib-net_4_0.csproj">\r
-      <Project>{7B7210E5-3B98-492F-B57E-BD53A99C39B0}</Project>\r
+      <Project>{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}</Project>\r
       <Name>corlib\corlib-net_4_0</Name>\r
     </ProjectReference>\r
   </ItemGroup>\r
index 74609d1947ee3bac08d5cf63e13e562eb34942d4..3c7ae4027b61c58327cd5681d22016b6082a005c 100644 (file)
@@ -58,7 +58,7 @@
   <ItemGroup>\r
     <Compile Include="..\build\common\Consts.cs">\r
     </Compile>\r
-    <Compile Include="..\class\corlib\Mono.Security.Cryptography\CryptoConvert.cs">\r
+    <Compile Include="..\class\Mono.Security\Mono.Security.Cryptography\CryptoConvert.cs">\r
       <Link>CryptoConvert.cs</Link>\r
     </Compile>\r
     <Compile Include="..\class\Mono.CompilerServices.SymbolWriter\MonoSymbolFile.cs">\r
index 9ac9cb1c1ad4ebef8b45365433abaeaa7ff092cb..dec804804cb83cf64747d4e8f9807ce2ac2f1151 100644 (file)
@@ -53,7 +53,7 @@ visit.cs
 ../class/Mono.CompilerServices.SymbolWriter/MonoSymbolFile.cs
 ../class/Mono.CompilerServices.SymbolWriter/MonoSymbolTable.cs
 ../class/Mono.CompilerServices.SymbolWriter/SourceMethodBuilder.cs
-../class/corlib/Mono.Security.Cryptography/CryptoConvert.cs
+../class/Mono.Security/Mono.Security.Cryptography/CryptoConvert.cs
 ../build/common/Consts.cs
 ../tools/monop/outline.cs
 
index de1ef82c7fd610f50f3cce042a8d9897e2bfeac8..89e94af3963898f878f9b26d0980e9b7b7b0017c 100644 (file)
@@ -226,7 +226,7 @@ namespace Mono.CSharp {
                                                continue;
 
                                        if (list is MemberSpec[]) {
-                                               list = new List<MemberSpec> () { list [0] };
+                                               list = new List<MemberSpec> { list [0] };
                                                member_hash[entry.Key] = list;
                                        }
 
@@ -335,7 +335,7 @@ namespace Mono.CSharp {
                                        member_hash[name] = list;
                        } else {
                                if (list.Count == 1) {
-                                       list = new List<MemberSpec> () { list[0] };
+                                       list = new List<MemberSpec> { list[0] };
                                        member_hash[name] = list;
                                }
 
@@ -390,7 +390,7 @@ namespace Mono.CSharp {
                        }
 
                        if (existing.Count == 1) {
-                               existing = new List<MemberSpec> () { existing[0], member };
+                               existing = new List<MemberSpec> { existing[0], member };
                                return true;
                        }
 
@@ -502,7 +502,7 @@ namespace Mono.CSharp {
                //
                // Looks for extension methods with defined name and extension type
                //
-               public List<MethodSpec> FindExtensionMethods (IMemberContext invocationContext, TypeSpec extensionType, string name, int arity)
+               public List<MethodSpec> FindExtensionMethods (IMemberContext invocationContext, string name, int arity)
                {
                        IList<MemberSpec> entries;
                        if (!member_hash.TryGetValue (name, out entries))
@@ -795,13 +795,14 @@ namespace Mono.CSharp {
                        while (true) {
                                foreach (var entry in abstract_type.MemberCache.member_hash) {
                                        foreach (var name_entry in entry.Value) {
-                                               if ((name_entry.Modifiers & (Modifiers.ABSTRACT | Modifiers.OVERRIDE)) != Modifiers.ABSTRACT)
+                                               if ((name_entry.Modifiers & Modifiers.ABSTRACT) == 0)
                                                        continue;
 
-                                               if (name_entry.Kind != MemberKind.Method)
+                                               var ms = name_entry as MethodSpec;
+                                               if (ms == null)
                                                        continue;
 
-                                               abstract_methods.Add ((MethodSpec) name_entry);
+                                               abstract_methods.Add (ms);
                                        }
                                }
 
index bda1909d2d6330b9e20e1210212a05926a512bec..03568fa9230613951753346426259123f20e93b0 100644 (file)
@@ -47,7 +47,7 @@ namespace Mono.CSharp {
                protected ToplevelBlock block;
                protected MethodSpec spec;
 
-               public MethodCore (TypeDefinition parent, FullNamedExpression type, Modifiers mod, Modifiers allowed_mod,
+               protected MethodCore (TypeDefinition parent, FullNamedExpression type, Modifiers mod, Modifiers allowed_mod,
                        MemberName name, Attributes attrs, ParametersCompiled parameters)
                        : base (parent, type, mod, allowed_mod, name, attrs)
                {
@@ -493,29 +493,29 @@ namespace Mono.CSharp {
                        return ms;
                }
 
-               public override List<TypeSpec> ResolveMissingDependencies ()
+               public override List<MissingTypeSpecReference> ResolveMissingDependencies (MemberSpec caller)
                {
-                       var missing = returnType.ResolveMissingDependencies ();
+                       var missing = returnType.ResolveMissingDependencies (this);
                        foreach (var pt in parameters.Types) {
-                               var m = pt.GetMissingDependencies ();
+                               var m = pt.GetMissingDependencies (this);
                                if (m == null)
                                        continue;
 
                                if (missing == null)
-                                       missing = new List<TypeSpec> ();
+                                       missing = new List<MissingTypeSpecReference> ();
 
                                missing.AddRange (m);
                        }
 
                        if (Arity > 0) {
                                foreach (var tp in GenericDefinition.TypeParameters) {
-                                       var m = tp.GetMissingDependencies ();
+                                       var m = tp.GetMissingDependencies (this);
 
                                        if (m == null)
                                                continue;
 
                                        if (missing == null)
-                                               missing = new List<TypeSpec> ();
+                                               missing = new List<MissingTypeSpecReference> ();
 
                                        missing.AddRange (m);
                                }
@@ -685,6 +685,8 @@ namespace Mono.CSharp {
                                Module.PredefinedAttributes.CompilerGenerated.EmitAttribute (MethodBuilder);
                        if ((ModFlags & Modifiers.DEBUGGER_HIDDEN) != 0)
                                Module.PredefinedAttributes.DebuggerHidden.EmitAttribute (MethodBuilder);
+                       if ((ModFlags & Modifiers.DEBUGGER_STEP_THROUGH) != 0)
+                               Module.PredefinedAttributes.DebuggerStepThrough.EmitAttribute (MethodBuilder);
 
                        if (ReturnType.BuiltinType == BuiltinTypeSpec.Type.Dynamic) {
                                return_attributes = new ReturnParameter (this, MethodBuilder, Location);
@@ -1232,7 +1234,7 @@ namespace Mono.CSharp {
                                        }
 
                                        block = (ToplevelBlock) block.ConvertToAsyncTask (this, Parent.PartialContainer, parameters, ReturnType, null, Location);
-                                       ModFlags |= Modifiers.DEBUGGER_HIDDEN;
+                                       ModFlags |= Modifiers.DEBUGGER_STEP_THROUGH;
                                }
 
                                if (Compiler.Settings.WriteMetadataOnly)
@@ -1403,7 +1405,7 @@ namespace Mono.CSharp {
                Arguments argument_list;
                MethodSpec base_ctor;
 
-               public ConstructorInitializer (Arguments argument_list, Location loc)
+               protected ConstructorInitializer (Arguments argument_list, Location loc)
                {
                        this.argument_list = argument_list;
                        this.loc = loc;
@@ -2124,13 +2126,11 @@ namespace Mono.CSharp {
                {
                        DefineOverride (parent);
 
-                       var mc = (IMemberContext) method;
-
-                       method.ParameterInfo.ApplyAttributes (mc, MethodBuilder);
+                       method.ParameterInfo.ApplyAttributes (method, MethodBuilder);
 
                        ToplevelBlock block = method.Block;
                        if (block != null) {
-                               BlockContext bc = new BlockContext (mc, block, method.ReturnType);
+                               BlockContext bc = new BlockContext (method, block, method.ReturnType);
                                if (block.Resolve (null, bc, method)) {
                                        debug_builder = member.Parent.CreateMethodSymbolEntry ();
                                        EmitContext ec = method.CreateEmitContext (MethodBuilder.GetILGenerator (), debug_builder);
@@ -2267,7 +2267,7 @@ namespace Mono.CSharp {
 
                ReturnParameter return_attributes;
 
-               public AbstractPropertyEventMethod (InterfaceMemberBase member, string prefix, Attributes attrs, Location loc)
+               protected AbstractPropertyEventMethod (InterfaceMemberBase member, string prefix, Attributes attrs, Location loc)
                        : base (member.Parent, SetupName (prefix, member, loc), attrs)
                {
                        this.prefix = prefix;
index f842410c7f74461ea15a897f31f603e66f414581..970e8dedd71108a70e1402940573f1748f0d7191 100644 (file)
@@ -51,6 +51,7 @@ namespace Mono.CSharp
                COMPILER_GENERATED              = 0x100000,
                BACKING_FIELD                   = 0x200000,
                DEBUGGER_HIDDEN                 = 0x400000,
+               DEBUGGER_STEP_THROUGH   = 0x800000,
 
                AccessibilityMask = PUBLIC | PROTECTED | INTERNAL | PRIVATE,
                AllowedExplicitImplFlags = UNSAFE | EXTERN,
index 017664e0b356e8bcdcd36f4b541a7a5a564757be..e7e02a0bf14d7f0a1fe29840919fcb06dac0f745 100644 (file)
@@ -128,6 +128,9 @@ namespace Mono.CSharp
                PredefinedTypes predefined_types;
                PredefinedMembers predefined_members;
 
+               public Binary.PredefinedOperator[] OperatorsBinaryEqualityLifted;
+               public Binary.PredefinedOperator[] OperatorsBinaryLifted;
+
                static readonly string[] attribute_targets = new string[] { "assembly", "module" };
 
                public ModuleContainer (CompilerContext context)
@@ -184,9 +187,6 @@ namespace Mono.CSharp
                }
 
                public int CounterAnonymousTypes { get; set; }
-               public int CounterAnonymousMethods { get; set; }
-               public int CounterAnonymousContainers { get; set; }
-               public int CounterSwitchTypes { get; set; }
 
                public AssemblyDefinition DeclaringAssembly {
                        get {
@@ -311,7 +311,7 @@ namespace Mono.CSharp
 
                public override void AddTypeContainer (TypeContainer tc)
                {
-                       containers.Add (tc);
+                       AddTypeContainerMember (tc);
                }
 
                public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
@@ -529,11 +529,37 @@ namespace Mono.CSharp
                        return "<module>";
                }
 
+               public Binary.PredefinedOperator[] GetPredefinedEnumAritmeticOperators (TypeSpec enumType, bool nullable)
+               {
+                       TypeSpec underlying;
+                       Binary.Operator mask = 0;
+
+                       if (nullable) {
+                               underlying = Nullable.NullableInfo.GetEnumUnderlyingType (this, enumType);
+                               mask = Binary.Operator.NullableMask;
+                       } else {
+                               underlying = EnumSpec.GetUnderlyingType (enumType);
+                       }
+
+                       var operators = new[] {
+                               new Binary.PredefinedOperator (enumType, underlying,
+                                       mask | Binary.Operator.AdditionMask | Binary.Operator.SubtractionMask | Binary.Operator.DecomposedMask, enumType),
+                               new Binary.PredefinedOperator (underlying, enumType,
+                                       mask | Binary.Operator.AdditionMask | Binary.Operator.SubtractionMask | Binary.Operator.DecomposedMask, enumType),
+                               new Binary.PredefinedOperator (enumType, mask | Binary.Operator.SubtractionMask, underlying)
+                       };
+
+                       return operators;
+               }
+
                public void InitializePredefinedTypes ()
                {
                        predefined_attributes = new PredefinedAttributes (this);
                        predefined_types = new PredefinedTypes (this);
                        predefined_members = new PredefinedMembers (this);
+
+                       OperatorsBinaryEqualityLifted = Binary.CreateEqualityLiftedOperatorsTable (this);
+                       OperatorsBinaryLifted = Binary.CreateStandardLiftedOperatorsTable (this);
                }
 
                public override bool IsClsComplianceRequired ()
index c1cef03916432b4f8564c0a2329b2662eecbbc9b..6a6f17e8e9d7ceee288929f262704b4b5ad924f6 100644 (file)
@@ -64,12 +64,12 @@ namespace Mono.CSharp {
                //
                // For better error reporting where compiler tries to guess missing using directive
                //
-               public List<string> FindExtensionMethodNamespaces (IMemberContext ctx, TypeSpec extensionType, string name, int arity)
+               public List<string> FindExtensionMethodNamespaces (IMemberContext ctx, string name, int arity)
                {
                        List<string> res = null;
 
                        foreach (var ns in all_namespaces) {
-                               var methods = ns.Value.LookupExtensionMethod (ctx, extensionType, name, arity);
+                               var methods = ns.Value.LookupExtensionMethod (ctx, name, arity);
                                if (methods != null) {
                                        if (res == null)
                                                res = new List<string> ();
@@ -125,7 +125,7 @@ namespace Mono.CSharp {
                protected Dictionary<string, Namespace> namespaces;
                protected Dictionary<string, IList<TypeSpec>> types;
                List<TypeSpec> extension_method_types;
-               Dictionary<string, TypeExpr> cached_types;
+               Dictionary<string, TypeSpec> cached_types;
                RootNamespace root;
                bool cls_checked;
 
@@ -171,7 +171,7 @@ namespace Mono.CSharp {
                                MemberName = new MemberName (name, Location.Null);
 
                        namespaces = new Dictionary<string, Namespace> ();
-                       cached_types = new Dictionary<string, TypeExpr> ();
+                       cached_types = new Dictionary<string, TypeSpec> ();
 
                        root.RegisterNamespace (this);
                }
@@ -204,20 +204,20 @@ namespace Mono.CSharp {
                {
                        var retval = LookupType (ctx, name, arity, LookupMode.IgnoreAccessibility, loc);
                        if (retval != null) {
-                               ctx.Module.Compiler.Report.SymbolRelatedToPreviousError (retval.Type);
+//                             ctx.Module.Compiler.Report.SymbolRelatedToPreviousError (retval.MemberDefinition);
                                ErrorIsInaccesible (ctx, retval.GetSignatureForError (), loc);
                                return;
                        }
 
                        retval = LookupType (ctx, name, -System.Math.Max (1, arity), LookupMode.Probing, loc);
                        if (retval != null) {
-                               Error_TypeArgumentsCannotBeUsed (ctx, retval.Type, arity, loc);
+                               Error_TypeArgumentsCannotBeUsed (ctx, retval, loc);
                                return;
                        }
 
                        Namespace ns;
                        if (arity > 0 && namespaces.TryGetValue (name, out ns)) {
-                               ns.Error_TypeArgumentsCannotBeUsed (ctx, null, arity, loc);
+                               ns.Error_TypeArgumentsCannotBeUsed (ctx, null, loc);
                                return;
                        }
 
@@ -276,16 +276,7 @@ namespace Mono.CSharp {
 
                public Namespace AddNamespace (MemberName name)
                {
-                       Namespace ns_parent;
-                       if (name.Left != null) {
-                               if (parent != null)
-                                       ns_parent = parent.AddNamespace (name.Left);
-                               else
-                                       ns_parent = AddNamespace (name.Left);
-                       } else {
-                               ns_parent = this;
-                       }
-
+                       var ns_parent = name.Left == null ? this : AddNamespace (name.Left);
                        return ns_parent.TryAddNamespace (name.Basename);
                }
 
@@ -336,20 +327,21 @@ namespace Mono.CSharp {
                        return found;
                }
 
-               public TypeExpr LookupType (IMemberContext ctx, string name, int arity, LookupMode mode, Location loc)
+               public TypeSpec LookupType (IMemberContext ctx, string name, int arity, LookupMode mode, Location loc)
                {
                        if (types == null)
                                return null;
 
-                       TypeExpr te;
-                       if (arity == 0 && cached_types.TryGetValue (name, out te))
-                               return te;
+                       TypeSpec best = null;
+                       if (arity == 0 && cached_types.TryGetValue (name, out best)) {
+                               if (best != null || mode != LookupMode.IgnoreAccessibility)
+                                       return best;
+                       }
 
                        IList<TypeSpec> found;
                        if (!types.TryGetValue (name, out found))
                                return null;
 
-                       TypeSpec best = null;
                        foreach (var ts in found) {
                                if (ts.Arity == arity) {
                                        if (best == null) {
@@ -400,16 +392,11 @@ namespace Mono.CSharp {
                                }
                        }
 
-                       if (best == null)
-                               return null;
-
-                       te = new TypeExpression (best, Location.Null);
-
                        // TODO MemberCache: Cache more
                        if (arity == 0 && mode == LookupMode.Normal)
-                               cached_types.Add (name, te);
+                               cached_types.Add (name, best);
 
-                       return te;
+                       return best;
                }
 
                public FullNamedExpression LookupTypeOrNamespace (IMemberContext ctx, string name, int arity, LookupMode mode, Location loc)
@@ -422,18 +409,21 @@ namespace Mono.CSharp {
                                        return ns;
 
                                if (mode != LookupMode.Probing) {
-                                       ctx.Module.Compiler.Report.SymbolRelatedToPreviousError (texpr.Type);
+                                       //ctx.Module.Compiler.Report.SymbolRelatedToPreviousError (texpr.Type);
                                        // ctx.Module.Compiler.Report.SymbolRelatedToPreviousError (ns.loc, "");
                                        ctx.Module.Compiler.Report.Warning (437, 2, loc,
                                                "The type `{0}' conflicts with the imported namespace `{1}'. Using the definition found in the source file",
                                                texpr.GetSignatureForError (), ns.GetSignatureForError ());
                                }
 
-                               if (texpr.Type.MemberDefinition.IsImported)
+                               if (texpr.MemberDefinition.IsImported)
                                        return ns;
                        }
 
-                       return texpr;
+                       if (texpr == null)
+                               return null;
+
+                       return new TypeExpression (texpr, loc);
                }
 
                //
@@ -457,7 +447,7 @@ namespace Mono.CSharp {
                // 
                // Looks for extension method in this namespace
                //
-               public List<MethodSpec> LookupExtensionMethod (IMemberContext invocationContext, TypeSpec extensionType, string name, int arity)
+               public List<MethodSpec> LookupExtensionMethod (IMemberContext invocationContext, string name, int arity)
                {
                        if (extension_method_types == null)
                                return null;
@@ -480,7 +470,7 @@ namespace Mono.CSharp {
                                        continue;
                                }
 
-                               var res = ts.MemberCache.FindExtensionMethods (invocationContext, extensionType, name, arity);
+                               var res = ts.MemberCache.FindExtensionMethods (invocationContext, name, arity);
                                if (res == null)
                                        continue;
 
@@ -739,7 +729,7 @@ namespace Mono.CSharp {
                void CreateUnitSymbolInfo (MonoSymbolFile symwriter)
                {
                        var si = file.CreateSymbolInfo (symwriter);
-                       comp_unit = new CompileUnitEntry (symwriter, si);;
+                       comp_unit = new CompileUnitEntry (symwriter, si);
 
                        if (include_files != null) {
                                foreach (SourceFile include in include_files.Values) {
@@ -763,6 +753,11 @@ namespace Mono.CSharp {
 
                        return Compiler.Settings.IsConditionalSymbolDefined (value);
                }
+
+               public override void Accept (StructuralVisitor visitor)
+               {
+                       visitor.Visit (this);
+               }
        }
 
 
@@ -877,7 +872,7 @@ namespace Mono.CSharp {
                public override void AddPartial (TypeDefinition next_part)
                {
                        var existing = ns.LookupType (this, next_part.MemberName.Name, next_part.MemberName.Arity, LookupMode.Probing, Location.Null);
-                       var td = existing != null ? existing.Type.MemberDefinition as TypeDefinition : null;
+                       var td = existing != null ? existing.MemberDefinition as TypeDefinition : null;
                        AddPartial (next_part, td);
                }
 
@@ -896,7 +891,7 @@ namespace Mono.CSharp {
                        MemberCore mc;
                        if (names_container.DefinedNames.TryGetValue (name, out mc)) {
                                if (tc is NamespaceContainer && mc is NamespaceContainer) {
-                                       containers.Add (tc);
+                                       AddTypeContainerMember (tc);
                                        return;
                                }
 
@@ -973,7 +968,7 @@ namespace Mono.CSharp {
                        ExtensionMethodCandidates candidates;
                        var container = this;
                        do {
-                               candidates = container.LookupExtensionMethodCandidates (invocationContext, extensionType, name, arity, ref position);
+                               candidates = container.LookupExtensionMethodCandidates (invocationContext, name, arity, ref position);
                                if (candidates != null || container.MemberName == null)
                                        return candidates;
 
@@ -988,7 +983,7 @@ namespace Mono.CSharp {
                                while (mn != null) {
                                        ++position;
 
-                                       var methods = container_ns.LookupExtensionMethod (invocationContext, extensionType, name, arity);
+                                       var methods = container_ns.LookupExtensionMethod (invocationContext, name, arity);
                                        if (methods != null) {
                                                return new ExtensionMethodCandidates (invocationContext, methods, container, position);
                                        }
@@ -1004,14 +999,14 @@ namespace Mono.CSharp {
                        return null;
                }
 
-               ExtensionMethodCandidates LookupExtensionMethodCandidates (IMemberContext invocationContext, TypeSpec extensionType, string name, int arity, ref int position)
+               ExtensionMethodCandidates LookupExtensionMethodCandidates (IMemberContext invocationContext, string name, int arity, ref int position)
                {
                        List<MethodSpec> candidates = null;
 
                        if (position == 0) {
                                ++position;
 
-                               candidates = ns.LookupExtensionMethod (invocationContext, extensionType, name, arity);
+                               candidates = ns.LookupExtensionMethod (invocationContext, name, arity);
                                if (candidates != null) {
                                        return new ExtensionMethodCandidates (invocationContext, candidates, this, position);
                                }
@@ -1021,7 +1016,7 @@ namespace Mono.CSharp {
                                ++position;
 
                                foreach (Namespace n in namespace_using_table) {
-                                       var a = n.LookupExtensionMethod (invocationContext, extensionType, name, arity);
+                                       var a = n.LookupExtensionMethod (invocationContext, name, arity);
                                        if (a == null)
                                                continue;
 
@@ -1066,6 +1061,9 @@ namespace Mono.CSharp {
 
                public override void GetCompletionStartingWith (string prefix, List<string> results)
                {
+                       if (Usings == null)
+                               return;
+
                        foreach (var un in Usings) {
                                if (un.Alias != null)
                                        continue;
@@ -1141,7 +1139,7 @@ namespace Mono.CSharp {
                        if (aliases != null && arity == 0) {
                                UsingAliasNamespace uan;
                                if (aliases.TryGetValue (name, out uan)) {
-                                       if (fne != null) {
+                                       if (fne != null && mode != LookupMode.Probing) {
                                                // TODO: Namespace has broken location
                                                //Report.SymbolRelatedToPreviousError (fne.Location, null);
                                                Compiler.Report.SymbolRelatedToPreviousError (uan.Location, null);
@@ -1173,10 +1171,11 @@ namespace Mono.CSharp {
                                // A using directive imports only types contained in the namespace, it
                                // does not import any nested namespaces
                                //
-                               fne = using_ns.LookupType (this, name, arity, mode, loc);
-                               if (fne == null)
+                               var t = using_ns.LookupType (this, name, arity, mode, loc);
+                               if (t == null)
                                        continue;
 
+                               fne = new TypeExpression (t, loc);
                                if (match == null) {
                                        match = fne;
                                        continue;
@@ -1334,6 +1333,11 @@ namespace Mono.CSharp {
 
                        return false;
                }
+
+               public override void Accept (StructuralVisitor visitor)
+               {
+                       visitor.Visit (this);
+               }
        }
 
        public class UsingNamespace
index badf5e1a7301b7aa9dded3c6b81d5b37d144a9fd..1732a9b9c5c46edda117e4104b1d1637ad617bda 100644 (file)
@@ -13,6 +13,7 @@
 //
 
 using System;
+using SLE = System.Linq.Expressions;
 
 #if STATIC
 using IKVM.Reflection.Emit;
@@ -81,6 +82,12 @@ namespace Mono.CSharp.Nullable
                {
                        return ((InflatedTypeSpec) nullableType).TypeArguments[0];
                }
+
+               public static TypeSpec GetEnumUnderlyingType (ModuleContainer module, TypeSpec nullableEnum)
+               {
+                       return module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (module,
+                               new[] { EnumSpec.GetUnderlyingType (GetUnderlyingType (nullableEnum)) });
+               }
        }
 
        public class Unwrap : Expression, IMemoryLocation
@@ -88,9 +95,10 @@ namespace Mono.CSharp.Nullable
                Expression expr;
 
                LocalTemporary temp;
+               Expression temp_field;
                readonly bool useDefaultValue;
 
-               Unwrap (Expression expr, bool useDefaultValue)
+               public Unwrap (Expression expr, bool useDefaultValue = true)
                {
                        this.expr = expr;
                        this.loc = expr.Location;
@@ -105,6 +113,7 @@ namespace Mono.CSharp.Nullable
                        return expr.ContainsEmitWithAwait ();
                }
 
+               // TODO: REMOVE
                public static Expression Create (Expression expr)
                {
                        //
@@ -117,6 +126,18 @@ namespace Mono.CSharp.Nullable
                        return Create (expr, false);
                }
 
+               public static Expression CreateUnwrapped (Expression expr)
+               {
+                       //
+                       // Avoid unwraping and wraping of same type
+                       //
+                       Wrap wrap = expr as Wrap;
+                       if (wrap != null)
+                               return wrap.Child;
+
+                       return Create (expr, true);
+               }
+
                public static Unwrap Create (Expression expr, bool useDefaultValue)
                {
                        return new Unwrap (expr, useDefaultValue);
@@ -166,6 +187,14 @@ namespace Mono.CSharp.Nullable
                        call.EmitPredefined (ec, NullableInfo.GetHasValue (expr.Type), null);
                }
 
+               public override Expression EmitToField (EmitContext ec)
+               {
+                       if (temp_field == null)
+                               temp_field = this.expr.EmitToField (ec);
+                       
+                       return this;
+               }
+
                public override bool Equals (object obj)
                {
                        Unwrap uw = obj as Unwrap;
@@ -189,9 +218,9 @@ namespace Mono.CSharp.Nullable
                        }
                }
 
-               void Store (EmitContext ec)
+               public void Store (EmitContext ec)
                {
-                       if (temp != null)
+                       if (temp != null || temp_field != null)
                                return;
 
                        if (expr is VariableReference)
@@ -203,20 +232,35 @@ namespace Mono.CSharp.Nullable
 
                public void Load (EmitContext ec)
                {
-                       if (expr is VariableReference)
+                       if (temp_field != null)
+                               temp_field.Emit (ec);
+                       else if (expr is VariableReference)
                                expr.Emit (ec);
                        else
                                LocalVariable.Emit (ec);
                }
 
-               public override System.Linq.Expressions.Expression MakeExpression (BuilderContext ctx)
+               public override SLE.Expression MakeExpression (BuilderContext ctx)
                {
                        return expr.MakeExpression (ctx);
                }
 
                public void AddressOf (EmitContext ec, AddressOp mode)
                {
-                       IMemoryLocation ml = expr as VariableReference;
+                       IMemoryLocation ml;
+
+                       if (temp_field != null) {
+                               ml = temp_field as IMemoryLocation;
+                               if (ml == null) {
+                                       var lt = new LocalTemporary (temp_field.Type);
+                                       temp_field.Emit (ec);
+                                       lt.Store (ec);
+                                       ml = lt;
+                               }
+                       } else {
+                               ml = expr as VariableReference;
+                       }
+
                        if (ml != null)
                                ml.AddressOf (ec, mode);
                        else
@@ -228,7 +272,7 @@ namespace Mono.CSharp.Nullable
                //
                LocalTemporary LocalVariable {
                        get {
-                               if (temp == null)
+                               if (temp == null && temp_field == null)
                                        temp = new LocalTemporary (expr.Type);
                                return temp;
                        }
@@ -279,6 +323,12 @@ namespace Mono.CSharp.Nullable
                                return child_cast.CreateExpressionTree (ec);
                        }
 
+                       var user_cast = child as UserCast;
+                       if (user_cast != null) {
+                               child.Type = type;
+                               return user_cast.CreateExpressionTree (ec);
+                       }
+
                        return base.CreateExpressionTree (ec);
                }
 
@@ -317,10 +367,12 @@ namespace Mono.CSharp.Nullable
                        return new LiftedNull (nullable, loc);
                }
 
-               public static Constant CreateFromExpression (ResolveContext ec, Expression e)
+               public static Constant CreateFromExpression (ResolveContext rc, Expression e)
                {
-                       ec.Report.Warning (458, 2, e.Location, "The result of the expression is always `null' of type `{0}'",
-                               e.Type.GetSignatureForError ());
+                       if (!rc.HasSet (ResolveContext.Options.ExpressionTreeConversion)) {
+                               rc.Report.Warning (458, 2, e.Location, "The result of the expression is always `null' of type `{0}'",
+                                       e.Type.GetSignatureForError ());
+                       }
 
                        return ReducedExpression.Create (Create (e.Type, e.Location), e);
                }
@@ -342,19 +394,19 @@ namespace Mono.CSharp.Nullable
                                
                        value_target.AddressOf (ec, AddressOp.Store);
                        ec.Emit (OpCodes.Initobj, type);
-                       ((IMemoryLocation) value_target).AddressOf (ec, Mode);
+                       value_target.AddressOf (ec, Mode);
                }
        }
 
        //
        // Generic lifting expression, supports all S/S? -> T/T? cases
        //
-       public class Lifted : Expression, IMemoryLocation
+       public class LiftedConversion : Expression, IMemoryLocation
        {
                Expression expr, null_value;
                Unwrap unwrap;
 
-               public Lifted (Expression expr, Unwrap unwrap, TypeSpec type)
+               public LiftedConversion (Expression expr, Unwrap unwrap, TypeSpec type)
                {
                        this.expr = expr;
                        this.unwrap = unwrap;
@@ -362,7 +414,7 @@ namespace Mono.CSharp.Nullable
                        this.type = type;
                }
 
-               public Lifted (Expression expr, Expression unwrap, TypeSpec type)
+               public LiftedConversion (Expression expr, Expression unwrap, TypeSpec type)
                        : this (expr, unwrap as Unwrap, type)
                {
                }
@@ -393,9 +445,11 @@ namespace Mono.CSharp.Nullable
 
                        // Wrap target for T?
                        if (type.IsNullableType) {
-                               expr = Wrap.Create (expr, type);
-                               if (expr == null)
-                                       return null;
+                               if (!expr.Type.IsNullableType) {
+                                       expr = Wrap.Create (expr, type);
+                                       if (expr == null)
+                                               return null;
+                               }
 
                                null_value = LiftedNull.Create (type, loc);
                        } else if (TypeSpec.IsValueType (type)) {
@@ -422,6 +476,7 @@ namespace Mono.CSharp.Nullable
                        ec.MarkLabel (is_null_label);
 
                        null_value.Emit (ec);
+
                        ec.MarkLabel (end_label);
                }
 
@@ -540,266 +595,90 @@ namespace Mono.CSharp.Nullable
                }
        }
 
-       public class LiftedBinaryOperator : Binary
+       //
+       // Lifted version of binary operators
+       //
+       class LiftedBinaryOperator : Expression
        {
-               Unwrap left_unwrap, right_unwrap;
-               Expression left_orig, right_orig;
-               Expression user_operator;
-               MethodSpec wrap_ctor;
-
-               public LiftedBinaryOperator (Binary.Operator op, Expression left, Expression right)
-                       : base (op, left, right)
+               public LiftedBinaryOperator (Binary b)
                {
+                       this.Binary = b;
+                       this.loc = b.Location;
                }
 
-               bool IsBitwiseBoolean {
-                       get {
-                               return (Oper == Operator.BitwiseAnd || Oper == Operator.BitwiseOr) &&
-                               ((left_unwrap != null && left_unwrap.Type.BuiltinType == BuiltinTypeSpec.Type.Bool) ||
-                                (right_unwrap != null && right_unwrap.Type.BuiltinType == BuiltinTypeSpec.Type.Bool));
-                       }
-               }
+               public Binary Binary { get; private set; }
 
-               bool IsLeftNullLifted {
-                       get {
-                               return (state & State.LeftNullLifted) != 0;
-                       }
-               }
+               public Expression Left { get; set; }
 
-               bool IsRightNullLifted {
-                       get {
-                               return (state & State.RightNullLifted) != 0;
-                       }
-               }
+               public Expression Right { get; set; }
 
-               public override Expression CreateExpressionTree (ResolveContext ec)
-               {
-                       if (user_operator != null)
-                               return user_operator.CreateExpressionTree (ec);
+               public Unwrap UnwrapLeft { get; set; }
 
-                       return base.CreateExpressionTree (ec);
-               }
+               public Unwrap UnwrapRight { get; set; }
 
-               //
-               // CSC 2 has this behavior, it allows structs to be compared
-               // with the null literal *outside* of a generics context and
-               // inlines that as true or false.
-               //
-               Constant CreateNullConstant (ResolveContext ec, Expression expr)
-               {
-                       // FIXME: Handle side effect constants
-                       Constant c = new BoolConstant (ec.BuiltinTypes, Oper == Operator.Inequality, loc);
+               public MethodSpec UserOperator { get; set; }
 
-                       if ((Oper & Operator.EqualityMask) != 0) {
-                               ec.Report.Warning (472, 2, loc, "The result of comparing value type `{0}' with null is always `{1}'",
-                                       expr.Type.GetSignatureForError (), c.GetValueAsLiteral ());
-                       } else {
-                               ec.Report.Warning (464, 2, loc, "The result of comparing type `{0}' with null is always `{1}'",
-                                       expr.Type.GetSignatureForError (), c.GetValueAsLiteral ());
+               bool IsBitwiseBoolean {
+                       get {
+                               return (Binary.Oper == Binary.Operator.BitwiseAnd || Binary.Oper == Binary.Operator.BitwiseOr) &&
+                               ((UnwrapLeft != null && UnwrapLeft.Type.BuiltinType == BuiltinTypeSpec.Type.Bool) ||
+                                (UnwrapRight != null && UnwrapRight.Type.BuiltinType == BuiltinTypeSpec.Type.Bool));
                        }
-
-                       return ReducedExpression.Create (c, this);
                }
 
-               protected override Expression DoResolve (ResolveContext ec)
+               public override bool ContainsEmitWithAwait ()
                {
-                       if ((Oper & Operator.LogicalMask) != 0) {
-                               Error_OperatorCannotBeApplied (ec, left, right);
-                               return null;
-                       }
-
-                       bool use_default_call = (Oper & (Operator.BitwiseMask | Operator.EqualityMask)) != 0;
-                       left_orig = left;
-                       if (left.Type.IsNullableType) {
-                               left = left_unwrap = Unwrap.Create (left, use_default_call);
-                               if (left == null)
-                                       return null;
-                       }
-
-                       right_orig = right;
-                       if (right.Type.IsNullableType) {
-                               right = right_unwrap = Unwrap.Create (right, use_default_call);
-                               if (right == null)
-                                       return null;
-                       }
-
-                       //
-                       // Some details are in 6.4.2, 7.2.7
-                       // Arguments can be lifted for equal operators when the return type is bool and both
-                       // arguments are of same type
-                       //      
-                       if (left_orig is NullLiteral) {
-                               left = right;
-                               state |= State.LeftNullLifted;
-                               type = ec.BuiltinTypes.Bool;
-                       }
-
-                       if (right_orig.IsNull) {
-                               if ((Oper & Operator.ShiftMask) != 0)
-                                       right = new EmptyExpression (ec.BuiltinTypes.Int);
-                               else
-                                       right = left;
-
-                               state |= State.RightNullLifted;
-                               type = ec.BuiltinTypes.Bool;
-                       }
-
-                       eclass = ExprClass.Value;
-                       return DoResolveCore (ec, left_orig, right_orig);
+                       return Left.ContainsEmitWithAwait () || Right.ContainsEmitWithAwait ();
                }
 
-               void EmitBitwiseBoolean (EmitContext ec)
+               public override Expression CreateExpressionTree (ResolveContext rc)
                {
-                       Label load_left = ec.DefineLabel ();
-                       Label load_right = ec.DefineLabel ();
-                       Label end_label = ec.DefineLabel ();
-
-                       // null & value, null | value
-                       if (left_unwrap == null) {
-                               left_unwrap = right_unwrap;
-                               right_unwrap = null;
-                               right = left;
-                       }
-
-                       left_unwrap.Emit (ec);
-                       ec.Emit (OpCodes.Brtrue, load_right);
-
-                       // value & null, value | null
-                       if (right_unwrap != null) {
-                               right_unwrap.Emit (ec);
-                               ec.Emit (OpCodes.Brtrue_S, load_left);
-                       }
-
-                       left_unwrap.EmitCheck (ec);
-                       ec.Emit (OpCodes.Brfalse_S, load_right);
-
-                       // load left
-                       ec.MarkLabel (load_left);
-
-                       if (Oper == Operator.BitwiseAnd) {
-                               left_unwrap.Load (ec);
-                       } else {
-                               if (right_unwrap == null) {
-                                       right.Emit (ec);
-                                       if (right is EmptyConstantCast || right is EmptyCast)
-                                               ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
-                               } else {
-                                       right_unwrap.Load (ec);
-                                       right_unwrap = left_unwrap;
-                               }
-                       }
-                       ec.Emit (OpCodes.Br_S, end_label);
+                       if (UserOperator != null) {
+                               Arguments args = new Arguments (2);
+                               args.Add (new Argument (Binary.Left));
+                               args.Add (new Argument (Binary.Right));
 
-                       // load right
-                       ec.MarkLabel (load_right);
-                       if (right_unwrap == null) {
-                               if (Oper == Operator.BitwiseAnd) {
-                                       right.Emit (ec);
-                                       if (right is EmptyConstantCast || right is EmptyCast)
-                                               ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
-                               } else {
-                                       left_unwrap.Load (ec);
-                               }
-                       } else {
-                               right_unwrap.Load (ec);
+                               var method = new UserOperatorCall (UserOperator, args, Binary.CreateExpressionTree, loc);
+                               return method.CreateExpressionTree (rc);
                        }
 
-                       ec.MarkLabel (end_label);
+                       return Binary.CreateExpressionTree (rc);
                }
 
-               //
-               // Emits optimized equality or inequality operator when possible
-               //
-               void EmitEquality (EmitContext ec)
+               protected override Expression DoResolve (ResolveContext rc)
                {
-                       //
-                       // Either left or right is null
-                       //
-                       if (left_unwrap != null && (IsRightNullLifted || right.IsNull)) {
-                               left_unwrap.EmitCheck (ec);
-                               if (Oper == Binary.Operator.Equality) {
-                                       ec.EmitInt (0);
-                                       ec.Emit (OpCodes.Ceq);
-                               }
-                               return;
-                       }
-
-                       if (right_unwrap != null && (IsLeftNullLifted || left.IsNull)) {
-                               right_unwrap.EmitCheck (ec);
-                               if (Oper == Binary.Operator.Equality) {
-                                       ec.EmitInt (0);
-                                       ec.Emit (OpCodes.Ceq);
-                               }
-                               return;
-                       }
+                       if (rc.IsRuntimeBinder) {
+                               if (UnwrapLeft == null && !Left.Type.IsNullableType)
+                                       Left = Wrap.Create (Left, rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { Left.Type }));
 
-                       Label dissimilar_label = ec.DefineLabel ();
-                       Label end_label = ec.DefineLabel ();
-
-                       if (user_operator != null) {
-                               user_operator.Emit (ec);
-                               ec.Emit (Oper == Operator.Equality ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, dissimilar_label);
+                               if (UnwrapRight == null && !Right.Type.IsNullableType)
+                                       Right = Wrap.Create (Right, rc.Module.PredefinedTypes.Nullable.TypeSpec.MakeGenericType (rc.Module, new[] { Right.Type }));
                        } else {
-                               if (ec.HasSet (BuilderContext.Options.AsyncBody) && right.ContainsEmitWithAwait ()) {
-                                       left = left.EmitToField (ec);
-                                       right = right.EmitToField (ec);
+                               if (UnwrapLeft == null && Left != null && Left.Type.IsNullableType) {
+                                       Left = Unwrap.CreateUnwrapped (Left);
+                                       UnwrapLeft = Left as Unwrap;
                                }
 
-                               left.Emit (ec);
-                               right.Emit (ec);
-
-                               ec.Emit (OpCodes.Bne_Un_S, dissimilar_label);
-                       }
-
-                       if (left_unwrap != null)
-                               left_unwrap.EmitCheck (ec);
-
-                       if (right_unwrap != null)
-                               right_unwrap.EmitCheck (ec);
-
-                       if (left_unwrap != null && right_unwrap != null) {
-                               if (Oper == Operator.Inequality)
-                                       ec.Emit (OpCodes.Xor);
-                               else
-                                       ec.Emit (OpCodes.Ceq);
-                       } else {
-                               if (Oper == Operator.Inequality) {
-                                       ec.EmitInt (0);
-                                       ec.Emit (OpCodes.Ceq);
+                               if (UnwrapRight == null && Right != null && Right.Type.IsNullableType) {
+                                       Right = Unwrap.CreateUnwrapped (Right);
+                                       UnwrapRight = Right as Unwrap;
                                }
                        }
 
-                       ec.Emit (OpCodes.Br_S, end_label);
-
-                       ec.MarkLabel (dissimilar_label);
-                       if (Oper == Operator.Inequality)
-                               ec.EmitInt (1);
-                       else
-                               ec.EmitInt (0);
+                       type = Binary.Type;
+                       eclass = Binary.eclass; 
 
-                       ec.MarkLabel (end_label);
+                       return this;
                }
-               
-               public override void EmitBranchable (EmitContext ec, Label target, bool onTrue)
-               {
-                       Emit (ec);
-                       ec.Emit (onTrue ? OpCodes.Brtrue : OpCodes.Brfalse, target);
-               }                       
 
                public override void Emit (EmitContext ec)
                {
-                       //
-                       // Optimize same expression operation
-                       //
-                       if (right_unwrap != null && right.Equals (left))
-                               right_unwrap = left_unwrap;
-
-                       if (user_operator == null && IsBitwiseBoolean) {
+                       if (IsBitwiseBoolean && UserOperator == null) {
                                EmitBitwiseBoolean (ec);
                                return;
                        }
 
-                       if ((Oper & Operator.EqualityMask) != 0) {
+                       if ((Binary.Oper & Binary.Operator.EqualityMask) != 0) {
                                EmitEquality (ec);
                                return;
                        }
@@ -807,28 +686,48 @@ namespace Mono.CSharp.Nullable
                        Label is_null_label = ec.DefineLabel ();
                        Label end_label = ec.DefineLabel ();
 
-                       if (left_unwrap != null) {
-                               left_unwrap.EmitCheck (ec);
-                               ec.Emit (OpCodes.Brfalse, is_null_label);
+                       if (ec.HasSet (BuilderContext.Options.AsyncBody) && Right.ContainsEmitWithAwait ()) {
+                               Left = Left.EmitToField (ec);
+                               Right = Right.EmitToField (ec);
+                       }
+
+                       if (UnwrapLeft != null) {
+                               UnwrapLeft.EmitCheck (ec);
                        }
 
                        //
                        // Don't emit HasValue check when left and right expressions are same
                        //
-                       if (right_unwrap != null && !left.Equals (right)) {
-                               right_unwrap.EmitCheck (ec);
-                               ec.Emit (OpCodes.Brfalse, is_null_label);
+                       if (UnwrapRight != null && !Binary.Left.Equals (Binary.Right)) {
+                               UnwrapRight.EmitCheck (ec);
+                               if (UnwrapLeft != null) {
+                                       ec.Emit (OpCodes.And);
+                               }
                        }
 
-                       EmitOperator (ec, left.Type);
+                       ec.Emit (OpCodes.Brfalse, is_null_label);
+
+                       if (UserOperator != null) {
+                               var args = new Arguments (2);
+                               args.Add (new Argument (Left));
+                               args.Add (new Argument (Right));
 
-                       if (wrap_ctor != null)
-                               ec.Emit (OpCodes.Newobj, wrap_ctor);
+                               var call = new CallEmitter ();
+                               call.EmitPredefined (ec, UserOperator, args);
+                       } else {
+                               Binary.EmitOperator (ec, Left, Right);
+                       }
+
+                       //
+                       // Wrap the result when the operator return type is nullable type
+                       //
+                       if (type.IsNullableType)
+                               ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
 
                        ec.Emit (OpCodes.Br_S, end_label);
                        ec.MarkLabel (is_null_label);
 
-                       if ((Oper & Operator.ComparisonMask) != 0) {
+                       if ((Binary.Oper & Binary.Operator.ComparisonMask) != 0) {
                                ec.EmitInt (0);
                        } else {
                                LiftedNull.Create (type, loc).Emit (ec);
@@ -837,170 +736,281 @@ namespace Mono.CSharp.Nullable
                        ec.MarkLabel (end_label);
                }
 
-               protected override void EmitOperator (EmitContext ec, TypeSpec l)
+               void EmitBitwiseBoolean (EmitContext ec)
                {
-                       if (user_operator != null) {
-                               user_operator.Emit (ec);
-                               return;
-                       }
+                       Label load_left = ec.DefineLabel ();
+                       Label load_right = ec.DefineLabel ();
+                       Label end_label = ec.DefineLabel ();
+                       Label is_null_label = ec.DefineLabel ();
 
-                       if (left.Type.IsNullableType) {
-                               l = NullableInfo.GetUnderlyingType (left.Type);
-                               left = EmptyCast.Create (left, l);
-                       }
+                       bool or = Binary.Oper == Binary.Operator.BitwiseOr;
 
-                       if (right.Type.IsNullableType) {
-                               right = EmptyCast.Create (right, NullableInfo.GetUnderlyingType (right.Type));
-                       }
+                       //
+                       // Both operands are bool? types
+                       //
+                       if (UnwrapLeft != null && UnwrapRight != null) {
+                               if (ec.HasSet (BuilderContext.Options.AsyncBody) && Binary.Right.ContainsEmitWithAwait ()) {
+                                       Left = Left.EmitToField (ec);
+                                       Right = Right.EmitToField (ec);
+                               }
 
-                       base.EmitOperator (ec, l);
-               }
+                               Left.Emit (ec);
+                               ec.Emit (OpCodes.Brtrue_S, load_right);
 
-               Expression LiftResult (ResolveContext ec, Expression res_expr)
-               {
-                       TypeSpec lifted_type;
+                               Right.Emit (ec);
+                               ec.Emit (OpCodes.Brtrue_S, load_left);
 
-                       //
-                       // Avoid double conversion
-                       //
-                       if (left_unwrap == null || IsLeftNullLifted || left_unwrap.Type != left.Type || (left_unwrap != null && IsRightNullLifted)) {
-                               lifted_type = new NullableType (left.Type, loc).ResolveAsType (ec);
-                               if (lifted_type == null)
-                                       return null;
+                               UnwrapLeft.EmitCheck (ec);
+                               ec.Emit (OpCodes.Brfalse_S, load_right);
 
-                               if (left is UserCast || left is EmptyCast || left is OpcodeCast)
-                                       left.Type = lifted_type;
+                               // load left
+                               ec.MarkLabel (load_left);
+                               if (or)
+                                       UnwrapRight.Load (ec);
                                else
-                                       left = EmptyCast.Create (left, lifted_type);
-                       }
+                                       UnwrapLeft.Load (ec);
 
-                       if (left != right && (right_unwrap == null || IsRightNullLifted || right_unwrap.Type != right.Type || (right_unwrap != null && IsLeftNullLifted))) {
-                               lifted_type = new NullableType (right.Type, loc).ResolveAsType (ec);
-                               if (lifted_type == null)
-                                       return null;
+                               ec.Emit (OpCodes.Br_S, end_label);
 
-                               var r = right;
-                               if (r is ReducedExpression)
-                                       r = ((ReducedExpression) r).OriginalExpression;
-
-                               if (r is UserCast || r is EmptyCast || r is OpcodeCast)
-                                       r.Type = lifted_type;
+                               // load right
+                               ec.MarkLabel (load_right);
+                               if (or)
+                                       UnwrapLeft.Load (ec);
                                else
-                                       right = EmptyCast.Create (right, lifted_type);
+                                       UnwrapRight.Load (ec);
+
+                               ec.MarkLabel (end_label);
+                               return;
                        }
 
-                       if ((Oper & Operator.ComparisonMask) == 0) {
-                               lifted_type = new NullableType (res_expr.Type, loc).ResolveAsType (ec);
-                               if (lifted_type == null)
-                                       return null;
+                       //
+                       // Faster version when one operand is bool
+                       //
+                       if (UnwrapLeft == null) {
+                               //
+                               // (bool, bool?)
+                               //
+                               // Optimizes remaining (false & bool?), (true | bool?) which are not easy to handle
+                               // in binary expression reduction
+                               //
+                               var c = Left as BoolConstant;
+                               if (c != null) {
+                                       // Keep evaluation order
+                                       UnwrapRight.Store (ec);
+
+                                       ec.EmitInt (or ? 1 : 0);
+                                       ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
+                               } else if (Left.IsNull) {
+                                       UnwrapRight.Emit (ec);
+                                       ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, is_null_label);
+
+                                       UnwrapRight.Load (ec);
+                                       ec.Emit (OpCodes.Br_S, end_label);
+
+                                       ec.MarkLabel (is_null_label);
+                                       LiftedNull.Create (type, loc).Emit (ec);
+                               } else {
+                                       Left.Emit (ec);
+                                       ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, load_right);
 
-                               wrap_ctor = NullableInfo.GetConstructor (lifted_type);
-                               type = res_expr.Type = lifted_type;
-                       }
+                                       ec.EmitInt (or ? 1 : 0);
+                                       ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
 
-                       if (IsLeftNullLifted) {
-                               left = LiftedNull.Create (right.Type, left.Location);
+                                       ec.Emit (OpCodes.Br_S, end_label);
 
+                                       ec.MarkLabel (load_right);
+                                       UnwrapRight.Original.Emit (ec);
+                               }
+                       } else {
                                //
-                               // Special case for bool?, the result depends on both null right side and left side value
+                               // (bool?, bool)
                                //
-                               if ((Oper == Operator.BitwiseAnd || Oper == Operator.BitwiseOr) && NullableInfo.GetUnderlyingType (type).BuiltinType == BuiltinTypeSpec.Type.Bool) {
-                                       return res_expr;
-                               }
-
-                               if ((Oper & (Operator.ArithmeticMask | Operator.ShiftMask | Operator.BitwiseMask)) != 0)
-                                       return LiftedNull.CreateFromExpression (ec, res_expr);
+                               // Keep left-right evaluation order
+                               UnwrapLeft.Store (ec);
 
                                //
-                               // Value types and null comparison
+                               // Optimizes remaining (bool? & false), (bool? | true) which are not easy to handle
+                               // in binary expression reduction
                                //
-                               if (right_unwrap == null || (Oper & Operator.RelationalMask) != 0)
-                                       return CreateNullConstant (ec, right_orig);
+                               var c = Right as BoolConstant;
+                               if (c != null) {
+                                       ec.EmitInt (or ? 1 : 0);
+                                       ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
+                               } else if (Right.IsNull) {
+                                       UnwrapLeft.Emit (ec);
+                                       ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, is_null_label);
+
+                                       UnwrapLeft.Load (ec);
+                                       ec.Emit (OpCodes.Br_S, end_label);
+
+                                       ec.MarkLabel (is_null_label);
+                                       LiftedNull.Create (type, loc).Emit (ec);
+                               } else {
+                                       Right.Emit (ec);
+                                       ec.Emit (or ? OpCodes.Brfalse_S : OpCodes.Brtrue_S, load_right);
+
+                                       ec.EmitInt (or ? 1 : 0);
+                                       ec.Emit (OpCodes.Newobj, NullableInfo.GetConstructor (type));
+
+                                       ec.Emit (OpCodes.Br_S, end_label);
+
+                                       ec.MarkLabel (load_right);
+
+                                       UnwrapLeft.Load (ec);
+                               }
                        }
 
-                       if (IsRightNullLifted) {
-                               right = LiftedNull.Create (left.Type, right.Location);
+                       ec.MarkLabel (end_label);
+               }
 
+               //
+               // Emits optimized equality or inequality operator when possible
+               //
+               void EmitEquality (EmitContext ec)
+               {
+                       //
+                       // Either left or right is null
+                       // 
+                       if (UnwrapLeft != null && Binary.Right.IsNull) { // TODO: Optimize for EmitBranchable
                                //
-                               // Special case for bool?, the result depends on both null right side and left side value
+                               // left.HasValue == false 
                                //
-                               if ((Oper == Operator.BitwiseAnd || Oper == Operator.BitwiseOr) && NullableInfo.GetUnderlyingType (type).BuiltinType == BuiltinTypeSpec.Type.Bool) {
-                                       return res_expr;
+                               UnwrapLeft.EmitCheck (ec);
+                               if (Binary.Oper == Binary.Operator.Equality) {
+                                       ec.EmitInt (0);
+                                       ec.Emit (OpCodes.Ceq);
                                }
+                               return;
+                       }
 
-                               if ((Oper & (Operator.ArithmeticMask | Operator.ShiftMask | Operator.BitwiseMask)) != 0)
-                                       return LiftedNull.CreateFromExpression (ec, res_expr);
-
+                       if (UnwrapRight != null && Binary.Left.IsNull) {
                                //
-                               // Value types and null comparison
+                               // right.HasValue == false 
                                //
-                               if (left_unwrap == null || (Oper & Operator.RelationalMask) != 0)
-                                       return CreateNullConstant (ec, left_orig);
+                               UnwrapRight.EmitCheck (ec);
+                               if (Binary.Oper == Binary.Operator.Equality) {
+                                       ec.EmitInt (0);
+                                       ec.Emit (OpCodes.Ceq);
+                               }
+                               return;
                        }
 
-                       return res_expr;
-               }
+                       Label dissimilar_label = ec.DefineLabel ();
+                       Label end_label = ec.DefineLabel ();
 
-               protected override Expression ResolveOperatorPredefined (ResolveContext ec, Binary.PredefinedOperator [] operators, bool primitives_only, TypeSpec enum_type)
-               {
-                       Expression e = base.ResolveOperatorPredefined (ec, operators, primitives_only, enum_type);
+                       if (UserOperator != null) {
+                               var left = Left;
 
-                       if (e == this || enum_type != null)
-                               return LiftResult (ec, e);
+                               if (UnwrapLeft != null) {
+                                       UnwrapLeft.EmitCheck (ec);
+                               } else {
+                                       // Keep evaluation order same
+                                       if (!(Left is VariableReference)) {
+                                               Left.Emit (ec);
+                                               var lt = new LocalTemporary (Left.Type);
+                                               lt.Store (ec);
+                                               left = lt;
+                                       }
+                               }
 
-                       //
-                       // 7.9.9 Equality operators and null
-                       //
-                       // The == and != operators permit one operand to be a value of a nullable type and
-                       // the other to be the null literal, even if no predefined or user-defined operator
-                       // (in unlifted or lifted form) exists for the operation.
-                       //
-                       if (e == null && (Oper & Operator.EqualityMask) != 0) {
-                               if ((IsLeftNullLifted && right_unwrap != null) || (IsRightNullLifted && left_unwrap != null))
-                                       return LiftResult (ec, this);
-                       }
+                               if (UnwrapRight != null) {
+                                       UnwrapRight.EmitCheck (ec);
 
-                       return e;
-               }
+                                       if (UnwrapLeft != null) {
+                                               ec.Emit (OpCodes.Bne_Un, dissimilar_label);
 
-               protected override Expression ResolveUserOperator (ResolveContext ec, Expression left, Expression right)
-               {
-                       //
-                       // Try original types first for exact match without unwrapping
-                       //
-                       Expression expr = base.ResolveUserOperator (ec, left_orig, right_orig);
-                       if (expr != null)
-                               return expr;
+                                               Label compare_label = ec.DefineLabel ();
+                                               UnwrapLeft.EmitCheck (ec);
+                                               ec.Emit (OpCodes.Brtrue, compare_label);
 
-                       State orig_state = state;
+                                               if (Binary.Oper == Binary.Operator.Equality)
+                                                       ec.EmitInt (1);
+                                               else
+                                                       ec.EmitInt (0);
 
-                       //
-                       // One side is a nullable type, try to match underlying types
-                       //
-                       if (left_unwrap != null || right_unwrap != null || (state & (State.RightNullLifted | State.LeftNullLifted)) != 0) {
-                               expr = base.ResolveUserOperator (ec, left, right);
-                       }
+                                               ec.Emit (OpCodes.Br, end_label);
 
-                       if (expr == null)
-                               return null;
+                                               ec.MarkLabel (compare_label);
+                                       } else {
+                                               ec.Emit (OpCodes.Brfalse, dissimilar_label);
+                                       }
+                               } else {
+                                       ec.Emit (OpCodes.Brfalse, dissimilar_label);
+                               }
 
-                       //
-                       // Lift the result in the case it can be null and predefined or user operator
-                       // result type is of a value type
-                       //
-                       if (!TypeSpec.IsValueType (expr.Type))
-                               return null;
+                               var args = new Arguments (2);
+                               args.Add (new Argument (left));
+                               args.Add (new Argument (Right));
 
-                       if (state != orig_state)
-                               return expr;
+                               var call = new CallEmitter ();
+                               call.EmitPredefined (ec, UserOperator, args);
+                       } else {
+                               if (ec.HasSet (BuilderContext.Options.AsyncBody) && Binary.Right.ContainsEmitWithAwait ()) {
+                                       Left = Left.EmitToField (ec);
+                                       Right = Right.EmitToField (ec);
+                               }
 
-                       expr = LiftResult (ec, expr);
-                       if (expr is Constant)
-                               return expr;
+                               //
+                               // Emit underlying value comparison first.
+                               //
+                               // For this code: int? a = 1; bool b = a == 1;
+                               //
+                               // We emit something similar to this. Expressions with side effects have local
+                               // variable created by Unwrap expression
+                               //
+                               //      left.GetValueOrDefault ()
+                               //      right
+                               //      bne.un.s   dissimilar_label
+                               //  left.HasValue
+                               //      br.s       end_label
+                               // dissimilar_label:
+                               //      ldc.i4.0
+                               // end_label:
+                               //
 
-                       type = expr.Type;
-                       user_operator = expr;
-                       return this;
+                               Left.Emit (ec);
+                               Right.Emit (ec);
+
+                               ec.Emit (OpCodes.Bne_Un_S, dissimilar_label);
+
+                               //
+                               // Check both left and right expressions for Unwrap call in which
+                               // case we need to run get_HasValue() check because the type is
+                               // nullable and could have null value
+                               //
+                               if (UnwrapLeft != null)
+                                       UnwrapLeft.EmitCheck (ec);
+
+                               if (UnwrapRight != null)
+                                       UnwrapRight.EmitCheck (ec);
+
+                               if (UnwrapLeft != null && UnwrapRight != null) {
+                                       if (Binary.Oper == Binary.Operator.Inequality)
+                                               ec.Emit (OpCodes.Xor);
+                                       else
+                                               ec.Emit (OpCodes.Ceq);
+                               } else {
+                                       if (Binary.Oper == Binary.Operator.Inequality) {
+                                               ec.EmitInt (0);
+                                               ec.Emit (OpCodes.Ceq);
+                                       }
+                               }
+                       }
+
+                       ec.Emit (OpCodes.Br_S, end_label);
+
+                       ec.MarkLabel (dissimilar_label);
+                       if (Binary.Oper == Binary.Operator.Inequality)
+                               ec.EmitInt (1);
+                       else
+                               ec.EmitInt (0);
+
+                       ec.MarkLabel (end_label);
+               }
+
+               public override SLE.Expression MakeExpression (BuilderContext ctx)
+               {
+                       return Binary.MakeExpression (ctx, Left, Right);
                }
        }
 
@@ -1135,7 +1145,7 @@ namespace Mono.CSharp.Nullable
                        }
 
                        TypeSpec rtype = right.Type;
-                       if (!Convert.ImplicitConversionExists (ec, unwrap != null ? unwrap : left, rtype) || right.eclass == ExprClass.MethodGroup)
+                       if (!Convert.ImplicitConversionExists (ec, unwrap ?? left, rtype) || right.eclass == ExprClass.MethodGroup)
                                return null;
 
                        //
@@ -1144,7 +1154,7 @@ namespace Mono.CSharp.Nullable
                        if (left.IsNull)
                                return ReducedExpression.Create (right, this).Resolve (ec);
 
-                       left = Convert.ImplicitConversion (ec, unwrap != null ? unwrap : left, rtype, loc);
+                       left = Convert.ImplicitConversion (ec, unwrap ?? left, rtype, loc);
                        type = rtype;
                        return this;
                }
index 69ae1cf839f2a8da9cd5352f0b2fa11521f27a8f..bcd814149a28d60acc37e3c10fb9927bda02cae7 100644 (file)
@@ -394,7 +394,7 @@ namespace Mono.CSharp {
                                return null;
                        }
 
-                       TypeManager.CheckTypeVariance (parameter_type,
+                       VarianceDecl.CheckTypeVariance (parameter_type,
                                (modFlags & Parameter.Modifier.RefOutMask) != 0 ? Variance.None : Variance.Contravariant,
                                rc);
 
@@ -501,7 +501,7 @@ namespace Mono.CSharp {
                                        } else {
                                                rc.Report.Error (1909, default_expr.Location,
                                                        "The DefaultParameterValue attribute is not applicable on parameters of type `{0}'",
-                                                       default_expr.Type.GetSignatureForError ()); ;
+                                                       default_expr.Type.GetSignatureForError ());
                                        }
 
                                        default_expr = null;
@@ -972,10 +972,18 @@ namespace Mono.CSharp {
                                        if (inflated_types[i] == expr.Type)
                                                continue;
 
-                                       if (expr is DefaultValueExpression)
+                                       var c = expr as Constant;
+                                       if (c != null) {
+                                               //
+                                               // It may fail we are inflating before type validation is done
+                                               //
+                                               c = Constant.ExtractConstantFromValue (inflated_types[i], c.GetValue (), expr.Location);
+                                               if (c == null)
+                                                       expr = new DefaultValueExpression (new TypeExpression (inflated_types[i], expr.Location), expr.Location);
+                                               else
+                                                       expr = c;
+                                       } else if (expr is DefaultValueExpression)
                                                expr = new DefaultValueExpression (new TypeExpression (inflated_types[i], expr.Location), expr.Location);
-                                       else if (expr is Constant)
-                                               expr = Constant.CreateConstantFromValue (inflated_types[i], ((Constant) expr).GetValue (), expr.Location);
 
                                        clone.FixedParameters[i] = new ParameterData (fp.Name, fp.ModFlags, expr);
                                }
@@ -1325,11 +1333,6 @@ namespace Mono.CSharp {
                {
                }
 
-               protected override Expression DoResolve (ResolveContext rc)
-               {
-                       return base.DoResolve (rc);
-               }
-
                public void Resolve (ResolveContext rc, Parameter p)
                {
                        var expr = Resolve (rc);
@@ -1378,6 +1381,8 @@ namespace Mono.CSharp {
                        rc.Report.Error (1750, Location,
                                "Optional parameter expression of type `{0}' cannot be converted to parameter type `{1}'",
                                type.GetSignatureForError (), parameter_type.GetSignatureForError ());
+
+                       this.expr = ErrorExpression.Instance;
                }
                
                public override object Accept (StructuralVisitor visitor)
index af15bf6e1c932ff3be8f3c3fd19f32a3f008bef0..0f863a7bcf1c016f89a4588e49d6f427a5d7c676 100644 (file)
@@ -689,7 +689,7 @@ namespace Mono.CSharp {
                                                if (pending_implementations [i].optional)
                                                        continue;
 
-                                               MethodSpec candidate = null;
+                                               MethodSpec candidate;
                                                if (base_implements_type || BaseImplements (type, mi, out candidate))
                                                        continue;
 
index 327c58c60839155d452ed05d7e118e659f1c8372..eb95d388da7cd20bcb61921abc30df502b5c62a2 100644 (file)
@@ -35,7 +35,7 @@ namespace Mono.CSharp
        // This includes properties, indexers, and events
        public abstract class PropertyBasedMember : InterfaceMemberBase
        {
-               public PropertyBasedMember (TypeDefinition parent, FullNamedExpression type, Modifiers mod, Modifiers allowed_mod, MemberName name, Attributes attrs)
+               protected PropertyBasedMember (TypeDefinition parent, FullNamedExpression type, Modifiers mod, Modifiers allowed_mod, MemberName name, Attributes attrs)
                        : base (parent, type, mod, allowed_mod, name, attrs)
                {
                }
@@ -174,9 +174,9 @@ namespace Mono.CSharp
                        return ps;
                }
 
-               public override List<TypeSpec> ResolveMissingDependencies ()
+               public override List<MissingTypeSpecReference> ResolveMissingDependencies (MemberSpec caller)
                {
-                       return memberType.ResolveMissingDependencies ();
+                       return memberType.ResolveMissingDependencies (this);
                }
        }
 
@@ -253,7 +253,7 @@ namespace Mono.CSharp
                                        return;
                                }
 
-                               base.ApplyAttributeBuilder (a, ctor, cdata, pa);
+                               base.ApplyToExtraTarget (a, ctor, cdata, pa);
                        }
 
                        public override ParametersCompiled ParameterInfo {
@@ -408,7 +408,7 @@ namespace Mono.CSharp
                PropertyMethod get, set, first;
                PropertyBuilder PropertyBuilder;
 
-               public PropertyBase (TypeDefinition parent, FullNamedExpression type, Modifiers mod_flags, Modifiers allowed_mod, MemberName name, Attributes attrs)
+               protected PropertyBase (TypeDefinition parent, FullNamedExpression type, Modifiers mod_flags, Modifiers allowed_mod, MemberName name, Attributes attrs)
                        : base (parent, type, mod_flags, allowed_mod, name, attrs)
                {
                }
@@ -735,6 +735,10 @@ namespace Mono.CSharp
                        }
                }
 
+               static readonly string[] attribute_target_auto = new string[] { "property", "field" };
+
+               Field backing_field;
+
                public Property (TypeDefinition parent, FullNamedExpression type, Modifiers mod,
                                 MemberName name, Attributes attrs)
                        : base (parent, type, mod,
@@ -749,19 +753,28 @@ namespace Mono.CSharp
                {
                        visitor.Visit (this);
                }
-               
+
+               public override void ApplyAttributeBuilder (Attribute a, MethodSpec ctor, byte[] cdata, PredefinedAttributes pa)
+               {
+                       if (a.Target == AttributeTargets.Field) {
+                               backing_field.ApplyAttributeBuilder (a, ctor, cdata, pa);
+                               return;
+                       }
+
+                       base.ApplyAttributeBuilder (a, ctor, cdata, pa);
+               }
 
                void CreateAutomaticProperty ()
                {
                        // Create backing field
-                       Field field = new BackingField (this);
-                       if (!field.Define ())
+                       backing_field = new BackingField (this);
+                       if (!backing_field.Define ())
                                return;
 
-                       Parent.PartialContainer.Members.Add (field);
+                       Parent.PartialContainer.Members.Add (backing_field);
 
-                       FieldExpr fe = new FieldExpr (field, Location);
-                       if ((field.ModFlags & Modifiers.STATIC) == 0)
+                       FieldExpr fe = new FieldExpr (backing_field, Location);
+                       if ((backing_field.ModFlags & Modifiers.STATIC) == 0)
                                fe.InstanceExpression = new CompilerGeneratedThis (Parent.CurrentType, Location);
 
                        //
@@ -826,6 +839,13 @@ namespace Mono.CSharp
 
                        base.Emit ();
                }
+
+               public override string[] ValidAttributeTargets {
+                       get {
+                               return Get != null && ((Get.ModFlags & Modifiers.COMPILER_GENERATED) != 0) ?
+                                       attribute_target_auto : base.ValidAttributeTargets;
+                       }
+               }
        }
 
        /// <summary>
@@ -1171,7 +1191,7 @@ namespace Mono.CSharp
                                        return;
                                }
 
-                               base.ApplyAttributeBuilder (a, ctor, cdata, pa);
+                               base.ApplyToExtraTarget (a, ctor, cdata, pa);
                        }
 
                        public override AttributeTargets AttributeTargets {
@@ -1427,9 +1447,9 @@ namespace Mono.CSharp
                        return es;
                }
 
-               public override List<TypeSpec> ResolveMissingDependencies ()
+               public override List<MissingTypeSpecReference> ResolveMissingDependencies (MemberSpec caller)
                {
-                       return MemberType.ResolveMissingDependencies ();
+                       return MemberType.ResolveMissingDependencies (this);
                }
        }
  
@@ -1701,16 +1721,17 @@ namespace Mono.CSharp
                        return spec;
                }
 
-               public override List<TypeSpec> ResolveMissingDependencies ()
+               public override List<MissingTypeSpecReference> ResolveMissingDependencies (MemberSpec caller)
                {
-                       var missing = base.ResolveMissingDependencies ();
+                       var missing = base.ResolveMissingDependencies (caller);
+
                        foreach (var pt in parameters.Types) {
-                               var m = pt.GetMissingDependencies ();
+                               var m = pt.GetMissingDependencies (caller);
                                if (m == null)
                                        continue;
 
                                if (missing == null)
-                                       missing = new List<TypeSpec> ();
+                                       missing = new List<MissingTypeSpecReference> ();
 
                                missing.AddRange (m);
                        }
index f49a2980d7aa08a37ad608d4a1e958b934a35208..009007b0d529ca45d1cc0de85de61a5cb4f1dab8 100644 (file)
@@ -954,7 +954,7 @@ namespace Mono.CSharp {
                        if (timers == null)
                                return;
 
-                       Dictionary<TimerType, string> timer_names = new Dictionary<TimerType,string> () {
+                       Dictionary<TimerType, string> timer_names = new Dictionary<TimerType,string> {
                                { TimerType.ParseTotal, "Parsing source files" },
                                { TimerType.AssemblyBuilderSetup, "Assembly builder setup" },
                                { TimerType.CreateTypeTotal, "Compiled types created" },
@@ -1053,7 +1053,7 @@ namespace Mono.CSharp {
 
                        public override bool IsEnabled (int code, bool previous)
                        {
-                               return this.code == code ? false : previous;
+                               return this.code != code && previous;
                        }
                }
 
@@ -1079,7 +1079,7 @@ namespace Mono.CSharp {
 
                        public override bool IsEnabled(int code, bool previous)
                        {
-                               return this.code == code ? true : previous;
+                               return this.code == code || previous;
                        }
                }
 
index fa15cad9be6fad207d5bc87ea52262bbc92dc2fe..eaac5974126955f51533576127d8b57967e548bc 100644 (file)
@@ -301,8 +301,8 @@ namespace Mono.CSharp {
                        UnknownOption
                }
 
-               static readonly char[] argument_value_separator = new char[] { ';', ',' };
-               static readonly char[] numeric_value_separator = new char[] { ';', ',', ' ' };
+               static readonly char[] argument_value_separator = { ';', ',' };
+               static readonly char[] numeric_value_separator = { ';', ',', ' ' };
 
                readonly TextWriter output;
                readonly Report report;
@@ -469,7 +469,7 @@ namespace Mono.CSharp {
                                return;
                        }
 
-                       string[] files = null;
+                       string[] files;
                        try {
                                files = Directory.GetFiles (path, pattern);
                        } catch (System.IO.DirectoryNotFoundException) {
@@ -576,7 +576,7 @@ namespace Mono.CSharp {
                public bool ProcessWarningsList (string text, Action<int> action)
                {
                        bool valid = true;
-                       foreach (string wid in text.Split (numeric_value_separator)) {
+                       foreach (string wid in text.Split (numeric_value_separator, StringSplitOptions.RemoveEmptyEntries)) {
                                int id;
                                if (!int.TryParse (wid, NumberStyles.AllowLeadingWhite, CultureInfo.InvariantCulture, out id)) {
                                        report.Error (1904, "`{0}' is not a valid warning number", wid);
@@ -975,7 +975,7 @@ namespace Mono.CSharp {
                                        settings.WarningsAreErrors = true;
                                        parser_settings.WarningsAreErrors = true;
                                } else {
-                                       if (!ProcessWarningsList (value, v => settings.AddWarningAsError (v)))
+                                       if (!ProcessWarningsList (value, settings.AddWarningAsError))
                                                return ParseResult.Error;
                                }
                                return ParseResult.Success;
@@ -984,7 +984,7 @@ namespace Mono.CSharp {
                                if (value.Length == 0) {
                                        settings.WarningsAreErrors = false;
                                } else {
-                                       if (!ProcessWarningsList (value, v => settings.AddWarningOnly (v)))
+                                       if (!ProcessWarningsList (value, settings.AddWarningOnly))
                                                return ParseResult.Error;
                                }
                                return ParseResult.Success;
@@ -1005,7 +1005,7 @@ namespace Mono.CSharp {
                                        return ParseResult.Error;
                                }
 
-                               if (!ProcessWarningsList (value, v => settings.SetIgnoreWarning (v)))
+                               if (!ProcessWarningsList (value, settings.SetIgnoreWarning))
                                        return ParseResult.Error;
 
                                return ParseResult.Success;
index cb2306b3f493cbd75d37b24c6b8fb81f0ab6bdc7..b9bb8302eaca16d14aba215ba3268124e1577bb6 100644 (file)
@@ -28,7 +28,7 @@ namespace Mono.CSharp {
                /// <summary>
                ///   Resolves the statement, true means that all sub-statements
                ///   did resolve ok.
-               //  </summary>
+               ///  </summary>
                public virtual bool Resolve (BlockContext bc)
                {
                        return true;
@@ -51,12 +51,17 @@ namespace Mono.CSharp {
 
                        bool unreachable = false;
                        if (warn && !ec.UnreachableReported) {
+
+                               // TODO: This is wrong, need to form of flow-analysis branch specific flag
+                               // or multiple unrelared unreachable code won't be reported
+                               // if (false) { // ok } if (false) { // not reported }
                                ec.UnreachableReported = true;
                                unreachable = true;
                                ec.Report.Warning (162, 2, loc, "Unreachable code detected");
                        }
 
                        ec.StartFlowBranching (FlowBranching.BranchingType.Block, loc);
+                       ec.CurrentBranching.CurrentUsageVector.Goto ();
                        bool ok = Resolve (ec);
                        ec.KillFlowBranching ();
 
@@ -186,7 +191,6 @@ namespace Mono.CSharp {
                                //
                                if (expr is Constant) {
                                        bool take = !((Constant) expr).IsDefaultValue;
-
                                        if (take) {
                                                if (!TrueStatement.Resolve (ec))
                                                        return false;
@@ -411,8 +415,9 @@ namespace Mono.CSharp {
                                                return false;
                                        empty = true;
                                        return true;
-                               } else
-                                       infinite = true;
+                               }
+
+                               infinite = true;
                        }
 
                        ec.StartFlowBranching (FlowBranching.BranchingType.Loop, loc);
@@ -547,8 +552,9 @@ namespace Mono.CSharp {
                                                        return false;
                                                empty = true;
                                                return true;
-                                       } else
-                                               infinite = true;
+                                       }
+
+                                       infinite = true;
                                }
                        } else
                                infinite = true;
@@ -701,7 +707,7 @@ namespace Mono.CSharp {
 
        public class StatementErrorExpression : Statement
        {
-               readonly Expression expr;
+               Expression expr;
 
                public StatementErrorExpression (Expression expr)
                {
@@ -728,7 +734,9 @@ namespace Mono.CSharp {
 
                protected override void CloneTo (CloneContext clonectx, Statement target)
                {
-                       throw new NotImplementedException ();
+                       var t = (StatementErrorExpression) target;
+
+                       t.expr = expr.Clone (clonectx);
                }
                
                public override object Accept (StructuralVisitor visitor)
@@ -746,7 +754,7 @@ namespace Mono.CSharp {
 
                public StatementList (Statement first, Statement second)
                {
-                       statements = new List<Statement> () { first, second };
+                       statements = new List<Statement> { first, second };
                }
 
                #region Properties
@@ -894,7 +902,7 @@ namespace Mono.CSharp {
                                                var async_type = storey.ReturnType;
 
                                                if (async_type == null && async_block.ReturnTypeInference != null) {
-                                                       async_block.ReturnTypeInference.AddCommonTypeBound (expr.Type);
+                                                       async_block.ReturnTypeInference.AddCommonTypeBoundAsync (expr.Type);
                                                        return true;
                                                }
 
@@ -1197,10 +1205,7 @@ namespace Mono.CSharp {
                                return false;
                        }
 
-                       if (ec.Switch.DefaultLabel == null) {
-                               FlowBranchingBlock.Error_UnknownLabel (loc, "default", ec.Report);
-                               return false;
-                       }
+                       ec.Switch.RegisterGotoCase (null, null);
 
                        return true;
                }
@@ -1221,7 +1226,6 @@ namespace Mono.CSharp {
        /// </summary>
        public class GotoCase : Statement {
                Expression expr;
-               SwitchLabel sl;
                
                public GotoCase (Expression e, Location l)
                {
@@ -1234,6 +1238,8 @@ namespace Mono.CSharp {
                                return this.expr;
                        }
                }
+
+               public SwitchLabel Label { get; set; }
                
                public override bool Resolve (BlockContext ec)
                {
@@ -1244,13 +1250,8 @@ namespace Mono.CSharp {
 
                        ec.CurrentBranching.CurrentUsageVector.Goto ();
 
-                       expr = expr.Resolve (ec);
-                       if (expr == null)
-                               return false;
-
-                       Constant c = expr as Constant;
+                       Constant c = expr.ResolveLabelConstant (ec);
                        if (c == null) {
-                               ec.Report.Error (150, expr.Location, "A constant value is expected");
                                return false;
                        }
 
@@ -1272,13 +1273,13 @@ namespace Mono.CSharp {
 
                        }
 
-                       sl = ec.Switch.ResolveGotoCase (ec, res);
+                       ec.Switch.RegisterGotoCase (this, res);
                        return true;
                }
 
                protected override void DoEmit (EmitContext ec)
                {
-                       ec.Emit (OpCodes.Br, sl.GetILLabel (ec));
+                       ec.Emit (OpCodes.Br, Label.GetILLabel (ec));
                }
 
                protected override void CloneTo (CloneContext clonectx, Statement t)
@@ -1627,7 +1628,7 @@ namespace Mono.CSharp {
                        if (eval_global) {
                                CreateEvaluatorVariable (bc, li);
                        } else if (type != InternalType.ErrorType) {
-                               li.PrepareForFlowAnalysis (bc);
+                               li.PrepareAssignmentAnalysis (bc);
                        }
 
                        if (initializer != null) {
@@ -1641,7 +1642,7 @@ namespace Mono.CSharp {
                                        if (eval_global) {
                                                CreateEvaluatorVariable (bc, d.Variable);
                                        } else if (type != InternalType.ErrorType) {
-                                               d.Variable.PrepareForFlowAnalysis (bc);
+                                               d.Variable.PrepareAssignmentAnalysis (bc);
                                        }
 
                                        if (d.Initializer != null && resolveDeclaratorInitializers) {
@@ -2019,16 +2020,15 @@ namespace Mono.CSharp {
                        return !ec.DoFlowAnalysis || ec.CurrentBranching.IsAssigned (VariableInfo);
                }
 
-               public void PrepareForFlowAnalysis (BlockContext bc)
+               public void PrepareAssignmentAnalysis (BlockContext bc)
                {
                        //
-                       // No need for definitely assigned check for these guys
+                       // No need to run assignment analysis for these guys
                        //
                        if ((flags & (Flags.Constant | Flags.ReadonlyMask | Flags.CompilerGenerated)) != 0)
                                return;
 
-                       VariableInfo = new VariableInfo (this, bc.FlowOffset);
-                       bc.FlowOffset += VariableInfo.Length;
+                       VariableInfo = VariableInfo.Create (bc, this);
                }
 
                //
@@ -2249,6 +2249,11 @@ namespace Mono.CSharp {
                                scope_initializers.Add (s);
                        }
                }
+
+               public void InsertStatement (int index, Statement s)
+               {
+                       statements.Insert (index, s);
+               }
                
                public void AddStatement (Statement s)
                {
@@ -2580,7 +2585,8 @@ namespace Mono.CSharp {
                                        }
 
                                        if (b.Explicit == b.Explicit.ParametersBlock && b.Explicit.ParametersBlock.StateMachine != null) {
-                                               storey.HoistedThis = b.Explicit.ParametersBlock.StateMachine.HoistedThis;
+                                               if (storey.HoistedThis == null)
+                                                       storey.HoistedThis = b.Explicit.ParametersBlock.StateMachine.HoistedThis;
 
                                                if (storey.HoistedThis != null)
                                                        break;
@@ -2605,11 +2611,33 @@ namespace Mono.CSharp {
                                                        continue;
 
                                                if (storey.HoistedThis == null) {
-                                                       storey.AddCapturedThisField (ec);
+                                                       storey.AddCapturedThisField (ec, null);
                                                }
 
                                                for (ExplicitBlock b = ref_block; b.AnonymousMethodStorey != storey; b = b.Parent.Explicit) {
+                                                       ParametersBlock pb;
+
                                                        if (b.AnonymousMethodStorey != null) {
+                                                               //
+                                                               // Don't add storey cross reference for `this' when the storey ends up not
+                                                               // beeing attached to any parent
+                                                               //
+                                                               if (b.ParametersBlock.StateMachine == null) {
+                                                                       AnonymousMethodStorey s = null;
+                                                                       for (Block ab = b.AnonymousMethodStorey.OriginalSourceBlock.Parent; ab != null; ab = ab.Parent) {
+                                                                               s = ab.Explicit.AnonymousMethodStorey;
+                                                                               if (s != null)
+                                                                                       break;
+                                                                       }
+
+                                                                       // Needs to be in sync with AnonymousMethodBody::DoCreateMethodHost
+                                                                       if (s == null) {
+                                                                               var parent = storey == null || storey.Kind == MemberKind.Struct ? null : storey;
+                                                                               b.AnonymousMethodStorey.AddCapturedThisField (ec, parent);
+                                                                               break;
+                                                                       }
+                                                               }
+
                                                                b.AnonymousMethodStorey.AddParentStoreyReference (ec, storey);
                                                                b.AnonymousMethodStorey.HoistedThis = storey.HoistedThis;
 
@@ -2622,11 +2650,29 @@ namespace Mono.CSharp {
                                                                b = b.ParametersBlock;
                                                        }
 
-                                                       var pb = b as ParametersBlock;
+                                                       pb = b as ParametersBlock;
                                                        if (pb != null && pb.StateMachine != null) {
                                                                if (pb.StateMachine == storey)
                                                                        break;
 
+                                                               //
+                                                               // If we are state machine with no parent. We can hook into parent without additional
+                                                               // reference and capture this directly
+                                                               //
+                                                               ExplicitBlock parent_storey_block = pb;
+                                                               while (parent_storey_block.Parent != null) {
+                                                                       parent_storey_block = parent_storey_block.Parent.Explicit;
+                                                                       if (parent_storey_block.AnonymousMethodStorey != null) {
+                                                                               break;
+                                                                       }
+                                                               }
+
+                                                               if (parent_storey_block.AnonymousMethodStorey == null) {
+                                                                       pb.StateMachine.AddCapturedThisField (ec, null);
+                                                                       b.HasCapturedThis = true;
+                                                                       continue;
+                                                               }
+
                                                                pb.StateMachine.AddParentStoreyReference (ec, storey);
                                                        }
                                                        
@@ -2967,7 +3013,7 @@ namespace Mono.CSharp {
                public override Expression CreateExpressionTree (ResolveContext ec)
                {
                        if (statements.Count == 1) {
-                               Expression expr = ((Statement) statements[0]).CreateExpressionTree (ec);
+                               Expression expr = statements[0].CreateExpressionTree (ec);
                                if (scope_initializers != null)
                                        expr = new BlockScopeExpression (expr, this);
 
@@ -3047,7 +3093,7 @@ namespace Mono.CSharp {
                                flags |= Flags.IsExpressionTree;
 
                        try {
-                               ResolveMeta (rc);
+                               PrepareAssignmentAnalysis (rc);
 
                                using (rc.With (ResolveContext.Options.DoFlowAnalysis, true)) {
                                        FlowBranchingToplevel top_level = rc.StartFlowBranching (this, parent);
@@ -3058,7 +3104,7 @@ namespace Mono.CSharp {
                                        unreachable = top_level.End ();
                                }
                        } catch (Exception e) {
-                               if (e is CompletionResult || rc.Report.IsDisabled || e is FatalException)
+                               if (e is CompletionResult || rc.Report.IsDisabled || e is FatalException || rc.Report.Printer is NullReportPrinter)
                                        throw;
 
                                if (rc.CurrentBlock != null) {
@@ -3103,19 +3149,15 @@ namespace Mono.CSharp {
                        return true;
                }
 
-               void ResolveMeta (BlockContext ec)
+               void PrepareAssignmentAnalysis (BlockContext bc)
                {
-                       int orig_count = parameters.Count;
-
-                       for (int i = 0; i < orig_count; ++i) {
-                               Parameter.Modifier mod = parameters.FixedParameters[i].ModFlags;
+                       for (int i = 0; i < parameters.Count; ++i) {
+                               var par = parameters.FixedParameters[i];
 
-                               if ((mod & Parameter.Modifier.OUT) == 0)
+                               if ((par.ModFlags & Parameter.Modifier.OUT) == 0)
                                        continue;
 
-                               VariableInfo vi = new VariableInfo (parameters, i, ec.FlowOffset);
-                               parameter_info[i].VariableInfo = vi;
-                               ec.FlowOffset += vi.Length;
+                               parameter_info [i].VariableInfo = VariableInfo.Create (bc, (Parameter) par);
                        }
                }
 
@@ -3406,8 +3448,23 @@ namespace Mono.CSharp {
                        int count = parameters.Count;
                        Arguments args = new Arguments (count);
                        for (int i = 0; i < count; ++i) {
-                               var arg_expr = GetParameterReference (i, parameter_info[i].Location);
-                               args.Add (new Argument (arg_expr));
+                               var pi = parameter_info[i];
+                               var arg_expr = GetParameterReference (i, pi.Location);
+
+                               Argument.AType atype_modifier;
+                               switch (pi.Parameter.ParameterModifier & Parameter.Modifier.RefOutMask) {
+                               case Parameter.Modifier.REF:
+                                       atype_modifier = Argument.AType.Ref;
+                                       break;
+                               case Parameter.Modifier.OUT:
+                                       atype_modifier = Argument.AType.Out;
+                                       break;
+                               default:
+                                       atype_modifier = 0;
+                                       break;
+                               }
+
+                               args.Add (new Argument (arg_expr, atype_modifier));
                        }
 
                        return args;
@@ -3514,7 +3571,7 @@ namespace Mono.CSharp {
 
                        this_variable = new LocalVariable (this, "this", LocalVariable.Flags.IsThis | LocalVariable.Flags.Used, StartLocation);
                        this_variable.Type = bc.CurrentType;
-                       this_variable.PrepareForFlowAnalysis (bc);
+                       this_variable.PrepareAssignmentAnalysis (bc);
                }
 
                public bool IsThisAssigned (BlockContext ec)
@@ -3628,6 +3685,9 @@ namespace Mono.CSharp {
 
                public override bool Resolve (BlockContext bc)
                {
+                       if (ResolveAndReduce (bc))
+                               bc.Switch.RegisterLabel (bc, this);
+
                        bc.CurrentBranching.CurrentUsageVector.ResetBarrier ();
 
                        return base.Resolve (bc);
@@ -3637,29 +3697,25 @@ namespace Mono.CSharp {
                // Resolves the expression, reduces it to a literal if possible
                // and then converts it to the requested type.
                //
-               public bool ResolveAndReduce (ResolveContext ec, TypeSpec required_type, bool allow_nullable)
-               {       
-                       Expression e = label.Resolve (ec);
-
-                       if (e == null)
-                               return false;
+               bool ResolveAndReduce (ResolveContext rc)
+               {
+                       if (IsDefault)
+                               return true;
 
-                       Constant c = e as Constant;
-                       if (c == null){
-                               ec.Report.Error (150, loc, "A constant value is expected");
+                       var c = label.ResolveLabelConstant (rc);
+                       if (c == null)
                                return false;
-                       }
 
-                       if (allow_nullable && c is NullLiteral) {
+                       if (rc.Switch.IsNullable && c is NullLiteral) {
                                converted = c;
                                return true;
                        }
 
-                       converted = c.ImplicitConversionRequired (ec, required_type, loc);
+                       converted = c.ImplicitConversionRequired (rc, rc.Switch.SwitchType);
                        return converted != null;
                }
 
-               public void Error_AlreadyOccurs (ResolveContext ec, TypeSpec switch_type, SwitchLabel collision_with)
+               public void Error_AlreadyOccurs (ResolveContext ec, SwitchLabel collision_with)
                {
                        string label;
                        if (converted == null)
@@ -3765,6 +3821,8 @@ namespace Mono.CSharp {
                Dictionary<string, SwitchLabel> string_labels;
                List<SwitchLabel> case_labels;
 
+               List<Tuple<GotoCase, Constant>> goto_cases;
+
                /// <summary>
                ///   The governing switch type
                /// </summary>
@@ -3884,88 +3942,40 @@ namespace Mono.CSharp {
                        };
                }
 
-               //
-               // Performs the basic sanity checks on the switch statement
-               // (looks for duplicate keys and non-constant expressions).
-               //
-               // It also returns a hashtable with the keys that we will later
-               // use to compute the switch tables
-               //
-               bool ResolveLabels (ResolveContext ec, Constant value)
+               public void RegisterLabel (ResolveContext rc, SwitchLabel sl)
                {
-                       bool error = false;
-                       if (SwitchType.BuiltinType == BuiltinTypeSpec.Type.String) {
-                               string_labels = new Dictionary<string, SwitchLabel> ();
-                       } else {
-                               labels = new Dictionary<long, SwitchLabel> ();
-                       }
-
-                       case_labels = new List<SwitchLabel> ();
-                       int default_label_index = -1;
-                       bool constant_label_found = false;
+                       case_labels.Add (sl);
 
-                       for (int i = 0; i < block.Statements.Count; ++i) {
-                               var s = block.Statements[i];
-
-                               var sl = s as SwitchLabel;
-                               if (sl == null) {
-                                       continue;
-                               }
-
-                               case_labels.Add (sl);
-
-                               if (sl.IsDefault) {
-                                       if (case_default != null) {
-                                               sl.Error_AlreadyOccurs (ec, SwitchType, case_default);
-                                               error = true;
-                                       }
-
-                                       default_label_index = i;
+                       if (sl.IsDefault) {
+                               if (case_default != null) {
+                                       sl.Error_AlreadyOccurs (rc, case_default);
+                               } else {
                                        case_default = sl;
-                                       continue;
                                }
 
-                               if (!sl.ResolveAndReduce (ec, SwitchType, IsNullable)) {
-                                       error = true;
-                                       continue;
-                               }
+                               return;
+                       }
 
-                               try {
-                                       if (string_labels != null) {
-                                               string string_value = sl.Converted.GetValue () as string;
-                                               if (string_value == null)
-                                                       case_null = sl;
-                                               else
-                                                       string_labels.Add (string_value, sl);
+                       try {
+                               if (string_labels != null) {
+                                       string string_value = sl.Converted.GetValue () as string;
+                                       if (string_value == null)
+                                               case_null = sl;
+                                       else
+                                               string_labels.Add (string_value, sl);
+                               } else {
+                                       if (sl.Converted is NullLiteral) {
+                                               case_null = sl;
                                        } else {
-                                               if (sl.Converted is NullLiteral) {
-                                                       case_null = sl;
-                                               } else {
-                                                       labels.Add (sl.Converted.GetValueAsLong (), sl);
-                                               }
+                                               labels.Add (sl.Converted.GetValueAsLong (), sl);
                                        }
-                               } catch (ArgumentException) {
-                                       if (string_labels != null)
-                                               sl.Error_AlreadyOccurs (ec, SwitchType, string_labels[(string) sl.Converted.GetValue ()]);
-                                       else
-                                               sl.Error_AlreadyOccurs (ec, SwitchType, labels[sl.Converted.GetValueAsLong ()]);
-
-                                       error = true;
-                               }
-
-                               if (value != null) {
-                                       var constant_label = constant_label_found ? null : FindLabel (value);
-                                       if (constant_label == null || constant_label != sl)
-                                               block.Statements[i] = new EmptyStatement (s.loc);
-                                       else
-                                               constant_label_found = true;
                                }
+                       } catch (ArgumentException) {
+                               if (string_labels != null)
+                                       sl.Error_AlreadyOccurs (rc, string_labels[(string) sl.Converted.GetValue ()]);
+                               else
+                                       sl.Error_AlreadyOccurs (rc, labels[sl.Converted.GetValueAsLong ()]);
                        }
-
-                       if (value != null && constant_label_found && default_label_index >= 0)
-                               block.Statements[default_label_index] = new EmptyStatement (case_default.loc);
-
-                       return !error;
                }
                
                //
@@ -4158,24 +4168,29 @@ namespace Mono.CSharp {
                        if (block.Statements.Count == 0)
                                return true;
 
-                       var constant = new_expr as Constant;
+                       if (SwitchType.BuiltinType == BuiltinTypeSpec.Type.String) {
+                               string_labels = new Dictionary<string, SwitchLabel> ();
+                       } else {
+                               labels = new Dictionary<long, SwitchLabel> ();
+                       }
 
-                       if (!ResolveLabels (ec, constant))
-                               return false;
+                       case_labels = new List<SwitchLabel> ();
+
+                       var constant = new_expr as Constant;
 
                        //
                        // Don't need extra variable for constant switch or switch with
                        // only default case
                        //
-                       if (constant == null && (case_labels.Count - (case_default != null ? 1 : 0)) != 0) {
+                       if (constant == null) {
                                //
                                // Store switch expression for comparison purposes
                                //
                                value = new_expr as VariableReference;
-                               if (value == null) {
-                                       // Create temporary variable inside switch scope
+                               if (value == null && !HasOnlyDefaultSection ()) {
                                        var current_block = ec.CurrentBlock;
                                        ec.CurrentBlock = Block;
+                                       // Create temporary variable inside switch scope
                                        value = TemporaryVariableReference.Create (SwitchType, ec.CurrentBlock, loc);
                                        value.Resolve (ec);
                                        ec.CurrentBlock = current_block;
@@ -4193,11 +4208,42 @@ namespace Mono.CSharp {
                        var ok = block.Resolve (ec);
 
                        if (case_default == null)
-                               ec.CurrentBranching.CurrentUsageVector.ResetBarrier ();
+                               ec.CurrentBranching.CreateSibling (null, FlowBranching.SiblingType.SwitchSection);
+
+                       if (ec.IsUnreachable)
+                               ec.KillFlowBranching ();
+                       else
+                               ec.EndFlowBranching ();
 
-                       ec.EndFlowBranching ();
                        ec.Switch = old_switch;
 
+                       //
+                       // Check if all goto cases are valid. Needs to be done after switch
+                       // is resolved becuase goto can jump forward in the scope.
+                       //
+                       if (goto_cases != null) {
+                               foreach (var gc in goto_cases) {
+                                       if (gc.Item1 == null) {
+                                               if (DefaultLabel == null) {
+                                                       FlowBranchingBlock.Error_UnknownLabel (loc, "default", ec.Report);
+                                               }
+
+                                               continue;
+                                       }
+
+                                       var sl = FindLabel (gc.Item2);
+                                       if (sl == null) {
+                                               FlowBranchingBlock.Error_UnknownLabel (loc, "case " + gc.Item2.GetValueAsLiteral (), ec.Report);
+                                       } else {
+                                               gc.Item1.Label = sl;
+                                       }
+                               }
+                       }
+
+                       if (constant != null) {
+                               ResolveUnreachableSections (ec, constant);
+                       }
+
                        if (!ok)
                                return false;
 
@@ -4206,23 +4252,34 @@ namespace Mono.CSharp {
                        }
 
                        //
-                       // Needed to emit anonymous storey initialization before
+                       // Anonymous storey initialization has to happen before
                        // any generated switch dispatch
                        //
-                       block.AddScopeStatement (new DispatchStatement (this));
+                       block.InsertStatement (0, new DispatchStatement (this));
 
                        return true;
                }
 
-               public SwitchLabel ResolveGotoCase (ResolveContext rc, Constant value)
+               bool HasOnlyDefaultSection ()
                {
-                       var sl = FindLabel (value);
+                       for (int i = 0; i < block.Statements.Count; ++i) {
+                               var s = block.Statements[i] as SwitchLabel;
+
+                               if (s == null || s.IsDefault)
+                                       continue;
 
-                       if (sl == null) {
-                               FlowBranchingBlock.Error_UnknownLabel (loc, "case " + value.GetValueAsLiteral (), rc.Report);
+                               return false;
                        }
 
-                       return sl;
+                       return true;
+               }
+
+               public void RegisterGotoCase (GotoCase gotoCase, Constant value)
+               {
+                       if (goto_cases == null)
+                               goto_cases = new List<Tuple<GotoCase, Constant>> ();
+
+                       goto_cases.Add (Tuple.Create (gotoCase, value));
                }
 
                //
@@ -4283,6 +4340,40 @@ namespace Mono.CSharp {
                        string_dictionary = new SimpleAssign (switch_cache_field, initializer.Resolve (ec));
                }
 
+               void ResolveUnreachableSections (BlockContext bc, Constant value)
+               {
+                       var constant_label = FindLabel (value) ?? case_default;
+
+                       bool found = false;
+                       bool unreachable_reported = false;
+                       for (int i = 0; i < block.Statements.Count; ++i) {
+                               var s = block.Statements[i];
+
+                               if (s is SwitchLabel) {
+                                       if (unreachable_reported) {
+                                               found = unreachable_reported = false;
+                                       }
+
+                                       found |= s == constant_label;
+                                       continue;
+                               }
+
+                               if (found) {
+                                       unreachable_reported = true;
+                                       continue;
+                               }
+
+                               if (!unreachable_reported) {
+                                       unreachable_reported = true;
+                                       if (!bc.IsUnreachable) {
+                                               bc.Report.Warning (162, 2, s.loc, "Unreachable code detected");
+                                       }
+                               }
+
+                               block.Statements[i] = new EmptyStatement (s.loc);
+                       }
+               }
+
                void DoEmitStringSwitch (EmitContext ec)
                {
                        Label l_initialized = ec.DefineLabel ();
@@ -4393,12 +4484,6 @@ namespace Mono.CSharp {
                                return;
                        }
 
-                       //
-                       // Mark sequence point explicitly to switch
-                       //
-                       ec.Mark (block.StartLocation);
-                       block.IsCompilerGenerated = true;
-
                        if (string_dictionary != null) {
                                DoEmitStringSwitch (ec);
                        } else if (case_labels.Count < 4 || string_labels != null) {
@@ -4434,6 +4519,14 @@ namespace Mono.CSharp {
                                } else if (new_expr != value) {
                                        value.EmitAssign (ec, new_expr, false, false);
                                }
+
+
+                               //
+                               // Next statement is compiler generated we don't need extra
+                               // nop when we can use the statement for sequence point
+                               //
+                               ec.Mark (block.StartLocation);
+                               block.IsCompilerGenerated = true;
                        }
 
                        block.Emit (ec);
@@ -5033,7 +5126,7 @@ namespace Mono.CSharp {
                {
                        LocalVariable pinned_string;
 
-                       public StringEmitter (Expression expr, LocalVariable li, Location loc)
+                       public StringEmitter (Expression expr, LocalVariable li)
                                : base (expr, li)
                        {
                        }
@@ -5156,7 +5249,7 @@ namespace Mono.CSharp {
                                // Case 2: string
                                //
                                if (initializer.Type.BuiltinType == BuiltinTypeSpec.Type.String) {
-                                       return new StringEmitter (initializer, li, loc).Resolve (bc);
+                                       return new StringEmitter (initializer, li).Resolve (bc);
                                }
 
                                // Case 3: fixed buffer
@@ -5364,7 +5457,7 @@ namespace Mono.CSharp {
                                                ec.Report.Error (155, loc, "The type caught or thrown must be derived from System.Exception");
                                        } else if (li != null) {
                                                li.Type = type;
-                                               li.PrepareForFlowAnalysis (ec);
+                                               li.PrepareAssignmentAnalysis (ec);
 
                                                // source variable is at the top of the stack
                                                Expression source = new EmptyExpression (li.Type);
@@ -5448,7 +5541,7 @@ namespace Mono.CSharp {
                {
                        TryFinally target = (TryFinally) t;
 
-                       target.stmt = (Statement) stmt.Clone (clonectx);
+                       target.stmt = stmt.Clone (clonectx);
                        if (fini != null)
                                target.fini = clonectx.LookupBlock (fini);
                }
@@ -6399,14 +6492,20 @@ namespace Mono.CSharp {
 
                protected override void DoEmit (EmitContext ec)
                {
-                       variable.CreateBuilder (ec);
-
                        Label old_begin = ec.LoopBegin, old_end = ec.LoopEnd;
                        ec.LoopBegin = ec.DefineLabel ();
                        ec.LoopEnd = ec.DefineLabel ();
 
+                       if (!(statement is Block))
+                               ec.BeginCompilerScope ();
+
+                       variable.CreateBuilder (ec);
+
                        statement.Emit (ec);
 
+                       if (!(statement is Block))
+                               ec.EndScope ();
+
                        ec.LoopBegin = old_begin;
                        ec.LoopEnd = old_end;
                }
index d4e018c32594ad118a57c80cd32f675943c470d3..8cbbc14680557a301ba3dcb59834d1b2f8c09012 100644 (file)
@@ -322,4 +322,38 @@ namespace Mono.CSharp {
                        }
                }
        }
+
+       struct TypeNameParser
+       {
+               internal static string Escape(string name)
+               {
+                       if (name == null) {
+                               return null;
+                       }
+                       StringBuilder sb = null;
+                       for (int pos = 0; pos < name.Length; pos++) {
+                               char c = name[pos];
+                               switch (c) {
+                                       case '\\':
+                                       case '+':
+                                       case ',':
+                                       case '[':
+                                       case ']':
+                                       case '*':
+                                       case '&':
+                                               if (sb == null) {
+                                                       sb = new StringBuilder(name, 0, pos, name.Length + 3);
+                                               }
+                                               sb.Append("\\").Append(c);
+                                               break;
+                                       default:
+                                               if (sb != null) {
+                                                       sb.Append(c);
+                                               }
+                                               break;
+                               }
+                       }
+                       return sb != null ? sb.ToString() : name;
+               }
+       }
 }
index cefb322eeb540cbdc3d483c22ebd8ccc1a0b32b6..870b7be2a754773b25c721b29e0fb28b38d4315c 100644 (file)
@@ -186,7 +186,9 @@ namespace Mono.CSharp
                public readonly PredefinedType IsVolatile;
                public readonly PredefinedType IEnumeratorGeneric;
                public readonly PredefinedType IListGeneric;
+               public readonly PredefinedType IReadOnlyListGeneric;
                public readonly PredefinedType ICollectionGeneric;
+               public readonly PredefinedType IReadOnlyCollectionGeneric;
                public readonly PredefinedType IEnumerableGeneric;
                public readonly PredefinedType Nullable;
                public readonly PredefinedType Activator;
@@ -246,7 +248,9 @@ namespace Mono.CSharp
                        IsVolatile = new PredefinedType (module, MemberKind.Class, "System.Runtime.CompilerServices", "IsVolatile");
                        IEnumeratorGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IEnumerator", 1);
                        IListGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IList", 1);
+                       IReadOnlyListGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IReadOnlyList", 1);
                        ICollectionGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "ICollection", 1);
+                       IReadOnlyCollectionGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IReadOnlyCollection", 1);
                        IEnumerableGeneric = new PredefinedType (module, MemberKind.Interface, "System.Collections.Generic", "IEnumerable", 1);
                        Nullable = new PredefinedType (module, MemberKind.Struct, "System", "Nullable", 1);
                        Activator = new PredefinedType (module, MemberKind.Class, "System", "Activator");
@@ -294,13 +298,19 @@ namespace Mono.CSharp
                                ArgIterator.TypeSpec.IsSpecialRuntimeType = true;
 
                        if (IEnumerableGeneric.Define ())
-                               IEnumerableGeneric.TypeSpec.IsGenericIterateInterface = true;
+                               IEnumerableGeneric.TypeSpec.IsArrayGenericInterface = true;
 
                        if (IListGeneric.Define ())
-                               IListGeneric.TypeSpec.IsGenericIterateInterface = true;
+                               IListGeneric.TypeSpec.IsArrayGenericInterface = true;
+
+                       if (IReadOnlyListGeneric.Define ())
+                               IReadOnlyListGeneric.TypeSpec.IsArrayGenericInterface = true;
 
                        if (ICollectionGeneric.Define ())
-                               ICollectionGeneric.TypeSpec.IsGenericIterateInterface = true;
+                               ICollectionGeneric.TypeSpec.IsArrayGenericInterface = true;
+
+                       if (IReadOnlyCollectionGeneric.Define ())
+                               IReadOnlyCollectionGeneric.TypeSpec.IsArrayGenericInterface = true;
 
                        if (Nullable.Define ())
                                Nullable.TypeSpec.IsNullableType = true;
@@ -691,6 +701,7 @@ namespace Mono.CSharp
                readonly MemberKind kind;
                protected readonly ModuleContainer module;
                protected TypeSpec type;
+               bool defined;
 
                public PredefinedType (ModuleContainer module, MemberKind kind, string ns, string name, int arity)
                        : this (module, kind, ns, name)
@@ -753,7 +764,11 @@ namespace Mono.CSharp
                        if (type != null)
                                return true;
 
-                       type = Resolve (module, kind, ns, name, arity, false, false);
+                       if (!defined) {
+                               defined = true;
+                               type = Resolve (module, kind, ns, name, arity, false, false);
+                       }
+
                        return type != null;
                }
 
@@ -771,12 +786,13 @@ namespace Mono.CSharp
                        // fake namespaces when type is optional and does not exist (e.g. System.Linq).
                        //
                        Namespace type_ns = module.GlobalRootNamespace.GetNamespace (ns, required);
+
                        IList<TypeSpec> found = null;
                        if (type_ns != null)
                                found = type_ns.GetAllTypes (name);
 
                        if (found == null) {
-                               if (reportErrors )
+                               if (reportErrors)
                                        module.Compiler.Report.Error (518, "The predefined type `{0}.{1}' is not defined or imported", ns, name);
 
                                return null;
@@ -829,15 +845,22 @@ namespace Mono.CSharp
                        }
 
                        if (best_match == null && reportErrors) {
-                               Location loc;
-                               if (found[0].MemberDefinition is MemberCore) {
-                                       loc = ((MemberCore) found[0].MemberDefinition).Location;
+                               var found_member = found[0];
+
+                               if (found_member.Kind == MemberKind.MissingType) {
+                                       // CSC: should be different error number
+                                       module.Compiler.Report.Error (518, "The predefined type `{0}.{1}' is defined in an assembly that is not referenced.", ns, name);
                                } else {
-                                       loc = Location.Null;
-                                       module.Compiler.Report.SymbolRelatedToPreviousError (found[0]);
-                               }
+                                       Location loc;
+                                       if (found_member.MemberDefinition is MemberCore) {
+                                               loc = ((MemberCore) found_member.MemberDefinition).Location;
+                                       } else {
+                                               loc = Location.Null;
+                                               module.Compiler.Report.SymbolRelatedToPreviousError (found_member);
+                                       }
 
-                               module.Compiler.Report.Error (520, loc, "The predefined type `{0}.{1}' is not declared correctly", ns, name);
+                                       module.Compiler.Report.Error (520, loc, "The predefined type `{0}.{1}' is not declared correctly", ns, name);
+                               }
                        }
 
                        return best_match;
index 2657956a2f540821f0d0b6332483790ef391a7ef..10874fecc65e0333a0b325b7c7e2aa425ab4b086 100644 (file)
@@ -211,7 +211,7 @@ namespace Mono.CSharp
                //
                // Returns true for instances of IList<T>, IEnumerable<T>, ICollection<T>
                //
-               public virtual bool IsGenericIterateInterface {
+               public virtual bool IsArrayGenericInterface {
                        get {
                                return false;
                        }
@@ -321,6 +321,9 @@ namespace Mono.CSharp
                                if (Kind == MemberKind.Void)
                                        return true;
 
+                               if (Kind == MemberKind.TypeParameter)
+                                       return false;
+
                                if (IsNested && DeclaringType.IsGenericOrParentIsGeneric)
                                        return false;
 
@@ -375,7 +378,7 @@ namespace Mono.CSharp
                                throw new InternalErrorException ("Modifying expanded interface list");
 
                        if (ifaces == null) {
-                               ifaces = new List<TypeSpec> () { iface };
+                               ifaces = new List<TypeSpec> { iface };
                                return true;
                        }
 
@@ -653,6 +656,20 @@ namespace Mono.CSharp
                        }
                }
 
+               public static bool IsNonNullableValueType (TypeSpec t)
+               {
+                       switch (t.Kind) {
+                       case MemberKind.TypeParameter:
+                               return ((TypeParameterSpec) t).IsValueType;
+                       case MemberKind.Struct:
+                               return !t.IsNullableType;
+                       case MemberKind.Enum:
+                               return true;
+                       default:
+                               return false;
+                       }
+               }
+
                public static bool IsValueType (TypeSpec t)
                {
                        switch (t.Kind) {
@@ -724,22 +741,22 @@ namespace Mono.CSharp
                        return this;
                }
 
-               public override List<TypeSpec> ResolveMissingDependencies ()
+               public override List<MissingTypeSpecReference> ResolveMissingDependencies (MemberSpec caller)
                {
-                       List<TypeSpec> missing = null;
+                       List<MissingTypeSpecReference> missing = null;
 
                        if (Kind == MemberKind.MissingType) {
-                               missing = new List<TypeSpec> ();
-                               missing.Add (this);
+                               missing = new List<MissingTypeSpecReference> ();
+                               missing.Add (new MissingTypeSpecReference (this, caller));
                                return missing;
                        }
 
                        foreach (var targ in TypeArguments) {
                                if (targ.Kind == MemberKind.MissingType) {
                                        if (missing == null)
-                                               missing = new List<TypeSpec> ();
+                                               missing = new List<MissingTypeSpecReference> ();
 
-                                       missing.Add (targ);
+                                       missing.Add (new MissingTypeSpecReference (targ, caller));
                                }
                        }
 
@@ -747,19 +764,19 @@ namespace Mono.CSharp
                                foreach (var iface in Interfaces) {
                                        if (iface.Kind == MemberKind.MissingType) {
                                                if (missing == null)
-                                                       missing = new List<TypeSpec> ();
+                                                       missing = new List<MissingTypeSpecReference> ();
 
-                                               missing.Add (iface);
+                                               missing.Add (new MissingTypeSpecReference (iface, caller));
                                        }
                                }
                        }
 
                        if (MemberDefinition.TypeParametersCount > 0) {
                                foreach (var tp in MemberDefinition.TypeParameters) {
-                                       var tp_missing = tp.GetMissingDependencies ();
+                                       var tp_missing = tp.GetMissingDependencies (this);
                                        if (tp_missing != null) {
                                                if (missing == null)
-                                                       missing = new List<TypeSpec> ();
+                                                       missing = new List<MissingTypeSpecReference> ();
 
                                                missing.AddRange (tp_missing);
                                        }
@@ -769,7 +786,7 @@ namespace Mono.CSharp
                        if (missing != null || BaseType == null)
                                return missing;
 
-                       return BaseType.ResolveMissingDependencies ();
+                       return BaseType.ResolveMissingDependencies (this);
                }
 
                public void SetMetaInfo (MetaType info)
@@ -784,6 +801,31 @@ namespace Mono.CSharp
                {
                        modifiers |= Modifiers.METHOD_EXTENSION;
                }
+
+               public void UpdateInflatedInstancesBaseType ()
+               {
+                       //
+                       // When nested class has a partial part the situation where parent type
+                       // is inflated before its base type is defined can occur. In such case
+                       // all inflated (should be only 1) instansted need to be updated
+                       //
+                       // partial class A<T> {
+                       //   partial class B : A<int> { }
+                       // }
+                       //
+                       // partial class A<T> : X {}
+                       //
+                       if (inflated_instances == null)
+                               return;
+
+                       foreach (var inflated in inflated_instances) {
+                               //
+                               // Don't need to inflate possible generic type because for now the method
+                               // is always used from within the nested type
+                               //
+                               inflated.Value.BaseType = base_type;
+                       }
+               }
        }
 
        //
@@ -1936,4 +1978,16 @@ namespace Mono.CSharp
                        return pc;
                }
        }
+
+       public class MissingTypeSpecReference
+       {
+               public MissingTypeSpecReference (TypeSpec type, MemberSpec caller)
+               {
+                       Type = type;
+                       Caller = caller;
+               }
+
+               public TypeSpec Type { get; private set; }
+               public MemberSpec Caller { get; private set; }
+       }
 }
index 4d4ca0fd035d5d369955db47ec3d332a1c963d48..fc2aa5e62b830cb238aba7b2308d53e3afbe4d85 100644 (file)
@@ -58,6 +58,11 @@ namespace Mono.CSharp
                        VisitTypeContainer (ns);
                }
 
+               public virtual void Visit (CompilationSourceFile csf)
+               {
+                       VisitTypeContainer (csf);
+               }
+
                public virtual void Visit (Class c)
                {
                        VisitTypeContainer (c);
index 06f2fed3fdea5f221591e1894a5e9aefdd8c911f..f0b58ef8b9a0758ad265a412d9b0cb85b601ff7a 100644 (file)
@@ -36,6 +36,7 @@ class C
        public dynamic[,] t2;
        public Func<dynamic, int, dynamic[]> v;
        public I<dynamic>[] iface;
+       public Action<int[], object, dynamic> d2;
 }
 
 delegate dynamic Del (dynamic d);
@@ -135,6 +136,12 @@ class Test
                if (!da.TransformFlags.SequenceEqual (new bool[] { false, false, true }))
                        return 47;
 
+               da = t.GetMember ("d2")[0].GetCustomAttributes (ca, false)[0] as DynamicAttribute;
+               if (da == null)
+                       return 48;
+               if (!da.TransformFlags.SequenceEqual (new bool[] { false, false, false, false, true }))
+                       return 49;
+
                t = typeof (Del);
 
                if (t.GetMember ("Invoke")[0].GetCustomAttributes (ca, false).Length != 0)
index b8b4eb0dcd4072a482feeed8f5915008c1c21aae..58578fe3b50ab5351a159c1babe4262593ee6f06 100644 (file)
@@ -8,6 +8,14 @@ class A
                public void Foo ()
                {
                }
+
+               public int Property { get; set; }
+               
+               string this [int index] {
+                       get {
+                               return "x";
+                       }
+               }
        }
        
        public static dynamic Factory ()
@@ -30,6 +38,22 @@ public class Test
                                return 2;
                }
                
+               try {
+                       var x = d.Property;
+                       return 3;
+               } catch (RuntimeBinderException e) {
+                       if (e.Message != "`A.N.Property.get' is inaccessible due to its protection level")
+                               return 4;
+               }
+
+               try {
+                       var x = d [4];
+                       return 5;
+               } catch (RuntimeBinderException e) {
+                       if (e.Message != "`A.N.this[int]' is inaccessible due to its protection level")
+                               return 6;
+               }
+
                return 0;
        }
 }
diff --git a/mcs/tests/gtest-217.cs b/mcs/tests/gtest-217.cs
deleted file mode 100644 (file)
index bc86539..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-using System;
-using System.Collections.Generic;
-
-public delegate R Fun<A1,R>(A1 x);
-
-class MyTest {
-  public static void Main(String[] args) {
-    foreach (Object d in Map<int,int,String,Object>
-                           (delegate (int x) { return x.ToString(); }, 
-                            FromTo(10,20)))
-      Console.WriteLine(d);
-  }
-
-  // Map with argument/result co/contravariance:
-  // Aa=argument, Rr=result, Af=f's argument, Rf=f's result
-
-  public static IEnumerable<Rr> Map<Aa,Af,Rf,Rr>(Fun<Af,Rf> f, 
-                                                 IEnumerable<Aa> xs) 
-    where Aa : Af 
-    where Rf : Rr 
-  { 
-    foreach (Aa x in xs)
-      yield return f(x);    // gmcs 1.1.9 bug: cannot convert Aa to Af
-  }
-
-  // FromTo : int * int -> int stream
-
-  public static IEnumerable<int> FromTo(int from, int to) { 
-    for (int i=from; i<=to; i++)
-      yield return i;
-  }
-}
-
-
index 5522a499f888e435e74308951483cd73b37c2020..30f4d3c5b4a53d02556a4f0205724850da3737d6 100644 (file)
@@ -45,9 +45,17 @@ public struct Baz
        }
 }
 
+struct S
+{
+       public static implicit operator bool?(S arg)
+       {
+               throw new ApplicationException ("should not be called");
+       }
+}
+
 class X
 {
-       public static void Main ()
+       public static int Main ()
        {
                int a = 3;
                int? b = a;
@@ -67,5 +75,12 @@ class X
                Baz? z2 = (Baz?) f2;
                Baz? z3 = (Baz?) f3;
                Baz z4 = (Baz) f2;
+
+               S? s = null;
+               bool? g = s;
+               if (g != null)
+                       return 1;
+
+               return 0;
        }
 }
diff --git a/mcs/tests/gtest-381.cs b/mcs/tests/gtest-381.cs
deleted file mode 100644 (file)
index 04e80fe..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-using System.Collections.Generic;
-
-class TestGoto
-{
-  static int x = 2;
-
-  public static void Main(string[] args)
-    {
-      foreach (bool b in test())
-       ;
-      if (x != 0)
-       throw new System.Exception ();
-    }
-
-  static IEnumerable<bool> setX()
-  {
-    x = 1;
-    try {
-      yield return true;
-    } finally {
-      x = 0;
-    }
-  }
-
-  static IEnumerable<bool> test()
-  {
-    foreach (bool b in setX()) {
-      yield return true;
-      // Change "goto label" to "break" to show the correct result.
-      goto label;
-    }
-  label:
-    yield break;
-  }
-}
index 8c9c43a16023869b9c1d343fbb6218f9e4c4c313..7596032d16fcf14d71e45222d72469f2d00056f5 100644 (file)
@@ -88,4 +88,13 @@ class C
                
                return 0;
        }
+       
+       // This does not look right but C# spec needs tidying up to special case it
+       void BrokenLiftedNull ()
+       {
+               int i = 44;
+               int? u = null;
+               i <<= u;
+               i <<= null;
+       }
 }
\ No newline at end of file
index 98c2c85c01b0cd9f307e4f526d4b8ccf721a071b..98dd222721d73aaa6b529eed13b305b9cb0bf487 100644 (file)
@@ -35,6 +35,18 @@ class B2 : A2<System.ValueType>
        }
 }
 
+abstract class A3<T>
+{
+       public abstract void Foo<U> () where U : class, T;
+}
+
+class B3 : A3<System.Object>
+{
+       public override void Foo<Y> ()
+       {
+       }
+}
+
 class Program
 {
        public static int Main ()
@@ -48,6 +60,9 @@ class Program
                var b2 = new B2 ();
                b2.Foo<byte> ();
                
+               var b3 = new B3 ();
+               b3.Foo<string> ();
+               
                return 1;
        }
 }
index 63ca06b2b5484df6b984bec316713cbbe0980409..5668a7dca7afda43128c2fc6bc564adfd2b44edc 100644 (file)
@@ -21,6 +21,20 @@ public static class ApplicationContext
                if (res)
                        return 2;
                
+               int? re = 3 + (short?) 7;
+               if (re != 10)
+                       return 3;
+               
+               int a = 2;
+               int b = 2;
+               int? c = (byte?)a + b;
+               if (c != 4)
+                       return 4;
+               
+               c = a + (ushort?)b;
+               if (c != 4)
+                       return 5;
+               
                return 0;
        }
 }
index 9def4cd52c8f9c53a670f9f5c92c3a2b253e3ebf..615312c36b299d98b9c13c7753d2307988b4dfd8 100644 (file)
@@ -9,12 +9,23 @@ public class G<U, V> : IA<G<V, string>>
 
 public class C
 {
+       static bool Test_2 <T2>(T2[] t)
+       {
+               return t is byte[];
+       }
+
        public static int Main ()
        {
                G<long, short> p = new G<long, short> ();
                if (p is IA<G<string, string>>)
                        return 1;
 
+               if (Test_2 (new int [0]))
+                       return 2;
+
+               if (!Test_2 (new byte [0]))
+                       return 3;
+
                return 0;
        }
 }
\ No newline at end of file
diff --git a/mcs/tests/gtest-584.cs b/mcs/tests/gtest-584.cs
new file mode 100644 (file)
index 0000000..3a5b786
--- /dev/null
@@ -0,0 +1,73 @@
+using System;
+
+enum E : sbyte
+{
+       V = 1
+}
+
+struct S
+{
+       public static bool operator == (S s, S i)
+       {
+               throw new ApplicationException ();
+       }
+
+       public static bool operator != (S s, S i)
+       {
+               throw new ApplicationException ();
+       }
+
+       public static implicit operator int? (S s)
+       {
+               throw new ApplicationException ();
+       }
+
+       public static implicit operator E? (S s)
+       {
+               return null;
+       }
+}
+
+class C
+{
+       public static int Main ()
+       {
+               E? a = E.V;
+               E? a_n = null;
+               E? b = E.V;
+               E? b_n = null;
+
+               if (a != b)
+                       return 1;
+
+               if (a == a_n)
+                       return 2;
+
+               if (a_n != b_n)
+                       return 3;
+               
+               E e = (E) 4;
+               S s;
+               if (e == s)
+                       return 10;
+
+               if (s == e)
+                       return 11;
+
+               if (e > s)
+                       return 12;
+
+               if (s > e)
+                       return 13;
+
+               if ((s & e) != null)
+                       return 14;
+
+               if ((s & e) != null)
+                       return 15;
+
+               Console.WriteLine ("ok");
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-585.cs b/mcs/tests/gtest-585.cs
new file mode 100644 (file)
index 0000000..ff2a16c
--- /dev/null
@@ -0,0 +1,71 @@
+using System;
+
+struct S
+{
+       public static implicit operator int (S arg)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+struct S2
+{
+       public static implicit operator int?(S2 arg)
+       {
+               return 10000;
+       }
+
+       public static implicit operator uint?(S2 arg)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+public struct S3
+{
+       public static int counter;
+       
+       public static implicit operator string (S3 s3)
+       {
+               counter++;
+               return "";
+       }
+}
+
+class C
+{
+       public static int Main ()
+       {
+               S? s = null;
+               bool res = s > 1;
+               if (res)
+                       return 1;
+
+               S2 s2 = new S2 ();
+
+               var b = s2 >> 3;
+               if (b != 1250)
+                       return 2;
+
+               var b2 = s2 >> s2;
+               if (b2 != 0)
+                       return 3;
+
+               var b3 = s2 + 1;
+               if (b3 != 10001)
+                       return 4;
+
+               var s3 = new S3 ();
+               if ((s3 == null) != false)
+                       return 5;
+
+               if ((s3 != null) != true)
+                       return 6;
+               
+               if (S3.counter != 2)
+                       return 7;
+
+               Console.WriteLine ("ok");
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-586.cs b/mcs/tests/gtest-586.cs
new file mode 100644 (file)
index 0000000..6d01808
--- /dev/null
@@ -0,0 +1,98 @@
+using System;
+
+struct S
+{
+       public static bool operator == (S s, S i)
+       {
+               throw new ApplicationException ();
+       }
+
+       public static bool operator != (S s, S i)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+struct S2
+{
+       public static int counter;
+
+       public static bool operator == (S2 s, S2 i)
+       {
+               counter++;
+               return true;
+       }
+
+       public static bool operator != (S2 s, S2 i)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+
+struct S3
+{
+       public static int counter;
+
+       public static implicit operator int?(S3 arg)
+       {
+               counter++;
+               return null;
+       }
+}
+
+class C
+{
+       public static int Main ()
+       {
+               S? s = new S ();
+               S? s2 = null;
+               S? s4 = null;
+
+               if ((s == s2) != false)
+                       return 1;
+
+               if ((s2 == s) != false)
+                       return 2;
+
+               if ((s2 == s4) != true)
+                       return 3;
+
+               S x = new S ();
+
+               if ((s2 == x) != false)
+                       return 5;
+
+               if ((x == s2) != false)
+                       return 6;
+
+               S2? s2_1 = new S2 ();
+               S2? s2_3 = new S2 ();
+               S2 x2 = new S2 ();
+
+               if ((s2_1 == s2_3) != true)
+                       return 7;
+
+               if ((s2_1 == x2) != true)
+                       return 8;
+
+               if ((x2 == s2_1) != true)
+                       return 9;
+
+               if (S2.counter != 3)
+                       return 10;
+
+               S3 s3;
+
+               if ((s3 == null) != true)
+                       return 20;
+
+               if ((null == s3) != true)
+                       return 21;
+
+               if (S3.counter != 2)
+                       return 22;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-587.cs b/mcs/tests/gtest-587.cs
new file mode 100644 (file)
index 0000000..60484bd
--- /dev/null
@@ -0,0 +1,51 @@
+using System;
+
+struct S
+{
+       public static implicit operator string (S s)
+       {
+               return "1";
+       }
+
+       public static implicit operator short? (S s)
+       {
+               return 1;
+       }
+
+       public static implicit operator E (S s)
+       {
+               return 0;
+       }
+}
+
+public enum E
+{
+}
+
+class C
+{
+       public static int Main ()
+       {
+               E? e = 0;
+               const E e1 = (E)44;
+               var res = e == e1;
+               if (res != false)
+                       return 1;
+
+               res = e1 == e;
+               if (res != false)
+                       return 2;
+
+               E e2 = 0;
+               S s;
+               var res2 = e2 & s;
+               if (res2 != 0)
+                       return 3;
+
+               res2 = s & e2;
+               if (res2 != 0)
+                       return 4;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-588.cs b/mcs/tests/gtest-588.cs
new file mode 100644 (file)
index 0000000..efbc67e
--- /dev/null
@@ -0,0 +1,33 @@
+using System;
+
+struct S
+{
+       public static implicit operator short? (S s)
+       {
+               return 0;
+       }
+
+       public static implicit operator short (S s)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+class Program
+{
+       public static int Main ()
+       {
+               S? s = null;
+               S? s2 = new S ();
+
+               long? i = s;
+               if (i != null)
+                       return 1;
+
+               double? ui = s2;
+               if (ui == null)
+                       return 2;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-589.cs b/mcs/tests/gtest-589.cs
new file mode 100644 (file)
index 0000000..4599fe2
--- /dev/null
@@ -0,0 +1,40 @@
+using System;
+
+public class Z : IGenericInterface<Z>
+{
+       public Z Start ()
+       {
+               return this;
+       }
+
+       Z IGenericInterface<Z>.Start ()
+       {
+               throw new ApplicationException ();
+       }
+}
+
+public interface IGenericInterface<T>
+{
+       T Start ();
+}
+
+public class A<T> where T : Z, IGenericInterface<int> 
+{
+       public void SomeOperation (T t)
+       {
+               t.Start ();
+       }
+}
+
+public class C : Z, IGenericInterface<int> 
+{
+       int IGenericInterface<int>.Start ()
+       {
+               throw new NotImplementedException ();
+       }
+
+       public static void Main ()
+       {
+               new A<C> ().SomeOperation (new C ());
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-590.cs b/mcs/tests/gtest-590.cs
new file mode 100644 (file)
index 0000000..96c276a
--- /dev/null
@@ -0,0 +1,21 @@
+using System;
+
+enum E
+{
+       V
+}
+
+class C
+{
+       public static void Main ()
+       {
+               byte? foo = 0;
+               E e = 0;
+               var res = foo - e;
+               Console.WriteLine (res);
+               var res2 = e - foo;
+               Console.WriteLine (res2);
+               res = null;
+               res2 = null;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-591-lib.cs b/mcs/tests/gtest-591-lib.cs
new file mode 100644 (file)
index 0000000..6f43ae7
--- /dev/null
@@ -0,0 +1,14 @@
+// Compiler options: -target:library
+
+using System;
+
+namespace A
+{
+       public class B<T>
+       {
+               public abstract class C : System.IEquatable<C>
+               {
+                       public abstract bool Equals (C other);
+               }
+       }
+}
diff --git a/mcs/tests/gtest-591.cs b/mcs/tests/gtest-591.cs
new file mode 100644 (file)
index 0000000..fd0bae0
--- /dev/null
@@ -0,0 +1,13 @@
+// Compiler options: -r:gtest-591-lib.dll
+
+using System;
+
+public class E
+{
+       public System.Collections.Generic.Dictionary<int, A.B<int>.C> F;
+       public static void Main ()
+       {
+               var e = new E ();
+               Console.WriteLine (e.F);
+       }
+}
diff --git a/mcs/tests/gtest-592.cs b/mcs/tests/gtest-592.cs
new file mode 100644 (file)
index 0000000..f32700c
--- /dev/null
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+
+public class Tests
+{
+       static void A<T>(IReadOnlyCollection<T> otherList)
+       {
+       }
+
+       static void B<T>(IReadOnlyList<T> otherList)
+       {
+       }
+
+       public static void Main ()
+       {
+               var ifacers = typeof(int[]).GetInterfaces ();
+
+               var args = new string [0];
+               A (args);
+               B (args);
+
+               IReadOnlyList<int> e1 = new int[0];
+               IReadOnlyCollection<int> e2 = new int[0];
+       }
+}
diff --git a/mcs/tests/gtest-593.cs b/mcs/tests/gtest-593.cs
new file mode 100644 (file)
index 0000000..a5e53f2
--- /dev/null
@@ -0,0 +1,25 @@
+using System;
+
+public delegate Tuple<D1, DR1> Parser<D1, DR1> (D1 stream);
+
+static class Combinator
+{
+       public static Parser<L1, LR1> Lazy<L1, LR1> (Func<Parser<L1, LR1>> func)
+       {
+               return null;
+       }
+
+       public static Parser<C1, CR1> Choice<C1, CR1> (Parser<C1, CR1> parsers)
+       {
+               Parser<C1, CR1> tail = null;
+
+               Lazy (() => Choice (tail));
+
+               return null;
+       }
+
+       public static void Main ()
+       {
+               Choice ((int l) => Tuple.Create (1, 2));
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-594.cs b/mcs/tests/gtest-594.cs
new file mode 100644 (file)
index 0000000..0c09ef8
--- /dev/null
@@ -0,0 +1,29 @@
+using System;
+
+public interface IFoo<U>
+{
+       void Foo<T> () where T : C;
+}
+
+public class C : IA
+{
+}
+
+public interface IA
+{
+}
+
+class Y : IFoo<int>
+{
+       public void Foo<T> () where T : C
+       {
+       }
+}
+
+class X
+{
+       public static void Main()
+       {
+               new Y ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-595.cs b/mcs/tests/gtest-595.cs
new file mode 100644 (file)
index 0000000..65249a5
--- /dev/null
@@ -0,0 +1,37 @@
+class MainClass
+{
+       static class TypeConverter<TIn, TOut>
+               where TIn : class
+               where TOut : struct
+       {
+               public static bool Convert(TIn input)
+               {
+                       if (input is TOut)
+                       {
+                               return true;
+                       }
+
+                       return false;
+               }
+       }
+
+       public static int Main()
+       {
+               object x = 3;
+               if (TypeConverter<object, double>.Convert(x))
+                       return 1;
+
+               if (!TypeConverter<I, S>.Convert(new S()))
+                       return 2;
+
+               return 0;
+       }
+}
+
+interface I
+{
+}
+
+struct S : I
+{
+}
diff --git a/mcs/tests/gtest-596.cs b/mcs/tests/gtest-596.cs
new file mode 100644 (file)
index 0000000..6a2465b
--- /dev/null
@@ -0,0 +1,27 @@
+using System;
+
+class X
+{
+       public Artist Artist { get; set; }
+
+       public static void Main ()
+       {
+               Test<string, Artist> (Artist.FromToken);
+       }
+
+       static void Test<T1, T2> (Func<T1, T2> arg)
+       {
+       }
+
+       static void Test<T1, T2> (Func<T1, int, T2> arg)
+       {
+       }
+}
+
+public class Artist
+{
+       public static Artist FromToken (string token)
+       {
+               return null;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-597.cs b/mcs/tests/gtest-597.cs
new file mode 100644 (file)
index 0000000..cbf9e73
--- /dev/null
@@ -0,0 +1,44 @@
+using System;
+
+namespace Test
+{
+       class MainClass
+       {
+               public static int Main ()
+               {
+                       if (!Test_1 (new Derived ()))
+                               return 1;
+
+                       if (!Test_2 (new S ()))
+                               return 2;
+
+                       return 0;
+               }
+
+               static bool Test_1<T> (Templated<T> template)
+               {
+                       return template is Derived;
+               }
+
+               static bool Test_2<U> (IA<U> arg)
+               {
+                       return arg is S;
+               }
+       }
+
+       public abstract class Templated<T>
+       {
+       }
+
+       public class Derived : Templated<Derived>
+       {
+       }
+
+       public interface IA<T>
+       {
+       }
+
+       public struct S : IA<S>
+       {
+       }
+}
diff --git a/mcs/tests/gtest-598.cs b/mcs/tests/gtest-598.cs
new file mode 100644 (file)
index 0000000..27bad70
--- /dev/null
@@ -0,0 +1,63 @@
+using System;
+
+public class A
+{
+       public virtual T Test<T> (T t)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+public class B : A
+{
+       public override T Test<T> (T t)
+       {
+               Console.WriteLine ("Base");
+               return default (T);
+       }
+}
+
+public class C : B
+{
+       public override T Test<T> (T t)
+       {
+               base.Test ("a");
+               return default (T);
+       }
+}
+
+
+public class AG<U>
+{
+       public virtual T Test<T> (T t, U u)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+public class B<UB> : AG<UB>
+{
+       public override T Test<T> (T t, UB u)
+       {
+               Console.WriteLine ("Base");
+               return default (T);
+       }
+}
+
+public class C<UC> : B<UC>
+{
+       public override T Test<T> (T t, UC u)
+       {
+               base.Test ("a", default (UC));
+               return default (T);
+       }
+}
+
+class X
+{
+       public static void Main ()
+       {
+               new C ().Test<int> (1);
+               new C<int> ().Test (5, 3);
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-599.cs b/mcs/tests/gtest-599.cs
new file mode 100644 (file)
index 0000000..a25e7b6
--- /dev/null
@@ -0,0 +1,32 @@
+using System;
+
+public abstract class A<X>
+{
+       public abstract T Test<T> (T t, X x);
+}
+
+public class B : A<char>
+{
+       public override T Test<T> (T t, char x)
+       {
+               Console.WriteLine ("B");
+               return default (T);
+       }
+}
+
+public class C : B
+{
+       public override T Test<T> (T t, char c)
+       {
+               base.Test ("a", 'a');
+               return default (T);
+       }
+}
+
+class X
+{
+       public static void Main ()
+       {
+               new C ().Test<int> (1, '1');
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-autoproperty-08.cs b/mcs/tests/gtest-autoproperty-08.cs
new file mode 100644 (file)
index 0000000..3aeeb7a
--- /dev/null
@@ -0,0 +1,22 @@
+using System;
+using System.Reflection;
+
+class AAttribute : Attribute
+{
+}
+
+class Program
+{
+       [field: A]
+       public int Prop { get; set; }
+
+       public static int Main ()
+       {
+               var f = typeof (Program).GetFields (BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly);
+               if (f[0].GetCustomAttribute<AAttribute> () == null)
+                       return 1;
+
+               return 0;
+       }
+}
+
index c511e8580617eb6c0a8312dd2109422878ec9267..248d1452d2bb949b8639d8fa3ddee3f21cf09b80 100644 (file)
@@ -2600,7 +2600,6 @@ class Tester
                Assert (1, e9.Compile ().Invoke (MyEnum.Value_2, MyEnum.Value_1));
        }
 
-       // CSC bug
        void SubtractTest_10 ()
        {
                Expression<Func<MyEnum?, byte?, MyEnum?>> e10 = (a, b) => a - b;
index 94a2f29f94c3facb31ef346cf4d9338dfffa16bb..d40bc9636d952ab34e08658c794aee43128d93b8 100644 (file)
@@ -22,6 +22,11 @@ struct Foo
        {
                throw new ApplicationException ();
        }
+       
+       public static Foo operator + (Foo d1, Foo d2)
+       {
+               throw new ApplicationException ();
+       }
 }
 
 class C
@@ -45,6 +50,10 @@ class C
                if (!e.Compile ().Invoke ())
                        return 4;
                
+               Expression<Func<Foo?>> e2 = () => f + null;
+               if (e2.Compile ().Invoke () != null)
+                       return 5;
+
                Console.WriteLine ("OK");
                return 0;
        }
diff --git a/mcs/tests/gtest-exmethod-47.cs b/mcs/tests/gtest-exmethod-47.cs
new file mode 100644 (file)
index 0000000..07cc2b3
--- /dev/null
@@ -0,0 +1,22 @@
+delegate void D ();
+
+public class C
+{
+       static void Main ()
+       {
+               S s = new S ();
+               D d = s.Foo;
+       }
+}
+
+public class S
+{
+       public void Foo (int i)
+       {
+       }
+}
+
+public static class Extension
+{
+       public static void Foo (this S s) { }
+}
diff --git a/mcs/tests/gtest-iter-29.cs b/mcs/tests/gtest-iter-29.cs
new file mode 100644 (file)
index 0000000..9276d02
--- /dev/null
@@ -0,0 +1,22 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+
+public class Test
+{
+       public static int Main ()
+       {
+               var x = Test2 ();
+               if (x.Count () != 0)
+                       return 1;
+
+               Console.WriteLine ("ok");
+               return 0;
+       }
+
+       public static IEnumerable<int> Test2 ()
+       {
+               while (false)
+                       yield return 5;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-iter-30.cs b/mcs/tests/gtest-iter-30.cs
new file mode 100644 (file)
index 0000000..192c82b
--- /dev/null
@@ -0,0 +1,33 @@
+using System;
+using System.Collections.Generic;
+
+public class Program
+{
+       public static void Main ()
+       {
+               foreach (var x in new M ().Test ()) {
+                       Console.WriteLine (x);
+               }
+       }
+}
+
+class M
+{
+       public IEnumerable<int> Test ()
+       {
+               Action a = delegate {
+                       int k = 0;
+                       Action x = delegate {
+                               Console.WriteLine (this);
+                               Console.WriteLine (k);
+                       };
+
+                       x ();
+                       Console.WriteLine (this);
+               };
+
+               a ();
+               
+               yield return 1;
+       }
+}
diff --git a/mcs/tests/gtest-iter-31.cs b/mcs/tests/gtest-iter-31.cs
new file mode 100644 (file)
index 0000000..5bd2ea0
--- /dev/null
@@ -0,0 +1,31 @@
+using System.Collections.Generic;
+using System.Linq;
+
+class B
+{
+       public object Foo (object obj)
+       {
+               return null;
+       }
+}
+
+class C
+{
+       B ctx = new B ();
+
+       public static void Main ()
+       {
+               foreach (var c in new C ().Test ()) {                   
+               }
+       }
+
+       IEnumerable<ushort> Test ()
+       {
+               string[] s = new[] { "a", "b", "c" };
+
+               var m = s.Select (l => ctx.Foo (l)).ToArray ();
+
+               yield break;
+       }
+}
+
diff --git a/mcs/tests/gtest-iter-32.cs b/mcs/tests/gtest-iter-32.cs
new file mode 100644 (file)
index 0000000..04e80fe
--- /dev/null
@@ -0,0 +1,35 @@
+using System.Collections.Generic;
+
+class TestGoto
+{
+  static int x = 2;
+
+  public static void Main(string[] args)
+    {
+      foreach (bool b in test())
+       ;
+      if (x != 0)
+       throw new System.Exception ();
+    }
+
+  static IEnumerable<bool> setX()
+  {
+    x = 1;
+    try {
+      yield return true;
+    } finally {
+      x = 0;
+    }
+  }
+
+  static IEnumerable<bool> test()
+  {
+    foreach (bool b in setX()) {
+      yield return true;
+      // Change "goto label" to "break" to show the correct result.
+      goto label;
+    }
+  label:
+    yield break;
+  }
+}
diff --git a/mcs/tests/gtest-iter-33.cs b/mcs/tests/gtest-iter-33.cs
new file mode 100644 (file)
index 0000000..bc86539
--- /dev/null
@@ -0,0 +1,34 @@
+using System;
+using System.Collections.Generic;
+
+public delegate R Fun<A1,R>(A1 x);
+
+class MyTest {
+  public static void Main(String[] args) {
+    foreach (Object d in Map<int,int,String,Object>
+                           (delegate (int x) { return x.ToString(); }, 
+                            FromTo(10,20)))
+      Console.WriteLine(d);
+  }
+
+  // Map with argument/result co/contravariance:
+  // Aa=argument, Rr=result, Af=f's argument, Rf=f's result
+
+  public static IEnumerable<Rr> Map<Aa,Af,Rf,Rr>(Fun<Af,Rf> f, 
+                                                 IEnumerable<Aa> xs) 
+    where Aa : Af 
+    where Rf : Rr 
+  { 
+    foreach (Aa x in xs)
+      yield return f(x);    // gmcs 1.1.9 bug: cannot convert Aa to Af
+  }
+
+  // FromTo : int * int -> int stream
+
+  public static IEnumerable<int> FromTo(int from, int to) { 
+    for (int i=from; i<=to; i++)
+      yield return i;
+  }
+}
+
+
diff --git a/mcs/tests/gtest-optional-28.cs b/mcs/tests/gtest-optional-28.cs
new file mode 100644 (file)
index 0000000..d8eaaa3
--- /dev/null
@@ -0,0 +1,31 @@
+using System;
+
+public class NoTypeOptionalParameters
+{
+       public static void Lambda (bool asc = true, params Func<string,bool>[] where)
+       {
+       }
+
+       public static void MethodGroup (bool asc = true, params Func<string,bool>[] where)
+       {
+       }
+
+       static bool Foo (string arg)
+       {
+               return false;
+       }
+
+       bool FooInstance (string arg)
+       {
+               return false;
+       }
+
+       public static int Main ()
+       {
+               bool i = false;
+               Lambda (where: x => true, asc: i);
+               MethodGroup (where: Foo, asc: i);
+               MethodGroup (where: new NoTypeOptionalParameters ().FooInstance, asc: false);
+               return 0;
+       }
+}
diff --git a/mcs/tests/gtest-partial-07.cs b/mcs/tests/gtest-partial-07.cs
new file mode 100644 (file)
index 0000000..d3b0319
--- /dev/null
@@ -0,0 +1,30 @@
+partial class A<T>
+{
+       internal partial class B : A<int>
+       {
+               public void Test ()
+               {
+                       Foo (3);
+               }
+       }
+}
+
+partial class A<T> : X<T>
+{
+
+}
+
+class X<U>
+{
+       public void Foo (U arg)
+       {
+       }
+}
+
+class M
+{
+       public static void Main ()
+       {
+               new A<string>.B ().Test ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/gtest-partial-08.cs b/mcs/tests/gtest-partial-08.cs
new file mode 100644 (file)
index 0000000..fcc96be
--- /dev/null
@@ -0,0 +1,58 @@
+namespace N
+{
+       public partial class A<T1, T2>
+       {
+               public partial class D
+               {
+                       public class C : D
+                       {
+                               public void Test ()
+                               {
+                                       Foo ();
+                               }
+                       }
+               }
+
+               public partial class D2<U>
+               {
+                       public class C2 : D2<int>
+                       {
+                               public void Test ()
+                               {
+                                       Foo (2);
+                               }
+                       }
+               }
+       }
+
+       public partial class A<T1, T2>
+       {
+               public partial class D : X
+               {
+               }
+
+               public partial class D2<U> : X2<U>
+               {
+               }
+       }
+
+       public class X2<W>
+       {
+               public void Foo (W arg)
+               {
+               }
+       }
+
+       public class X
+       {
+               public void Foo ()
+               {
+               }
+
+               public static void Main ()
+               {
+                       new A<int, long>.D.C ().Test ();
+                       new A<int, long>.D2<string>.C2 ().Test ();
+               }
+       }
+}
diff --git a/mcs/tests/gtest-partial-09.cs b/mcs/tests/gtest-partial-09.cs
new file mode 100644 (file)
index 0000000..2dbb116
--- /dev/null
@@ -0,0 +1,57 @@
+namespace A
+{
+       public partial class B<T>
+       {
+               public partial class C
+               {
+                       public class A { }
+               }
+       }
+}
+
+namespace A
+{
+       public abstract partial class B<T> where T : B<T>.C
+       {
+       }
+}
+
+namespace A
+{
+       public partial class B<T>
+       {
+               public partial class C : I
+               {
+               }
+       }
+}
+
+namespace A
+{
+       public interface Ibase
+       {
+       }
+
+       public partial class B<T>
+       {
+               public interface I : Ibase
+               {
+               }
+       }
+}
+
+namespace A
+{
+       class Bar : B<Bar>.C
+       {
+       }
+
+       public class Test
+       {
+               public static void Main ()
+               {
+                       Ibase b = new Bar ();
+                       System.Console.WriteLine (b != null);
+               }
+       }
+}
index 35c2b77448896e1da9b527fde8f848ee9a16ec6d..110044f0a5d8d87f4a3bfddf3da316ffcd4d10e1 100644 (file)
@@ -22,8 +22,27 @@ class D
                return typeof (T) == typeof (object);
        }
        
+       public static bool CovContCont<T> (ICovariant<T> e1, IContravariant<T> e2, IContravariant<T> e3)
+       {
+               Console.WriteLine (typeof (T));
+               return typeof (T) == typeof (string);
+       }
+
+       public static bool ContCovContCov<T> (IContravariant<T> e1, ICovariant<T> e2, IContravariant<T> e3, ICovariant<T> e4)
+       {
+               Console.WriteLine (typeof (T));
+               return typeof (T) == typeof (string);
+       }
+       
+       public static bool CovCovCont<T> (ICovariant<T> e1, ICovariant<T> e2, IContravariant<T> e3)
+       {
+               Console.WriteLine (typeof (T));
+               return typeof (T) == typeof (string);
+       }
+       
        public static int Main ()
        {
+               
                ICovariant<object> a = null;
                ICovariant<string> b = null;
                if (!Covariant (a, b))
@@ -34,6 +53,20 @@ class D
                if (!Contra (a_1, b_1))
                        return 2;
                
+               ICovariant<string> a_2 = null;
+               IContravariant<object> b_2 = null;
+               IContravariant<string> c_2 = null;
+               if (!CovContCont (a_2, b_2, c_2))
+                       return 3;
+               
+               IContravariant<object> a_3 = null;
+               ICovariant<string> b_3 = null;
+               IContravariant<string> c_3 = null;
+               ICovariant<string> d_3 = null;
+               if (!ContCovContCov (a_3, b_3, c_3, d_3))
+                       return 4;
+               
+               Console.WriteLine ("ok");
                return 0;
        }
 }
index c63250e13d554268818c7594ba9758ba8cb25ffc..526f238285fea10be61d84ad175f8618e6633a13 100644 (file)
@@ -14,10 +14,41 @@ class Test
        {
        }
 
+       [MethodImplAttribute((short)MethodImplOptions.Synchronized)]
+       public void test2 ()
+       {
+       }
+
+       [MethodImplAttribute((byte)32)]
+       public void test3 ()
+       {
+       }
+
+       [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)]
+       public void test4 ()
+       {
+       }
+
        public static int Main ()
        {
-               MethodImplAttributes iflags = typeof (Test).GetMethod ("test").GetMethodImplementationFlags ();
-               return ((iflags & MethodImplAttributes.Synchronized) != 0 ? 0 : 1);
+               MethodImplAttributes iflags;
+               iflags = typeof (Test).GetMethod ("test").GetMethodImplementationFlags ();
+               if ((iflags & MethodImplAttributes.Synchronized) == 0)
+                       return 1;
+
+               iflags = typeof (Test).GetMethod ("test2").GetMethodImplementationFlags ();
+               if ((iflags & MethodImplAttributes.Synchronized) == 0)
+                       return 2;
+
+               iflags = typeof (Test).GetMethod ("test3").GetMethodImplementationFlags ();
+               if ((iflags & MethodImplAttributes.Synchronized) == 0)
+                       return 3;
+
+               iflags = typeof (Test).GetMethod ("test3").GetMethodImplementationFlags ();
+               if ((iflags & MethodImplAttributes.Synchronized) == 0)
+                       return 4;
+
+               return 0;
        }
 }
                
index fe9b37174e837bc68eae74c2956985b7fbc5a76b..c49949b239ac575543d245d6b734788fd7c941be 100644 (file)
@@ -1,11 +1,42 @@
-class T {
-       public static int Main ()
+class Test
+{
+       static int test1 ()
        {
-               switch (1) {
-               case 1:
-                       return 0;
-               default:
-                       break;
+               var s = "Nice";
+               switch (s) {
+               case "HI":
+                       const string x = "Nice";
+                       return 1;
+               case x:
+                       return 2;
                }
+
+               return 3;
        }
-}
+
+       public const string xx = "Not";
+       static int test2 ()
+       {
+               var s = "Nice";
+               switch (s) {
+               case "HI":
+                       const string xx = "Nice";
+                       return 1;
+               case xx:
+                       return 2;
+               }
+
+               return 3;
+       }
+
+       static int Main ()
+       {
+               if (test1 () != 2)
+                       return 1;
+
+               if (test2 () != 2)
+                       return 2;
+
+               return 0;
+       }
+}
\ No newline at end of file
index 87c28794793a7e000578a03ff644ed199763ab4d..c1d1f3210e1bcedc74a08aec478f6ee5f227d97e 100644 (file)
@@ -1,7 +1,7 @@
-// Compiler options: -warnaserror
-
 // This ensures that any "unreachable code" warning will error out
-// rather than generate invalid IL
+// rather than generate invalid IL or crash compiler
+
+using System;
 
 class Foo
 {
@@ -20,4 +20,25 @@ class Foo
 
                return 1;
        }
+
+       public static string Test_2 ()
+       {
+               throw new Exception ();
+
+               var account = "yo";
+               if (account == null) {
+               }
+
+               var s = "yo";
+
+               switch (8) {
+               case 1:
+               case 2:
+                       break;
+               default:
+                       throw new NotSupportedException ();
+               }
+
+               return s;
+       }
 }
index 51508f7299358bc9287e9a297bbe8eb063b97b78..22f10ac7d205d6d2aaf99691294bbb6e8d5d3e6d 100644 (file)
@@ -15,10 +15,12 @@ class C1
 
 class C2
 {
+       const object o2 = c2;
+       const string c2 = null;
+       
        public static void Main ()
        {
-               // BUG compatibility for now
-               //const object o = null;
-               //const string s = (string) o;
+               const object o = null;
+               const string s = (string) o;
        }
 }
diff --git a/mcs/tests/test-868.cs b/mcs/tests/test-868.cs
new file mode 100644 (file)
index 0000000..3ca6157
--- /dev/null
@@ -0,0 +1,39 @@
+using System.Diagnostics;
+using System.Reflection;
+
+[assembly: AssemblyProduct ("Product")]
+[assembly: AssemblyCompany ("Company")]
+[assembly: AssemblyDescription ("Description")]
+[assembly: AssemblyCopyright ("Copyright")]
+[assembly: AssemblyTrademark ("Trademark")]
+[assembly: AssemblyVersion ("5.4.3.1")]
+[assembly: AssemblyFileVersion ("8.9")]
+
+class C
+{
+       public static int Main ()
+       {
+               var loc = Assembly.GetExecutingAssembly ().Location;
+               var fv = FileVersionInfo.GetVersionInfo (loc);
+
+               if (fv.ProductName != "Product")
+                       return 1;
+
+               if (fv.CompanyName != "Company")
+                       return 2;
+
+//             if (fv.Comments != "Description")
+//                     return 3;
+
+               if (fv.LegalCopyright != "Copyright")
+                       return 4;
+
+               if (fv.LegalTrademarks != "Trademark")
+                       return 5;
+
+               if (fv.ProductVersion != "8.9")
+                       return 6;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-869.cs b/mcs/tests/test-869.cs
new file mode 100644 (file)
index 0000000..a0b2241
--- /dev/null
@@ -0,0 +1,49 @@
+using System;
+
+public class C
+{
+       public static readonly C Token = new C ();
+
+       public static C operator & (C set, E value)
+       {
+               return Token;
+       }
+
+       public static implicit operator E (C c)
+       {
+               throw new ApplicationException ();
+       }
+}
+
+public enum E
+{
+       Item = 2
+}
+
+enum E2
+{
+       A = 0,
+       B,
+       C
+}
+
+class FooClass
+{
+       public static int Main ()
+       {
+               C m = new C ();
+               var x = E.Item;
+               var res = m & x;
+               if (res != C.Token)
+                       return 1;
+
+               res = m & E.Item;
+               if (res != C.Token)
+                       return 2;
+
+               E2 e2 = E2.C;
+
+               int day1 = e2 - E2.A;
+               return 0;       
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-870.cs b/mcs/tests/test-870.cs
new file mode 100644 (file)
index 0000000..5faceb7
--- /dev/null
@@ -0,0 +1,17 @@
+public class Test
+{
+       static void Foo (ushort p)
+       {
+               p = 0x0000;
+               p |= 0x0000;
+               p &= 0x0000;
+
+               const ushort c = 0x0000;
+               p &= c;
+       }
+
+       public static void Main ()
+       {
+               Foo (1);
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-871.cs b/mcs/tests/test-871.cs
new file mode 100644 (file)
index 0000000..19ebf8a
--- /dev/null
@@ -0,0 +1,42 @@
+using System;
+
+class D
+{
+       int arg;
+
+       public D (int arg)
+       {
+               this.arg = arg;
+       }
+
+       public static D operator & (D x, D y)
+       {
+               return new D (100);
+       }
+
+       public static bool operator false (D d)
+       {
+               return false;
+       }
+
+       public static bool operator true (D d)
+       {
+               return true;
+       }
+
+       public static implicit operator D(bool b)
+       {
+               return new D (5);
+       }
+
+       static int Main ()
+       {
+               D d = false && new D (1);
+               Console.WriteLine (d.arg);
+               if (d.arg != 100)
+                       return 1;
+
+               Console.WriteLine ("ok");
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-873.cs b/mcs/tests/test-873.cs
new file mode 100644 (file)
index 0000000..abe3b3b
--- /dev/null
@@ -0,0 +1,28 @@
+using System;
+
+class Program
+{
+       static int Main ()
+       {
+               int foo = 9;
+
+               switch (foo) {
+               case 1:
+                       gotoTarget: 
+                       {
+                               return 0;
+                       }
+               default:
+                       {
+                               if (foo != 0) {
+                                       goto gotoTarget;
+                               }
+
+                               break;
+                       }
+               }
+
+               return 1;
+       }
+}
+
index e101c7b42df1cb4a680bd1be877406c9d920e813..b8f012ee9a2e598b4daf58cba07391494669f1fc 100644 (file)
@@ -93,6 +93,20 @@ class Test
                };
        }
 
+       static Func<T> Catch_2<T> (T t) where T : Exception
+       {
+               T l = t;
+               return () => {
+                       try {
+                               throw new NotSupportedException ();
+                       } catch (T e) {
+                               return l;
+                       } catch {
+                               throw new ApplicationException ("Should not be reached");
+                       }
+               };
+       }
+
        static Func<T> Finally<T> (T t)
        {
                T l = t;
@@ -199,6 +213,11 @@ class Test
                if (t5 () != 3)
                        return 5;
 
+               var ex = new NotSupportedException ();
+               var t5_2 = Catch_2 (ex);
+               if (t5_2 () != ex)
+                       return 52;
+
                var t6 = Finally (5);
                if (t6 () != 0)
                        return 6;
diff --git a/mcs/tests/test-anon-171.cs b/mcs/tests/test-anon-171.cs
new file mode 100644 (file)
index 0000000..ff084d4
--- /dev/null
@@ -0,0 +1,52 @@
+using System;
+
+namespace TestAnonSwitch
+{
+       public class MyClass
+       {
+               public event EventHandler<EventArgs> FirstEvent;
+               public event EventHandler<EventArgs> SecondEvent;
+
+               public void Trigger ()
+               {
+                       if (FirstEvent != null)
+                               FirstEvent (this, EventArgs.Empty);
+               }
+       }
+
+       public class Tester
+       {
+               MyClass myobj;
+
+               public void Test ()
+               {
+                       myobj = new MyClass ();
+                       var something = "key";
+
+                       switch (something) {
+                       case "key":
+                               myobj.FirstEvent += (sender, e) => {
+                                       Console.WriteLine ("FirstEvent: {0}", myobj);
+                               };
+                               break;
+                       case "somethingelse":
+                               bool? woot = null;
+                               myobj.SecondEvent += (sender, e) => {
+                                       Console.WriteLine ("woot {0}", woot);
+                               };
+                               break;
+                       }
+
+                       myobj.Trigger ();
+               }
+       }
+
+       class MainClass
+       {
+               public static void Main ()
+               {
+                       var tester = new Tester ();
+                       tester.Test ();
+               }
+       }
+}
index 4406ee895b2fc491942c10220ad42b787aa77d7f..062f335c83791a1dfd3800e045ee029fa367592e 100644 (file)
@@ -8,6 +8,7 @@ class Program
        {
                public int i;
                public virtual void Print () { Console.WriteLine ("BaseClass.Print"); i = 90; }
+               public virtual void TestOut (out int arg) { arg = 4; }
        }
 
        public class Derived : BaseClass
@@ -17,6 +18,18 @@ class Program
                        Action a = () => base.Print ();
                        a ();
                }
+               
+               public override void TestOut (out int arg)
+               {
+                       int p = 9;
+                       Action a = () => {
+                               base.TestOut (out p);
+                               Console.WriteLine (p);
+                       };
+                       
+                       a ();
+                       arg = p;
+               }
        }
        
        public class DerivedLibrary : BaseClassLibrary
@@ -35,12 +48,17 @@ class Program
 
                if (d.i != 90)
                        return 1;
+               
+               int arg;
+               d.TestOut (out arg);
+               if (arg != 4)
+                       return 2;
 
                var d2 = new DerivedLibrary ();
                d2.Print (0);
 
                if (d2.i != 30)
-                       return 2;
+                       return 3;
 
                return 0;
        }
index 54aabc3f37b478ce6e1137a45cbb8080fc779ea7..ea7fd528df15dfb3db2fb69a6ec14748ea40bda7 100644 (file)
@@ -353,6 +353,15 @@ class Tester : Base
                return 0;
        }
 
+       async Task<bool> BinaryTest_6 ()
+       {
+               var t = Task.Delay (1);
+               if (t == await Task.WhenAny(new [] { t }))
+                       return true;
+
+               return false;
+       }
+
        async Task<int> CallTest_1 ()
        {
                return Call (
index e2a361403c7ea8f95a872e5cdb11a220df44649d..3e0350012b945ee2c7bd643e1288139012fe8b19 100644 (file)
@@ -2,8 +2,7 @@ using System;
 using System.Threading.Tasks;
 
 // contextual async, parser tests
-
-class A
+class A : Iasync
 {
        async Task<int> async ()
        {
@@ -21,6 +20,10 @@ class A
                var res = (int) await async ();
                var res2 = (Int32) await async ();
        }
+       
+       async void Iasync.async ()
+       {
+       }
 
        public static int Main ()
        {
@@ -28,6 +31,11 @@ class A
        }
 }
 
+interface Iasync
+{
+       void async ();
+}
+
 class B
 {
        class async
diff --git a/mcs/tests/test-async-42.cs b/mcs/tests/test-async-42.cs
new file mode 100644 (file)
index 0000000..bb2dee6
--- /dev/null
@@ -0,0 +1,45 @@
+using System;
+using System.Threading.Tasks;
+
+class A
+{
+       public Task<int> OpenAsync ()
+       {
+               return Task.FromResult (0);
+       }
+}
+
+class C
+{
+       public static int Main ()
+       {
+               var c = new C ();
+               return c.Foo ().Result;
+       }
+
+       public A Connection
+       {
+               get
+               {
+                       return new A ();
+               }
+       }
+
+       async Task<int> Foo ()
+       {
+               {
+                       await Test (
+                               async () => {
+                                       await Connection.OpenAsync ();
+                               });
+               }
+
+               return 0;
+       }
+
+       T Test<T> (Func<T> func)
+       {
+               return func ();
+       }
+}
+
diff --git a/mcs/tests/test-async-47.cs b/mcs/tests/test-async-47.cs
new file mode 100644 (file)
index 0000000..4b6af22
--- /dev/null
@@ -0,0 +1,39 @@
+using System;
+
+class C
+{
+       public static void Main ()
+       {
+               new C ().Test ();
+       }
+
+       void Test ()
+       {
+               var v = new View ();
+               v.Click += async (o, e) => {
+                       var b = new Builder ();
+                       b.SetButton (() => {
+                               Console.WriteLine (this);
+                       });
+               };
+               v.Run ();
+       }
+}
+
+class View
+{
+       public event EventHandler Click;
+
+       public void Run ()
+       {
+               Click (null, null);
+       }
+}
+
+class Builder
+{
+       public void SetButton (Action h)
+       {
+               h ();
+       }
+}
diff --git a/mcs/tests/test-async-48.cs b/mcs/tests/test-async-48.cs
new file mode 100644 (file)
index 0000000..a0aefb1
--- /dev/null
@@ -0,0 +1,21 @@
+using System.Threading.Tasks;
+using System;
+
+public class App
+{
+       X _x = new X ();
+
+       public async Task Test ()
+       {
+               await Task.Run (new Func<Task> (async () => _x.ToString ()));
+       }
+}
+
+class X
+{
+       public static void Main ()
+       {
+               var app = new App ();
+               app.Test ().Wait ();
+       }
+}
diff --git a/mcs/tests/test-async-49.cs b/mcs/tests/test-async-49.cs
new file mode 100644 (file)
index 0000000..e76faf8
--- /dev/null
@@ -0,0 +1,45 @@
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using System.Threading.Tasks;
+
+class TodoItem
+{
+}
+
+internal class MobileServiceTable2<T>
+{
+       public Task<List<T>> ToListAsync ()
+       {
+               var r = new List<T> ();
+               r.Add (default (T));
+               return Task.FromResult<List<T>> (r);
+       }
+}
+
+public class Tests
+{
+       int foo (Action t)
+       {
+               t ();
+               return 0;
+       }
+
+       private void OnTap (TodoItem task)
+       {
+       }
+
+       private async Task RefreshAsync ()
+       {
+               var ta = new MobileServiceTable2<TodoItem> ();
+               var r = await ta.ToListAsync ();
+
+               r.Select<TodoItem, int> (t => foo (() => OnTap (t))).ToList ();
+       }
+
+       public static void Main (String[] args)
+       {
+               var t = new Tests ();
+               t.RefreshAsync ().Wait ();
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-async-50.cs b/mcs/tests/test-async-50.cs
new file mode 100644 (file)
index 0000000..ad9f004
--- /dev/null
@@ -0,0 +1,31 @@
+using System.Threading.Tasks;
+using System;
+
+class X
+{
+       static void Main ()
+       {
+               var x = new X ();
+               x.Run ().Wait ();
+       }
+
+       Task<int> AnimateAsync (Action callback)
+       {
+               callback ();
+               return Task.FromResult (2);
+       }
+
+       void SecondLevel (Action callback)
+       {
+               callback ();
+       }
+
+       async Task Run ()
+       {
+               var ret = await AnimateAsync (() => {
+                       SecondLevel (() => {
+                               Console.WriteLine (this);
+                       });
+               });
+       }
+}
diff --git a/mcs/tests/test-async-51.cs b/mcs/tests/test-async-51.cs
new file mode 100644 (file)
index 0000000..65f1511
--- /dev/null
@@ -0,0 +1,33 @@
+using System;
+using System.Threading.Tasks;
+
+public class Program
+{
+       public static void Main (string[] args)
+       {
+               var p = new Program ();
+               p.LoadPlayers ().Wait ();
+       }
+
+       class Model
+       {
+               public Player SelectedPlayer { get; set; }
+       }
+
+       class Player
+       {
+       }
+
+       Model model = new Model ();
+
+       private async Task LoadPlayers ()
+       {
+               Action<Player> selectPlayer = player => { };
+               Func<Action<Player>, Action<Player>> selector = functor => player => {
+                       Console.WriteLine (model);
+               };
+
+               selector (selectPlayer);
+       }
+
+}
\ No newline at end of file
diff --git a/mcs/tests/test-async-52.cs b/mcs/tests/test-async-52.cs
new file mode 100644 (file)
index 0000000..36230ac
--- /dev/null
@@ -0,0 +1,23 @@
+using System;
+using System.Threading.Tasks;
+
+public delegate T ActualValueDelegate<T> ();
+
+class X
+{
+       public static void Main ()
+       {
+               Matches (async () => await Throw());
+       }
+
+       static bool Matches<T>(ActualValueDelegate<T> del) where T : Task
+       {
+               del ().Wait ();
+               return true;
+       }
+
+       static async Task Throw()
+       {
+               await Task.Delay (1);
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-async-53.cs b/mcs/tests/test-async-53.cs
new file mode 100644 (file)
index 0000000..3ffee8c
--- /dev/null
@@ -0,0 +1,27 @@
+using System;
+
+class Y
+{
+}
+
+class X
+{
+       public event Action<int, string> E;
+
+       void Foo ()
+       {
+               var nc = new Y ();
+
+               E += async (arg1, arg2) => {
+                       nc = null;
+               };
+
+               E (1, "h");
+       }
+
+       public static void Main ()
+       {
+               var x = new X ();
+               x.Foo ();
+       }
+}
\ No newline at end of file
index 4181816941a75c39217ec50e9ec9d9a3258856df..031aecb8fac8acf6605b520e591afba5e32cc72c 100644 (file)
@@ -44,6 +44,7 @@
       <sequencepoints>
         <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="5" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2" row="5" col="3" file_ref="1" hidden="false" />
         <entry il="0x7" row="6" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
index 5d0b5d1f2160c244ce54c149abc20b19282bf9bc..3792704d7124f56d7b49f02d6a22bbbf295a5934 100644 (file)
@@ -15,7 +15,7 @@
     <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="12" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="13" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="13" col="10" file_ref="1" hidden="false" />
         <entry il="0x6" row="13" col="26" file_ref="1" hidden="false" />
         <entry il="0x16" row="14" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
@@ -41,6 +41,7 @@
         <entry il="0x1" row="25" col="10" file_ref="1" hidden="false" />
         <entry il="0x9" row="26" col="3" file_ref="1" hidden="false" />
         <entry il="0xa" row="27" col="3" file_ref="1" hidden="false" />
+        <entry il="0x18" row="25" col="14" file_ref="1" hidden="false" />
         <entry il="0x1e" row="28" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
@@ -58,6 +59,8 @@
         <entry il="0x9" row="32" col="26" file_ref="1" hidden="false" />
         <entry il="0x11" row="33" col="3" file_ref="1" hidden="false" />
         <entry il="0x12" row="34" col="3" file_ref="1" hidden="false" />
+        <entry il="0x20" row="32" col="26" file_ref="1" hidden="false" />
+        <entry il="0x33" row="32" col="12" file_ref="1" hidden="false" />
         <entry il="0x39" row="35" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
@@ -75,6 +78,7 @@
         <entry il="0x1" row="39" col="10" file_ref="1" hidden="false" />
         <entry il="0x10" row="40" col="3" file_ref="1" hidden="false" />
         <entry il="0x11" row="41" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2e" row="39" col="13" file_ref="1" hidden="false" />
         <entry il="0x34" row="42" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
     <method token="0x6000008">
       <sequencepoints>
         <entry il="0x0" row="45" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="46" col="10" file_ref="1" hidden="false" />
+        <entry il="0x1" row="46" col="19" file_ref="1" hidden="false" />
         <entry il="0x7" row="47" col="3" file_ref="1" hidden="false" />
         <entry il="0x8" row="48" col="4" file_ref="1" hidden="false" />
+        <entry il="0xd" row="48" col="12" file_ref="1" hidden="false" />
         <entry il="0x12" row="49" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1f" row="46" col="14" file_ref="1" hidden="false" />
         <entry il="0x25" row="50" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
       </sequencepoints>
       <locals />
       <scopes>
-        <entry index="0" start="0x22" end="0x3c" />
+        <entry index="0" start="0x1" end="0x3c" />
         <entry index="1" start="0x28" end="0x2d" />
       </scopes>
     </method>
       </sequencepoints>
       <locals />
       <scopes>
-        <entry index="0" start="0x28" end="0x38" />
+        <entry index="0" start="0x15" end="0x38" />
         <entry index="1" start="0x2e" end="0x33" />
       </scopes>
     </method>
       <sequencepoints>
         <entry il="0x0" row="103" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="105" col="3" file_ref="1" hidden="false" />
+        <entry il="0x86" row="104" col="3" file_ref="1" hidden="false" />
         <entry il="0xb3" row="107" col="5" file_ref="1" hidden="false" />
         <entry il="0xb8" row="109" col="4" file_ref="1" hidden="false" />
         <entry il="0xb9" row="110" col="5" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes>
-        <entry index="0" start="0xb3" end="0xd2" />
+        <entry index="0" start="0x1" end="0xd2" />
         <entry index="1" start="0xb9" end="0xbe" />
       </scopes>
     </method>
       </sequencepoints>
       <locals />
       <scopes>
-        <entry index="0" start="0x2c" end="0x3b" />
+        <entry index="0" start="0x1" end="0x3b" />
       </scopes>
     </method>
     <method token="0x600000f">
         <entry il="0x1" row="175" col="3" file_ref="1" hidden="false" />
         <entry il="0x2" row="176" col="3" file_ref="1" hidden="false" />
         <entry il="0x3" row="177" col="4" file_ref="1" hidden="false" />
+        <entry il="0x8" row="177" col="12" file_ref="1" hidden="false" />
         <entry il="0xd" row="178" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <sequencepoints>
         <entry il="0x0" row="182" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="183" col="3" file_ref="1" hidden="false" />
+        <entry il="0x7" row="183" col="7" file_ref="1" hidden="false" />
         <entry il="0x11" row="184" col="3" file_ref="1" hidden="false" />
         <entry il="0x12" row="185" col="3" file_ref="1" hidden="false" />
         <entry il="0x18" row="187" col="3" file_ref="1" hidden="false" />
       <sequencepoints>
         <entry il="0x0" row="192" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="193" col="3" file_ref="1" hidden="false" />
+        <entry il="0x7" row="193" col="7" file_ref="1" hidden="false" />
         <entry il="0x11" row="194" col="3" file_ref="1" hidden="false" />
         <entry il="0x12" row="195" col="3" file_ref="1" hidden="false" />
         <entry il="0x18" row="196" col="8" file_ref="1" hidden="false" />
+        <entry il="0x1e" row="196" col="12" file_ref="1" hidden="false" />
         <entry il="0x28" row="197" col="3" file_ref="1" hidden="false" />
         <entry il="0x29" row="198" col="3" file_ref="1" hidden="false" />
         <entry il="0x2f" row="200" col="3" file_ref="1" hidden="false" />
         <entry il="0x1e" row="243" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
-        <entry name="a" il_index="0" scope_ref="0" />
+        <entry name="a" il_index="0" scope_ref="1" />
       </locals>
       <scopes>
-        <entry index="0" start="0xf" end="0x11" />
-        <entry index="1" start="0x10" end="0x10" />
+        <entry index="0" start="0x1" end="0x1e" />
+        <entry index="1" start="0xf" end="0x11" />
+        <entry index="2" start="0x10" end="0x10" />
       </scopes>
     </method>
     <method token="0x6000019">
         <entry il="0x0" row="246" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="247" col="3" file_ref="1" hidden="false" />
         <entry il="0x2" row="250" col="3" file_ref="1" hidden="false" />
+        <entry il="0x3" row="250" col="3" file_ref="1" hidden="false" />
         <entry il="0xe" row="248" col="4" file_ref="1" hidden="false" />
+        <entry il="0x10" row="250" col="3" file_ref="1" hidden="false" />
         <entry il="0x16" row="251" col="3" file_ref="1" hidden="false" />
         <entry il="0x17" row="252" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1a" row="250" col="3" file_ref="1" hidden="false" />
+        <entry il="0x31" row="250" col="3" file_ref="1" hidden="false" />
         <entry il="0x37" row="253" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
-        <entry name="a" il_index="0" scope_ref="0" />
+        <entry name="a" il_index="0" scope_ref="1" />
       </locals>
       <scopes>
-        <entry index="0" start="0x16" end="0x18" />
-        <entry index="1" start="0x17" end="0x17" />
+        <entry index="0" start="0x1" end="0x37" />
+        <entry index="1" start="0x16" end="0x18" />
+        <entry index="2" start="0x17" end="0x17" />
       </scopes>
     </method>
     <method token="0x600001a">
         <entry il="0x0" row="256" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="257" col="3" file_ref="1" hidden="false" />
         <entry il="0x2" row="260" col="3" file_ref="1" hidden="false" />
+        <entry il="0x4" row="260" col="3" file_ref="1" hidden="false" />
         <entry il="0xf" row="258" col="4" file_ref="1" hidden="false" />
+        <entry il="0x10" row="260" col="3" file_ref="1" hidden="false" />
         <entry il="0x16" row="261" col="3" file_ref="1" hidden="false" />
         <entry il="0x17" row="262" col="3" file_ref="1" hidden="false" />
+        <entry il="0x19" row="260" col="3" file_ref="1" hidden="false" />
         <entry il="0x3c" row="263" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
-        <entry name="a" il_index="0" scope_ref="0" />
+        <entry name="a" il_index="0" scope_ref="1" />
       </locals>
       <scopes>
-        <entry index="0" start="0x16" end="0x18" />
-        <entry index="1" start="0x17" end="0x17" />
+        <entry index="0" start="0x1" end="0x3c" />
+        <entry index="1" start="0x16" end="0x18" />
+        <entry index="2" start="0x17" end="0x17" />
       </scopes>
     </method>
     <method token="0x600001b">
         <entry il="0x0" row="266" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="267" col="3" file_ref="1" hidden="false" />
         <entry il="0x2" row="269" col="6" file_ref="1" hidden="false" />
+        <entry il="0x6" row="269" col="6" file_ref="1" hidden="false" />
+        <entry il="0xe" row="269" col="6" file_ref="1" hidden="false" />
         <entry il="0x24" row="268" col="3" file_ref="1" hidden="false" />
         <entry il="0x2f" row="270" col="3" file_ref="1" hidden="false" />
         <entry il="0x30" row="271" col="3" file_ref="1" hidden="false" />
         <entry il="0x4d" row="272" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
-        <entry name="a" il_index="0" scope_ref="0" />
+        <entry name="a" il_index="0" scope_ref="1" />
       </locals>
       <scopes>
-        <entry index="0" start="0x2f" end="0x31" />
-        <entry index="1" start="0x30" end="0x30" />
+        <entry index="0" start="0x1" end="0x4d" />
+        <entry index="1" start="0x2f" end="0x31" />
+        <entry index="2" start="0x30" end="0x30" />
       </scopes>
     </method>
   </methods>
index e9d76ccc3802a75944049c24de92d7fed31e966f..9bae89796d0373e1f1a8574ec2b53c561712f9ee 100644 (file)
@@ -52,6 +52,7 @@
     </method>
     <method token="0x6000006">
       <sequencepoints>
+        <entry il="0x0" row="34" col="2" file_ref="1" hidden="false" />
         <entry il="0xd" row="34" col="2" file_ref="1" hidden="false" />
         <entry il="0xe" row="35" col="3" file_ref="1" hidden="false" />
         <entry il="0x1b" row="37" col="2" file_ref="1" hidden="false" />
@@ -63,7 +64,7 @@
     </method>
     <method token="0x6000007">
       <sequencepoints>
-        <entry il="0x0" row="13" col="3" file_ref="1" hidden="false" />
+        <entry il="0x0" row="13" col="11" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
@@ -71,7 +72,7 @@
     <method token="0x6000008">
       <sequencepoints>
         <entry il="0x0" row="20" col="3" file_ref="1" hidden="false" />
-        <entry il="0x1" row="21" col="4" file_ref="1" hidden="false" />
+        <entry il="0x1" row="21" col="12" file_ref="1" hidden="false" />
         <entry il="0x6" row="22" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
@@ -80,7 +81,7 @@
     <method token="0x6000009">
       <sequencepoints>
         <entry il="0x0" row="28" col="3" file_ref="1" hidden="false" />
-        <entry il="0x1" row="29" col="4" file_ref="1" hidden="false" />
+        <entry il="0x1" row="29" col="12" file_ref="1" hidden="false" />
         <entry il="0x6" row="30" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
index 48404440a0df1051b5f348b13cb33e64e8223e6b..323939003d52a24bae3878e753ad28fe9e899b67 100644 (file)
@@ -13,6 +13,8 @@
       <sequencepoints>
         <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="7" col="3" file_ref="1" hidden="false" />
+        <entry il="0xb" row="7" col="21" file_ref="1" hidden="false" />
+        <entry il="0x16" row="5" col="6" file_ref="1" hidden="false" />
         <entry il="0x1c" row="8" col="5" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
index 6c9c492e40a4b920591dd347e71f0a742ed521d3..083ef56c2c0b9fff32c79c828a440e78e72e9a83 100644 (file)
     <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="14" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="15" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="15" col="11" file_ref="1" hidden="false" />
         <entry il="0x7" row="17" col="4" file_ref="1" hidden="false" />
+        <entry il="0xe" row="17" col="4" file_ref="1" hidden="false" />
         <entry il="0x13" row="20" col="4" file_ref="1" hidden="false" />
+        <entry il="0x1a" row="20" col="4" file_ref="1" hidden="false" />
         <entry il="0x21" row="24" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
@@ -33,7 +35,7 @@
     <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="27" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="28" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="28" col="14" file_ref="1" hidden="false" />
         <entry il="0x7" row="30" col="4" file_ref="1" hidden="false" />
         <entry il="0x12" row="31" col="4" file_ref="1" hidden="false" />
         <entry il="0x1b" row="33" col="2" file_ref="1" hidden="false" />
index cf51ed208c79b7d0f899c2edcac1385ce9f16cd7..8c966ef91e8f63f76b24bf0f422a520846f0427b 100644 (file)
     </method>
     <method token="0x6000003">
       <sequencepoints>
+        <entry il="0xf" row="13" col="5" file_ref="1" hidden="false" />
+        <entry il="0x24" row="13" col="8" file_ref="1" hidden="false" />
         <entry il="0x2a" row="11" col="2" file_ref="1" hidden="false" />
         <entry il="0x2b" row="12" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2d" row="14" col="4" file_ref="1" hidden="false" />
+        <entry il="0x40" row="13" col="4" file_ref="1" hidden="false" />
         <entry il="0x46" row="16" col="3" file_ref="1" hidden="false" />
         <entry il="0x4b" row="17" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
@@ -33,6 +37,9 @@
       <sequencepoints>
         <entry il="0x0" row="20" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="21" col="3" file_ref="1" hidden="false" />
+        <entry il="0x11" row="21" col="59" file_ref="1" hidden="false" />
+        <entry il="0x1c" row="21" col="53" file_ref="1" hidden="false" />
+        <entry il="0x2c" row="21" col="47" file_ref="1" hidden="false" />
         <entry il="0x32" row="22" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
index 7961bca8a067fb15475cddf89c9f191b9978e31d..df5bd3c1056b17ed31ac2bef3ff4e5136eddb894 100644 (file)
@@ -67,7 +67,7 @@
         <entry il="0x0" row="30" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="31" col="3" file_ref="1" hidden="false" />
         <entry il="0x7" row="32" col="3" file_ref="1" hidden="false" />
-        <entry il="0xe" row="33" col="3" file_ref="1" hidden="false" />
+        <entry il="0xe" row="33" col="15" file_ref="1" hidden="false" />
         <entry il="0x14" row="34" col="3" file_ref="1" hidden="false" />
         <entry il="0x81" row="35" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
@@ -81,7 +81,7 @@
     <method token="0x6000009">
       <sequencepoints>
         <entry il="0x0" row="38" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="39" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="39" col="15" file_ref="1" hidden="false" />
         <entry il="0x7" row="40" col="3" file_ref="1" hidden="false" />
         <entry il="0x1e4" row="41" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
index 9e557b6733fdffb4ad0f8e468057c9ace70a8047..5c426ff09e890e4bfd053b7a1b20523b2751db35 100644 (file)
@@ -25,7 +25,7 @@
     <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="16" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="17" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="17" col="15" file_ref="1" hidden="false" />
         <entry il="0x23" row="17" col="23" file_ref="1" hidden="false" />
         <entry il="0x2e" row="21" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
@@ -40,7 +40,7 @@
     <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="29" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="30" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="30" col="15" file_ref="1" hidden="false" />
         <entry il="0x23" row="30" col="23" file_ref="1" hidden="false" />
         <entry il="0x2e" row="31" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
@@ -99,6 +99,7 @@
       <sequencepoints>
         <entry il="0x21" row="34" col="2" file_ref="1" hidden="false" />
         <entry il="0x22" row="35" col="3" file_ref="1" hidden="false" />
+        <entry il="0x23" row="35" col="15" file_ref="1" hidden="false" />
         <entry il="0x2d" row="36" col="3" file_ref="1" hidden="false" />
         <entry il="0x8b" row="37" col="3" file_ref="1" hidden="false" />
         <entry il="0x3ab" row="38" col="3" file_ref="1" hidden="false" />
index a6af337137c7da45c8d30df948875f53239721e1..287791e7eb28203960a0b2699023ef6fa949b6ba 100644 (file)
@@ -41,6 +41,7 @@
       <sequencepoints>
         <entry il="0x27" row="7" col="2" file_ref="1" hidden="false" />
         <entry il="0x28" row="8" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2d" row="8" col="11" file_ref="1" hidden="false" />
         <entry il="0x32" row="9" col="3" file_ref="1" hidden="false" />
         <entry il="0x41" row="10" col="3" file_ref="1" hidden="false" />
         <entry il="0x42" row="11" col="4" file_ref="1" hidden="false" />
@@ -77,6 +78,7 @@
       <sequencepoints>
         <entry il="0x0" row="14" col="3" file_ref="1" hidden="false" />
         <entry il="0x1" row="15" col="4" file_ref="1" hidden="false" />
+        <entry il="0x6" row="15" col="12" file_ref="1" hidden="false" />
         <entry il="0xb" row="16" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
index 75fe231b6a569b382719c9a5fc2a72be14ca9d3f..c380f599bb1c66f931447c41d71fca1a9c3ebd7f 100644 (file)
@@ -31,7 +31,7 @@
     <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="20" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="21" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1" row="21" col="9" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
@@ -68,6 +68,7 @@
       <sequencepoints>
         <entry il="0x21" row="15" col="2" file_ref="1" hidden="false" />
         <entry il="0x22" row="16" col="3" file_ref="1" hidden="false" />
+        <entry il="0x29" row="16" col="21" file_ref="1" hidden="false" />
         <entry il="0x47" row="17" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
index c1fba7edd1a4f91de7f0cd44349f810370f80b75..5c15ce75a8098c82d1b0d0882983cdb2c7b34281 100644 (file)
@@ -22,6 +22,7 @@
       <sequencepoints>
         <entry il="0x0" row="8" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="9" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2" row="9" col="3" file_ref="1" hidden="false" />
         <entry il="0x7" row="9" col="8" file_ref="1" hidden="false" />
         <entry il="0xd" row="10" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
@@ -32,6 +33,7 @@
       <sequencepoints>
         <entry il="0x0" row="13" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="14" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2" row="14" col="3" file_ref="1" hidden="false" />
         <entry il="0x7" row="14" col="11" file_ref="1" hidden="false" />
         <entry il="0xd" row="15" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
@@ -53,6 +55,7 @@
         <entry il="0x0" row="23" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="24" col="3" file_ref="1" hidden="false" />
         <entry il="0x1f" row="25" col="3" file_ref="1" hidden="false" />
+        <entry il="0x20" row="25" col="3" file_ref="1" hidden="false" />
         <entry il="0x25" row="25" col="8" file_ref="1" hidden="false" />
         <entry il="0x2b" row="26" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
index 6a0622205d9f95b36a5e8672784ad22c9264032e..11ff400fed595a2f322d60fd1c11bdc61d13087d 100644 (file)
@@ -12,8 +12,8 @@
     <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="7" col="3" file_ref="1" hidden="false" />
-        <entry il="0x7" row="7" col="30" file_ref="1" hidden="false" />
+        <entry il="0x1" row="7" col="14" file_ref="1" hidden="false" />
+        <entry il="0x7" row="7" col="34" file_ref="1" hidden="false" />
         <entry il="0xd" row="8" col="2" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals>
diff --git a/mcs/tests/test-debug-27-ref.xml b/mcs/tests/test-debug-27-ref.xml
new file mode 100644 (file)
index 0000000..5509d00
--- /dev/null
@@ -0,0 +1,125 @@
+<?xml version="1.0" encoding="utf-8"?>
+<symbols>
+  <files>
+    <file id="1" name="test-debug-27.cs" checksum="4a2fa40aa27e1d498f61d664c985ddf2" />
+  </files>
+  <methods>
+    <method token="0x6000001">
+      <sequencepoints>
+        <entry il="0x0" row="8" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="10" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
+      <sequencepoints>
+        <entry il="0x0" row="13" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="14" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="15" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000003">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000004">
+      <sequencepoints>
+        <entry il="0x0" row="21" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="22" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="23" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000005">
+      <sequencepoints>
+        <entry il="0x0" row="26" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="27" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="28" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000006">
+      <sequencepoints>
+        <entry il="0x0" row="31" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="32" col="10" file_ref="1" hidden="false" />
+        <entry il="0xc" row="33" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000007">
+      <sequencepoints>
+        <entry il="0x0" row="36" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="37" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="38" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000008">
+      <sequencepoints>
+        <entry il="0x0" row="41" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="42" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1f" row="44" col="3" file_ref="1" hidden="false" />
+        <entry il="0x20" row="44" col="13" file_ref="1" hidden="false" />
+        <entry il="0x26" row="44" col="20" file_ref="1" hidden="false" />
+        <entry il="0x2d" row="45" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals>
+        <entry name="f" il_index="0" scope_ref="0" />
+        <entry name="res" il_index="1" scope_ref="0" />
+      </locals>
+      <scopes />
+    </method>
+    <method token="0x6000009">
+      <sequencepoints>
+        <entry il="0x0" row="48" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="49" col="3" file_ref="1" hidden="false" />
+        <entry il="0x4" row="49" col="11" file_ref="1" hidden="false" />
+        <entry il="0x9" row="50" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals>
+        <entry name="s" il_index="0" scope_ref="0" />
+      </locals>
+      <scopes />
+    </method>
+    <method token="0x600000a">
+      <sequencepoints>
+        <entry il="0x0" row="53" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="54" col="3" file_ref="1" hidden="false" />
+        <entry il="0xa" row="54" col="11" file_ref="1" hidden="false" />
+        <entry il="0x18" row="54" col="22" file_ref="1" hidden="false" />
+        <entry il="0x1f" row="55" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals>
+        <entry name="i" il_index="0" scope_ref="0" />
+      </locals>
+      <scopes />
+    </method>
+    <method token="0x600000b">
+      <sequencepoints>
+        <entry il="0x0" row="58" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="59" col="3" file_ref="1" hidden="false" />
+        <entry il="0x6" row="59" col="11" file_ref="1" hidden="false" />
+        <entry il="0xc" row="60" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x600000c">
+      <sequencepoints>
+        <entry il="0x0" row="63" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="64" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="65" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+  </methods>
+</symbols>
\ No newline at end of file
diff --git a/mcs/tests/test-debug-27.cs b/mcs/tests/test-debug-27.cs
new file mode 100644 (file)
index 0000000..982b42c
--- /dev/null
@@ -0,0 +1,68 @@
+using System;
+
+// Tests for explicit call sequence point
+
+struct S
+{
+       public S (int i)
+       {
+
+       }
+
+       public static implicit operator int (S s)
+       {
+               return 1;
+       }
+}
+
+class C
+{
+       public static int A ()
+       {
+               return 1;
+       }
+
+       public static int B (C c)
+       {
+               return 2;
+       }
+
+       public static C Test ()
+       {
+               return new C ();
+       }
+
+       public string Foo ()
+       {
+               return null;
+       }
+
+       void Test_1 ()
+       {
+               Func<int> f = A;
+
+               var res = f () + f ();
+       }
+
+       void Test_2 ()
+       {
+               var s = new S (0);
+       }
+
+       void Test_3 ()
+       {
+               int i = new S () + new S ();
+       }
+
+       void Test_4 ()
+       {
+               Test ().Foo ();
+       }
+
+       static int Main ()
+       {
+               return 0;
+       }
+}
+
+
diff --git a/mcs/tests/test-debug-28-ref.xml b/mcs/tests/test-debug-28-ref.xml
new file mode 100644 (file)
index 0000000..d4a51b8
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="utf-8"?>
+<symbols>
+  <files>
+    <file id="1" name="test-debug-28.cs" checksum="0908758b6671839a79620b83da354859" />
+  </files>
+  <methods>
+    <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
+      <sequencepoints>
+        <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="5" col="3" file_ref="1" hidden="false" />
+        <entry il="0x2" row="5" col="21" file_ref="1" hidden="false" />
+        <entry il="0xb" row="5" col="12" file_ref="1" hidden="false" />
+        <entry il="0xf" row="5" col="21" file_ref="1" hidden="false" />
+        <entry il="0x1c" row="7" col="3" file_ref="1" hidden="false" />
+        <entry il="0x1d" row="7" col="21" file_ref="1" hidden="false" />
+        <entry il="0x28" row="7" col="12" file_ref="1" hidden="false" />
+        <entry il="0x2e" row="7" col="21" file_ref="1" hidden="false" />
+        <entry il="0x3f" row="9" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals>
+        <entry name="v" il_index="0" scope_ref="1" />
+        <entry name="v" il_index="3" scope_ref="3" />
+      </locals>
+      <scopes>
+        <entry index="0" start="0x1" end="0x1c" />
+        <entry index="1" start="0xf" end="0xf" />
+        <entry index="2" start="0x1c" end="0x3f" />
+        <entry index="3" start="0x2e" end="0x2e" />
+      </scopes>
+    </method>
+    <method token="0x6000003">
+      <sequencepoints>
+        <entry il="0x0" row="12" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="13" col="3" file_ref="1" hidden="false" />
+        <entry il="0x8" row="14" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+  </methods>
+</symbols>
\ No newline at end of file
diff --git a/mcs/tests/test-debug-28.cs b/mcs/tests/test-debug-28.cs
new file mode 100644 (file)
index 0000000..8aa9f69
--- /dev/null
@@ -0,0 +1,15 @@
+public class StatementsAsBlocks
+{
+       static void ForEach (string[] args)
+       {
+               foreach (var v in args)
+                       ;
+               foreach (var v in args)
+                       ;
+       }
+       
+       public static int Main ()
+       {
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-named-08.cs b/mcs/tests/test-named-08.cs
new file mode 100644 (file)
index 0000000..6d25be4
--- /dev/null
@@ -0,0 +1,28 @@
+using System;
+
+
+class C
+{
+       static int Foo (string packageId, int version)
+       {
+               return Foo (packageId, version, ignoreDependencies: false, allowPrereleaseVersions: false);
+       }
+
+       static int Foo (string packageId, int version, bool ignoreDependencies, bool allowPrereleaseVersions)
+       {
+               return 1;
+       }
+
+       static int Foo (double package, bool ignoreDependencies, bool allowPrereleaseVersions, bool ignoreWalkInfo)
+       {
+               return 2;
+       }
+
+       public static int Main ()
+       {
+               if (Foo ("", 1) != 1)
+                       return 1;
+
+               return 0;
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-partial-31.cs b/mcs/tests/test-partial-31.cs
new file mode 100644 (file)
index 0000000..849fabd
--- /dev/null
@@ -0,0 +1,45 @@
+using System;
+
+namespace TestPartialOverride.BaseNamespace
+{
+       public abstract class Base
+       {
+               protected virtual void OverrideMe ()
+               {
+                       Console.Out.WriteLine ("OverrideMe");
+               }
+       }
+}
+
+namespace TestPartialOverride.Outer.Nested.Namespace
+{
+       internal partial class Inherits
+       {
+               protected override void OverrideMe ()
+               {
+                       Console.Out.WriteLine ("Overridden");
+               }
+       }
+}
+
+namespace TestPartialOverride.Outer
+{
+       namespace Nested.Namespace
+       {
+               internal partial class Inherits : TestPartialOverride.BaseNamespace.Base
+               {
+                       public void DoesSomethignElse ()
+                       {
+                               OverrideMe ();
+                       }
+               }
+       }
+
+       public class C
+       {
+               public static void Main ()
+               {
+                       new TestPartialOverride.Outer.Nested.Namespace.Inherits ().DoesSomethignElse ();
+               }
+       }
+}
diff --git a/mcs/tests/test-partial-32.cs b/mcs/tests/test-partial-32.cs
new file mode 100644 (file)
index 0000000..0fb0cd5
--- /dev/null
@@ -0,0 +1,36 @@
+namespace A
+{
+       using X;
+
+       partial class C
+       {
+               private class N : N1
+               {
+               }
+
+               public static void Main ()
+               {                       
+               }
+       }
+}
+
+namespace A
+{
+       using X;
+
+       partial class C : C1
+       {
+       }
+}
+
+
+namespace X
+{
+       public class C1
+       {
+               public class N1
+               {
+
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tests/test-xml-068-ref.xml b/mcs/tests/test-xml-068-ref.xml
new file mode 100644 (file)
index 0000000..480a34d
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0"?>
+<doc>
+    <assembly>
+        <name>test-xml-068</name>
+    </assembly>
+    <members>
+        <member name="M:X.Test">
+            <summary>
+            Test summary
+            </summary>
+            <see cref="!:#sometext" />
+        </member>
+    </members>
+</doc>
diff --git a/mcs/tests/test-xml-068.cs b/mcs/tests/test-xml-068.cs
new file mode 100644 (file)
index 0000000..0ca6157
--- /dev/null
@@ -0,0 +1,16 @@
+// Compiler options: -doc:xml-068.xml
+
+class X
+{
+       /// <summary>
+       /// Test summary
+       /// </summary>
+       /// <see cref="#sometext"/>
+       static void Test ()
+       {
+       }
+
+       public static void Main ()
+       {
+       }
+}
\ No newline at end of file
index eb62c5933b22e7f9df61e87abd497b91c24c7267..dae7b950133533cf9e3215293c77a950a32629c2 100644 (file)
@@ -41,7 +41,7 @@
     </type>\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>1216</size>\r
+        <size>1292</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       <method name="Void Assert[T](T, T, System.String)" attrs="145">\r
         <size>99</size>\r
       </method>\r
-      <method name="Void Assert[T](IList`1, IList`1, System.String)" attrs="145">\r
-        <size>257</size>\r
-      </method>\r
       <method name="Void AssertArgument(System.Runtime.CompilerServices.CallSiteBinder, Microsoft.CSharp.RuntimeBinder.CSharpArgumentInfo[], System.String)" attrs="145">\r
         <size>172</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>187</size>\r
       </method>\r
-      <method name="Void &lt;BinaryAdd_1&gt;m__4(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor(Object)" attrs="6278">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .cctor()" attrs="6289">\r
+        <size>34</size>\r
+      </method>\r
+    </type>\r
+    <type name="AssertDynamicObject+&lt;GetFakeMetaObject&gt;c__AnonStorey0">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;InvokeMember_3&gt;c__DynamicSite32+Container0">\r
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;InvokeMember_4&gt;c__DynamicSite33+Container0">\r
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;InvokeMember_8&gt;c__DynamicSite37+Container0">\r
+      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, System.Object ByRef)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester">\r
+      <method name="Void Assert[T](System.Collections.Generic.IList`1[T], System.Collections.Generic.IList`1[T], System.String)" attrs="145">\r
+        <size>257</size>\r
+      </method>\r
+      <method name="Void &lt;BinaryAdd_1&gt;m__0(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>73</size>\r
       </method>\r
-      <method name="Void &lt;BinaryAdd_2&gt;m__5(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryAdd_2&gt;m__1(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>68</size>\r
       </method>\r
-      <method name="Void &lt;BinaryAdd_3&gt;m__6(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryAdd_3&gt;m__2(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>73</size>\r
       </method>\r
-      <method name="Void &lt;BinaryAdd_4&gt;m__7(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryAdd_4&gt;m__3(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>73</size>\r
       </method>\r
-      <method name="Void &lt;BinaryAddChecked_1&gt;m__8(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryAddChecked_1&gt;m__4(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>73</size>\r
       </method>\r
-      <method name="Void &lt;BinaryAddChecked_2&gt;m__9(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryAddChecked_2&gt;m__5(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>73</size>\r
       </method>\r
-      <method name="Void &lt;BinaryAddAssign_1&gt;m__B(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryAddAssign_1&gt;m__6(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryAddAssignChecked_1&gt;m__C(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryAddAssignChecked_1&gt;m__7(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryAnd_1&gt;m__D(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryAnd_1&gt;m__8(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>73</size>\r
       </method>\r
-      <method name="Void &lt;BinaryAndAssign_1&gt;m__E(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryAndAssign_1&gt;m__9(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryDivide_1&gt;m__F(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryDivide_1&gt;m__A(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryDivideAssign_1&gt;m__10(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryDivideAssign_1&gt;m__B(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryEqual_1&gt;m__11(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryEqual_1&gt;m__C(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryExclusiveOr_1&gt;m__12(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryExclusiveOr_1&gt;m__D(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryExclusiveOrAssign_1&gt;m__13(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryExclusiveOrAssign_1&gt;m__E(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryGreaterThan_1&gt;m__14(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryGreaterThan_1&gt;m__F(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryGreaterThanOrEqual_1&gt;m__15(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryGreaterThanOrEqual_1&gt;m__10(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryLeftShift_1&gt;m__16(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryLeftShift_1&gt;m__11(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryLeftShiftAssign_1&gt;m__17(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryLeftShiftAssign_1&gt;m__12(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryLessThan_1&gt;m__18(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryLessThan_1&gt;m__13(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryLessThanOrEqual_1&gt;m__19(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryLessThanOrEqual_1&gt;m__14(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryModulo_1&gt;m__1A(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryModulo_1&gt;m__15(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryModuloAssign_1&gt;m__1B(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryModuloAssign_1&gt;m__16(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryMultiply_1&gt;m__1C(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryMultiply_1&gt;m__17(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryMultiplyAssign_1&gt;m__1D(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryMultiplyAssign_1&gt;m__18(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryNotEqual_1&gt;m__1E(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryNotEqual_1&gt;m__19(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryOr_1&gt;m__1F(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryOr_1&gt;m__1A(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryOrAssign_1&gt;m__20(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryOrAssign_1&gt;m__1B(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryRightShift_1&gt;m__21(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryRightShift_1&gt;m__1C(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinaryRightShiftAssign_1&gt;m__22(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinaryRightShiftAssign_1&gt;m__1D(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinarySubtract_1&gt;m__23(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinarySubtract_1&gt;m__1E(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;BinarySubtractAssign_1&gt;m__24(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;BinarySubtractAssign_1&gt;m__1F(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="System.Object &lt;Convert_1&gt;m__25(System.Dynamic.ConvertBinder)" attrs="145">\r
+      <method name="System.Object &lt;Convert_1&gt;m__20(System.Dynamic.ConvertBinder)" attrs="145">\r
         <size>58</size>\r
       </method>\r
-      <method name="System.Object &lt;Convert_2&gt;m__26(System.Dynamic.ConvertBinder)" attrs="145">\r
+      <method name="System.Object &lt;Convert_2&gt;m__21(System.Dynamic.ConvertBinder)" attrs="145">\r
         <size>58</size>\r
       </method>\r
-      <method name="System.Object &lt;Convert_3&gt;m__27(System.Dynamic.ConvertBinder)" attrs="145">\r
+      <method name="System.Object &lt;Convert_3&gt;m__22(System.Dynamic.ConvertBinder)" attrs="145">\r
         <size>58</size>\r
       </method>\r
-      <method name="System.Object &lt;Convert_4&gt;m__28(System.Dynamic.ConvertBinder)" attrs="145">\r
+      <method name="System.Object &lt;Convert_4&gt;m__23(System.Dynamic.ConvertBinder)" attrs="145">\r
         <size>58</size>\r
       </method>\r
-      <method name="System.Object &lt;Convert_5&gt;m__29(System.Dynamic.ConvertBinder)" attrs="145">\r
+      <method name="System.Object &lt;Convert_5&gt;m__24(System.Dynamic.ConvertBinder)" attrs="145">\r
         <size>67</size>\r
       </method>\r
-      <method name="Void &lt;GetIndex_1&gt;m__2A(System.Dynamic.GetIndexBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;GetIndex_1&gt;m__25(System.Dynamic.GetIndexBinder, System.Object[])" attrs="145">\r
         <size>93</size>\r
       </method>\r
-      <method name="Void &lt;GetIndex_2&gt;m__2B(System.Dynamic.GetIndexBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;GetIndex_2&gt;m__26(System.Dynamic.GetIndexBinder, System.Object[])" attrs="145">\r
         <size>112</size>\r
       </method>\r
-      <method name="System.Object &lt;GetMember_1&gt;m__2D(System.Dynamic.GetMemberBinder)" attrs="145">\r
+      <method name="System.Object &lt;GetMember_1&gt;m__27(System.Dynamic.GetMemberBinder)" attrs="145">\r
         <size>75</size>\r
       </method>\r
-      <method name="Void &lt;Invoke_1&gt;m__2E(System.Dynamic.InvokeBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;Invoke_1&gt;m__28(System.Dynamic.InvokeBinder, System.Object[])" attrs="145">\r
         <size>102</size>\r
       </method>\r
-      <method name="Void &lt;Invoke_2&gt;m__2F(System.Dynamic.InvokeBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;Invoke_2&gt;m__29(System.Dynamic.InvokeBinder, System.Object[])" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Void &lt;Invoke_4&gt;m__30(System.Dynamic.InvokeBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;Invoke_4&gt;m__2A(System.Dynamic.InvokeBinder, System.Object[])" attrs="145">\r
         <size>128</size>\r
       </method>\r
-      <method name="Void &lt;Invoke_5&gt;m__31(System.Dynamic.InvokeBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;Invoke_5&gt;m__2B(System.Dynamic.InvokeBinder, System.Object[])" attrs="145">\r
         <size>92</size>\r
       </method>\r
-      <method name="Void &lt;Invoke_5&gt;m__32(System.Object)" attrs="145">\r
+      <method name="Void &lt;Invoke_5&gt;m__2C(System.Object)" attrs="145">\r
         <size>94</size>\r
       </method>\r
-      <method name="Void &lt;Invoke_6&gt;m__33(System.Dynamic.InvokeBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;Invoke_6&gt;m__2D(System.Dynamic.InvokeBinder, System.Object[])" attrs="145">\r
         <size>93</size>\r
       </method>\r
-      <method name="Void &lt;InvokeMember_1&gt;m__34(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;InvokeMember_1&gt;m__2E(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="145">\r
         <size>111</size>\r
       </method>\r
-      <method name="Void &lt;InvokeMember_3&gt;m__36(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;InvokeMember_3&gt;m__2F(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="145">\r
         <size>112</size>\r
       </method>\r
-      <method name="Void &lt;InvokeMember_4&gt;m__37(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;InvokeMember_4&gt;m__30(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="145">\r
         <size>111</size>\r
       </method>\r
-      <method name="Void &lt;InvokeMember_7&gt;m__39(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;InvokeMember_7&gt;m__31(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="145">\r
         <size>91</size>\r
       </method>\r
-      <method name="Void &lt;InvokeMember_8&gt;m__3A(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="145">\r
+      <method name="Void &lt;InvokeMember_8&gt;m__32(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="145">\r
         <size>112</size>\r
       </method>\r
-      <method name="Void &lt;SetIndex_1&gt;m__3B(System.Dynamic.SetIndexBinder, System.Object[], System.Object)" attrs="145">\r
+      <method name="Void &lt;SetIndex_1&gt;m__33(System.Dynamic.SetIndexBinder, System.Object[], System.Object)" attrs="145">\r
         <size>125</size>\r
       </method>\r
-      <method name="Void &lt;SetIndex_2&gt;m__3C(System.Dynamic.SetIndexBinder, System.Object[], System.Object)" attrs="145">\r
+      <method name="Void &lt;SetIndex_2&gt;m__34(System.Dynamic.SetIndexBinder, System.Object[], System.Object)" attrs="145">\r
         <size>140</size>\r
       </method>\r
-      <method name="Void &lt;SetMember_1&gt;m__3E(System.Dynamic.SetMemberBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;SetMember_1&gt;m__35(System.Dynamic.SetMemberBinder, System.Object)" attrs="145">\r
         <size>102</size>\r
       </method>\r
-      <method name="Void &lt;SetMember_2&gt;m__40(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;SetMember_2&gt;m__36(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>69</size>\r
       </method>\r
-      <method name="Void &lt;SetMember_2&gt;m__41(System.Dynamic.SetMemberBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;SetMember_2&gt;m__37(System.Dynamic.SetMemberBinder, System.Object)" attrs="145">\r
         <size>77</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryPlus_1&gt;m__42(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryPlus_1&gt;m__38(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>55</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryMinus_1&gt;m__43(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryMinus_1&gt;m__39(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>55</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryNot_1&gt;m__44(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryNot_1&gt;m__3A(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>55</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryOnesComplement_1&gt;m__45(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryOnesComplement_1&gt;m__3B(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>55</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryDecrement_1&gt;m__46(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryDecrement_1&gt;m__3C(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>55</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryDecrement_2&gt;m__47(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryDecrement_2&gt;m__3D(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>59</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryIncrement_1&gt;m__48(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryIncrement_1&gt;m__3E(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>55</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryIncrement_2&gt;m__49(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryIncrement_2&gt;m__3F(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>59</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryIsFalse_1&gt;m__4A(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryIsFalse_1&gt;m__40(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>60</size>\r
       </method>\r
-      <method name="Void &lt;UnaryIsFalse_1&gt;m__4B(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;UnaryIsFalse_1&gt;m__41(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>69</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryIsFalse_2&gt;m__4C(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryIsFalse_2&gt;m__42(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>60</size>\r
       </method>\r
-      <method name="Void &lt;UnaryIsFalse_2&gt;m__4D(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;UnaryIsFalse_2&gt;m__43(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>69</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryIsFalse_3&gt;m__4E(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryIsFalse_3&gt;m__44(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>60</size>\r
       </method>\r
-      <method name="Void &lt;UnaryIsFalse_3&gt;m__4F(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;UnaryIsFalse_3&gt;m__45(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>68</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryIsTrue_1&gt;m__50(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryIsTrue_1&gt;m__46(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>60</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryIsTrue_2&gt;m__51(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryIsTrue_2&gt;m__47(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>60</size>\r
       </method>\r
-      <method name="Void &lt;UnaryIsTrue_2&gt;m__52(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;UnaryIsTrue_2&gt;m__48(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>69</size>\r
       </method>\r
-      <method name="System.Object &lt;UnaryIsTrue_3&gt;m__53(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
+      <method name="System.Object &lt;UnaryIsTrue_3&gt;m__49(System.Dynamic.UnaryOperationBinder)" attrs="145">\r
         <size>60</size>\r
       </method>\r
-      <method name="Void &lt;UnaryIsTrue_3&gt;m__54(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
+      <method name="Void &lt;UnaryIsTrue_3&gt;m__4A(System.Dynamic.BinaryOperationBinder, System.Object)" attrs="145">\r
         <size>74</size>\r
       </method>\r
-      <method name="Boolean &lt;Main&gt;m__55(System.Reflection.MethodInfo)" attrs="145">\r
+      <method name="Boolean &lt;Main&gt;m__4B(System.Reflection.MethodInfo)" attrs="145">\r
         <size>20</size>\r
       </method>\r
-      <method name="System.String &lt;Main&gt;m__56(System.Reflection.MethodInfo)" attrs="145">\r
+      <method name="System.String &lt;Main&gt;m__4C(System.Reflection.MethodInfo)" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="Boolean &lt;Main&gt;m__57(System.Reflection.MethodInfo)" attrs="145">\r
+      <method name="Boolean &lt;Main&gt;m__4D(System.Reflection.MethodInfo)" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="Boolean &lt;Main&gt;m__58(Boolean)" attrs="145">\r
+      <method name="Boolean &lt;Main&gt;m__4E(Boolean)" attrs="145">\r
         <size>12</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>8</size>\r
-      </method>\r
-      <method name="Void .ctor(Object)" attrs="6278">\r
-        <size>8</size>\r
-      </method>\r
-      <method name="Void .cctor()" attrs="6289">\r
-        <size>34</size>\r
-      </method>\r
-    </type>\r
-    <type name="AssertDynamicObject+&lt;GetFakeMetaObject&gt;c__AnonStorey0">\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;BinaryAddChecked_2&gt;c__AnonStorey1">\r
-      <method name="System.Object &lt;&gt;m__A()" attrs="131">\r
+    <type name="Tester+&lt;BinaryAddChecked_2&gt;c__AnonStorey0">\r
+      <method name="System.Object &lt;&gt;m__0()" attrs="131">\r
         <size>98</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;GetIndex_3&gt;c__AnonStorey2">\r
-      <method name="Void &lt;&gt;m__2C(System.Dynamic.GetIndexBinder, System.Object[])" attrs="131">\r
+    <type name="Tester+&lt;GetIndex_3&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0(System.Dynamic.GetIndexBinder, System.Object[])" attrs="131">\r
         <size>93</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;InvokeMember_2&gt;c__AnonStorey3">\r
-      <method name="Void &lt;&gt;m__35(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="131">\r
+    <type name="Tester+&lt;InvokeMember_2&gt;c__AnonStorey2">\r
+      <method name="Void &lt;&gt;m__0(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="131">\r
         <size>110</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;InvokeMember_3&gt;c__DynamicSite32+Container0">\r
-      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)" attrs="454">\r
-        <size>0</size>\r
-      </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
-        <size>0</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;InvokeMember_4&gt;c__DynamicSite33+Container0">\r
-      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, Int32 ByRef)" attrs="454">\r
-        <size>0</size>\r
-      </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
-        <size>0</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;InvokeMember_6&gt;c__AnonStorey4">\r
-      <method name="Void &lt;&gt;m__38(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="131">\r
+    <type name="Tester+&lt;InvokeMember_6&gt;c__AnonStorey3">\r
+      <method name="Void &lt;&gt;m__0(System.Dynamic.InvokeMemberBinder, System.Object[])" attrs="131">\r
         <size>120</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;InvokeMember_8&gt;c__DynamicSite37+Container0">\r
-      <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, System.Object ByRef)" attrs="454">\r
-        <size>0</size>\r
-      </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
-        <size>0</size>\r
-      </method>\r
-    </type>\r
-    <type name="Tester+&lt;SetIndex_3&gt;c__AnonStorey5">\r
-      <method name="Void &lt;&gt;m__3D(System.Dynamic.SetIndexBinder, System.Object[], System.Object)" attrs="131">\r
+    <type name="Tester+&lt;SetIndex_3&gt;c__AnonStorey4">\r
+      <method name="Void &lt;&gt;m__0(System.Dynamic.SetIndexBinder, System.Object[], System.Object)" attrs="131">\r
         <size>120</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;SetMember_2&gt;c__AnonStorey6">\r
-      <method name="System.Object &lt;&gt;m__3F(System.Dynamic.GetMemberBinder)" attrs="131">\r
+    <type name="Tester+&lt;SetMember_2&gt;c__AnonStorey5">\r
+      <method name="System.Object &lt;&gt;m__0(System.Dynamic.GetMemberBinder)" attrs="131">\r
         <size>80</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
       <method name="Int32 ConvertImplicitReturnTest()" attrs="129">\r
         <size>83</size>\r
       </method>\r
-      <method name="IEnumerable`1 ConvertImplicitReturnTest_2()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void ConvertExplicitTest()" attrs="129">\r
         <size>503</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>187</size>\r
       </method>\r
-      <method name="Void &lt;SubtractAssignEvent&gt;m__C()" attrs="145">\r
-        <size>12</size>\r
-      </method>\r
-      <method name="Boolean &lt;Main&gt;m__F(System.Reflection.MethodInfo)" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
-      <method name="System.String &lt;Main&gt;m__10(System.Reflection.MethodInfo)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Boolean &lt;Main&gt;m__11(System.Reflection.MethodInfo)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Boolean &lt;Main&gt;m__12(Boolean)" attrs="145">\r
-        <size>12</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;AddAssignCheckedTest&gt;c__AnonStorey2">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
-        <size>234</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>154</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;ConvertExplicitCheckedTest&gt;c__AnonStorey3">\r
-      <method name="Int32 &lt;&gt;m__3()" attrs="131">\r
-        <size>81</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__4()" attrs="131">\r
-        <size>81</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;MultiplyCheckedTest&gt;c__AnonStorey4">\r
-      <method name="System.Object &lt;&gt;m__5()" attrs="131">\r
-        <size>104</size>\r
-      </method>\r
-      <method name="System.Object &lt;&gt;m__6()" attrs="131">\r
-        <size>104</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;MultiplyAssignCheckedTest&gt;c__AnonStorey5">\r
-      <method name="Void &lt;&gt;m__7()" attrs="131">\r
-        <size>234</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;NegateChecked&gt;c__AnonStorey6">\r
-      <method name="System.Object &lt;&gt;m__8()" attrs="131">\r
-        <size>88</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;SubtractCheckedTest&gt;c__AnonStorey7">\r
-      <method name="System.Object &lt;&gt;m__9()" attrs="131">\r
-        <size>104</size>\r
-      </method>\r
-      <method name="System.Object &lt;&gt;m__A()" attrs="131">\r
-        <size>104</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;SubtractAssignCheckedTest&gt;c__AnonStorey8">\r
-      <method name="Void &lt;&gt;m__B()" attrs="131">\r
-        <size>234</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;UnaryDecrementCheckedTest&gt;c__AnonStorey9">\r
-      <method name="Void &lt;&gt;m__D()" attrs="131">\r
-        <size>224</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;UnaryIncrementCheckedTest&gt;c__AnonStoreyA">\r
-      <method name="Void &lt;&gt;m__E()" attrs="131">\r
-        <size>220</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Tester">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] ConvertImplicitReturnTest_2()" attrs="129">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;ConvertImplicitReturnTest_2&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester">\r
+      <method name="Void &lt;SubtractAssignEvent&gt;m__0()" attrs="145">\r
+        <size>12</size>\r
+      </method>\r
+      <method name="Boolean &lt;Main&gt;m__1(System.Reflection.MethodInfo)" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="System.String &lt;Main&gt;m__2(System.Reflection.MethodInfo)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Boolean &lt;Main&gt;m__3(System.Reflection.MethodInfo)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Boolean &lt;Main&gt;m__4(Boolean)" attrs="145">\r
+        <size>12</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;AddAssignCheckedTest&gt;c__AnonStorey2">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>234</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;ConvertExplicitCheckedTest&gt;c__AnonStorey3">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>81</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.UInt32] &lt;&gt;m__1()" attrs="131">\r
+        <size>81</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;MultiplyCheckedTest&gt;c__AnonStorey4">\r
+      <method name="System.Object &lt;&gt;m__0()" attrs="131">\r
+        <size>104</size>\r
+      </method>\r
+      <method name="System.Object &lt;&gt;m__1()" attrs="131">\r
+        <size>104</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;MultiplyAssignCheckedTest&gt;c__AnonStorey5">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>234</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;NegateChecked&gt;c__AnonStorey6">\r
+      <method name="System.Object &lt;&gt;m__0()" attrs="131">\r
+        <size>88</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;SubtractCheckedTest&gt;c__AnonStorey7">\r
+      <method name="System.Object &lt;&gt;m__0()" attrs="131">\r
+        <size>104</size>\r
+      </method>\r
+      <method name="System.Object &lt;&gt;m__1()" attrs="131">\r
+        <size>104</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;SubtractAssignCheckedTest&gt;c__AnonStorey8">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>234</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;UnaryDecrementCheckedTest&gt;c__AnonStorey9">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>224</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;UnaryIncrementCheckedTest&gt;c__AnonStoreyA">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>220</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-007.cs">\r
     <type name="D">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>187</size>\r
       </method>\r
-      <method name="Int32 &lt;InvokeTest&gt;m__1(System.String)" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Void &lt;InvokeMember_Error&gt;m__2()" attrs="145">\r
-        <size>112</size>\r
-      </method>\r
-      <method name="Void &lt;InvokeConstructor&gt;m__3(Decimal)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 &lt;IsEvent&gt;m__4()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;IsEvent&gt;m__5()" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Boolean &lt;Main&gt;m__9(System.Reflection.MethodInfo)" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
-      <method name="System.String &lt;Main&gt;m__A(System.Reflection.MethodInfo)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Boolean &lt;Main&gt;m__B(System.Reflection.MethodInfo)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Boolean &lt;Main&gt;m__C(Boolean)" attrs="145">\r
-        <size>12</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;MemberGetError_Null&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__6()" attrs="131">\r
-        <size>86</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;MemberSetError_Null&gt;c__AnonStorey2">\r
-      <method name="Void &lt;&gt;m__7()" attrs="131">\r
-        <size>96</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;SetIndexError_Null&gt;c__AnonStorey3">\r
-      <method name="Void &lt;&gt;m__8()" attrs="131">\r
-        <size>102</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Tester">\r
+      <method name="Int32 &lt;InvokeTest&gt;m__0(System.String)" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void &lt;InvokeMember_Error&gt;m__1()" attrs="145">\r
+        <size>112</size>\r
+      </method>\r
+      <method name="Void &lt;InvokeConstructor&gt;m__2(Decimal)" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Int32 &lt;IsEvent&gt;m__3()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Boolean &lt;Main&gt;m__5(System.Reflection.MethodInfo)" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="System.String &lt;Main&gt;m__6(System.Reflection.MethodInfo)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Boolean &lt;Main&gt;m__7(System.Reflection.MethodInfo)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Boolean &lt;Main&gt;m__8(Boolean)" attrs="145">\r
+        <size>12</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;MemberGetError_Null&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>86</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;MemberSetError_Null&gt;c__AnonStorey2">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>96</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;SetIndexError_Null&gt;c__AnonStorey3">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>102</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-008.cs">\r
     <type name="Disposable">\r
       </method>\r
     </type>\r
     <type name="DynamicAssignments">\r
-      <method name="Void Foo(IA`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>192</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Foo(IA`1[System.Object])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="dtest-018.cs">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__DynamicSite1+Container0">\r
-      <method name="System.Object Invoke(System.Runtime.CompilerServices.CallSite, Nullable`1 ByRef, System.Object)" attrs="454">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
         <size>0</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;Main&gt;c__DynamicSite1+Container0">\r
+      <method name="System.Object Invoke(System.Runtime.CompilerServices.CallSite, System.Nullable`1[System.Int32] ByRef, System.Object)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-026.cs">\r
     <type name="C">\r
       <method name="Void M3[T,U](T, A`1[U])" attrs="145">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void M4[T,U](T, IEquatable`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>577</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void M4[T,U](T, System.IEquatable`1[U])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="dtest-031.cs">\r
   </test>\r
   <test name="dtest-040.cs">\r
     <type name="A">\r
-      <method name="S`2 Foo[U](U)" attrs="454">\r
-        <size>18</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="B">\r
-      <method name="S`2 Foo[T](T)" attrs="198">\r
-        <size>38</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A">\r
+      <method name="S`2[U,System.Object] Foo[U](U)" attrs="454">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
+    <type name="B">\r
+      <method name="S`2[T,System.Object] Foo[T](T)" attrs="198">\r
+        <size>38</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-041.cs">\r
     <type name="A`1[AA]">\r
   </test>\r
   <test name="dtest-044.cs">\r
     <type name="C">\r
-      <method name="Int32 Test[T,U](T, IComparable`1)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 Test_2[T](IList`1, T)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>868</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Int32 Test[T,U](T, System.IComparable`1[U])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 Test_2[T](System.Collections.Generic.IList`1[T], T)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="dtest-045.cs">\r
       <method name="Void &lt;Test`1&gt;m__0[T](T)" attrs="145">\r
         <size>103</size>\r
       </method>\r
-      <method name="Void &lt;Test3`1&gt;m__2[T](T)" attrs="145">\r
-        <size>105</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test2&gt;c__AnonStorey0`1[T]">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>46</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test4&gt;c__AnonStorey2`1[T]">\r
-      <method name="Void &lt;&gt;m__3()" attrs="131">\r
-        <size>114</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test2&gt;c__AnonStorey0`1+&lt;Test2&gt;c__AnonStorey1`1[T]">\r
-      <method name="Void &lt;&gt;m__4()" attrs="131">\r
-        <size>118</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="C+&lt;&lt;Test3`1&gt;m__2&gt;c__DynamicSite1`1+Container0[T]">\r
+    <type name="C">\r
+      <method name="Void &lt;Test3`1&gt;m__1[T](T)" attrs="145">\r
+        <size>105</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test2&gt;c__AnonStorey0`1[T]">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>46</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test4&gt;c__AnonStorey2`1[T]">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>114</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test2&gt;c__AnonStorey0`1+&lt;Test2&gt;c__AnonStorey1`1[T]">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>118</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;&lt;Test3`1&gt;m__1&gt;c__DynamicSite1`1+Container0[T]">\r
       <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, T ByRef)" attrs="454">\r
         <size>0</size>\r
       </method>\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="C+&lt;Test4&gt;c__AnonStorey2`1+&lt;&lt;&gt;m__3&gt;c__DynamicSite0+Container0[T]">\r
+    <type name="C+&lt;Test4&gt;c__AnonStorey2`1+&lt;&lt;&gt;m__0&gt;c__DynamicSite0+Container0[T]">\r
       <method name="Void Invoke(System.Runtime.CompilerServices.CallSite, System.Object, T ByRef)" attrs="454">\r
         <size>0</size>\r
       </method>\r
       <method name="Void CLSCompliantMethod(System.Object[])" attrs="134">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void CLSCompliantMethod(IEnumerable`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void CLSCompliantMethod(System.Collections.Generic.IEnumerable`1[System.Object])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="dtest-collectioninit-01.cs">\r
       <method name="Void &lt;Using_1&gt;m__1()" attrs="145">\r
         <size>92</size>\r
       </method>\r
-      <method name="Void &lt;NullableConversion&gt;m__3()" attrs="145">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;Unsafe_1&gt;c__AnonStorey0">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester">\r
+      <method name="Void &lt;NullableConversion&gt;m__2()" attrs="145">\r
         <size>106</size>\r
       </method>\r
-      <method name="Boolean &lt;Main&gt;m__4(System.Reflection.MethodInfo)" attrs="145">\r
+      <method name="Boolean &lt;Main&gt;m__3(System.Reflection.MethodInfo)" attrs="145">\r
         <size>20</size>\r
       </method>\r
-      <method name="System.String &lt;Main&gt;m__5(System.Reflection.MethodInfo)" attrs="145">\r
+      <method name="System.String &lt;Main&gt;m__4(System.Reflection.MethodInfo)" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="Boolean &lt;Main&gt;m__6(System.Reflection.MethodInfo)" attrs="145">\r
+      <method name="Boolean &lt;Main&gt;m__5(System.Reflection.MethodInfo)" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="Boolean &lt;Main&gt;m__7(Boolean)" attrs="145">\r
+      <method name="Boolean &lt;Main&gt;m__6(Boolean)" attrs="145">\r
         <size>12</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;Unsafe_1&gt;c__AnonStorey0">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
         <size>110</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="dtest-error-02.cs">\r
     </type>\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>143</size>\r
+        <size>400</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A+N">\r
+      <method name="Int32 get_Property()" attrs="2182">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void set_Property(Int32)" attrs="2182">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="System.String get_Item(Int32)" attrs="2177">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-error-03.cs">\r
     <type name="C">\r
   </test>\r
   <test name="dtest-iter-01.cs">\r
     <type name="Program">\r
-      <method name="IEnumerable`1 D1()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
-      <method name="IEnumerable`1 D2()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;dynamic&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;System.Func&lt;dynamic&gt;&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Program">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] D1()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Func`1[System.Object]] D2()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;D1&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;dynamic&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;D2&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Func`1[System.Object]] System.Collections.Generic.IEnumerable&lt;System.Func&lt;dynamic&gt;&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="dtest-named-01.cs">\r
     <type name="Test">\r
   </test>\r
   <test name="gtest-032.cs">\r
     <type name="X">\r
-      <method name="Void Test(Bar`2)" attrs="145">\r
-        <size>25</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Test(Bar`2[System.Int32,System.String])" attrs="145">\r
+        <size>25</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-033.cs">\r
     <type name="X">\r
-      <method name="Void Test(Bar`3)" attrs="145">\r
-        <size>36</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Test(Bar`3[System.Int64,System.Int32,System.String])" attrs="145">\r
+        <size>36</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-034.cs">\r
       <method name="T get_Name()" attrs="2182">\r
         <size>15</size>\r
       </method>\r
-      <method name="IMonkey`1 GetTheMonkey[U](U)" attrs="134">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor(T)" attrs="6278">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Zoo`1[T]">\r
+      <method name="IMonkey`1[U] GetTheMonkey[U](U)" attrs="134">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-040.cs">\r
     <type name="Stack`1[T]">\r
-      <method name="INode`1 GetNode()" attrs="134">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Stack`1+Foo`1[T,T] GetFoo(T)" attrs="134">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Stack`1[T]">\r
+      <method name="INode`1[T] GetNode()" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-041.cs">\r
     <type name="Stack`1[T]">\r
       <method name="Void Print(T)" attrs="486">\r
         <size>18</size>\r
       </method>\r
-      <method name="IHello`1 Test[U]()" attrs="486">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Hello`1[T]">\r
+      <method name="IHello`1[U] Test[U]()" attrs="486">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-058.cs">\r
     <type name="Foo">\r
   </test>\r
   <test name="gtest-062.cs">\r
     <type name="X">\r
-      <method name="IEnumerable`1 Test(Int32, Int64)" attrs="134">\r
-        <size>44</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>95</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>116</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test(Int32, Int64)" attrs="134">\r
+        <size>44</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-063.cs">\r
     <type name="Test">\r
   </test>\r
   <test name="gtest-064.cs">\r
     <type name="Foo`1[T]">\r
-      <method name="IHello`1 IFoo&lt;T&gt;.GetHello()" attrs="481">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Foo`1+Hello[T] GetHello()" attrs="134">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo`1[T]">\r
+      <method name="IHello`1[T] IFoo&lt;T&gt;.GetHello()" attrs="481">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-065.cs">\r
     <type name="ComparablePair`2[T,U]">\r
-      <method name="Int32 CompareTo(ComparablePair`2)" attrs="486">\r
-        <size>76</size>\r
-      </method>\r
-      <method name="Boolean Equals(ComparablePair`2)" attrs="134">\r
-        <size>81</size>\r
-      </method>\r
       <method name="System.String ToString()" attrs="198">\r
         <size>72</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="ComparablePair`2[T,U]">\r
+      <method name="Int32 CompareTo(ComparablePair`2[T,U])" attrs="486">\r
+        <size>76</size>\r
+      </method>\r
+      <method name="Boolean Equals(ComparablePair`2[T,U])" attrs="134">\r
+        <size>81</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-066.cs">\r
     <type name="Foo`1[T]">\r
   </test>\r
   <test name="gtest-069.cs">\r
     <type name="Test`1[T]">\r
-      <method name="Int32 Foo(IFoo`1)" attrs="134">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Int32 Foo(IFoo)" attrs="134">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test`1[T]">\r
+      <method name="Int32 Foo(IFoo`1[T])" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-070.cs">\r
     <type name="Martin.Test`1[T]">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="MyList`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="486">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-074.cs">\r
     <type name="Foo`1[T]">\r
       </method>\r
     </type>\r
     <type name="Test`1[T]">\r
-      <method name="Foo`1 GetFoo(T)" attrs="134">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test`1[T]">\r
+      <method name="Foo`1[T] GetFoo(T)" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-078.cs">\r
     <type name="S">\r
   </test>\r
   <test name="gtest-080.cs">\r
     <type name="Test">\r
-      <method name="Void Hello[T](IFoo`1)" attrs="134">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Void InsertAll[U](IFoo`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void Hello[T](IFoo`1[T])" attrs="134">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void InsertAll[U](IFoo`1[U])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-081.cs">\r
     <type name="ArrayList`1[T]">\r
   </test>\r
   <test name="gtest-084.cs">\r
     <type name="HasherBuilder.ByPrototype`1[S]">\r
-      <method name="IHasher`1 Examine()" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="ArrayList`1[U]">\r
-      <method name="IHasher`1 GetHasher()" attrs="134">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-085.cs">\r
-    <type name="ArrayList`1[T]">\r
-      <method name="Int32 InsertAll(IFoo`1)" attrs="454">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 InsertAll[U](IFoo`1)" attrs="454">\r
+    <type name="HasherBuilder.ByPrototype`1[S]">\r
+      <method name="IHasher`1[S] Examine()" attrs="150">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 AddAll(IFoo`1)" attrs="454">\r
-        <size>16</size>\r
+    </type>\r
+    <type name="ArrayList`1[U]">\r
+      <method name="IHasher`1[U] GetHasher()" attrs="134">\r
+        <size>14</size>\r
       </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-085.cs">\r
+    <type name="ArrayList`1[T]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-086.cs">\r
     <type name="ArrayList`1[T]">\r
-      <method name="Int32 InsertAll(IFoo`1)" attrs="454">\r
+      <method name="Int32 InsertAll(IFoo`1[T])" attrs="454">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 InsertAll[U](IFoo`1)" attrs="454">\r
+      <method name="Int32 InsertAll[U](IFoo`1[U])" attrs="454">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 AddAll(IFoo`1)" attrs="454">\r
+      <method name="Int32 AddAll(IFoo`1[T])" attrs="454">\r
         <size>16</size>\r
       </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-086.cs">\r
+    <type name="ArrayList`1[T]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="ArrayList`1[T]">\r
+      <method name="Int32 InsertAll(IFoo`1[T])" attrs="454">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 InsertAll[U](IFoo`1[U])" attrs="454">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 AddAll(IFoo`1[T])" attrs="454">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-087.cs">\r
     <type name="C5.HashedArrayList`1[T]">\r
   </test>\r
   <test name="gtest-095.cs">\r
     <type name="GuardedCollectionValue`1[T]">\r
-      <method name="IDirectedEnumerable`1 IDirectedEnumerable&lt;T&gt;.Backwards()" attrs="481">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IDirectedCollectionValue`1 Backwards()" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="GuardedSequenced`1[T]">\r
-      <method name="IDirectedCollectionValue`1 Test()" attrs="134">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="GuardedCollectionValue`1[T]">\r
+      <method name="IDirectedEnumerable`1[T] IDirectedEnumerable&lt;T&gt;.Backwards()" attrs="481">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="IDirectedCollectionValue`1[T] Backwards()" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="GuardedSequenced`1[T]">\r
+      <method name="IDirectedCollectionValue`1[T] Test()" attrs="134">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-096.cs">\r
     <type name="Foo`1[T]">\r
       </method>\r
     </type>\r
     <type name="Hello">\r
-      <method name="Void World[U](U, IFoo`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void World[V](IFoo`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Test(Foo)" attrs="134">\r
         <size>21</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Hello">\r
+      <method name="Void World[U](U, IFoo`1[U])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void World[V](IFoo`1[V])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-104.cs">\r
     <type name="MainClass">\r
       </method>\r
     </type>\r
     <type name="A.KeyValuePairComparer`2[K,V]">\r
-      <method name="Int32 Compare(KeyValuePair`2)" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A.KeyValuePairComparer`2[K,V]">\r
+      <method name="Int32 Compare(A.KeyValuePair`2[K,V])" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-106.cs">\r
     <type name="KeyValuePair`2[X,Y]">\r
       </method>\r
     </type>\r
     <type name="KeyValuePairComparer`2[K,V]">\r
-      <method name="Int32 Compare(KeyValuePair`2)" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="KeyValuePairComparer`2[K,V]">\r
+      <method name="Int32 Compare(KeyValuePair`2[K,V])" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-107.cs">\r
     <type name="Mapper`2[T,V]">\r
   </test>\r
   <test name="gtest-108.cs">\r
     <type name="Test`1[T]">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor(T)" attrs="6278">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-109.cs">\r
     <type name="X">\r
   </test>\r
   <test name="gtest-112.cs">\r
     <type name="IC">\r
-      <method name="Void Compare(Foo`1)" attrs="486">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="List`1[T]">\r
-      <method name="Void Sort(IComparer`1, T)" attrs="454">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Sorting">\r
-      <method name="Void IntroSort[T](IComparer`1, T)" attrs="150">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="IC">\r
+      <method name="Void Compare(Foo`1[System.Int32])" attrs="486">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="List`1[T]">\r
+      <method name="Void Sort(IComparer`1[T], T)" attrs="454">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Sorting">\r
+      <method name="Void IntroSort[T](IComparer`1[T], T)" attrs="150">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-113.cs">\r
     <type name="Mapper`2[T,V]">\r
       <method name="LinkedList`1[T] op_Addition(LinkedList`1[T], LinkedList`1[T])" attrs="2198">\r
         <size>135</size>\r
       </method>\r
-      <method name="IMyList`1 Map[U](Mapper`2[T,U])" attrs="486">\r
-        <size>78</size>\r
-      </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>31</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="LinkedList`1[T]">\r
+      <method name="IMyList`1[U] Map[U](Mapper`2[T,U])" attrs="486">\r
+        <size>78</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="486">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-116.cs">\r
     <type name="Slow.Test">\r
       <method name="Int32 TestC()" attrs="150">\r
         <size>46</size>\r
       </method>\r
-      <method name="Boolean Check1(Nullable`1)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Boolean Check2[T](E)" attrs="145">\r
         <size>23</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Boolean Check1(System.Nullable`1[E])" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-118.cs">\r
       </method>\r
     </type>\r
     <type name="Sequenced`1[T]">\r
-      <method name="Boolean Equals(ISequenced`1)" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Sequenced`1[T]">\r
+      <method name="Boolean Equals(ISequenced`1[T])" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-121.cs">\r
     <type name="B`1[T]">\r
       </method>\r
     </type>\r
     <type name="M">\r
-      <method name="System.Collections.Generic.List`1[T] foo1[T](Filter`1)" attrs="145">\r
-        <size>46</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>46</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.List`1[T] foo1[T](Filter`1[T])" attrs="145">\r
+        <size>46</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-127.cs">\r
   <test name="gtest-130.cs">\r
     <type name="MyTest">\r
       <method name="Void Main(System.String[])" attrs="150">\r
-        <size>938</size>\r
+        <size>908</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="gtest-131.cs">\r
     <type name="MyTest">\r
       <method name="Void Main(System.String[])" attrs="150">\r
-        <size>1332</size>\r
+        <size>1300</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   </test>\r
   <test name="gtest-132.cs">\r
     <type name="MyTest">\r
-      <method name="Nullable`1 Sqrt(Nullable`1)" attrs="150">\r
-        <size>68</size>\r
-      </method>\r
       <method name="Void Main(System.String[])" attrs="150">\r
         <size>64</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Nullable`1[System.Int32] Sqrt(System.Nullable`1[System.Int32])" attrs="150">\r
+        <size>68</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-133.cs">\r
   <test name="gtest-137.cs">\r
     <type name="X">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>158</size>\r
+        <size>240</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="gtest-138.cs">\r
     <type name="X">\r
       <method name="Void Main()" attrs="150">\r
-        <size>62</size>\r
+        <size>102</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
     </type>\r
   </test>\r
   <test name="gtest-139.cs">\r
+    <type name="Test">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>78</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
     <type name="MyStruct">\r
-      <method name="Int32 op_Inequality(Nullable`1, System.String)" attrs="2198">\r
+      <method name="Int32 op_Inequality(System.Nullable`1[MyStruct], System.String)" attrs="2198">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 op_Equality(Nullable`1, System.String)" attrs="2198">\r
+      <method name="Int32 op_Equality(System.Nullable`1[MyStruct], System.String)" attrs="2198">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 op_Inequality(System.String, Nullable`1)" attrs="2198">\r
+      <method name="Int32 op_Inequality(System.String, System.Nullable`1[MyStruct])" attrs="2198">\r
         <size>11</size>\r
       </method>\r
-      <method name="Int32 op_Equality(System.String, Nullable`1)" attrs="2198">\r
+      <method name="Int32 op_Equality(System.String, System.Nullable`1[MyStruct])" attrs="2198">\r
         <size>10</size>\r
       </method>\r
     </type>\r
-    <type name="Test">\r
-      <method name="Int32 Main()" attrs="150">\r
-        <size>78</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
   </test>\r
   <test name="gtest-140.cs">\r
     <type name="X">\r
       <method name="Void IsFalse(System.String, Boolean)" attrs="150">\r
         <size>19</size>\r
       </method>\r
-      <method name="Void IsNull[T](System.String, Nullable`1)" attrs="150">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void IsNotNull[T](System.String, Nullable`1)" attrs="150">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void IsTrue(System.String, Nullable`1)" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
-      <method name="Void IsFalse(System.String, Nullable`1)" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .cctor()" attrs="6289">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="X">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>2253</size>\r
+        <size>2163</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Assert">\r
+      <method name="Void IsNull[T](System.String, System.Nullable`1[T])" attrs="150">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void IsNotNull[T](System.String, System.Nullable`1[T])" attrs="150">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void IsTrue(System.String, System.Nullable`1[System.Boolean])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="Void IsFalse(System.String, System.Nullable`1[System.Boolean])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-143.cs">\r
     <type name="X">\r
       <method name="Int32 Index()" attrs="145">\r
         <size>34</size>\r
       </method>\r
-      <method name="Nullable`1 get_Item(Int32)" attrs="2177">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Void set_Item(Int32, Nullable`1)" attrs="2177">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Int32 Test()" attrs="145">\r
-        <size>1157</size>\r
+        <size>1276</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>38</size>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Nullable`1[System.Int32] get_Item(Int32)" attrs="2177">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void set_Item(Int32, System.Nullable`1[System.Int32])" attrs="2177">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-144.cs">\r
       <method name="IFoo IFoo.Hello()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IFoo`1 Hello()" attrs="1478">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="HashBag`1[T]">\r
-      <method name="IFoo`1 Hello()" attrs="198">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="EnumerableBase`1[T]">\r
+      <method name="IFoo`1[T] Hello()" attrs="1478">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="HashBag`1[T]">\r
+      <method name="IFoo`1[T] Hello()" attrs="198">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-153.cs">\r
     <type name="MyClass`1[T]">\r
   </test>\r
   <test name="gtest-163.cs">\r
     <type name="Foo`1[T]">\r
-      <method name="IEnumerator`1 getEnumerator(Int32)" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] getEnumerator(Int32)" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-164.cs">\r
     <type name="Int2Int">\r
       </method>\r
     </type>\r
     <type name="FunEnumerable">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor(Int32, Int2Int)" attrs="6278">\r
         <size>22</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="FunEnumerable">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] GetEnumerator()" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-165.cs">\r
     <type name="C">\r
       </method>\r
     </type>\r
     <type name="X`1[T]">\r
-      <method name="IEnumerator`1 Y(IEnumerable`1)" attrs="150">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] Y(System.Collections.Generic.IEnumerable`1[T])" attrs="150">\r
         <size>15</size>\r
       </method>\r
-      <method name="T Z(IList`1, Int32)" attrs="150">\r
+      <method name="T Z(System.Collections.Generic.IList`1[T], Int32)" attrs="150">\r
         <size>16</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-178.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>168</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-182.cs">\r
   </test>\r
   <test name="gtest-183.cs">\r
     <type name="test.Test`1[T]">\r
-      <method name="IEnumerable`1 Lookup(T)" attrs="134">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>91</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="test.Test`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Lookup(T)" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="test.Test`1+&lt;Lookup&gt;c__Iterator0[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-184.cs">\r
     <type name="X">\r
     </type>\r
   </test>\r
   <test name="gtest-191.cs">\r
-    <type name="Test1.Test">\r
-      <method name="IEnumerable`1 Replace[T]()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
-    </type>\r
     <type name="Test2.Test`1[S]">\r
-      <method name="IEnumerable`1 Replace[T]()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test3.Test`1[S]">\r
-      <method name="IEnumerable`1 Replace[T](IEnumerable`1, IEnumerable`1)" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test4.Test">\r
-      <method name="IEnumerable`1 Replace[T]()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test5.Test">\r
-      <method name="IEnumerable`1 Replace[T](T)" attrs="150">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test6.Test">\r
-      <method name="IEnumerable`1 Replace[T](T)" attrs="150">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test7.Test">\r
-      <method name="IEnumerable`1 Replace[T](T[])" attrs="150">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test2.Test`1+&lt;Replace&gt;c__Iterator1`1[S,T]">\r
+    <type name="Test1.Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Replace[T]()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test2.Test`1[S]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Replace[T]()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test3.Test`1[S]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Collections.Generic.KeyValuePair`2[S,T]] Replace[T](System.Collections.Generic.IEnumerable`1[T], System.Collections.Generic.IEnumerable`1[S])" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test4.Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Replace[T]()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test5.Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Replace[T](T)" attrs="150">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test6.Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Replace[T](T)" attrs="150">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test7.Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T[]] Replace[T](T[])" attrs="150">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test1.Test+&lt;Replace&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test2.Test`1+&lt;Replace&gt;c__Iterator0`1[S,T]">\r
       <method name="T System.Collections.Generic.IEnumerator&lt;T&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>19</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test3.Test`1+&lt;Replace&gt;c__Iterator2`1[S,T]">\r
-      <method name="KeyValuePair`2 System.Collections.Generic.IEnumerator&lt;System.Collections.Generic.KeyValuePair&lt;S,T&gt;&gt;.get_Current()" attrs="2529">\r
+    <type name="Test3.Test`1+&lt;Replace&gt;c__Iterator0`1[S,T]">\r
+      <method name="System.Collections.Generic.KeyValuePair`2[S,T] System.Collections.Generic.IEnumerator&lt;System.Collections.Generic.KeyValuePair&lt;S,T&gt;&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>19</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;System.Collections.Generic.KeyValuePair&lt;S,T&gt;&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[S,T]] System.Collections.Generic.IEnumerable&lt;System.Collections.Generic.KeyValuePair&lt;S,T&gt;&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test4.Test+&lt;Replace&gt;c__Iterator3`1[T]">\r
+    <type name="Test4.Test+&lt;Replace&gt;c__Iterator0`1[T]">\r
       <method name="T System.Collections.Generic.IEnumerator&lt;T&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>19</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test5.Test+&lt;Replace&gt;c__Iterator4`1[T]">\r
+    <type name="Test5.Test+&lt;Replace&gt;c__Iterator0`1[T]">\r
       <method name="T System.Collections.Generic.IEnumerator&lt;T&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>19</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>77</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test6.Test+&lt;Replace&gt;c__Iterator5`1[T]">\r
+    <type name="Test6.Test+&lt;Replace&gt;c__Iterator0`1[T]">\r
       <method name="T System.Collections.Generic.IEnumerator&lt;T&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>19</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>89</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test7.Test+&lt;Replace&gt;c__Iterator6`1[T]">\r
+    <type name="Test7.Test+&lt;Replace&gt;c__Iterator0`1[T]">\r
       <method name="T[] System.Collections.Generic.IEnumerator&lt;T[]&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T[]&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>89</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T[]] System.Collections.Generic.IEnumerable&lt;T[]&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
   </test>\r
   <test name="gtest-193.cs">\r
     <type name="OrderedMultiDictionary`2[T,U]">\r
-      <method name="IEnumerator`1 EnumerateKeys(RedBlackTree`1+RangeTester[System.Collections.Generic.KeyValuePair`2[T,U]])" attrs="129">\r
-        <size>29</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="RedBlackTree`1[S]">\r
-      <method name="IEnumerable`1 EnumerateRange(RedBlackTree`1+RangeTester[S])" attrs="134">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="RedBlackTree`1+&lt;EnumerateRange&gt;c__Iterator1[S]">\r
+    <type name="OrderedMultiDictionary`2[T,U]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] EnumerateKeys(RedBlackTree`1+RangeTester[System.Collections.Generic.KeyValuePair`2[T,U]])" attrs="129">\r
+        <size>29</size>\r
+      </method>\r
+    </type>\r
+    <type name="RedBlackTree`1[S]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[S] EnumerateRange(RedBlackTree`1+RangeTester[S])" attrs="134">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="RedBlackTree`1+&lt;EnumerateRange&gt;c__Iterator0[S]">\r
       <method name="S System.Collections.Generic.IEnumerator&lt;S&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>19</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;S&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[S] System.Collections.Generic.IEnumerable&lt;S&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
   </test>\r
   <test name="gtest-194.cs">\r
     <type name="RedBlackTree`1[S]">\r
-      <method name="IEnumerable`1 EnumerateRange(RedBlackTree`1+RangeTester[S])" attrs="134">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="OrderedMultiDictionary`2[T,U]">\r
-      <method name="IEnumerator`1 EnumerateKeys(RedBlackTree`1+RangeTester[System.Collections.Generic.KeyValuePair`2[T,U]])" attrs="129">\r
-        <size>29</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;S&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="OrderedMultiDictionary`2+&lt;EnumerateKeys&gt;c__Iterator1[T,U]">\r
+    <type name="RedBlackTree`1[S]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[S] EnumerateRange(RedBlackTree`1+RangeTester[S])" attrs="134">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="OrderedMultiDictionary`2[T,U]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] EnumerateKeys(RedBlackTree`1+RangeTester[System.Collections.Generic.KeyValuePair`2[T,U]])" attrs="129">\r
+        <size>29</size>\r
+      </method>\r
+    </type>\r
+    <type name="RedBlackTree`1+&lt;EnumerateRange&gt;c__Iterator0[S]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[S] System.Collections.Generic.IEnumerable&lt;S&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="OrderedMultiDictionary`2+&lt;EnumerateKeys&gt;c__Iterator0[T,U]">\r
       <method name="T System.Collections.Generic.IEnumerator&lt;T&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="Int64 Test()" attrs="134">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor(Int64)" attrs="6278">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="HashSet`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int64] GetEnumerator()" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-202.cs">\r
     <type name="Generic`1[T]">\r
       <method name="Ret Foo()" attrs="454">\r
         <size>10</size>\r
       </method>\r
-      <method name="Ret`1 Foo[T]()" attrs="454">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="Ret Foo()" attrs="198">\r
         <size>10</size>\r
       </method>\r
-      <method name="Ret`1 Foo[T]()" attrs="198">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-217.cs">\r
-    <type name="Fun`2[A1,R]">\r
-      <method name="R Invoke(A1)" attrs="454">\r
-        <size>0</size>\r
-      </method>\r
-      <method name="IAsyncResult BeginInvoke(A1, System.AsyncCallback, System.Object)" attrs="454">\r
-        <size>0</size>\r
-      </method>\r
-      <method name="R EndInvoke(IAsyncResult)" attrs="454">\r
-        <size>0</size>\r
-      </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
-        <size>0</size>\r
-      </method>\r
-    </type>\r
-    <type name="MyTest">\r
-      <method name="Void Main(System.String[])" attrs="150">\r
-        <size>99</size>\r
-      </method>\r
-      <method name="IEnumerable`1 Map[Aa,Af,Rf,Rr](Fun`2[Af,Rf], IEnumerable`1)" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
-      <method name="IEnumerable`1 FromTo(Int32, Int32)" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
-      <method name="System.String &lt;Main&gt;m__0(Int32)" attrs="145">\r
-        <size>22</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="MyTest+&lt;Map&gt;c__Iterator0`4[Aa,Af,Rf,Rr]">\r
-      <method name="Rr System.Collections.Generic.IEnumerator&lt;Rr&gt;.get_Current()" attrs="2529">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
-        <size>19</size>\r
-      </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Rr&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
-      <method name="Boolean MoveNext()" attrs="486">\r
-        <size>215</size>\r
-      </method>\r
-      <method name="Void Dispose()" attrs="486">\r
-        <size>69</size>\r
-      </method>\r
-      <method name="Void Reset()" attrs="486">\r
-        <size>6</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+    <type name="BaseClass">\r
+      <method name="Ret`1[T] Foo[T]()" attrs="454">\r
+        <size>10</size>\r
       </method>\r
     </type>\r
-    <type name="MyTest+&lt;FromTo&gt;c__Iterator1">\r
-      <method name="Int32 System.Collections.Generic.IEnumerator&lt;int&gt;.get_Current()" attrs="2529">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
-        <size>19</size>\r
-      </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
-      <method name="Boolean MoveNext()" attrs="486">\r
-        <size>125</size>\r
-      </method>\r
-      <method name="Void Dispose()" attrs="486">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Void Reset()" attrs="486">\r
-        <size>6</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+    <type name="DerivedClass">\r
+      <method name="Ret`1[T] Foo[T]()" attrs="198">\r
+        <size>10</size>\r
       </method>\r
     </type>\r
   </test>\r
   </test>\r
   <test name="gtest-225.cs">\r
     <type name="Set`1[Element]">\r
-      <method name="Locator locate(Element)" attrs="132">\r
-        <size>39</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>8</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Set`1[Element]">\r
+      <method name="Set`1+Locator[Element] locate(Element)" attrs="132">\r
+        <size>39</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-226.cs">\r
     <type name="Container`1[T]">\r
       <method name="IFoo GetFoo()" attrs="134">\r
         <size>15</size>\r
       </method>\r
-      <method name="IFoo`1 GetFooGeneric[T]()" attrs="134">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>15</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="IFoo`1[T] GetFooGeneric[T]()" attrs="134">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-235.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="1478">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
       <method name="Void raiseItemsAdded(T, Int32)" attrs="452">\r
         <size>2</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="1222">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="CircularQueue`1[T]">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void Enqueue(T)" attrs="454">\r
         <size>2</size>\r
       </method>\r
       <method name="Boolean searchoradd(T ByRef, Boolean, Boolean, Boolean)" attrs="129">\r
         <size>10</size>\r
       </method>\r
-      <method name="Void RemoveAll[U](IEnumerable`1)" attrs="454">\r
-        <size>8</size>\r
-      </method>\r
-      <method name="Void AddAll[U](IEnumerable`1)" attrs="454">\r
-        <size>65</size>\r
-      </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="HashSet`1+&lt;GetEnumerator&gt;c__Iterator1[T]">\r
+    <type name="EnumerableBase`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="1478">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="CollectionValueBase`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="1222">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="CircularQueue`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="HashSet`1[T]">\r
+      <method name="Void RemoveAll[U](System.Collections.Generic.IEnumerable`1[U])" attrs="454">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void AddAll[U](System.Collections.Generic.IEnumerable`1[U])" attrs="454">\r
+        <size>65</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="HashSet`1+&lt;GetEnumerator&gt;c__Iterator0[T]">\r
       <method name="T System.Collections.Generic.IEnumerator&lt;T&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="1478">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="ArrayBase`1[T]">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="HashedArrayList`1[T]">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="EnumerableBase`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="1478">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="ArrayBase`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="HashedArrayList`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-250.cs">\r
     <type name="Fun`2[R,S]">\r
       </method>\r
     </type>\r
     <type name="GuardedIndexedSorted`1[T]">\r
-      <method name="IIndexedSorted`1 Map[V](Fun`2[T,V])" attrs="486">\r
-        <size>21</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="GuardedIndexedSorted`1[T]">\r
+      <method name="IIndexedSorted`1[V] Map[V](Fun`2[T,V])" attrs="486">\r
+        <size>21</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-251.cs">\r
     <type name="SortedIndexedTester`1[T]">\r
-      <method name="Void Test(ISorted`1)" attrs="134">\r
-        <size>25</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="SortedIndexedTester`1[T]">\r
+      <method name="Void Test(ISorted`1[System.Int32])" attrs="134">\r
+        <size>25</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-252.cs">\r
     <type name="EqualityComparer`1[T]">\r
       </method>\r
     </type>\r
     <type name="Extensible`1[V]">\r
-      <method name="Void AddAll[W](IEnumerable`1)" attrs="486">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Extensible`1[V]">\r
+      <method name="Void AddAll[W](System.Collections.Generic.IEnumerable`1[W])" attrs="486">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-254.cs">\r
     <type name="HashedLinkedList`1[T]">\r
   </test>\r
   <test name="gtest-256.cs">\r
     <type name="Test">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>12</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] GetEnumerator()" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-257.cs">\r
     <type name="Tests">\r
       </method>\r
     </type>\r
     <type name="ConvertHelper">\r
-      <method name="IEnumerator`1 Test[S,T](S)" attrs="150">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="ConvertHelper">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] Test[S,T](S)" attrs="150">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-264.cs">\r
     <type name="BaseList`1[SubType]">\r
   </test>\r
   <test name="gtest-269.cs">\r
     <type name="IrishPub">\r
-      <method name="Int64 op_Implicit(Nullable`1)" attrs="2198">\r
-        <size>44</size>\r
-      </method>\r
-      <method name="Nullable`1 op_Implicit(Int64)" attrs="2198">\r
-        <size>21</size>\r
-      </method>\r
       <method name="Void .ctor(IrishBeer)" attrs="6278">\r
         <size>9</size>\r
       </method>\r
     </type>\r
     <type name="X">\r
-      <method name="Int32 Beer(Nullable`1)" attrs="145">\r
-        <size>72</size>\r
-      </method>\r
       <method name="Int64 PubToLong(IrishPub)" attrs="145">\r
         <size>20</size>\r
       </method>\r
-      <method name="Int32 Test(Nullable`1)" attrs="145">\r
-        <size>62</size>\r
-      </method>\r
-      <method name="Int32 TestWithNull(Nullable`1)" attrs="145">\r
-        <size>78</size>\r
-      </method>\r
-      <method name="Nullable`1 Foo(Boolean)" attrs="145">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Int32 Test(Boolean)" attrs="145">\r
         <size>72</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-270.cs">\r
+    <type name="IrishPub">\r
+      <method name="Int64 op_Implicit(System.Nullable`1[IrishPub])" attrs="2198">\r
+        <size>44</size>\r
+      </method>\r
+      <method name="System.Nullable`1[IrishPub] op_Implicit(Int64)" attrs="2198">\r
+        <size>21</size>\r
+      </method>\r
+    </type>\r
     <type name="X">\r
-      <method name="Int32 Test(Nullable`1)" attrs="145">\r
+      <method name="Int32 Beer(System.Nullable`1[IrishPub])" attrs="145">\r
+        <size>72</size>\r
+      </method>\r
+      <method name="Int32 Test(System.Nullable`1[System.Int32])" attrs="145">\r
         <size>62</size>\r
       </method>\r
+      <method name="Int32 TestWithNull(System.Nullable`1[System.Int32])" attrs="145">\r
+        <size>78</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Int64] Foo(Boolean)" attrs="145">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-270.cs">\r
+    <type name="X">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>60</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Int32 Test(System.Nullable`1[System.Int32])" attrs="145">\r
+        <size>62</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-271.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Qux`2[X,V]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[V] GetEnumerator()" attrs="486">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-272.cs">\r
     <type name="Handler`1[T]">\r
       </method>\r
     </type>\r
     <type name="X">\r
-      <method name="Void Main()" attrs="150">\r
-        <size>448</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="S">\r
+      <method name="System.Nullable`1[System.Boolean] op_Implicit(S)" attrs="2198">\r
+        <size>12</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>612</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-275.cs">\r
     <type name="Test">\r
       </method>\r
     </type>\r
     <type name="Tests+GenericClass`1[T]">\r
-      <method name="T Z(IList`1, Int32)" attrs="150">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="T Z(System.Collections.Generic.IList`1[T], Int32)" attrs="150">\r
+        <size>16</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-277.cs">\r
       <method name="Void Bar()" attrs="486">\r
         <size>12</size>\r
       </method>\r
-      <method name="IList`1 Bar[T]()" attrs="486">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo">\r
+      <method name="System.Collections.Generic.IList`1[T] Bar[T]()" attrs="486">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-280.cs">\r
     <type name="Test">\r
   </test>\r
   <test name="gtest-281.cs">\r
     <type name="List">\r
-      <method name="Void AddRange[T](ICollection`1)" attrs="131">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="List">\r
+      <method name="Void AddRange[T](System.Collections.Generic.ICollection`1[T])" attrs="131">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-282.cs">\r
     <type name="Foo">\r
       </method>\r
     </type>\r
     <type name="CollectionTester">\r
-      <method name="Int32 Test[T](IList`1)" attrs="145">\r
-        <size>95</size>\r
-      </method>\r
       <method name="Int32 Test()" attrs="150">\r
         <size>628</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="CollectionTester">\r
+      <method name="Int32 Test[T](System.Collections.Generic.IList`1[T])" attrs="145">\r
+        <size>95</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-285.cs">\r
     <type name="A">\r
       <method name="Void Main()" attrs="150">\r
         <size>23</size>\r
       </method>\r
-      <method name="System.String Test2(Nullable`1)" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.String Test2(System.Nullable`1[System.Decimal])" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-292.cs">\r
       <method name="Void Invalid(T)" attrs="134">\r
         <size>22</size>\r
       </method>\r
-      <method name="Void Other(IEnumerable`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test`1[T]">\r
+      <method name="Void Other(System.Collections.Generic.IEnumerable`1[T])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-294.cs">\r
     <type name="A">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-303.cs">\r
     <type name="test.BaseClass">\r
       </method>\r
     </type>\r
     <type name="Test+&lt;WrapMyComparison&gt;c__AnonStorey1`1[W]">\r
-      <method name="Int32 &lt;&gt;m__1(W, W)" attrs="131">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0(W, W)" attrs="131">\r
+        <size>22</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-309.cs">\r
   </test>\r
   <test name="gtest-310.cs">\r
     <type name="MonoBugs.IncompleteGenericInference">\r
-      <method name="Void DoSomethingGeneric[T1,T2](IEnumerable`1, IDictionary`2)" attrs="150">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>21</size>\r
       </method>\r
+      <method name="Void DoSomethingGeneric[T1,T2](System.Collections.Generic.IEnumerable`1[T1], System.Collections.Generic.IDictionary`2[T1,T2])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-312.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Temp`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Temp`1+Foo[T]] GetEnumerator()" attrs="486">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-320.cs">\r
     <type name="Foo`1[K]">\r
       </method>\r
     </type>\r
     <type name="B+&lt;C&gt;c__AnonStorey1+&lt;C&gt;c__AnonStorey0">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>58</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>58</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-325.cs">\r
   </test>\r
   <test name="gtest-330.cs">\r
     <type name="BaseCollection`1[T]">\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>25</size>\r
-      </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>25</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="BaseCollection`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>25</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-331.cs">\r
     <type name="Foo`1[T]">\r
       <method name="Void Main()" attrs="150">\r
         <size>14</size>\r
       </method>\r
-      <method name="Void Foo[T](IList`1)" attrs="145">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="FooList`1[T]">\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Int32 IndexOf(T)" attrs="486">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void Foo[T](System.Collections.Generic.IList`1[T])" attrs="145">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="FooList`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-339.cs">\r
     <type name="Program">\r
       <method name="Void SerializeDictionary(IDictionary)" attrs="145">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void SerializeDictionary(IDictionary`2)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="SerializerLazyDictionary">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="196">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="Boolean System.Collections.Generic.IDictionary&lt;string,object&gt;.ContainsKey(System.String)" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="ICollection`1 System.Collections.Generic.IDictionary&lt;string,object&gt;.get_Keys()" attrs="2529">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Boolean System.Collections.Generic.IDictionary&lt;string,object&gt;.Remove(System.String)" attrs="481">\r
         <size>7</size>\r
       </method>\r
       <method name="Boolean System.Collections.Generic.IDictionary&lt;string,object&gt;.TryGetValue(System.String, System.Object ByRef)" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="ICollection`1 System.Collections.Generic.IDictionary&lt;string,object&gt;.get_Values()" attrs="2529">\r
-        <size>7</size>\r
-      </method>\r
       <method name="System.Object System.Collections.Generic.IDictionary&lt;string,object&gt;.get_Item(System.String)" attrs="2529">\r
         <size>7</size>\r
       </method>\r
       <method name="Void System.Collections.Generic.IDictionary&lt;string,object&gt;.set_Item(System.String, System.Object)" attrs="2529">\r
         <size>7</size>\r
       </method>\r
-      <method name="Void System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Add(KeyValuePair`2)" attrs="481">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Void System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Clear()" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="Boolean System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Contains(KeyValuePair`2)" attrs="481">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Void System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.CopyTo(System.Collections.Generic.KeyValuePair`2[System.String,System.Object][], Int32)" attrs="481">\r
         <size>7</size>\r
       </method>\r
       <method name="Boolean System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.get_IsReadOnly()" attrs="2529">\r
         <size>7</size>\r
       </method>\r
-      <method name="Boolean System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Remove(KeyValuePair`2)" attrs="481">\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.GetEnumerator()" attrs="481">\r
-        <size>15</size>\r
+    </type>\r
+    <type name="Program">\r
+      <method name="Void SerializeDictionary(System.Collections.Generic.IDictionary`2[System.String,System.Object])" attrs="145">\r
+        <size>2</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>15</size>\r
+    </type>\r
+    <type name="SerializerLazyDictionary">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]] GetEnumerator()" attrs="196">\r
+        <size>10</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="1476">\r
-        <size>0</size>\r
+    </type>\r
+    <type name="LazyDictionary">\r
+      <method name="System.Collections.Generic.ICollection`1[System.String] System.Collections.Generic.IDictionary&lt;string,object&gt;.get_Keys()" attrs="2529">\r
+        <size>7</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6276">\r
+      <method name="System.Collections.Generic.ICollection`1[System.Object] System.Collections.Generic.IDictionary&lt;string,object&gt;.get_Values()" attrs="2529">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Add(System.Collections.Generic.KeyValuePair`2[System.String,System.Object])" attrs="481">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Contains(System.Collections.Generic.KeyValuePair`2[System.String,System.Object])" attrs="481">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean System.Collections.Generic.ICollection&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.Remove(System.Collections.Generic.KeyValuePair`2[System.String,System.Object])" attrs="481">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]] System.Collections.Generic.IEnumerable&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.GetEnumerator()" attrs="481">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]] GetEnumerator()" attrs="1476">\r
+        <size>0</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-340.cs">\r
       <method name="IEnumerable Enumerable(Int32)" attrs="134">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerable`1 Enumerable[T](System.String)" attrs="134">\r
-        <size>7</size>\r
-      </method>\r
       <method name="IEnumerable Enumerable(System.String)" attrs="134">\r
         <size>7</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Enumerable[T](System.String)" attrs="134">\r
+        <size>7</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-348.cs">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="S2">\r
-      <method name="Boolean op_Equality(S2, Nullable`1)" attrs="2198">\r
-        <size>7</size>\r
-      </method>\r
-      <method name="Boolean op_Inequality(S2, Nullable`1)" attrs="2198">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
     <type name="S3">\r
       <method name="Decimal op_Inequality(S3, System.Object)" attrs="2198">\r
         <size>15</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="S2">\r
+      <method name="Boolean op_Equality(S2, System.Nullable`1[S2])" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean op_Inequality(S2, System.Nullable`1[S2])" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-359.cs">\r
     <type name="BaseGeneric`1[T]">\r
       </method>\r
     </type>\r
     <type name="BugReport.A">\r
-      <method name="Nullable`1 get_Counter()" attrs="2182">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Int32] get_Counter()" attrs="2182">\r
         <size>15</size>\r
       </method>\r
-      <method name="Void set_Counter(Nullable`1)" attrs="2182">\r
+      <method name="Void set_Counter(System.Nullable`1[System.Int32])" attrs="2182">\r
         <size>9</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-365.cs">\r
       <method name="IList Query()" attrs="486">\r
         <size>10</size>\r
       </method>\r
-      <method name="IList`1 Query[Extent](IList`1, IList`1)" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Db4objects.Db4o.Internal.ObjectContainerBase">\r
+      <method name="System.Collections.Generic.IList`1[Extent] Query[Extent](System.Collections.Generic.IList`1[Extent], System.Collections.Generic.IList`1[Extent])" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-370.cs">\r
     <type name="N2.X`1[T]">\r
     </type>\r
   </test>\r
   <test name="gtest-376.cs">\r
-    <type name="S`1[T]">\r
-      <method name="System.Object Box(Nullable`1)" attrs="145">\r
-        <size>43</size>\r
-      </method>\r
-    </type>\r
     <type name="C">\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="S`1[T]">\r
+      <method name="System.Object Box(System.Nullable`1[T])" attrs="145">\r
+        <size>43</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-377.cs">\r
     <type name="D">\r
       <method name="Void Main()" attrs="150">\r
-        <size>92</size>\r
+        <size>68</size>\r
       </method>\r
       <method name="Void .cctor()" attrs="6289">\r
         <size>26</size>\r
   </test>\r
   <test name="gtest-378.cs">\r
     <type name="Test">\r
-      <method name="System.Object Foo(Nullable`1)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="System.Object FooG[T](Nullable`1)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>76</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Object Foo(System.Nullable`1[System.Int32])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Object FooG[T](System.Nullable`1[T])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-379.cs">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="Int32 Print(Nullable`1)" attrs="145">\r
-        <size>29</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>23</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Int32 Print(System.Nullable`1[S])" attrs="145">\r
+        <size>29</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-380.cs">\r
       </method>\r
     </type>\r
   </test>\r
-  <test name="gtest-381.cs">\r
-    <type name="TestGoto">\r
-      <method name="Void Main(System.String[])" attrs="150">\r
-        <size>71</size>\r
-      </method>\r
-      <method name="IEnumerable`1 setX()" attrs="145">\r
-        <size>23</size>\r
-      </method>\r
-      <method name="IEnumerable`1 test()" attrs="145">\r
-        <size>23</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-      <method name="Void .cctor()" attrs="6289">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="TestGoto+&lt;setX&gt;c__Iterator0">\r
-      <method name="Boolean System.Collections.Generic.IEnumerator&lt;bool&gt;.get_Current()" attrs="2529">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
-        <size>19</size>\r
-      </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;bool&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
-      <method name="Boolean MoveNext()" attrs="486">\r
-        <size>115</size>\r
-      </method>\r
-      <method name="Void Dispose()" attrs="486">\r
-        <size>53</size>\r
-      </method>\r
-      <method name="Void Reset()" attrs="486">\r
-        <size>6</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="TestGoto+&lt;test&gt;c__Iterator1">\r
-      <method name="Boolean System.Collections.Generic.IEnumerator&lt;bool&gt;.get_Current()" attrs="2529">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
-        <size>19</size>\r
-      </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;bool&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
-      <method name="Boolean MoveNext()" attrs="486">\r
-        <size>189</size>\r
-      </method>\r
-      <method name="Void Dispose()" attrs="486">\r
-        <size>69</size>\r
-      </method>\r
-      <method name="Void Reset()" attrs="486">\r
-        <size>6</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
-    <type name="TestGoto+&lt;setX&gt;c__Iterator0">\r
-      <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-  </test>\r
   <test name="gtest-382.cs">\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
     </type>\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>279</size>\r
+        <size>298</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="gtest-389.cs">\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>261</size>\r
+        <size>253</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   </test>\r
   <test name="gtest-392.cs">\r
     <type name="DieSubrangeType">\r
-      <method name="Nullable`1 get_UpperBound()" attrs="2182">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="Void set_UpperBound(Nullable`1)" attrs="2177">\r
-        <size>8</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>20</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="DieSubrangeType">\r
+      <method name="System.Nullable`1[System.Int32] get_UpperBound()" attrs="2182">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void set_UpperBound(System.Nullable`1[System.Int32])" attrs="2177">\r
+        <size>8</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-393.cs">\r
     <type name="B`1[T]">\r
   </test>\r
   <test name="gtest-397.cs">\r
     <type name="Foo">\r
-      <method name="Foo op_UnaryNegation(Nullable`1)" attrs="2198">\r
-        <size>55</size>\r
-      </method>\r
       <method name="Void .ctor(Int32)" attrs="6278">\r
         <size>9</size>\r
       </method>\r
     </type>\r
     <type name="Bar">\r
-      <method name="Nullable`1 op_UnaryNegation(Nullable`1)" attrs="2198">\r
-        <size>54</size>\r
-      </method>\r
       <method name="Void .ctor(Int32)" attrs="6278">\r
         <size>9</size>\r
       </method>\r
       <method name="Foo NegateFoo(Foo)" attrs="145">\r
         <size>20</size>\r
       </method>\r
-      <method name="Foo NegateFooNullable(Nullable`1)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Nullable`1 NegateBarNullable(Nullable`1)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Nullable`1 NegateBar(Bar)" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>168</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo">\r
+      <method name="Foo op_UnaryNegation(System.Nullable`1[Foo])" attrs="2198">\r
+        <size>55</size>\r
+      </method>\r
+    </type>\r
+    <type name="Bar">\r
+      <method name="System.Nullable`1[Bar] op_UnaryNegation(System.Nullable`1[Bar])" attrs="2198">\r
+        <size>54</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test">\r
+      <method name="Foo NegateFooNullable(System.Nullable`1[Foo])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Nullable`1[Bar] NegateBarNullable(System.Nullable`1[Bar])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Nullable`1[Bar] NegateBar(Bar)" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-398.cs">\r
     <type name="ToStr">\r
     </type>\r
     <type name="NullableColorTests">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>117</size>\r
+        <size>120</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       <method name="Void Test_2()" attrs="129">\r
         <size>32</size>\r
       </method>\r
-      <method name="Nullable`1 Test_3[T](System.Func`3[T,T,T], T)" attrs="129">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void Test_4(Boolean, Boolean)" attrs="129">\r
         <size>40</size>\r
       </method>\r
       <method name="Void Test_13(System.Object)" attrs="129">\r
         <size>53</size>\r
       </method>\r
-      <method name="Nullable`1 Test_14()" attrs="129">\r
-        <size>68</size>\r
-      </method>\r
       <method name="System.Action`1[System.Int32] Test_15(System.Action`1[System.Int32])" attrs="129">\r
         <size>46</size>\r
       </method>\r
       <method name="Void Helper[T](T)" attrs="145">\r
         <size>2</size>\r
       </method>\r
+      <method name="System.Nullable`1[T] Test_3[T](System.Func`3[T,T,T], T)" attrs="129">\r
+        <size>22</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Int32] Test_14()" attrs="129">\r
+        <size>68</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-410.cs">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>31</size>\r
       </method>\r
-      <method name="Nullable`1 get_Id()" attrs="2177">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Boolean Test()" attrs="129">\r
         <size>59</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Nullable`1[System.Int32] get_Id()" attrs="2177">\r
+        <size>15</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-423.cs">\r
       <method name="Void Block(A[])" attrs="150">\r
         <size>7</size>\r
       </method>\r
-      <method name="Void Block(IEnumerable`1, A[])" attrs="150">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>37</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Block(System.Collections.Generic.IEnumerable`1[B], A[])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-425.cs">\r
   </test>\r
   <test name="gtest-426.cs">\r
     <type name="OverloadTest.MyClass`1[T]">\r
-      <method name="Boolean Method(MyInterface`1)" attrs="134">\r
-        <size>28</size>\r
-      </method>\r
       <method name="Boolean Method(System.Action`1[T])" attrs="134">\r
         <size>10</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="OverloadTest.MyClass`1[T]">\r
+      <method name="Boolean Method(OverloadTest.MyInterface`1[T])" attrs="134">\r
+        <size>28</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-427.cs">\r
     <type name="EventHandler">\r
       </method>\r
     </type>\r
     <type name="Klass">\r
-      <method name="Nullable`1 get_Value()" attrs="2182">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor(Nullable`1)" attrs="6278">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Klass">\r
+      <method name="System.Nullable`1[CInt] get_Value()" attrs="2182">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-429.cs">\r
     <type name="CInt">\r
       </method>\r
     </type>\r
     <type name="Driver">\r
-      <method name="Nullable`1 get_Prop()" attrs="2182">\r
-        <size>50</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>50</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Nullable`1[System.Int32] get_Prop()" attrs="2182">\r
+        <size>50</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-431.cs">\r
   <test name="gtest-435.cs">\r
     <type name="testcase.Program">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>293</size>\r
+        <size>371</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>10</size>\r
       </method>\r
-      <method name="Void Foo[U](IEnumerable`1)" attrs="486">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Impl`1[T]">\r
+      <method name="Void Foo[U](System.Collections.Generic.IEnumerable`1[U])" attrs="486">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-449.cs">\r
     <type name="Program">\r
       <method name="Single op_Implicit(S)" attrs="2198">\r
         <size>12</size>\r
       </method>\r
-      <method name="Nullable`1 op_Implicit(S)" attrs="2198">\r
+      <method name="System.Nullable`1[System.Single] op_Implicit(S)" attrs="2198">\r
         <size>19</size>\r
       </method>\r
     </type>\r
   </test>\r
   <test name="gtest-468.cs">\r
     <type name="TS">\r
-      <method name="Nullable`1 get_v()" attrs="2182">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Nullable`1 op_Implicit(TS)" attrs="2198">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="TS op_Implicit(Nullable`1)" attrs="2198">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>56</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Nullable`1[System.Int32] get_v()" attrs="2182">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Int32] op_Implicit(TS)" attrs="2198">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="TS op_Implicit(System.Nullable`1[System.Int32])" attrs="2198">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-469.cs">\r
   </test>\r
   <test name="gtest-476.cs">\r
     <type name="Test`1[T]">\r
-      <method name="B First()" attrs="134">\r
-        <size>18</size>\r
-      </method>\r
       <method name="IFoo Second()" attrs="134">\r
         <size>23</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test`1[T]">\r
+      <method name="Test`1+B[T] First()" attrs="134">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-477.cs">\r
     <type name="B`1[T]">\r
       </method>\r
     </type>\r
     <type name="M">\r
-      <method name="Void Test[T](I`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>22</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Test[T](I`1[T])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-480.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>10</size>\r
       </method>\r
-      <method name="Void AddRange(IMyCollection`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void AddRange(IEnumerable`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 get_Count()" attrs="2534">\r
         <size>10</size>\r
       </method>\r
       <method name="Boolean Remove(T)" attrs="486">\r
         <size>10</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>21</size>\r
       </method>\r
     </type>\r
+    <type name="MyCollection`1[T]">\r
+      <method name="Void AddRange(IMyCollection`1[T])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void AddRange(System.Collections.Generic.IEnumerable`1[T])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-487.cs">\r
     <type name="Limada.MonoTests.Generics.MultiDictionary`3[K,V,TDictionary]">\r
   </test>\r
   <test name="gtest-490.cs">\r
     <type name="Foo">\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Foo&gt;.GetEnumerator()" attrs="481">\r
-        <size>25</size>\r
-      </method>\r
       <method name="IEnumerator GetEnumerator()" attrs="486">\r
         <size>25</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>18</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[Foo] System.Collections.Generic.IEnumerable&lt;Foo&gt;.GetEnumerator()" attrs="481">\r
+        <size>25</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-491.cs">\r
       <method name="Int32 Test(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="R Method[T,R](IEnumerable`1, System.Func`2[T,R])" attrs="145">\r
-        <size>24</size>\r
-      </method>\r
-      <method name="R Method2[T,R](IEnumerable`1, System.Func`2[System.Collections.Generic.List`1[T],R])" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>125</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="R Method[T,R](System.Collections.Generic.IEnumerable`1[T], System.Func`2[T,R])" attrs="145">\r
+        <size>24</size>\r
+      </method>\r
+      <method name="R Method2[T,R](System.Collections.Generic.IEnumerable`1[T], System.Func`2[System.Collections.Generic.List`1[T],R])" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-506.cs">\r
   </test>\r
   <test name="gtest-515.cs">\r
     <type name="A">\r
-      <method name="I`1 Foo[T]()" attrs="454">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="AA">\r
-      <method name="I`1 Foo[V]()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="Void Dispose()" attrs="486">\r
         <size>2</size>\r
       </method>\r
-      <method name="I`1 Foo[R]()" attrs="198">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>13</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A">\r
+      <method name="I`1[T] Foo[T]()" attrs="454">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="AA">\r
+      <method name="I`1[V] Foo[V]()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="B">\r
+      <method name="I`1[R] Foo[R]()" attrs="198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-516.cs">\r
     <type name="B">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator()" attrs="481">\r
-        <size>24</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerator`1[A] System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator()" attrs="481">\r
+        <size>24</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-521.cs">\r
     <type name="D">\r
       <method name="Boolean Equals(T)" attrs="486">\r
         <size>10</size>\r
       </method>\r
-      <method name="Boolean Equals(TestClass4`1)" attrs="486">\r
+      <method name="Int32 GetHashCode()" attrs="198">\r
         <size>10</size>\r
       </method>\r
-      <method name="Boolean Equals(TestClass4`1, TestClass4`1)" attrs="486">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Int32 GetHashCode(TestClass4`1)" attrs="486">\r
-        <size>22</size>\r
+      <method name="Boolean Equals(System.Object)" attrs="198">\r
+        <size>10</size>\r
       </method>\r
-      <method name="Int32 GetHashCode()" attrs="198">\r
+    </type>\r
+    <type name="Test.C">\r
+      <method name="Void Main()" attrs="150">\r
         <size>10</size>\r
       </method>\r
-      <method name="Boolean Equals(System.Object)" attrs="198">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.TestClass4`1[T]">\r
+      <method name="Boolean Equals(Test.TestClass4`1[T])" attrs="486">\r
         <size>10</size>\r
       </method>\r
-      <method name="Boolean op_Equality(TestClass4`1, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean Equals(Test.TestClass4`1[T], Test.TestClass4`1[T])" attrs="486">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Int32 GetHashCode(Test.TestClass4`1[T])" attrs="486">\r
+        <size>22</size>\r
+      </method>\r
+      <method name="Boolean op_Equality(Test.TestClass4`1[T], Test.TestClass4`1[T])" attrs="2198">\r
         <size>17</size>\r
       </method>\r
-      <method name="Boolean op_Equality(T, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean op_Equality(T, Test.TestClass4`1[T])" attrs="2198">\r
         <size>17</size>\r
       </method>\r
-      <method name="Boolean op_Equality(TestClass4`1, T)" attrs="2198">\r
+      <method name="Boolean op_Equality(Test.TestClass4`1[T], T)" attrs="2198">\r
         <size>17</size>\r
       </method>\r
-      <method name="Boolean op_Equality(System.Object, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean op_Equality(System.Object, Test.TestClass4`1[T])" attrs="2198">\r
         <size>23</size>\r
       </method>\r
-      <method name="Boolean op_Equality(TestClass4`1, System.Object)" attrs="2198">\r
+      <method name="Boolean op_Equality(Test.TestClass4`1[T], System.Object)" attrs="2198">\r
         <size>23</size>\r
       </method>\r
-      <method name="Boolean op_Inequality(TestClass4`1, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean op_Inequality(Test.TestClass4`1[T], Test.TestClass4`1[T])" attrs="2198">\r
         <size>19</size>\r
       </method>\r
-      <method name="Boolean op_Inequality(T, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean op_Inequality(T, Test.TestClass4`1[T])" attrs="2198">\r
         <size>19</size>\r
       </method>\r
-      <method name="Boolean op_Inequality(TestClass4`1, T)" attrs="2198">\r
+      <method name="Boolean op_Inequality(Test.TestClass4`1[T], T)" attrs="2198">\r
         <size>19</size>\r
       </method>\r
-      <method name="Boolean op_Inequality(System.Object, TestClass4`1)" attrs="2198">\r
+      <method name="Boolean op_Inequality(System.Object, Test.TestClass4`1[T])" attrs="2198">\r
         <size>19</size>\r
       </method>\r
-      <method name="Boolean op_Inequality(TestClass4`1, System.Object)" attrs="2198">\r
+      <method name="Boolean op_Inequality(Test.TestClass4`1[T], System.Object)" attrs="2198">\r
         <size>19</size>\r
       </method>\r
     </type>\r
-    <type name="Test.C">\r
-      <method name="Void Main()" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
-    </type>\r
   </test>\r
   <test name="gtest-524.cs">\r
     <type name="C">\r
   </test>\r
   <test name="gtest-534.cs">\r
     <type name="A">\r
-      <method name="Void Method(IG`1)" attrs="486">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>21</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Method(IG`1[System.Double[][]])" attrs="486">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-535.cs">\r
       </method>\r
     </type>\r
     <type name="S">\r
-      <method name="System.String op_BitwiseOr(S, Nullable`1)" attrs="2198">\r
+      <method name="System.String op_BitwiseOr(S, System.Nullable`1[S])" attrs="2198">\r
         <size>14</size>\r
       </method>\r
-      <method name="Nullable`1 op_Addition(S, Nullable`1)" attrs="2198">\r
+      <method name="System.Nullable`1[System.Int32] op_Addition(S, System.Nullable`1[S])" attrs="2198">\r
         <size>16</size>\r
       </method>\r
     </type>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor(Int32)" attrs="6278">\r
         <size>2</size>\r
       </method>\r
     </type>\r
-    <type name="S2">\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>23</size>\r
-      </method>\r
-    </type>\r
     <type name="Enumerator`1[T]">\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>7</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="S">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] GetEnumerator()" attrs="486">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="S2">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] GetEnumerator()" attrs="134">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-539.cs">\r
     <type name="S">\r
       <method name="C op_Explicit(S)" attrs="2198">\r
         <size>12</size>\r
       </method>\r
-      <method name="C op_Explicit(Nullable`1)" attrs="2198">\r
-        <size>47</size>\r
-      </method>\r
       <method name="Void .ctor(Int32)" attrs="6273">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="C op_Explicit(System.Nullable`1[S])" attrs="2198">\r
+        <size>47</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-540.cs">\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>964</size>\r
+        <size>762</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void BrokenLiftedNull()" attrs="129">\r
+        <size>82</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-541.cs">\r
     </type>\r
     <type name="Program">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>64</size>\r
+        <size>78</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A3`1[T]">\r
+      <method name="Void Foo[U]()" attrs="1478">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6276">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="B3">\r
+      <method name="Void Foo[Y]()" attrs="198">\r
+        <size>2</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>128</size>\r
+        <size>353</size>\r
       </method>\r
     </type>\r
   </test>\r
         <size>20</size>\r
       </method>\r
     </type>\r
-    <type name="Foo.Magic`1[T]">\r
-      <method name="Void Upsample(IUpDown)" attrs="150">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
     <type name="Foo.Instance">\r
       <method name="Int32 get_DestinationDimension()" attrs="2534">\r
         <size>10</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo.Magic`1[T]">\r
+      <method name="Void Upsample(Foo.Magic`1+IUpDown[T])" attrs="150">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-551.cs">\r
     <type name="Base`1[T]">\r
       <method name="Void Foo[T](T)" attrs="145">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void Test(Nullable`1)" attrs="150">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C`1[U]">\r
+      <method name="Void Test(System.Nullable`1[S])" attrs="150">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-564.cs">\r
     <type name="B1`2[T1,T2]">\r
       </method>\r
     </type>\r
     <type name="C`1[T]">\r
-      <method name="C`1 op_Implicit(T)" attrs="2198">\r
+      <method name="C`1[T] op_Implicit(T)" attrs="2198">\r
         <size>18</size>\r
       </method>\r
     </type>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>7</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>15</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int16] GetEnumerator()" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-573.cs">\r
       </method>\r
     </type>\r
     <type name="CA`1[T]">\r
-      <method name="IB`1 IB&lt;T&gt;.Backwards()" attrs="481">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IA`1 Backwards()" attrs="1478">\r
-        <size>0</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="CA`1[T]">\r
+      <method name="IA`1[T] Backwards()" attrs="1478">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="IB`1[T] IB&lt;T&gt;.Backwards()" attrs="481">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-574.cs">\r
     <type name="TestClass`1[T1]">\r
       <method name="Void Test()" attrs="129">\r
         <size>11</size>\r
       </method>\r
-      <method name="Void Foo[U](IEnumerable`1)" attrs="134">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="DirectedCollectionBase`1[T3]">\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T3&gt;.GetEnumerator()" attrs="481">\r
-        <size>10</size>\r
-      </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>10</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="EnumerableBase`1[T6]">\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T6&gt;.GetEnumerator()" attrs="481">\r
-        <size>10</size>\r
-      </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>10</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TestClass`1[T1]">\r
+      <method name="Void Foo[U](System.Collections.Generic.IEnumerable`1[U])" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="DirectedCollectionBase`1[T3]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T3] System.Collections.Generic.IEnumerable&lt;T3&gt;.GetEnumerator()" attrs="481">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="EnumerableBase`1[T6]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T6] System.Collections.Generic.IEnumerable&lt;T6&gt;.GetEnumerator()" attrs="481">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-575.cs">\r
     <type name="C`1[T1]">\r
   </test>\r
   <test name="gtest-576.cs">\r
     <type name="A">\r
-      <method name="Void IA.f[T1](IParam`1)" attrs="481">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>8</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void IA.f[T1](IParam`1[T1])" attrs="481">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-577.cs">\r
   </test>\r
   <test name="gtest-578.cs">\r
     <type name="X">\r
-      <method name="I`1 Test[T,TR](I`1, System.Func`2[I`1[T],TR])" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="U First[U](I`1)" attrs="150">\r
-        <size>18</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>44</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="I`1[TR] Test[T,TR](I`1[T], System.Func`2[I`1[T],TR])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="U First[U](I`1[U])" attrs="150">\r
+        <size>18</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-579.cs">\r
     </type>\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>34</size>\r
+        <size>80</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Boolean Test_2[T2](T2[])" attrs="145">\r
+        <size>18</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-580.cs">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="gtest-584.cs">\r
+    <type name="S">\r
+      <method name="Boolean op_Equality(S, S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean op_Inequality(S, S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>531</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S">\r
+      <method name="System.Nullable`1[System.Int32] op_Implicit(S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="System.Nullable`1[E] op_Implicit(S)" attrs="2198">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-585.cs">\r
+    <type name="S">\r
+      <method name="Int32 op_Implicit(S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S3">\r
+      <method name="System.String op_Implicit(S3)" attrs="2198">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>436</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S2">\r
+      <method name="System.Nullable`1[System.Int32] op_Implicit(S2)" attrs="2198">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.UInt32] op_Implicit(S2)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-586.cs">\r
+    <type name="S">\r
+      <method name="Boolean op_Equality(S, S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean op_Inequality(S, S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S2">\r
+      <method name="Boolean op_Equality(S2, S2)" attrs="2198">\r
+        <size>22</size>\r
+      </method>\r
+      <method name="Boolean op_Inequality(S2, S2)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>661</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S3">\r
+      <method name="System.Nullable`1[System.Int32] op_Implicit(S3)" attrs="2198">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-587.cs">\r
+    <type name="S">\r
+      <method name="System.String op_Implicit(S)" attrs="2198">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="E op_Implicit(S)" attrs="2198">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>139</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S">\r
+      <method name="System.Nullable`1[System.Int16] op_Implicit(S)" attrs="2198">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-588.cs">\r
+    <type name="S">\r
+      <method name="System.Nullable`1[System.Int16] op_Implicit(S)" attrs="2198">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Int16 op_Implicit(S)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>246</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-589.cs">\r
+    <type name="Z">\r
+      <method name="Z Start()" attrs="134">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Z IGenericInterface&lt;Z&gt;.Start()" attrs="481">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A`1[T]">\r
+      <method name="Void SomeOperation(T)" attrs="134">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 IGenericInterface&lt;int&gt;.Start()" attrs="481">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-590.cs">\r
+    <type name="C">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>132</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-591.cs">\r
+    <type name="E">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-592.cs">\r
+    <type name="Tests">\r
+      <method name="Void A[T](System.Collections.Generic.IReadOnlyCollection`1[T])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void B[T](System.Collections.Generic.IReadOnlyList`1[T])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>51</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-593.cs">\r
+    <type name="Parser`2[D1,DR1]">\r
+      <method name="System.Tuple`2[D1,DR1] Invoke(D1)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="IAsyncResult BeginInvoke(D1, System.AsyncCallback, System.Object)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="System.Tuple`2[D1,DR1] EndInvoke(IAsyncResult)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="Combinator">\r
+      <method name="Parser`2[L1,LR1] Lazy[L1,LR1](System.Func`1[Parser`2[L1,LR1]])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Parser`2[C1,CR1] Choice[C1,CR1](Parser`2[C1,CR1])" attrs="150">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Combinator+&lt;Choice&gt;c__AnonStorey0`2[C1,CR1]">\r
+      <method name="Parser`2[C1,CR1] &lt;&gt;m__0()" attrs="131">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Combinator">\r
+      <method name="System.Tuple`2[System.Int32,System.Int32] &lt;Main&gt;m__0(Int32)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-594.cs">\r
+    <type name="C">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Y">\r
+      <method name="Void Foo[T]()" attrs="486">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-595.cs">\r
+    <type name="MainClass">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>66</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="MainClass+TypeConverter`2[TIn,TOut]">\r
+      <method name="Boolean Convert(TIn)" attrs="150">\r
+        <size>34</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-596.cs">\r
+    <type name="X">\r
+      <method name="Artist get_Artist()" attrs="2182">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void set_Artist(Artist)" attrs="2182">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>36</size>\r
+      </method>\r
+      <method name="Void Test[T1,T2](System.Func`2[T1,T2])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Test[T1,T2](System.Func`3[T1,System.Int32,T2])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Artist">\r
+      <method name="Artist FromToken(System.String)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-597.cs">\r
+    <type name="Test.MainClass">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>63</size>\r
+      </method>\r
+      <method name="Boolean Test_1[T](Test.Templated`1[T])" attrs="145">\r
+        <size>18</size>\r
+      </method>\r
+      <method name="Boolean Test_2[U](Test.IA`1[U])" attrs="145">\r
+        <size>18</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Templated`1[T]">\r
+      <method name="Void .ctor()" attrs="6276">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Derived">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-598.cs">\r
+    <type name="A">\r
+      <method name="T Test[T](T)" attrs="454">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="B">\r
+      <method name="T Test[T](T)" attrs="198">\r
+        <size>28</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="T Test[T](T)" attrs="198">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="AG`1[U]">\r
+      <method name="T Test[T](T, U)" attrs="454">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="B`1[UB]">\r
+      <method name="T Test[T](T, UB)" attrs="198">\r
+        <size>28</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C`1[UC]">\r
+      <method name="T Test[T](T, UC)" attrs="198">\r
+        <size>39</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>27</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-599.cs">\r
+    <type name="A`1[X]">\r
+      <method name="T Test[T](T, X)" attrs="1478">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6276">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="B">\r
+      <method name="T Test[T](T, Char)" attrs="198">\r
+        <size>28</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="T Test[T](T, Char)" attrs="198">\r
+        <size>32</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="gtest-anontype-01.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
   </test>\r
   <test name="gtest-anontype-13.cs">\r
     <type name="Test">\r
-      <method name="IEnumerable`1 Select[T](System.Array, System.Func`2[System.Object,T])" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>182</size>\r
       </method>\r
-      <method name="Boolean &lt;Main&gt;m__1(&lt;&gt;__AnonType0`2[System.String,System.Reflection.PropertyInfo])" attrs="145">\r
-        <size>21</size>\r
-      </method>\r
-      <method name="System.String &lt;Main&gt;m__2(&lt;&gt;__AnonType0`2[System.String,System.Reflection.PropertyInfo])" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
     </type>\r
     <type name="Test+&lt;Select&gt;c__Iterator0`1[T]">\r
       <method name="T System.Collections.Generic.IEnumerator&lt;T&gt;.get_Current()" attrs="2529">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>211</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Select[T](System.Array, System.Func`2[System.Object,T])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Select&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test">\r
+      <method name="Boolean &lt;Main&gt;m__0(&lt;&gt;__AnonType0`2[System.String,System.Reflection.PropertyInfo])" attrs="145">\r
+        <size>21</size>\r
+      </method>\r
+      <method name="System.String &lt;Main&gt;m__1(&lt;&gt;__AnonType0`2[System.String,System.Reflection.PropertyInfo])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-autoproperty-01.cs">\r
     <type name="Test">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="gtest-autoproperty-08.cs">\r
+    <type name="AAttribute">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program">\r
+      <method name="Int32 get_Prop()" attrs="2182">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void set_Prop(Int32)" attrs="2182">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>48</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="gtest-collectioninit-01.cs">\r
     <type name="Test">\r
       <method name="Void TestList(System.Collections.Generic.List`1[System.Int32], Int32)" attrs="145">\r
         <size>239</size>\r
       </method>\r
       <method name="Void ConvertTest_7()" attrs="129">\r
-        <size>123</size>\r
+        <size>108</size>\r
       </method>\r
       <method name="Void ConvertTest_8()" attrs="129">\r
         <size>119</size>\r
         <size>170</size>\r
       </method>\r
       <method name="Void EqualTest_11()" attrs="129">\r
-        <size>133</size>\r
+        <size>148</size>\r
       </method>\r
       <method name="Void EqualTest_12()" attrs="129">\r
         <size>128</size>\r
         <size>125</size>\r
       </method>\r
       <method name="Void EqualTest_14()" attrs="129">\r
-        <size>102</size>\r
+        <size>132</size>\r
       </method>\r
       <method name="Void EqualTest_15()" attrs="129">\r
         <size>160</size>\r
         <size>198</size>\r
       </method>\r
       <method name="Void ExclusiveOrTest_8()" attrs="129">\r
-        <size>164</size>\r
+        <size>179</size>\r
       </method>\r
       <method name="Void GreaterThanTest()" attrs="129">\r
         <size>100</size>\r
         <size>170</size>\r
       </method>\r
       <method name="Void NotEqualTest_11()" attrs="129">\r
-        <size>133</size>\r
+        <size>148</size>\r
       </method>\r
       <method name="Void OrTest()" attrs="129">\r
         <size>142</size>\r
     </type>\r
     <type name="Tester">\r
       <method name="Void LessThanTest_9()" attrs="129">\r
-        <size>199</size>\r
+        <size>184</size>\r
       </method>\r
     </type>\r
   </test>\r
   <test name="gtest-etree-03.cs">\r
     <type name="S`1[T]">\r
       <method name="Int32 Test()" attrs="150">\r
-        <size>164</size>\r
+        <size>139</size>\r
       </method>\r
     </type>\r
     <type name="C">\r
     </type>\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>394</size>\r
+        <size>495</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo">\r
+      <method name="Foo op_Addition(Foo, Foo)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-etree-05.cs">\r
     <type name="C">\r
   </test>\r
   <test name="gtest-etree-10.cs">\r
     <type name="Foo`1[T]">\r
-      <method name="Boolean ContainsAll[U](IEnumerable`1)" attrs="134">\r
-        <size>200</size>\r
-      </method>\r
       <method name="Boolean Contains(T)" attrs="134">\r
         <size>10</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo`1[T]">\r
+      <method name="Boolean ContainsAll[U](System.Collections.Generic.IEnumerable`1[U])" attrs="134">\r
+        <size>200</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-etree-11.cs">\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>66</size>\r
       </method>\r
-      <method name="IEnumerable`1 Test[T](Int32)" attrs="145">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>148</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Program">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test[T](Int32)" attrs="145">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;Test&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-etree-14.cs">\r
     <type name="Person">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>67</size>\r
       </method>\r
-      <method name="IEnumerable`1 GetPersons[T](IEnumerable`1, Int32)" attrs="145">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Boolean Test[T](T, System.Linq.Expressions.Expression`1[System.Func`2[T,System.Boolean]])" attrs="145">\r
         <size>21</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>336</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Repro">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] GetPersons[T](System.Collections.Generic.IEnumerable`1[T], Int32)" attrs="145">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Repro+&lt;GetPersons&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-etree-15.cs">\r
     <type name="Foo">\r
   </test>\r
   <test name="gtest-exmethod-07.cs">\r
     <type name="E">\r
-      <method name="Void ToReadOnly[T](IEnumerable`1)" attrs="147">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void To(IA)" attrs="147">\r
         <size>2</size>\r
       </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void Test(IEnumerable`1)" attrs="150">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="E">\r
+      <method name="Void ToReadOnly[T](System.Collections.Generic.IEnumerable`1[T])" attrs="147">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Void Test(System.Collections.Generic.IEnumerable`1[System.Boolean])" attrs="150">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-exmethod-08.cs">\r
     <type name="C">\r
   </test>\r
   <test name="gtest-exmethod-13.cs">\r
     <type name="Foo">\r
-      <method name="IEnumerable`1 Reverse[T](IEnumerable`1)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>24</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Reverse[T](System.Collections.Generic.IEnumerable`1[T])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-exmethod-14.cs">\r
       <method name="System.String Test_1(System.String)" attrs="150">\r
         <size>20</size>\r
       </method>\r
-      <method name="Int32 Test_2[T](IEnumerable`1)" attrs="150">\r
-        <size>11</size>\r
-      </method>\r
     </type>\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>0</size>\r
       </method>\r
     </type>\r
+    <type name="Rocks">\r
+      <method name="Int32 Test_2[T](System.Collections.Generic.IEnumerable`1[T])" attrs="150">\r
+        <size>11</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-exmethod-20.cs">\r
     <type name="Outer.Inner.Test">\r
       </method>\r
     </type>\r
     <type name="Outer.ExtensionMethods">\r
-      <method name="Void AddRange[T](I, IEnumerable`1)" attrs="150">\r
+      <method name="Void AddRange[T](I, System.Collections.Generic.IEnumerable`1[T])" attrs="150">\r
         <size>2</size>\r
       </method>\r
     </type>\r
     </type>\r
   </test>\r
   <test name="gtest-exmethod-27.cs">\r
-    <type name="Foo.Extensions">\r
-      <method name="System.String AsString(IList`1)" attrs="150">\r
-        <size>14</size>\r
-      </method>\r
-    </type>\r
     <type name="Bar.Program">\r
       <method name="Void Main()" attrs="150">\r
         <size>18</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo.Extensions">\r
+      <method name="System.String AsString(System.Collections.Generic.IList`1[System.Byte])" attrs="150">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-exmethod-28.cs">\r
     <type name="Foo">\r
       <method name="Int32 get_First()" attrs="2182">\r
         <size>10</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] GetEnumerator()" attrs="486">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-exmethod-31.cs">\r
     <type name="N.S">\r
   </test>\r
   <test name="gtest-exmethod-41.cs">\r
     <type name="TT">\r
-      <method name="Void Method[T](IEnumerable`1, System.Func`2[T,System.Boolean])" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Test[U](U)" attrs="150">\r
         <size>25</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TT">\r
+      <method name="Void Method[T](System.Collections.Generic.IEnumerable`1[T], System.Func`2[T,System.Boolean])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-exmethod-42.cs">\r
     <type name="C">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="ExtensionTest.Two.Extensions">\r
-      <method name="Boolean Contains[T](IEnumerable`1, T)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Boolean All[T](IEnumerable`1, ExtensionTest.Two.AxFunc`2[T,System.Boolean])" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-    </type>\r
     <type name="ExtensionTest.MyClass">\r
       <method name="Boolean IsCharacters(System.String, System.Char[])" attrs="150">\r
         <size>27</size>\r
         <size>2</size>\r
       </method>\r
     </type>\r
+    <type name="ExtensionTest.Two.Extensions">\r
+      <method name="Boolean Contains[T](System.Collections.Generic.IEnumerable`1[T], T)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Boolean All[T](System.Collections.Generic.IEnumerable`1[T], ExtensionTest.Two.AxFunc`2[T,System.Boolean])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-exmethod-47.cs">\r
+    <type name="D">\r
+      <method name="Void Invoke()" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void EndInvoke(IAsyncResult)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Void Main()" attrs="145">\r
+        <size>21</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="S">\r
+      <method name="Void Foo(Int32)" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Extension">\r
+      <method name="Void Foo(S)" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-fixedbuffer-01.cs">\r
     <type name="TestNew">\r
       <method name="T get_Item(Int32)" attrs="2182">\r
         <size>21</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="134">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>8</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C+ArrayReadOnlyList`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="134">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-02.cs">\r
     <type name="C">\r
-      <method name="IEnumerator`1 Test()" attrs="129">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test&gt;c__Iterator0">\r
-      <method name="KeyValuePair`2 System.Collections.Generic.IEnumerator&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.get_Current()" attrs="2529">\r
-        <size>14</size>\r
-      </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>19</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Collections.Generic.KeyValuePair`2[System.String,System.Object]] Test()" attrs="129">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.KeyValuePair`2[System.String,System.Object] System.Collections.Generic.IEnumerator&lt;System.Collections.Generic.KeyValuePair&lt;string,object&gt;&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-03.cs">\r
     <type name="Test">\r
-      <method name="IEnumerable`1 Annotations[T]()" attrs="134">\r
-        <size>30</size>\r
-      </method>\r
-      <method name="IEnumerable`1 Annotations(System.Type)" attrs="134">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>15</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>204</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>232</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Annotations[T]()" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] Annotations(System.Type)" attrs="134">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Annotations&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Annotations&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-04.cs">\r
     <type name="TestClass">\r
       <method name="Void ToString(System.Object)" attrs="1478">\r
         <size>0</size>\r
       </method>\r
-      <method name="IEnumerable`1 TestEnumerator()" attrs="134">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void Test()" attrs="134">\r
         <size>9</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>38</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TestClass">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] TestEnumerator()" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestClass+&lt;TestEnumerator&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-05.cs">\r
     <type name="Test">\r
       <method name="Void Main()" attrs="150">\r
         <size>32</size>\r
       </method>\r
-      <method name="IEnumerable`1 TestRoutine[T](IEnumerable`1, Foo`1[T])" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>197</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-iter-06.cs">\r
-    <type name="Mono.Rocks.KeyValuePair">\r
-      <method name="Nullable`1 Just[TKey,TValue](TKey, TValue)" attrs="150">\r
-        <size>21</size>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] TestRoutine[T](System.Collections.Generic.IEnumerable`1[T], Foo`1[T])" attrs="150">\r
+        <size>37</size>\r
       </method>\r
     </type>\r
-    <type name="Mono.Rocks.Sequence">\r
-      <method name="IEnumerable`1 Unfoldr[TSource,TResult](TSource, System.Func`2[TSource,System.Nullable`1[System.Collections.Generic.KeyValuePair`2[TResult,TSource]]])" attrs="150">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="IEnumerable`1 CreateUnfoldrIterator[TSource,TResult](TSource, System.Func`2[TSource,System.Nullable`1[System.Collections.Generic.KeyValuePair`2[TResult,TSource]]])" attrs="145">\r
-        <size>44</size>\r
+    <type name="Test+&lt;TestRoutine&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
       </method>\r
     </type>\r
+  </test>\r
+  <test name="gtest-iter-06.cs">\r
     <type name="Mono.Rocks.Test">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>128</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;Main&gt;m__0(Int32)" attrs="145">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;TResult&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>192</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Mono.Rocks.KeyValuePair">\r
+      <method name="System.Nullable`1[System.Collections.Generic.KeyValuePair`2[TKey,TValue]] Just[TKey,TValue](TKey, TValue)" attrs="150">\r
+        <size>21</size>\r
+      </method>\r
+    </type>\r
+    <type name="Mono.Rocks.Sequence">\r
+      <method name="System.Collections.Generic.IEnumerable`1[TResult] Unfoldr[TSource,TResult](TSource, System.Func`2[TSource,System.Nullable`1[System.Collections.Generic.KeyValuePair`2[TResult,TSource]]])" attrs="150">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[TResult] CreateUnfoldrIterator[TSource,TResult](TSource, System.Func`2[TSource,System.Nullable`1[System.Collections.Generic.KeyValuePair`2[TResult,TSource]]])" attrs="145">\r
+        <size>44</size>\r
+      </method>\r
+    </type>\r
+    <type name="Mono.Rocks.Test">\r
+      <method name="System.Nullable`1[System.Collections.Generic.KeyValuePair`2[System.Int32,System.Int32]] &lt;Main&gt;m__0(Int32)" attrs="145">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Mono.Rocks.Sequence+&lt;CreateUnfoldrIterator&gt;c__Iterator0`2[TSource,TResult]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[TResult] System.Collections.Generic.IEnumerable&lt;TResult&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-07.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>16</size>\r
       </method>\r
-      <method name="Void TestFunction(IEnumerable`1)" attrs="150">\r
-        <size>36</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="MySystem">\r
-      <method name="IEnumerable`1 get_Items()" attrs="2182">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>35</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>197</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void TestFunction(System.Collections.Generic.IEnumerable`1[System.String])" attrs="150">\r
+        <size>36</size>\r
+      </method>\r
+    </type>\r
+    <type name="MySystem">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] get_Items()" attrs="2182">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="MySystem+&lt;&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-08.cs">\r
     <type name="App">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>91</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-iter-09.cs">\r
     <type name="Test">\r
-      <method name="IEnumerable`1 Create[T](T[,])" attrs="145">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>89</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>137</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Create[T](T[,])" attrs="145">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Create&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-10.cs">\r
     <type name="Test">\r
-      <method name="IEnumerable`1 FromTo(Int32, Int32)" attrs="145">\r
-        <size>44</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>185</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>110</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] FromTo(Int32, Int32)" attrs="145">\r
+        <size>44</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;FromTo&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-11.cs">\r
     <type name="Foo">\r
       <method name="Void Add(T)" attrs="134">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 GetEnumerator()" attrs="486">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>18</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Collection`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] GetEnumerator()" attrs="486">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-12.cs">\r
     <type name="H">\r
       <method name="Void Main(System.String[])" attrs="150">\r
         <size>2</size>\r
       </method>\r
-      <method name="IEnumerable`1 Merge[T](IEnumerator`1)" attrs="150">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>124</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="H">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Merge[T](System.Collections.Generic.IEnumerator`1[T])" attrs="150">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="H+&lt;Merge&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-13.cs">\r
     <type name="C`1[T]">\r
       <method name="IEnumerator GetEnumerator()" attrs="134">\r
         <size>20</size>\r
       </method>\r
-      <method name="IEnumerable`1 Filter(System.Func`2[T,System.Boolean])" attrs="134">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>225</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Filter(System.Func`2[T,System.Boolean])" attrs="134">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="C`1+&lt;Filter&gt;c__Iterator0[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-14.cs">\r
     <type name="A">\r
       </method>\r
     </type>\r
     <type name="S">\r
-      <method name="IEnumerable`1 GetIt()" attrs="134">\r
-        <size>35</size>\r
-      </method>\r
       <method name="Int32 &lt;GetHashCode&gt;__BaseCallProxy0()" attrs="129">\r
         <size>24</size>\r
       </method>\r
       <method name="Void set_BaseM(Int32)" attrs="2244">\r
         <size>12</size>\r
       </method>\r
-      <method name="IEnumerable`1 GetIt()" attrs="129">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>145</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>82</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="X+&lt;GetIt&gt;c__Iterator1">\r
+    <type name="S">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] GetIt()" attrs="134">\r
+        <size>35</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] GetIt()" attrs="129">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="S+&lt;GetIt&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;GetIt&gt;c__Iterator0">\r
       <method name="Int32 System.Collections.Generic.IEnumerator&lt;int&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>19</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>93</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
   </test>\r
   <test name="gtest-iter-15.cs">\r
     <type name="C`1[TFirst]">\r
-      <method name="IEnumerable`1 GetEnumerable[V](IEnumerable`1)" attrs="131">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;V&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>189</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C`1[TFirst]">\r
+      <method name="System.Collections.Generic.IEnumerable`1[V] GetEnumerable[V](System.Collections.Generic.IEnumerable`1[C`1+VSlot`1[TFirst,V]])" attrs="131">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="C`1+&lt;GetEnumerable&gt;c__Iterator0`1[TFirst,V]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[V] System.Collections.Generic.IEnumerable&lt;V&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-16.cs">\r
     <type name="Test.Base">\r
-      <method name="IEnumerable`1 GetStuff(Int32)" attrs="454">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test.Derived">\r
-      <method name="IEnumerable`1 GetStuff(Int32)" attrs="198">\r
-        <size>37</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;GetStuff&gt;__BaseCallProxy0(Int32)" attrs="129">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6276">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test.SpecialDerived">\r
-      <method name="IEnumerable`1 GetStuff(Int32)" attrs="198">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>65</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;GetStuff&gt;__BaseCallProxy0(Int32)" attrs="129">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>77</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test.Derived+&lt;GetStuff&gt;c__Iterator1">\r
+    <type name="Test.Base">\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test.Base] GetStuff(Int32)" attrs="454">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Derived">\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test.Base] GetStuff(Int32)" attrs="198">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test.Base] &lt;GetStuff&gt;__BaseCallProxy0(Int32)" attrs="129">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.SpecialDerived">\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test.Base] GetStuff(Int32)" attrs="198">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test.Base] &lt;GetStuff&gt;__BaseCallProxy0(Int32)" attrs="129">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Base+&lt;GetStuff&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Test.Base] System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Derived+&lt;GetStuff&gt;c__Iterator0">\r
       <method name="Test.Base System.Collections.Generic.IEnumerator&lt;Test.Base&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>195</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[Test.Base] System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test.SpecialDerived+&lt;GetStuff&gt;c__Iterator2">\r
+    <type name="Test.SpecialDerived+&lt;GetStuff&gt;c__Iterator0">\r
       <method name="Test.Base System.Collections.Generic.IEnumerator&lt;Test.Base&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>195</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[Test.Base] System.Collections.Generic.IEnumerable&lt;Test.Base&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
   </test>\r
   <test name="gtest-iter-17.cs">\r
     <type name="Test">\r
-      <method name="IEnumerable`1 TestMethod()" attrs="134">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>37</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] TestMethod()" attrs="134">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;TestMethod&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-18.cs">\r
     <type name="c">\r
-      <method name="IEnumerable`1 func()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>57</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;char&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>78</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="c">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Char] func()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="c+&lt;func&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Char] System.Collections.Generic.IEnumerable&lt;char&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-19.cs">\r
     <type name="IEnumerableTransform">\r
-      <method name="IEnumerable`1 Transform[TOut](IEnumerable`1, IEnumerableTransform+EmitterFunc`1[TOut])" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
       <method name="IEnumerableTransform+EmitterFunc`1[TOut] Emit[TOut](TOut)" attrs="150">\r
         <size>34</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;TOut&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>203</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="IEnumerableTransform">\r
+      <method name="System.Collections.Generic.IEnumerable`1[TOut] Transform[TOut](System.Collections.Generic.IEnumerable`1[System.Int32], IEnumerableTransform+EmitterFunc`1[TOut])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="IEnumerableTransform+&lt;Transform&gt;c__Iterator0`1[TOut]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[TOut] System.Collections.Generic.IEnumerable&lt;TOut&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-20.cs">\r
     <type name="X">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>77</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-iter-21.cs">\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>72</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
         <size>29</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="129">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-22.cs">\r
     <type name="D">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>78</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>74</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="gtest-iter-23.cs">\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test()" attrs="145">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="129">\r
         <size>23</size>\r
       </method>\r
-      <method name="IEnumerable`1 Test_2()" attrs="145">\r
-        <size>23</size>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
       </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-iter-23.cs">\r
+    <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>180</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>271</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>200</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test_2&gt;c__Iterator1+&lt;Test_2&gt;c__AnonStorey3">\r
-      <method name="Int32 &lt;&gt;m__1()" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test_2()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test_2&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test_2&gt;c__Iterator1+&lt;Test_2&gt;c__AnonStorey3">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-24.cs">\r
     <type name="B">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>71</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>170</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-25.cs">\r
     <type name="Test.Program">\r
       <method name="Void Main()" attrs="150">\r
         <size>61</size>\r
       </method>\r
-      <method name="IEnumerable`1 Test()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
     </type>\r
     <type name="Test.Program+&lt;Test&gt;c__Iterator0">\r
       <method name="System.Object System.Collections.Generic.IEnumerator&lt;object&gt;.get_Current()" attrs="2529">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>143</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test.Program">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] Test()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Program+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-26.cs">\r
     <type name="Test.Program">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>51</size>\r
       </method>\r
-      <method name="IEnumerable`1 Test()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
     </type>\r
     <type name="Test.Program+&lt;Test&gt;c__Iterator0">\r
       <method name="System.Object System.Collections.Generic.IEnumerator&lt;object&gt;.get_Current()" attrs="2529">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>72</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test.Program">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] Test()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test.Program+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-27.cs">\r
     <type name="CompilerBug">\r
       <method name="Void Main()" attrs="150">\r
         <size>61</size>\r
       </method>\r
-      <method name="IEnumerable`1 Foo()" attrs="145">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>161</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="CompilerBug">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] Foo()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="CompilerBug+&lt;Foo&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-iter-28.cs">\r
     <type name="A">\r
-      <method name="IEnumerable`1 Test(B)" attrs="134">\r
-        <size>37</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>18</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>178</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] Test(B)" attrs="134">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="A+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-iter-29.cs">\r
+    <type name="Test">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>44</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Test2&gt;c__Iterator0">\r
+      <method name="Int32 System.Collections.Generic.IEnumerator&lt;int&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Boolean MoveNext()" attrs="486">\r
+        <size>21</size>\r
+      </method>\r
+      <method name="Void Dispose()" attrs="486">\r
+        <size>1</size>\r
+      </method>\r
+      <method name="Void Reset()" attrs="486">\r
+        <size>6</size>\r
+      </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test2()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Test2&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-iter-30.cs">\r
+    <type name="Program">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>68</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="M">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="M+&lt;Test&gt;c__Iterator0">\r
+      <method name="Int32 System.Collections.Generic.IEnumerator&lt;int&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Boolean MoveNext()" attrs="486">\r
+        <size>101</size>\r
+      </method>\r
+      <method name="Void Dispose()" attrs="486">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void Reset()" attrs="486">\r
+        <size>6</size>\r
+      </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>57</size>\r
+      </method>\r
+    </type>\r
+    <type name="M+&lt;Test&gt;c__Iterator0+&lt;Test&gt;c__AnonStorey1">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>24</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-iter-31.cs">\r
+    <type name="B">\r
+      <method name="System.Object Foo(System.Object)" attrs="134">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>62</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.UInt16] Test()" attrs="129">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="UInt16 System.Collections.Generic.IEnumerator&lt;ushort&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Boolean MoveNext()" attrs="486">\r
+        <size>81</size>\r
+      </method>\r
+      <method name="Void Dispose()" attrs="486">\r
+        <size>1</size>\r
+      </method>\r
+      <method name="Void Reset()" attrs="486">\r
+        <size>6</size>\r
+      </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.UInt16] System.Collections.Generic.IEnumerable&lt;ushort&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+      <method name="System.Object &lt;&gt;m__0(System.String)" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-iter-32.cs">\r
+    <type name="TestGoto">\r
+      <method name="Void Main(System.String[])" attrs="150">\r
+        <size>71</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Boolean] setX()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Boolean] test()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void .cctor()" attrs="6289">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestGoto+&lt;setX&gt;c__Iterator0">\r
+      <method name="Boolean System.Collections.Generic.IEnumerator&lt;bool&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Boolean MoveNext()" attrs="486">\r
+        <size>115</size>\r
+      </method>\r
+      <method name="Void Dispose()" attrs="486">\r
+        <size>53</size>\r
+      </method>\r
+      <method name="Void Reset()" attrs="486">\r
+        <size>6</size>\r
+      </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Boolean] System.Collections.Generic.IEnumerable&lt;bool&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestGoto+&lt;test&gt;c__Iterator1">\r
+      <method name="Boolean System.Collections.Generic.IEnumerator&lt;bool&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Boolean MoveNext()" attrs="486">\r
+        <size>189</size>\r
+      </method>\r
+      <method name="Void Dispose()" attrs="486">\r
+        <size>69</size>\r
+      </method>\r
+      <method name="Void Reset()" attrs="486">\r
+        <size>6</size>\r
+      </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Boolean] System.Collections.Generic.IEnumerable&lt;bool&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-iter-33.cs">\r
+    <type name="Fun`2[A1,R]">\r
+      <method name="R Invoke(A1)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="IAsyncResult BeginInvoke(A1, System.AsyncCallback, System.Object)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="R EndInvoke(IAsyncResult)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="MyTest">\r
+      <method name="Void Main(System.String[])" attrs="150">\r
+        <size>99</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[Rr] Map[Aa,Af,Rf,Rr](Fun`2[Af,Rf], System.Collections.Generic.IEnumerable`1[Aa])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] FromTo(Int32, Int32)" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="System.String &lt;Main&gt;m__0(Int32)" attrs="145">\r
+        <size>22</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="MyTest+&lt;Map&gt;c__Iterator0`4[Aa,Af,Rf,Rr]">\r
+      <method name="Rr System.Collections.Generic.IEnumerator&lt;Rr&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Boolean MoveNext()" attrs="486">\r
+        <size>215</size>\r
+      </method>\r
+      <method name="Void Dispose()" attrs="486">\r
+        <size>69</size>\r
+      </method>\r
+      <method name="Void Reset()" attrs="486">\r
+        <size>6</size>\r
+      </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[Rr] System.Collections.Generic.IEnumerable&lt;Rr&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="MyTest+&lt;FromTo&gt;c__Iterator1">\r
+      <method name="Int32 System.Collections.Generic.IEnumerator&lt;int&gt;.get_Current()" attrs="2529">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Boolean MoveNext()" attrs="486">\r
+        <size>125</size>\r
+      </method>\r
+      <method name="Void Dispose()" attrs="486">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void Reset()" attrs="486">\r
+        <size>6</size>\r
+      </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-lambda-01.cs">\r
     <type name="IntFunc">\r
       <method name="Int32 &lt;Main&gt;m__1(Int32)" attrs="145">\r
         <size>11</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__3(Int32)" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Void .ctor(Int32)" attrs="6273">\r
         <size>14</size>\r
       </method>\r
     </type>\r
     <type name="X+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="Void &lt;&gt;m__2(Int32)" attrs="131">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X">\r
+      <method name="Void &lt;Main&gt;m__2(Int32)" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-lambda-02.cs">\r
     <type name="funcs">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="System.String &lt;&gt;m__2(System.String)" attrs="131">\r
-        <size>19</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey1">\r
-      <method name="Int32 &lt;&gt;m__3(Int32)" attrs="131">\r
-        <size>18</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="System.String &lt;&gt;m__0(System.String)" attrs="131">\r
+        <size>19</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey1">\r
+      <method name="Int32 &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-lambda-06.cs">\r
     <type name="TestClass">\r
       </method>\r
     </type>\r
     <type name="TestClass+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="Void &lt;&gt;m__1(T)" attrs="131">\r
-        <size>38</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="TestClass+&lt;Main&gt;c__AnonStorey0+&lt;Main&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__2(F)" attrs="131">\r
-        <size>77</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TestClass+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__0(T)" attrs="131">\r
+        <size>38</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestClass+&lt;Main&gt;c__AnonStorey0+&lt;Main&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0(F)" attrs="131">\r
+        <size>77</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-lambda-07.cs">\r
     <type name="D">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test[T](T)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IEnumerable`1 Test[T](Func`1[T])" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IEnumerable`1 Test2[T](Func`2[T,T])" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>114</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Test[T](T)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Test[T](Func`1[T])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Test2[T](Func`2[T,T])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-lambda-10.cs">\r
     <type name="C">\r
-      <method name="Void Foo[TSource](IEnumerable`1)" attrs="150">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void Foo[TCollection,TSource](IEnumerable`1, System.Func`2[TSource,System.Collections.Generic.IEnumerable`1[TCollection]])" attrs="150">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void Foo[TCollection,TSource](IEnumerable`1, System.Func`3[TSource,TCollection[],System.Collections.Generic.IEnumerable`1[TCollection]])" attrs="150">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Foo[TCollection,TSource](System.Func`2[TCollection[],System.Collections.Generic.IEnumerable`1[TSource]])" attrs="150">\r
         <size>2</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__0(Int32)" attrs="131">\r
-        <size>15</size>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__1(Int32, System.Int32[])" attrs="131">\r
+    </type>\r
+    <type name="C">\r
+      <method name="Void Foo[TSource](System.Collections.Generic.IEnumerable`1[TSource])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Foo[TCollection,TSource](System.Collections.Generic.IEnumerable`1[TSource], System.Func`2[TSource,System.Collections.Generic.IEnumerable`1[TCollection]])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Foo[TCollection,TSource](System.Collections.Generic.IEnumerable`1[TSource], System.Func`3[TSource,TCollection[],System.Collections.Generic.IEnumerable`1[TCollection]])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__0(Int32)" attrs="131">\r
         <size>15</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__2(System.Int32[])" attrs="131">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__1(Int32, System.Int32[])" attrs="131">\r
         <size>15</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__2(System.Int32[])" attrs="131">\r
+        <size>15</size>\r
       </method>\r
     </type>\r
   </test>\r
       <method name="Void Main()" attrs="150">\r
         <size>77</size>\r
       </method>\r
-      <method name="System.String &lt;Bar&gt;m__1(System.String)" attrs="145">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="System.String &lt;Bar&gt;m__0(System.String)" attrs="145">\r
         <size>14</size>\r
       </method>\r
-      <method name="System.String &lt;Main&gt;m__2(System.String)" attrs="145">\r
+      <method name="System.String &lt;Main&gt;m__1(System.String)" attrs="145">\r
         <size>9</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__3(System.String)" attrs="145">\r
-        <size>7</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
+      <method name="Void &lt;Main&gt;m__2(System.String)" attrs="145">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     </type>\r
   </test>\r
   <test name="gtest-lambda-15.cs">\r
-    <type name="Enumerable">\r
-      <method name="Int32 Sum[TSource](IEnumerable`1, System.Func`2[TSource,System.Int32])" attrs="150">\r
-        <size>40</size>\r
-      </method>\r
-      <method name="TR Sum[TA,TR](IEnumerable`1, System.Func`3[TR,TA,TR])" attrs="145">\r
-        <size>139</size>\r
-      </method>\r
-    </type>\r
     <type name="Repro">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>128</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__1(System.String)" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Enumerable">\r
+      <method name="Int32 Sum[TSource](System.Collections.Generic.IEnumerable`1[TSource], System.Func`2[TSource,System.Int32])" attrs="150">\r
+        <size>40</size>\r
+      </method>\r
+      <method name="TR Sum[TA,TR](System.Collections.Generic.IEnumerable`1[TA], System.Func`3[TR,TA,TR])" attrs="145">\r
+        <size>139</size>\r
+      </method>\r
+    </type>\r
+    <type name="Repro">\r
+      <method name="Int32 &lt;Main&gt;m__0(System.String)" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-lambda-16.cs">\r
     <type name="Repro">\r
-      <method name="Void AssertFoo[T](IList`1)" attrs="145">\r
-        <size>35</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Repro">\r
+      <method name="Void AssertFoo[T](System.Collections.Generic.IList`1[T])" attrs="145">\r
+        <size>35</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-lambda-17.cs">\r
     <type name="TestCase">\r
       <method name="Product &lt;Main&gt;m__1(Product)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType0`2[System.Linq.IGrouping`2[System.Int32,Product],System.Collections.Generic.IEnumerable`1[Product]] &lt;Main&gt;m__2(IGrouping`2)" attrs="145">\r
-        <size>56</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="MainClass+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="Boolean &lt;&gt;m__3(Product)" attrs="131">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="MainClass">\r
+      <method name="&lt;&gt;__AnonType0`2[System.Linq.IGrouping`2[System.Int32,Product],System.Collections.Generic.IEnumerable`1[Product]] &lt;Main&gt;m__2(System.Linq.IGrouping`2[System.Int32,Product])" attrs="145">\r
+        <size>56</size>\r
+      </method>\r
+    </type>\r
+    <type name="MainClass+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="Boolean &lt;&gt;m__0(Product)" attrs="131">\r
         <size>60</size>\r
       </method>\r
-      <method name="Decimal &lt;&gt;m__4(Product)" attrs="145">\r
+      <method name="Decimal &lt;&gt;m__1(Product)" attrs="145">\r
         <size>14</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-lambda-23.cs">\r
       <method name="Void DoStuff[T](T, System.Action`1[T])" attrs="150">\r
         <size>12</size>\r
       </method>\r
-      <method name="Void DoStuff[T](Nullable`1, System.Action`1[T])" attrs="150">\r
-        <size>15</size>\r
-      </method>\r
     </type>\r
     <type name="MonoBugs.Program">\r
       <method name="Void Main()" attrs="150">\r
         <size>60</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__0(Foo`1)" attrs="145">\r
+    </type>\r
+    <type name="MonoBugs.Bar">\r
+      <method name="Void DoStuff[T](System.Nullable`1[T], System.Action`1[T])" attrs="150">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="MonoBugs.Program">\r
+      <method name="Void &lt;Main&gt;m__0(MonoBugs.Foo`1[System.Int32])" attrs="145">\r
         <size>13</size>\r
       </method>\r
     </type>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Method&gt;c__AnonStorey0`1[T]">\r
-      <method name="System.Object &lt;&gt;m__1(T)" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Object &lt;&gt;m__0(T)" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-lambda-31.cs">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>294</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__0(IEnumerable)" attrs="145">\r
+      <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;Main&gt;m__0(IEnumerable)" attrs="145">\r
         <size>7</size>\r
       </method>\r
     </type>\r
       <method name="Int32 &lt;Main&gt;m__1(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;Main&gt;m__2(Nullable`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__3(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__5(Int32, Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Boolean &lt;Main&gt;m__6(Int32)" attrs="145">\r
-        <size>18</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__7(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__D(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__E(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__F(ITest)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__10(Int32, ITest)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__11(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__12(ITest)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__13(Int32, ITest)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__14(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__15(ITest)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType0`2[System.Int32,from.ITest] &lt;Main&gt;m__16(Int32, ITest)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__17(&lt;&gt;__AnonType0`2[System.Int32,from.ITest])" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__18(ITest)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__19(&lt;&gt;__AnonType0`2[System.Int32,from.ITest], ITest)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__1A(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__1B(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__1C(Int32, IEnumerable`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__1D(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__1E(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__1F(Int32, IEnumerable`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__20(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__22(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__23(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IGrouping`2 &lt;Main&gt;m__24(IGrouping`2)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType1`2[System.Int32,System.Int32] &lt;Main&gt;m__25(Int32)" attrs="145">\r
-        <size>18</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__26(&lt;&gt;__AnonType1`2[System.Int32,System.Int32])" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType1`2[System.Int32,System.Int32] &lt;Main&gt;m__27(Int32)" attrs="145">\r
-        <size>18</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType2`2[&lt;&gt;__AnonType1`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__28(&lt;&gt;__AnonType1`2[System.Int32,System.Int32])" attrs="145">\r
-        <size>23</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__29(&lt;&gt;__AnonType2`2[&lt;&gt;__AnonType1`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__2A(Int32)" attrs="145">\r
         <size>10</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__2B(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__2D(IGrouping`2, Int32)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__2E(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 &lt;Main&gt;m__2F(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__31(IGrouping`2, Int32)" attrs="145">\r
-        <size>16</size>\r
+        <size>10</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__32(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
         <size>10</size>\r
       <method name="Int32 &lt;Main&gt;m__33(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__35(IGrouping`2, Int32)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__36(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__37(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="IGrouping`2 &lt;Main&gt;m__38(IGrouping`2)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__39(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__3A(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__3B(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType4`2[&lt;&gt;__AnonType1`2[System.Int32,System.Collections.Generic.IEnumerable`1[System.Int32]],System.Int32] &lt;Main&gt;m__3D(&lt;&gt;__AnonType1`2[System.Int32,System.Collections.Generic.IEnumerable`1[System.Int32]])" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__3E(&lt;&gt;__AnonType4`2[&lt;&gt;__AnonType1`2[System.Int32,System.Collections.Generic.IEnumerable`1[System.Int32]],System.Int32])" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="from.C+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__4(Int32)" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__2C(IGrouping`2)" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__30(IGrouping`2)" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__34(IGrouping`2)" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType1`2[System.Int32,System.Collections.Generic.IEnumerable`1[System.Int32]] &lt;&gt;m__3C(Int32)" attrs="131">\r
-        <size>55</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__3F(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="from.C">\r
+      <method name="System.Nullable`1[System.Boolean] &lt;Main&gt;m__2(System.Nullable`1[System.Boolean])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__31(System.Linq.IGrouping`2[System.Int32,System.Int32], Int32)" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__4(Int32, Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Boolean &lt;Main&gt;m__5(Int32)" attrs="145">\r
+        <size>18</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__6(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__E(ITest)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__F(Int32, ITest)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__10(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__11(ITest)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__12(Int32, ITest)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__13(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__14(ITest)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType0`2[System.Int32,from.ITest] &lt;Main&gt;m__15(Int32, ITest)" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__16(&lt;&gt;__AnonType0`2[System.Int32,from.ITest])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__17(ITest)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__18(&lt;&gt;__AnonType0`2[System.Int32,from.ITest], ITest)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__19(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__1B(Int32, System.Collections.Generic.IEnumerable`1[System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__1C(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__1E(Int32, System.Collections.Generic.IEnumerable`1[System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__1F(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="System.Linq.IGrouping`2[System.Int32,System.Int32] &lt;Main&gt;m__23(System.Linq.IGrouping`2[System.Int32,System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType1`2[System.Int32,System.Int32] &lt;Main&gt;m__24(Int32)" attrs="145">\r
+        <size>18</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__25(&lt;&gt;__AnonType1`2[System.Int32,System.Int32])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType1`2[System.Int32,System.Int32] &lt;Main&gt;m__26(Int32)" attrs="145">\r
+        <size>18</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType2`2[&lt;&gt;__AnonType1`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__27(&lt;&gt;__AnonType1`2[System.Int32,System.Int32])" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__28(&lt;&gt;__AnonType2`2[&lt;&gt;__AnonType1`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__29(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__2B(System.Linq.IGrouping`2[System.Int32,System.Int32], Int32)" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__2C(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__2D(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32] &lt;Main&gt;m__2E(System.Linq.IGrouping`2[System.Int32,System.Int32], Int32)" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__30(&lt;&gt;__AnonType3`2[System.Linq.IGrouping`2[System.Int32,System.Int32],System.Int32])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Linq.IGrouping`2[System.Int32,System.Int32] &lt;Main&gt;m__34(System.Linq.IGrouping`2[System.Int32,System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__35(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__36(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__37(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType4`2[&lt;&gt;__AnonType1`2[System.Int32,System.Collections.Generic.IEnumerable`1[System.Int32]],System.Int32] &lt;Main&gt;m__38(&lt;&gt;__AnonType1`2[System.Int32,System.Collections.Generic.IEnumerable`1[System.Int32]])" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Int32 &lt;Main&gt;m__39(&lt;&gt;__AnonType4`2[&lt;&gt;__AnonType1`2[System.Int32,System.Collections.Generic.IEnumerable`1[System.Int32]],System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="from.C+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__1(System.Linq.IGrouping`2[System.Int32,System.Int32])" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__2(System.Linq.IGrouping`2[System.Int32,System.Int32])" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__3(System.Linq.IGrouping`2[System.Int32,System.Int32])" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType1`2[System.Int32,System.Collections.Generic.IEnumerable`1[System.Int32]] &lt;&gt;m__4(Int32)" attrs="131">\r
+        <size>55</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__5(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-02.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>765</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType0`2[System.Int32,System.String] &lt;Main&gt;m__1(Int32, System.String)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="Boolean &lt;Main&gt;m__2(Int32)" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType0`2[System.Int32,System.String] &lt;Main&gt;m__4(Int32, System.String)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType1`2[&lt;&gt;__AnonType0`2[System.Int32,System.String],System.Int32] &lt;Main&gt;m__6(&lt;&gt;__AnonType0`2[System.Int32,System.String], Int32)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="Int32 &lt;Main&gt;m__7(&lt;&gt;__AnonType1`2[&lt;&gt;__AnonType0`2[System.Int32,System.String],System.Int32])" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType2`3[System.Int32,System.Int32,System.Int32] &lt;Main&gt;m__8(&lt;&gt;__AnonType1`2[&lt;&gt;__AnonType0`2[System.Int32,System.String],System.Int32])" attrs="145">\r
-        <size>33</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType0`2[System.Int32,System.String] &lt;Main&gt;m__A(Int32, System.String)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="SelectMany+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__0(Int32)" attrs="131">\r
-        <size>20</size>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__3(Int32)" attrs="131">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] &lt;&gt;m__0(Int32)" attrs="131">\r
         <size>20</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__5(&lt;&gt;__AnonType0`2[System.Int32,System.String])" attrs="131">\r
-        <size>20</size>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] &lt;&gt;m__3(Int32)" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="SelectMany">\r
+      <method name="&lt;&gt;__AnonType0`2[System.Int32,System.String] &lt;Main&gt;m__0(Int32, System.String)" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="Boolean &lt;Main&gt;m__1(Int32)" attrs="145">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType0`2[System.Int32,System.String] &lt;Main&gt;m__2(Int32, System.String)" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType1`2[&lt;&gt;__AnonType0`2[System.Int32,System.String],System.Int32] &lt;Main&gt;m__3(&lt;&gt;__AnonType0`2[System.Int32,System.String], Int32)" attrs="145">\r
+        <size>16</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;&gt;m__9(Int32)" attrs="131">\r
+      <method name="Int32 &lt;Main&gt;m__4(&lt;&gt;__AnonType1`2[&lt;&gt;__AnonType0`2[System.Int32,System.String],System.Int32])" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+      <method name="&lt;&gt;__AnonType2`3[System.Int32,System.Int32,System.Int32] &lt;Main&gt;m__5(&lt;&gt;__AnonType1`2[&lt;&gt;__AnonType0`2[System.Int32,System.String],System.Int32])" attrs="145">\r
+        <size>33</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType0`2[System.Int32,System.String] &lt;Main&gt;m__6(Int32, System.String)" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
+    <type name="SelectMany+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] &lt;&gt;m__1(Int32)" attrs="131">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__2(&lt;&gt;__AnonType0`2[System.Int32,System.String])" attrs="131">\r
+        <size>20</size>\r
       </method>\r
     </type>\r
   </test>\r
       <method name="Int32 &lt;Main&gt;m__1(DataB)" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]] &lt;Main&gt;m__2(DataA, IEnumerable`1)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__3(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]])" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType1`2[System.String,System.String] &lt;Main&gt;m__4(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]], DataB)" attrs="145">\r
         <size>47</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__6(DataB)" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]] &lt;Main&gt;m__7(DataA, IEnumerable`1)" attrs="145">\r
-        <size>16</size>\r
-      </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__8(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]])" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType1`2[System.String,System.String] &lt;Main&gt;m__9(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]], DataB)" attrs="145">\r
         <size>47</size>\r
       </method>\r
       <method name="Int32 &lt;Main&gt;m__B(DataB)" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="DataA &lt;Main&gt;m__C(DataA, IEnumerable`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>21</size>\r
       </method>\r
     </type>\r
+    <type name="GroupJoin">\r
+      <method name="&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]] &lt;Main&gt;m__2(DataA, System.Collections.Generic.IEnumerable`1[DataB])" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[DataB] &lt;Main&gt;m__3(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]])" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]] &lt;Main&gt;m__7(DataA, System.Collections.Generic.IEnumerable`1[DataB])" attrs="145">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[DataB] &lt;Main&gt;m__8(&lt;&gt;__AnonType0`2[DataA,System.Collections.Generic.IEnumerable`1[DataB]])" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="DataA &lt;Main&gt;m__C(DataA, System.Collections.Generic.IEnumerable`1[DataB])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-11.cs">\r
     <type name="IntoTest">\r
       <method name="&lt;&gt;__AnonType0`2[System.String,System.Int32] &lt;XX&gt;m__0(System.String)" attrs="145">\r
         <size>20</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;XX&gt;m__1(&lt;&gt;__AnonType0`2[System.String,System.Int32])" attrs="145">\r
-        <size>117</size>\r
-      </method>\r
       <method name="Boolean &lt;Main&gt;m__2(System.String)" attrs="145">\r
         <size>18</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__3(System.String)" attrs="145">\r
-        <size>44</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType0`2[System.String,System.Int32] &lt;Main&gt;m__4(System.String)" attrs="145">\r
         <size>21</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__5(&lt;&gt;__AnonType0`2[System.String,System.Int32])" attrs="145">\r
-        <size>118</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType1`2[System.Char,System.Int32] &lt;XX&gt;m__6(Char)" attrs="145">\r
         <size>16</size>\r
       </method>\r
-      <method name="Char &lt;XX&gt;m__8(&lt;&gt;__AnonType1`2[System.Char,System.Int32])" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="Boolean &lt;Main&gt;m__9(Char)" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="&lt;&gt;__AnonType1`2[System.Char,System.Int32] &lt;Main&gt;m__A(Char)" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Char &lt;Main&gt;m__C(&lt;&gt;__AnonType1`2[System.Char,System.Int32])" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="NestedQuery+&lt;XX&gt;c__AnonStorey0">\r
-      <method name="Boolean &lt;&gt;m__7(&lt;&gt;__AnonType1`2[System.Char,System.Int32])" attrs="131">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="NestedQuery+&lt;Main&gt;c__AnonStorey1">\r
-      <method name="Boolean &lt;&gt;m__B(&lt;&gt;__AnonType1`2[System.Char,System.Int32])" attrs="131">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="NestedQuery">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Char] &lt;XX&gt;m__1(&lt;&gt;__AnonType0`2[System.String,System.Int32])" attrs="145">\r
+        <size>117</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Char] &lt;Main&gt;m__3(System.String)" attrs="145">\r
+        <size>44</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Char] &lt;Main&gt;m__5(&lt;&gt;__AnonType0`2[System.String,System.Int32])" attrs="145">\r
+        <size>118</size>\r
+      </method>\r
+      <method name="Char &lt;XX&gt;m__7(&lt;&gt;__AnonType1`2[System.Char,System.Int32])" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Boolean &lt;Main&gt;m__8(Char)" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="&lt;&gt;__AnonType1`2[System.Char,System.Int32] &lt;Main&gt;m__9(Char)" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Char &lt;Main&gt;m__A(&lt;&gt;__AnonType1`2[System.Char,System.Int32])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="NestedQuery+&lt;XX&gt;c__AnonStorey0">\r
+      <method name="Boolean &lt;&gt;m__0(&lt;&gt;__AnonType1`2[System.Char,System.Int32])" attrs="131">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
+    <type name="NestedQuery+&lt;Main&gt;c__AnonStorey1">\r
+      <method name="Boolean &lt;&gt;m__0(&lt;&gt;__AnonType1`2[System.Char,System.Int32])" attrs="131">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-13.cs">\r
     <type name="Program">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Extension">\r
-      <method name="IEnumerable`1 Cast[T](IFoo)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-    </type>\r
     <type name="MethodDefinition">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Extension">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Cast[T](IFoo)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-14.cs">\r
     <type name="Person">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Extensions">\r
-      <method name="IMarker`1 Cast[T](IObjectContainer)" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="IMarker`1 Where[T](IMarker`1, System.Linq.Expressions.Expression`1[System.Func`2[T,System.Boolean]])" attrs="150">\r
-        <size>10</size>\r
-      </method>\r
-    </type>\r
     <type name="Program">\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Extensions">\r
+      <method name="IMarker`1[T] Cast[T](IObjectContainer)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="IMarker`1[T] Where[T](IMarker`1[T], System.Linq.Expressions.Expression`1[System.Func`2[T,System.Boolean]])" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-15.cs">\r
     <type name="NameCollisionTest.Data">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="NameCollisionTest.Ex">\r
-      <method name="IEnumerable`1 Foo[T,TR](IEnumerable`1, System.Func`2[T,TR])" attrs="150">\r
-        <size>37</size>\r
-      </method>\r
-    </type>\r
     <type name="NameCollisionTest.C">\r
       <method name="Void Main()" attrs="150">\r
         <size>79</size>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;TR&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>93</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="NameCollisionTest.Ex">\r
+      <method name="System.Collections.Generic.IEnumerable`1[TR] Foo[T,TR](System.Collections.Generic.IEnumerable`1[T], System.Func`2[T,TR])" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="NameCollisionTest.Ex+&lt;Foo&gt;c__Iterator0`2[T,TR]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[TR] System.Collections.Generic.IEnumerable&lt;TR&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-16.cs">\r
     <type name="C">\r
       <method name="Void Test_2()" attrs="145">\r
         <size>32</size>\r
       </method>\r
-      <method name="System.Func`1[System.Collections.Generic.IEnumerable`1[System.Int32]] &lt;Test_2&gt;m__1(Int32)" attrs="145">\r
-        <size>33</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test_1&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__0()" attrs="131">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test_2&gt;c__AnonStorey1">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test_1&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__0()" attrs="131">\r
         <size>74</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType0`2[System.Int32,System.Int32] &lt;&gt;m__2(Int32)" attrs="145">\r
+    </type>\r
+    <type name="C">\r
+      <method name="System.Func`1[System.Collections.Generic.IEnumerable`1[System.Int32]] &lt;Test_2&gt;m__0(Int32)" attrs="145">\r
+        <size>33</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test_1&gt;c__AnonStorey0">\r
+      <method name="&lt;&gt;__AnonType0`2[System.Int32,System.Int32] &lt;&gt;m__1(Int32)" attrs="145">\r
         <size>16</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__3(&lt;&gt;__AnonType0`2[System.Int32,System.Int32])" attrs="131">\r
+      <method name="Int32 &lt;&gt;m__2(&lt;&gt;__AnonType0`2[System.Int32,System.Int32])" attrs="131">\r
         <size>22</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;Test_2&gt;c__AnonStorey1">\r
-      <method name="IEnumerable`1 &lt;&gt;m__4()" attrs="131">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__0()" attrs="131">\r
         <size>74</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType0`2[System.Int32,System.Int32] &lt;&gt;m__5(Int32)" attrs="145">\r
+      <method name="&lt;&gt;__AnonType0`2[System.Int32,System.Int32] &lt;&gt;m__1(Int32)" attrs="145">\r
         <size>16</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__6(&lt;&gt;__AnonType0`2[System.Int32,System.Int32])" attrs="131">\r
+      <method name="Int32 &lt;&gt;m__2(&lt;&gt;__AnonType0`2[System.Int32,System.Int32])" attrs="131">\r
         <size>22</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-linq-17.cs">\r
       <method name="Boolean &lt;Main&gt;m__10(Int32)" attrs="145">\r
         <size>39</size>\r
       </method>\r
-      <method name="Int32 &lt;Main&gt;m__11(Int32, IEnumerable`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="Boolean &lt;&gt;m__12(Int32)" attrs="131">\r
-        <size>17</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey1">\r
-      <method name="Boolean &lt;&gt;m__13(Int32)" attrs="131">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey2">\r
-      <method name="Boolean &lt;&gt;m__14(Int32)" attrs="131">\r
-        <size>17</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey3">\r
-      <method name="Boolean &lt;&gt;m__15(Int32)" attrs="131">\r
-        <size>17</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey4">\r
-      <method name="Int32 &lt;&gt;m__16(Int32)" attrs="131">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey5">\r
-      <method name="Int32 &lt;&gt;m__17(Int32)" attrs="131">\r
-        <size>16</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey6">\r
-      <method name="Boolean &lt;&gt;m__18(Int32)" attrs="131">\r
-        <size>27</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey7">\r
-      <method name="Boolean &lt;&gt;m__19(Int32)" attrs="131">\r
-        <size>17</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey8">\r
-      <method name="Boolean &lt;&gt;m__1A(Int32)" attrs="131">\r
-        <size>17</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey9">\r
-      <method name="Boolean &lt;&gt;m__1B(Int32)" attrs="131">\r
-        <size>17</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStoreyA">\r
-      <method name="Boolean &lt;&gt;m__1C(Int32)" attrs="131">\r
-        <size>17</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="Int32 &lt;Main&gt;m__11(Int32, System.Collections.Generic.IEnumerable`1[System.Int32])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="Boolean &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey1">\r
+      <method name="Boolean &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey2">\r
+      <method name="Boolean &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey3">\r
+      <method name="Boolean &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey4">\r
+      <method name="Int32 &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey5">\r
+      <method name="Int32 &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey6">\r
+      <method name="Boolean &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>27</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey7">\r
+      <method name="Boolean &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey8">\r
+      <method name="Boolean &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey9">\r
+      <method name="Boolean &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStoreyA">\r
+      <method name="Boolean &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-19.cs">\r
     <type name="Test">\r
       </method>\r
     </type>\r
     <type name="Program+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__0(Int32)" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
       <method name="System.Action &lt;&gt;m__1(Int32, Int32)" attrs="131">\r
         <size>48</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="Program+&lt;Main&gt;c__AnonStorey0+&lt;Main&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
-        <size>49</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Program+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;Main&gt;c__AnonStorey0+&lt;Main&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>49</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-22.cs">\r
     <type name="Test.MainClass">\r
       <method name="Void &lt;Main&gt;m__0()" attrs="145">\r
         <size>162</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__1(A)" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
       <method name="&lt;&gt;__AnonType0`2[A,B] &lt;Main&gt;m__2(A, B)" attrs="145">\r
         <size>16</size>\r
       </method>\r
         <size>21</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[B] &lt;Main&gt;m__1(A)" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-linq-26.cs">\r
     <type name="Test.S`1[T]">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="IEnumerable`1 &lt;&gt;m__1(System.String)" attrs="131">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey0+&lt;Main&gt;c__AnonStorey1">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Boolean] &lt;&gt;m__0(System.String)" attrs="131">\r
         <size>82</size>\r
       </method>\r
-      <method name="&lt;&gt;__AnonType0`2[System.String,System.Boolean] &lt;&gt;m__2(System.String)" attrs="145">\r
+      <method name="&lt;&gt;__AnonType0`2[System.String,System.Boolean] &lt;&gt;m__1(System.String)" attrs="145">\r
         <size>55</size>\r
       </method>\r
-      <method name="Boolean &lt;&gt;m__3(&lt;&gt;__AnonType0`2[System.String,System.Boolean])" attrs="145">\r
+      <method name="Boolean &lt;&gt;m__2(&lt;&gt;__AnonType0`2[System.String,System.Boolean])" attrs="145">\r
         <size>15</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey0+&lt;Main&gt;c__AnonStorey1">\r
-      <method name="Boolean &lt;&gt;m__4(Char)" attrs="131">\r
+      <method name="Boolean &lt;&gt;m__0(Char)" attrs="131">\r
         <size>24</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-linq-28.cs">\r
       <method name="&lt;&gt;__AnonType0`2[System.Char,System.Collections.Generic.IEnumerable`1[System.Char]] &lt;Main&gt;m__0(Char)" attrs="145">\r
         <size>54</size>\r
       </method>\r
-      <method name="IEnumerable`1 &lt;Main&gt;m__1(&lt;&gt;__AnonType0`2[System.Char,System.Collections.Generic.IEnumerable`1[System.Char]])" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Char &lt;Main&gt;m__2(Char)" attrs="145">\r
         <size>10</size>\r
       </method>\r
         <size>21</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Char] &lt;Main&gt;m__1(&lt;&gt;__AnonType0`2[System.Char,System.Collections.Generic.IEnumerable`1[System.Char]])" attrs="145">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-named-01.cs">\r
     <type name="C">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey0">\r
-      <method name="Int32 &lt;&gt;m__1(Int32)" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-named-02.cs">\r
   </test>\r
   <test name="gtest-optional-02.cs">\r
     <type name="C">\r
-      <method name="Boolean Test3(Nullable`1)" attrs="150">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>160</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean Test3(System.Nullable`1[System.Int32])" attrs="150">\r
         <size>29</size>\r
       </method>\r
-      <method name="Boolean Test2(Nullable`1)" attrs="150">\r
+      <method name="Boolean Test2(System.Nullable`1[System.Int32])" attrs="150">\r
         <size>19</size>\r
       </method>\r
-      <method name="Int32 Test(Nullable`1)" attrs="150">\r
+      <method name="Int32 Test(System.Nullable`1[System.Int32])" attrs="150">\r
         <size>35</size>\r
       </method>\r
-      <method name="Int64 Test4(Nullable`1)" attrs="150">\r
+      <method name="Int64 Test4(System.Nullable`1[System.Int64])" attrs="150">\r
         <size>16</size>\r
       </method>\r
-      <method name="Int32 Main()" attrs="150">\r
-        <size>160</size>\r
-      </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-optional-03.cs">\r
       <method name="Void TestParams(Int32)" attrs="145">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void TestStruct(Nullable`1)" attrs="145">\r
-        <size>25</size>\r
-      </method>\r
-      <method name="Void TestStruct2(Nullable`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="System.String get_Item(Int32, System.String)" attrs="2182">\r
         <size>10</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void TestStruct(System.Nullable`1[System.Int32])" attrs="145">\r
+        <size>25</size>\r
+      </method>\r
+      <method name="Void TestStruct2(System.Nullable`1[S])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-optional-05.cs">\r
       <method name="Void I.Explicit()" attrs="481">\r
         <size>18</size>\r
       </method>\r
-      <method name="IEnumerable`1 Enumerator()" attrs="145">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void GenericMethod[T]()" attrs="134">\r
         <size>18</size>\r
       </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>282</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__1()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="System.Object &lt;Main&gt;m__2(Char)" attrs="145">\r
-        <size>24</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6273">\r
         <size>23</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>88</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="CallerMemberTest">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Enumerator()" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="CallerMemberTest+&lt;Enumerator&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="CallerMemberTest">\r
+      <method name="Void &lt;Main&gt;m__0()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="System.Object &lt;Main&gt;m__1(Char)" attrs="145">\r
+        <size>24</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-optional-23.cs">\r
     <type name="CallerLineNumberTest">\r
   </test>\r
   <test name="gtest-optional-27.cs">\r
     <type name="EnumWrapperCtor`1[T]">\r
-      <method name="Test getValue()" attrs="134">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor(Test)" attrs="6278">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="EnumWrapperCtor`1[T]">\r
+      <method name="EnumWrapperCtor`1+Test[T] getValue()" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-optional-28.cs">\r
+    <type name="NoTypeOptionalParameters">\r
+      <method name="Void Lambda(Boolean, System.Func`2[System.String,System.Boolean][])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void MethodGroup(Boolean, System.Func`2[System.String,System.Boolean][])" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Boolean Foo(System.String)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Boolean FooInstance(System.String)" attrs="129">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>148</size>\r
+      </method>\r
+      <method name="Boolean &lt;Main&gt;m__0(System.String)" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-partial-01.cs">\r
     <type name="B`1[U]">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="gtest-partial-07.cs">\r
+    <type name="A`1[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A`1+B[T]">\r
+      <method name="Void Test()" attrs="134">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X`1[U]">\r
+      <method name="Void Foo(U)" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="M">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>12</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-partial-08.cs">\r
+    <type name="N.A`2[T1,T2]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.A`2+D[T1,T2]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.A`2+D+C[T1,T2]">\r
+      <method name="Void Test()" attrs="134">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.A`2+D2`1[T1,T2,U]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.A`2+D2`1+C2[T1,T2,U]">\r
+      <method name="Void Test()" attrs="134">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.X2`1[W]">\r
+      <method name="Void Foo(W)" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="N.X">\r
+      <method name="Void Foo()" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>22</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="gtest-partial-09.cs">\r
+    <type name="A.B`1[T]">\r
+      <method name="Void .ctor()" attrs="6276">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A.B`1+C[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A.B`1+C+A[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A.Bar">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A.Test">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="gtest-var-04.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
   </test>\r
   <test name="gtest-variance-11.cs">\r
     <type name="D">\r
-      <method name="Boolean Contra[T](IContravariant`1, IContravariant`1)" attrs="150">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>137</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Boolean Contra[T](IContravariant`1[T], IContravariant`1[T])" attrs="150">\r
         <size>49</size>\r
       </method>\r
-      <method name="Boolean Covariant[T](ICovariant`1, ICovariant`1)" attrs="150">\r
+      <method name="Boolean Covariant[T](ICovariant`1[T], ICovariant`1[T])" attrs="150">\r
         <size>49</size>\r
       </method>\r
-      <method name="Int32 Main()" attrs="150">\r
-        <size>58</size>\r
+      <method name="Boolean CovContCont[T](ICovariant`1[T], IContravariant`1[T], IContravariant`1[T])" attrs="150">\r
+        <size>49</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+      <method name="Boolean ContCovContCov[T](IContravariant`1[T], ICovariant`1[T], IContravariant`1[T], ICovariant`1[T])" attrs="150">\r
+        <size>49</size>\r
+      </method>\r
+      <method name="Boolean CovCovCont[T](ICovariant`1[T], ICovariant`1[T], IContravariant`1[T])" attrs="150">\r
+        <size>49</size>\r
       </method>\r
     </type>\r
   </test>\r
   </test>\r
   <test name="gtest-variance-13.cs">\r
     <type name="A">\r
-      <method name="Void Foo[T](T, IList`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void Test()" attrs="150">\r
         <size>18</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="B">\r
-      <method name="Void Foo[T](T, I`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void Test[U](U, I`1)" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="A">\r
+      <method name="Void Foo[T](T, System.Collections.Generic.IList`1[T])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="B">\r
+      <method name="Void Foo[T](T, I`1[T])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void Test[U](U, I`1[U])" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="gtest-variance-14.cs">\r
     <type name="A">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="T Foo[T](T, I`1)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>58</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="T Foo[T](T, I`1[T])" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="gtest-variance-17.cs">\r
   </test>\r
   <test name="gtest-variance-6.cs">\r
     <type name="Cov1`1[U]">\r
-      <method name="ICovariant`1 Invoke(IContravariant`1)" attrs="454">\r
-        <size>0</size>\r
-      </method>\r
-      <method name="IAsyncResult BeginInvoke(IContravariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
-      <method name="ICovariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+    </type>\r
+    <type name="Cov2`1[U]">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
+    </type>\r
+    <type name="Cov3`1[U]">\r
       <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Cov2`1[U]">\r
-      <method name="ICovariant`1 Invoke(IContravariant`1)" attrs="454">\r
+    <type name="Cov4`1[U]">\r
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(IContravariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
-      <method name="ICovariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+    </type>\r
+    <type name="Cov5`1[U]">\r
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
       <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Cov3`1[U]">\r
-      <method name="ICovariant`1 Invoke(IContravariant`1)" attrs="454">\r
+    <type name="Contra5`1[U]">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(IContravariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+    </type>\r
+    <type name="Contra6`1[U]">\r
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="ICovariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
+    </type>\r
+    <type name="Contra7`1[U]">\r
       <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Cov4`1[U]">\r
-      <method name="ICovariant`1 Invoke()" attrs="454">\r
+    <type name="Contra8`1[U]">\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
-        <size>0</size>\r
+    </type>\r
+    <type name="Program">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>2</size>\r
       </method>\r
-      <method name="ICovariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
-        <size>0</size>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+    </type>\r
+    <type name="Cov1`1[U]">\r
+      <method name="ICovariant`1[U] Invoke(IContravariant`1[U])" attrs="454">\r
         <size>0</size>\r
       </method>\r
-    </type>\r
-    <type name="Cov5`1[U]">\r
-      <method name="IContravariant`1 Invoke()" attrs="454">\r
+      <method name="IAsyncResult BeginInvoke(IContravariant`1[U], System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
+      <method name="ICovariant`1[U] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IContravariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+    </type>\r
+    <type name="Cov2`1[U]">\r
+      <method name="ICovariant`1[U] Invoke(IContravariant`1[ICovariant`1[U]])" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+      <method name="IAsyncResult BeginInvoke(IContravariant`1[ICovariant`1[U]], System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-    </type>\r
-    <type name="Contra5`1[U]">\r
-      <method name="IContravariant`1 Invoke(U, ICovariant`1)" attrs="454">\r
+      <method name="ICovariant`1[U] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(U, ICovariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+    </type>\r
+    <type name="Cov3`1[U]">\r
+      <method name="ICovariant`1[IContravariant`1[IContravariant`1[U]]] Invoke(IContravariant`1[IContravariant`1[IContravariant`1[ICovariant`1[U]]]])" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IContravariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+      <method name="IAsyncResult BeginInvoke(IContravariant`1[IContravariant`1[IContravariant`1[ICovariant`1[U]]]], System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+      <method name="ICovariant`1[IContravariant`1[IContravariant`1[U]]] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Contra6`1[U]">\r
-      <method name="IContravariant`1 Invoke()" attrs="454">\r
+    <type name="Cov4`1[U]">\r
+      <method name="ICovariant`1[System.Int32] Invoke()" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
+      <method name="ICovariant`1[System.Int32] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IContravariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+    </type>\r
+    <type name="Cov5`1[U]">\r
+      <method name="IContravariant`1[System.Int32] Invoke()" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+      <method name="IContravariant`1[System.Int32] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Contra7`1[U]">\r
-      <method name="IContravariant`1 Invoke(U, ICovariant`1)" attrs="454">\r
+    <type name="Contra5`1[U]">\r
+      <method name="IContravariant`1[U[]] Invoke(U, ICovariant`1[U])" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(U, ICovariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+      <method name="IAsyncResult BeginInvoke(U, ICovariant`1[U], System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IContravariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+      <method name="IContravariant`1[U[]] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+    </type>\r
+    <type name="Contra6`1[U]">\r
+      <method name="IContravariant`1[U[]] Invoke()" attrs="454">\r
         <size>0</size>\r
       </method>\r
-    </type>\r
-    <type name="Contra8`1[U]">\r
-      <method name="IContravariant`1 Invoke(U, ICovariant`1)" attrs="454">\r
+      <method name="IContravariant`1[U[]] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IAsyncResult BeginInvoke(U, ICovariant`1, System.AsyncCallback, System.Object)" attrs="454">\r
+    </type>\r
+    <type name="Contra7`1[U]">\r
+      <method name="IContravariant`1[U] Invoke(U, ICovariant`1[U])" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="IContravariant`1 EndInvoke(IAsyncResult)" attrs="454">\r
+      <method name="IAsyncResult BeginInvoke(U, ICovariant`1[U], System.AsyncCallback, System.Object)" attrs="454">\r
         <size>0</size>\r
       </method>\r
-      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+      <method name="IContravariant`1[U] EndInvoke(IAsyncResult)" attrs="454">\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="Program">\r
-      <method name="Void Main()" attrs="150">\r
-        <size>2</size>\r
+    <type name="Contra8`1[U]">\r
+      <method name="IContravariant`1[ICovariant`1[U]] Invoke(U, ICovariant`1[U])" attrs="454">\r
+        <size>0</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+      <method name="IAsyncResult BeginInvoke(U, ICovariant`1[U], System.AsyncCallback, System.Object)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="IContravariant`1[ICovariant`1[U]] EndInvoke(IAsyncResult)" attrs="454">\r
+        <size>0</size>\r
       </method>\r
     </type>\r
   </test>\r
   </test>\r
   <test name="gtest-variance-9.cs">\r
     <type name="Test">\r
-      <method name="Void Foo(IIn`1)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>18</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void Foo(IIn`1[System.String])" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-1.cs">\r
         <size>10</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>125</size>\r
+        <size>115</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
         <size>2</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>51</size>\r
+        <size>178</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void test2()" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void test3()" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void test4()" attrs="134">\r
+        <size>2</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-182.cs">\r
     </type>\r
   </test>\r
   <test name="test-285.cs">\r
-    <type name="T">\r
-      <method name="Int32 Main()" attrs="150">\r
-        <size>11</size>\r
+    <type name="Test">\r
+      <method name="Int32 test1()" attrs="145">\r
+        <size>73</size>\r
+      </method>\r
+      <method name="Int32 test2()" attrs="145">\r
+        <size>73</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="145">\r
+        <size>46</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="X+&lt;t2&gt;c__AnonStorey1">\r
-      <method name="Int32 &lt;&gt;m__1()" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="X+&lt;Main2&gt;c__AnonStorey2">\r
-      <method name="Void &lt;&gt;m__2(System.Object, System.EventArgs)" attrs="131">\r
-        <size>34</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X+&lt;t2&gt;c__AnonStorey1">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Main2&gt;c__AnonStorey2">\r
+      <method name="Void &lt;&gt;m__0(System.Object, System.EventArgs)" attrs="131">\r
+        <size>34</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-365.cs">\r
     <type name="C">\r
       </method>\r
     </type>\r
     <type name="Z+&lt;TestPostinc&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>39</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>39</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-475.cs">\r
       <method name="Void .cctor()" attrs="6289">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.String Test_2()" attrs="150">\r
+        <size>7</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-505.cs">\r
   <test name="test-510.cs">\r
     <type name="Foo">\r
       <method name="Void test39(Int32 ByRef)" attrs="145">\r
-        <size>37</size>\r
+        <size>41</size>\r
       </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>29</size>\r
   <test name="test-609.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>54</size>\r
+        <size>10</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
   <test name="test-618.cs">\r
     <type name="C">\r
       <method name="Void ZeroBasedReductions()" attrs="150">\r
-        <size>16</size>\r
+        <size>22</size>\r
       </method>\r
       <method name="Void ZeroBasedReductionsWithConversion()" attrs="150">\r
-        <size>16</size>\r
+        <size>18</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>41</size>\r
   <test name="test-640.cs">\r
     <type name="C">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>128</size>\r
+        <size>125</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
     </type>\r
     <type name="Program">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>438</size>\r
+        <size>410</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-868.cs">\r
+    <type name="C">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>168</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-869.cs">\r
+    <type name="C">\r
+      <method name="C op_BitwiseAnd(C, E)" attrs="2198">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="E op_Implicit(C)" attrs="2198">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void .cctor()" attrs="6289">\r
+        <size>11</size>\r
+      </method>\r
+    </type>\r
+    <type name="FooClass">\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>77</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-87.cs">\r
     <type name="Top">\r
       <method name="Int32 Main()" attrs="150">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-870.cs">\r
+    <type name="Test">\r
+      <method name="Void Foo(UInt16)" attrs="145">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-871.cs">\r
+    <type name="D">\r
+      <method name="D op_BitwiseAnd(D, D)" attrs="2198">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="Boolean op_False(D)" attrs="2198">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Boolean op_True(D)" attrs="2198">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="D op_Implicit(Boolean)" attrs="2198">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="145">\r
+        <size>80</size>\r
+      </method>\r
+      <method name="Void .ctor(Int32)" attrs="6278">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-873.cs">\r
+    <type name="Program">\r
+      <method name="Int32 Main()" attrs="145">\r
+        <size>51</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-88.cs">\r
     <type name="X">\r
       <method name="Void f(System.String)" attrs="145">\r
       </method>\r
     </type>\r
     <type name="X+&lt;Test&gt;c__AnonStorey0`1+&lt;Test&gt;c__AnonStorey1`1[T]">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>51</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>51</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-103.cs">\r
       <method name="Int32 GetItem()" attrs="150">\r
         <size>59</size>\r
       </method>\r
-      <method name="IEnumerable`1 GetItems()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>76</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] GetItems()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;GetItems&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-105.cs">\r
     <type name="Hello">\r
       </method>\r
     </type>\r
     <type name="Foo">\r
-      <method name="IEnumerable`1 Test(Foo)" attrs="134">\r
-        <size>42</size>\r
-      </method>\r
       <method name="Void Hello(Int32)" attrs="134">\r
         <size>20</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Foo&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>113</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo">\r
+      <method name="System.Collections.Generic.IEnumerable`1[Foo] Test(Foo)" attrs="134">\r
+        <size>42</size>\r
+      </method>\r
+    </type>\r
+    <type name="Foo+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Foo] System.Collections.Generic.IEnumerable&lt;Foo&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-106.cs">\r
     <type name="Foo`2[R,S]">\r
       </method>\r
     </type>\r
     <type name="X">\r
-      <method name="IEnumerable`1 Test(Int32)" attrs="150">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>62</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>181</size>\r
       </method>\r
         <size>23</size>\r
       </method>\r
     </type>\r
+    <type name="X">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test(Int32)" attrs="150">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-108.cs">\r
     <type name="Foo">\r
       <method name="Foo op_Implicit(Test)" attrs="2198">\r
         <size>38</size>\r
       </method>\r
-      <method name="IEnumerable`1 op_Addition(Test, Test)" attrs="2198">\r
-        <size>37</size>\r
-      </method>\r
-      <method name="IEnumerable`1 get_Foo()" attrs="2182">\r
-        <size>23</size>\r
-      </method>\r
-      <method name="Void set_Foo(IEnumerable`1)" attrs="2182">\r
-        <size>12</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>82</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;Test&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>113</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>72</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] get_Foo()" attrs="2182">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Void set_Foo(System.Collections.Generic.IEnumerable`1[System.Int32])" attrs="2182">\r
+        <size>12</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[Test] op_Addition(Test, Test)" attrs="2198">\r
+        <size>37</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;op_Addition&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[Test] System.Collections.Generic.IEnumerable&lt;Test&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-11.cs">\r
     <type name="D">\r
   </test>\r
   <test name="test-anon-110.cs">\r
     <type name="X">\r
-      <method name="IEnumerable`1 Test[T](T, T)" attrs="134">\r
-        <size>44</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>110</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>125</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X">\r
+      <method name="System.Collections.Generic.IEnumerable`1[T] Test[T](T, T)" attrs="134">\r
+        <size>44</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Test&gt;c__Iterator0`1[T]">\r
+      <method name="System.Collections.Generic.IEnumerator`1[T] System.Collections.Generic.IEnumerable&lt;T&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-111.cs">\r
     <type name="Foo">\r
       </method>\r
     </type>\r
     <type name="Test`1+&lt;Hello&gt;c__AnonStorey1`1+&lt;Hello&gt;c__AnonStorey0`1[T,S]">\r
-      <method name="Void &lt;&gt;m__1(T)" attrs="131">\r
-        <size>66</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0(T)" attrs="131">\r
+        <size>66</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-116.cs">\r
       <method name="System.String &lt;&gt;m__1(System.Text.RegularExpressions.Match)" attrs="131">\r
         <size>120</size>\r
       </method>\r
-      <method name="System.String &lt;&gt;m__2(System.Text.RegularExpressions.Match)" attrs="131">\r
-        <size>120</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.String &lt;&gt;m__0(System.Text.RegularExpressions.Match)" attrs="131">\r
+        <size>120</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-12.cs">\r
       <method name="Void Closure(EmptyDelegate)" attrs="145">\r
         <size>2</size>\r
       </method>\r
-      <method name="System.Collections.Generic.List`1[T] Query[T](Nullable`1 ByRef)" attrs="145">\r
-        <size>61</size>\r
-      </method>\r
       <method name="T MakeSomething[T]()" attrs="145">\r
         <size>15</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="BaseObject">\r
+      <method name="System.Collections.Generic.List`1[T] Query[T](System.Nullable`1[System.Int32] ByRef)" attrs="145">\r
+        <size>61</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-122.cs">\r
     <type name="D1">\r
   </test>\r
   <test name="test-anon-123.cs">\r
     <type name="MemberAccessData">\r
-      <method name="Void set_MyTypeProperty(Nullable`1)" attrs="2182">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Nullable`1 get_MyTypeProperty()" attrs="2182">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
       <method name="Void &lt;Main&gt;m__3()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Void &lt;Main&gt;m__4()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Void &lt;Main&gt;m__5()" attrs="145">\r
         <size>62</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__6()" attrs="145">\r
+      <method name="Void &lt;Main&gt;m__4()" attrs="145">\r
         <size>54</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__7(E)" attrs="145">\r
-        <size>35</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey0">\r
       <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>49</size>\r
-      </method>\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
         <size>36</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="MemberAccessData">\r
+      <method name="Void set_MyTypeProperty(System.Nullable`1[System.Int32])" attrs="2182">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Int32] get_MyTypeProperty()" attrs="2182">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Void &lt;Main&gt;m__1()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Void &lt;Main&gt;m__2()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Void &lt;Main&gt;m__5(E)" attrs="145">\r
+        <size>35</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>49</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-124.cs">\r
     <type name="Disposable`1[T]">\r
         <size>42</size>\r
       </method>\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>645</size>\r
+        <size>683</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test+&lt;Throw&gt;c__AnonStorey1`1[T]">\r
-      <method name="T &lt;&gt;m__1()" attrs="131">\r
-        <size>24</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test+&lt;TypeOf&gt;c__AnonStorey2`1[T]">\r
-      <method name="System.Type &lt;&gt;m__2()" attrs="131">\r
-        <size>64</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test+&lt;Do&gt;c__AnonStorey3`1[T]">\r
-      <method name="T &lt;&gt;m__3()" attrs="131">\r
-        <size>38</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test+&lt;Lock&gt;c__AnonStorey4`1[T]">\r
-      <method name="T &lt;&gt;m__4()" attrs="131">\r
-        <size>69</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test+&lt;Catch&gt;c__AnonStorey5`1[T]">\r
-      <method name="T &lt;&gt;m__5()" attrs="131">\r
-        <size>41</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;Finally&gt;c__AnonStorey6`1[T]">\r
-      <method name="T &lt;&gt;m__6()" attrs="131">\r
-        <size>62</size>\r
-      </method>\r
+    <type name="Test+&lt;ArrayMultiMutate&gt;c__AnonStoreyC`1[T]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;Using&gt;c__AnonStorey7`1[T]">\r
-      <method name="T &lt;&gt;m__7()" attrs="131">\r
-        <size>15</size>\r
+    <type name="Test">\r
+      <method name="System.Func`1[T] Catch_2[T](T)" attrs="145">\r
+        <size>34</size>\r
       </method>\r
+    </type>\r
+    <type name="Test+&lt;Catch_2&gt;c__AnonStorey6`1[T]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;Switch&gt;c__AnonStorey8`1[T]">\r
-      <method name="T &lt;&gt;m__8()" attrs="131">\r
-        <size>16</size>\r
-      </method>\r
+    <type name="Test+&lt;Finally&gt;c__AnonStorey7`1[T]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;ForForeach&gt;c__AnonStorey9`1[T]">\r
-      <method name="System.Collections.Generic.List`1[T] &lt;&gt;m__9()" attrs="131">\r
-        <size>67</size>\r
+    <type name="Test+&lt;Using&gt;c__AnonStorey8`1[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
       </method>\r
+    </type>\r
+    <type name="Test+&lt;Switch&gt;c__AnonStorey9`1[T]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;ArrayMutate&gt;c__AnonStoreyA`1[T]">\r
-      <method name="Void &lt;&gt;m__A(Int32)" attrs="131">\r
-        <size>39</size>\r
+    <type name="Test+&lt;ForForeach&gt;c__AnonStoreyA`1[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
       </method>\r
+    </type>\r
+    <type name="Test+&lt;ArrayMutate&gt;c__AnonStoreyB`1[T]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;ArrayMultiMutate&gt;c__AnonStoreyB`1[T]">\r
-      <method name="T[][] &lt;&gt;m__B()" attrs="131">\r
-        <size>58</size>\r
+    <type name="Test+&lt;ArrayMultiMutate&gt;c__AnonStoreyD`1[T]">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
       </method>\r
+    </type>\r
+    <type name="Test+&lt;NestedTypeMutate&gt;c__AnonStoreyE`1[T]">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test+&lt;Throw&gt;c__AnonStorey1`1[T]">\r
+      <method name="T &lt;&gt;m__0()" attrs="131">\r
+        <size>24</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;TypeOf&gt;c__AnonStorey2`1[T]">\r
+      <method name="System.Type &lt;&gt;m__0()" attrs="131">\r
+        <size>64</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Do&gt;c__AnonStorey3`1[T]">\r
+      <method name="T &lt;&gt;m__0()" attrs="131">\r
+        <size>38</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Lock&gt;c__AnonStorey4`1[T]">\r
+      <method name="T &lt;&gt;m__0()" attrs="131">\r
+        <size>69</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Catch&gt;c__AnonStorey5`1[T]">\r
+      <method name="T &lt;&gt;m__0()" attrs="131">\r
+        <size>41</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Catch_2&gt;c__AnonStorey6`1[T]">\r
+      <method name="T &lt;&gt;m__0()" attrs="131">\r
+        <size>42</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Finally&gt;c__AnonStorey7`1[T]">\r
+      <method name="T &lt;&gt;m__0()" attrs="131">\r
+        <size>62</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Using&gt;c__AnonStorey8`1[T]">\r
+      <method name="T &lt;&gt;m__0()" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Switch&gt;c__AnonStorey9`1[T]">\r
+      <method name="T &lt;&gt;m__0()" attrs="131">\r
+        <size>16</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;ForForeach&gt;c__AnonStoreyA`1[T]">\r
+      <method name="System.Collections.Generic.List`1[T] &lt;&gt;m__0()" attrs="131">\r
+        <size>67</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;ArrayMutate&gt;c__AnonStoreyB`1[T]">\r
+      <method name="Void &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>39</size>\r
+      </method>\r
+    </type>\r
     <type name="Test+&lt;ArrayMultiMutate&gt;c__AnonStoreyC`1[T]">\r
-      <method name="Int32 &lt;&gt;m__C()" attrs="131">\r
-        <size>35</size>\r
+      <method name="T[][] &lt;&gt;m__0()" attrs="131">\r
+        <size>58</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+    </type>\r
+    <type name="Test+&lt;ArrayMultiMutate&gt;c__AnonStoreyD`1[T]">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>35</size>\r
       </method>\r
     </type>\r
-    <type name="Test+&lt;NestedTypeMutate&gt;c__AnonStoreyD`1[T]">\r
-      <method name="T[] &lt;&gt;m__D()" attrs="131">\r
+    <type name="Test+&lt;NestedTypeMutate&gt;c__AnonStoreyE`1[T]">\r
+      <method name="T[] &lt;&gt;m__0()" attrs="131">\r
         <size>45</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-125.cs">\r
       </method>\r
     </type>\r
     <type name="Test">\r
-      <method name="Void Foo[T](IEqualityComparer`1)" attrs="145">\r
-        <size>28</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>16</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void Foo[T](System.Collections.Generic.IEqualityComparer`1[T])" attrs="145">\r
+        <size>28</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-126.cs">\r
     <type name="MonoBugs.BrokenGenericCast">\r
       <method name="Boolean TryAction[T](Test+Creator`1[T], T ByRef)" attrs="145">\r
         <size>25</size>\r
       </method>\r
-      <method name="Boolean Func1[T](IList`1, Boolean, T ByRef)" attrs="145">\r
-        <size>40</size>\r
-      </method>\r
-      <method name="T Item[T](IList`1)" attrs="150">\r
-        <size>15</size>\r
-      </method>\r
-      <method name="T GetSingleItem[T](IList`1)" attrs="150">\r
-        <size>18</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>16</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Boolean Func1[T](System.Collections.Generic.IList`1[T], Boolean, T ByRef)" attrs="145">\r
+        <size>40</size>\r
+      </method>\r
+      <method name="T Item[T](System.Collections.Generic.IList`1[T])" attrs="150">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="T GetSingleItem[T](System.Collections.Generic.IList`1[T])" attrs="150">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-13.cs">\r
     <type name="D">\r
       </method>\r
     </type>\r
     <type name="X+&lt;Test&gt;c__AnonStorey0`1+&lt;Test&gt;c__AnonStorey1`1[T]">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>51</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>51</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-131.cs">\r
       <method name="Void Assert(System.Action`1[System.Int32])" attrs="150">\r
         <size>10</size>\r
       </method>\r
-      <method name="Void Foo[T](IList`1)" attrs="150">\r
-        <size>32</size>\r
-      </method>\r
       <method name="Void Main(System.String[])" attrs="150">\r
         <size>8</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-  </test>\r
-  <test name="test-anon-133.cs">\r
-    <type name="IEnumerableRocks">\r
-      <method name="System.String Implode[TSource,TResult](IEnumerable`1, System.String, System.Func`2[TSource,TResult])" attrs="150">\r
-        <size>41</size>\r
-      </method>\r
-      <method name="System.String Implode[TSource](IEnumerable`1, System.String, System.Action`2[System.Text.StringBuilder,TSource])" attrs="150">\r
-        <size>146</size>\r
+    <type name="Program">\r
+      <method name="Void Foo[T](System.Collections.Generic.IList`1[T])" attrs="150">\r
+        <size>32</size>\r
       </method>\r
     </type>\r
+  </test>\r
+  <test name="test-anon-133.cs">\r
     <type name="Test">\r
       <method name="Void Main()" attrs="150">\r
         <size>68</size>\r
       </method>\r
-      <method name="System.String &lt;Main&gt;m__1(System.String)" attrs="145">\r
-        <size>24</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="IEnumerableRocks">\r
+      <method name="System.String Implode[TSource,TResult](System.Collections.Generic.IEnumerable`1[TSource], System.String, System.Func`2[TSource,TResult])" attrs="150">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="System.String Implode[TSource](System.Collections.Generic.IEnumerable`1[TSource], System.String, System.Action`2[System.Text.StringBuilder,TSource])" attrs="150">\r
+        <size>146</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test">\r
+      <method name="System.String &lt;Main&gt;m__0(System.String)" attrs="145">\r
+        <size>24</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-134.cs">\r
     <type name="MyClass">\r
       <method name="System.Func`1[C`1[T]] XX()" attrs="145">\r
         <size>40</size>\r
       </method>\r
-      <method name="C`1[T] &lt;XX&gt;m__1()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="System.Func`1[T] XX[T]()" attrs="145">\r
         <size>23</size>\r
       </method>\r
-      <method name="T &lt;XX`1&gt;m__2[T]()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C2`1[T]">\r
+      <method name="C`1[T] &lt;XX&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="N1">\r
+      <method name="T &lt;XX`1&gt;m__0[T]()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-136.cs">\r
     <type name="Handler`1[T]">\r
   </test>\r
   <test name="test-anon-138.cs">\r
     <type name="Foo`1[T]">\r
-      <method name="Boolean ContainsAll[U](IEnumerable`1)" attrs="134">\r
-        <size>48</size>\r
-      </method>\r
       <method name="Boolean Contains(T)" attrs="134">\r
         <size>10</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo`1[T]">\r
+      <method name="Boolean ContainsAll[U](System.Collections.Generic.IEnumerable`1[U])" attrs="134">\r
+        <size>48</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-139.cs">\r
     <type name="Test">\r
       <method name="Void Test_1[T](T)" attrs="134">\r
         <size>34</size>\r
       </method>\r
-      <method name="Void Test_2[T](Nullable`1)" attrs="134">\r
-        <size>34</size>\r
-      </method>\r
       <method name="T Test_3[T](System.Object)" attrs="134">\r
         <size>59</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="Test+&lt;Test_2&gt;c__AnonStorey1`1[T]">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>86</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Test+&lt;Test_3&gt;c__AnonStorey2`1[T]">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
-        <size>24</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void Test_2[T](System.Nullable`1[T])" attrs="134">\r
+        <size>34</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Test_2&gt;c__AnonStorey1`1[T]">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>86</size>\r
+      </method>\r
+    </type>\r
+    <type name="Test+&lt;Test_3&gt;c__AnonStorey2`1[T]">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>24</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-14.cs">\r
     <type name="X">\r
   </test>\r
   <test name="test-anon-141.cs">\r
     <type name="C">\r
-      <method name="Decimal Average[TSource](IEnumerable`1, System.Func`2[TSource,System.Decimal])" attrs="150">\r
-        <size>45</size>\r
-      </method>\r
-      <method name="TResult Average[TElement,TAggregate,TResult](IEnumerable`1, System.Func`3[TAggregate,TElement,TAggregate], System.Func`3[TAggregate,TElement,TResult])" attrs="145">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="Decimal &lt;Average`1&gt;m__1[TSource](Decimal, Decimal)" attrs="145">\r
         <size>15</size>\r
       </method>\r
+      <method name="Decimal Average[TSource](System.Collections.Generic.IEnumerable`1[TSource], System.Func`2[TSource,System.Decimal])" attrs="150">\r
+        <size>45</size>\r
+      </method>\r
+      <method name="TResult Average[TElement,TAggregate,TResult](System.Collections.Generic.IEnumerable`1[TElement], System.Func`3[TAggregate,TElement,TAggregate], System.Func`3[TAggregate,TElement,TResult])" attrs="145">\r
+        <size>7</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-142.cs">\r
       </method>\r
     </type>\r
     <type name="C+&lt;AnyMethod&gt;c__AnonStorey0`1[T]">\r
-      <method name="Void &lt;&gt;m__1(System.String)" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0(System.String)" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-146.cs">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>67</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__3(Int32, Int32, Int32)" attrs="145">\r
-        <size>24</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Curry&gt;c__AnonStorey0`3+&lt;Curry&gt;c__AnonStorey1`3[T1,T2,T3]">\r
-      <method name="System.Action`1[T3] &lt;&gt;m__1(T2)" attrs="131">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Curry&gt;c__AnonStorey0`3+&lt;Curry&gt;c__AnonStorey1`3+&lt;Curry&gt;c__AnonStorey2`3[T1,T2,T3]">\r
-      <method name="Void &lt;&gt;m__2(T3)" attrs="131">\r
-        <size>35</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Test">\r
+      <method name="Void &lt;Main&gt;m__0(Int32, Int32, Int32)" attrs="145">\r
+        <size>24</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Curry&gt;c__AnonStorey0`3+&lt;Curry&gt;c__AnonStorey1`3[T1,T2,T3]">\r
+      <method name="System.Action`1[T3] &lt;&gt;m__0(T2)" attrs="131">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Curry&gt;c__AnonStorey0`3+&lt;Curry&gt;c__AnonStorey1`3+&lt;Curry&gt;c__AnonStorey2`3[T1,T2,T3]">\r
+      <method name="Void &lt;&gt;m__0(T3)" attrs="131">\r
+        <size>35</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-148.cs">\r
     <type name="Func`1[TResult]">\r
       </method>\r
     </type>\r
     <type name="SomeGenericClass`1+&lt;FailsToCompile&gt;c__AnonStorey0[SomeType]">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>19</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>19</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-151.cs">\r
       </method>\r
     </type>\r
     <type name="Class+&lt;Method&gt;c__AnonStorey0+&lt;Method&gt;c__AnonStorey2">\r
-      <method name="System.String &lt;&gt;m__1(System.String)" attrs="131">\r
-        <size>60</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Class+&lt;Method&gt;c__AnonStorey0+&lt;Method&gt;c__AnonStorey2+&lt;Method&gt;c__AnonStorey1">\r
-      <method name="System.String &lt;&gt;m__2()" attrs="131">\r
-        <size>46</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Class+&lt;Method&gt;c__AnonStorey0+&lt;Method&gt;c__AnonStorey2">\r
+      <method name="System.String &lt;&gt;m__0(System.String)" attrs="131">\r
+        <size>60</size>\r
+      </method>\r
+    </type>\r
+    <type name="Class+&lt;Method&gt;c__AnonStorey0+&lt;Method&gt;c__AnonStorey2+&lt;Method&gt;c__AnonStorey1">\r
+      <method name="System.String &lt;&gt;m__0()" attrs="131">\r
+        <size>46</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-155.cs">\r
     <type name="Thing`1[TFirst]">\r
       <method name="Void Main()" attrs="150">\r
         <size>43</size>\r
       </method>\r
-      <method name="System.Object &lt;Main&gt;m__1(System.Object)" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="Thing`1+&lt;Create&gt;c__AnonStorey0`1[TFirst,TSecond]">\r
       <method name="Void &lt;&gt;m__0(TFirst)" attrs="131">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Program">\r
+      <method name="System.Object &lt;Main&gt;m__0(System.Object)" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-156.cs">\r
     <type name="G`1[T]">\r
       </method>\r
     </type>\r
     <type name="Test+&lt;FooNested&gt;c__AnonStorey1`1[X]">\r
-      <method name="Call`1[X] &lt;&gt;m__1()" attrs="131">\r
-        <size>19</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Call`1[X] &lt;&gt;m__0()" attrs="131">\r
+        <size>19</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-159.cs">\r
       <method name="Void Main()" attrs="150">\r
         <size>41</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__1(System.String)" attrs="145">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TestGenericsSubtypeMatching.C">\r
+      <method name="Void &lt;Main&gt;m__0(System.String)" attrs="145">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-16.cs">\r
     <type name="D">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>49</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__1(Int32)" attrs="145">\r
-        <size>7</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TestGenericsSubtypeMatching.C">\r
+      <method name="Void &lt;Main&gt;m__0(Int32)" attrs="145">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-161.cs">\r
     <type name="TestCase">\r
       <method name="Void Main()" attrs="150">\r
         <size>33</size>\r
       </method>\r
-      <method name="Void Test[T](IList`1)" attrs="150">\r
-        <size>34</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="Void &lt;&gt;m__0()" attrs="131">\r
         <size>47</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__1(IList`1)" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="TestCase">\r
+      <method name="Void Test[T](System.Collections.Generic.IList`1[System.Collections.Generic.IList`1[T]])" attrs="150">\r
+        <size>34</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestCase+&lt;Test&gt;c__AnonStorey0`1[T]">\r
+      <method name="Int32 &lt;&gt;m__1(System.Collections.Generic.IList`1[System.Collections.Generic.IList`1[T]])" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-162.cs">\r
     <type name="D">\r
       </method>\r
     </type>\r
     <type name="T+&lt;GetD&gt;c__AnonStorey2`1+&lt;GetD&gt;c__AnonStorey1`1[T]">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>52</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-163.cs">\r
       </method>\r
     </type>\r
     <type name="B+&lt;Test2&gt;c__AnonStorey1`1[T]">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="B+&lt;Test3&gt;c__AnonStorey2">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
-        <size>20</size>\r
-      </method>\r
-      <method name="Void &lt;&gt;m__3()" attrs="131">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="T &lt;Foo4&gt;__BaseCallProxy2[T]()" attrs="129">\r
         <size>14</size>\r
       </method>\r
-      <method name="T &lt;Test4`1&gt;m__4[T]()" attrs="129">\r
+      <method name="T &lt;Test4`1&gt;m__0[T]()" attrs="129">\r
         <size>14</size>\r
       </method>\r
     </type>\r
+    <type name="B+&lt;Test2&gt;c__AnonStorey1`1[T]">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="B+&lt;Test3&gt;c__AnonStorey2">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;m__1()" attrs="131">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-164.cs">\r
     <type name="C`1[T]">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Foo&gt;c__AnonStorey0`1[T]">\r
-      <method name="T &lt;&gt;m__1()" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="T &lt;&gt;m__0()" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-166.cs">\r
       </method>\r
     </type>\r
     <type name="A+&lt;Test&gt;c__AnonStorey0`2[T,U]">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-167.cs">\r
       </method>\r
     </type>\r
     <type name="Test+&lt;Main&gt;c__AnonStorey1">\r
-      <method name="Char &lt;&gt;m__1()" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Char &lt;&gt;m__0()" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-17.cs">\r
       </method>\r
     </type>\r
     <type name="MyClass+&lt;Run&gt;c__AnonStorey0">\r
-      <method name="Int32 &lt;&gt;m__4()" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="MyClass+&lt;Run&gt;c__AnonStorey1">\r
-      <method name="Int32 &lt;&gt;m__5()" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="MyClass+&lt;Run2&gt;c__AnonStorey2">\r
-      <method name="Int32 &lt;&gt;m__6()" attrs="131">\r
-        <size>25</size>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
       </method>\r
+    </type>\r
+    <type name="MyClass+&lt;Run2&gt;c__AnonStorey3">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="MyClass+&lt;Run&gt;c__AnonStorey0">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
+    <type name="MyClass+&lt;Run&gt;c__AnonStorey1">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
+    <type name="MyClass+&lt;Run2&gt;c__AnonStorey2">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
+    </type>\r
     <type name="MyClass+&lt;Run2&gt;c__AnonStorey3">\r
-      <method name="Int32 &lt;&gt;m__7()" attrs="131">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
         <size>25</size>\r
       </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-anon-171.cs">\r
+    <type name="TestAnonSwitch.MyClass">\r
+      <method name="Void add_FirstEvent(System.EventHandler`1[System.EventArgs])" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void remove_FirstEvent(System.EventHandler`1[System.EventArgs])" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void add_SecondEvent(System.EventHandler`1[System.EventArgs])" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void remove_SecondEvent(System.EventHandler`1[System.EventArgs])" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void Trigger()" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestAnonSwitch.Tester">\r
+      <method name="Void Test()" attrs="134">\r
+        <size>157</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestAnonSwitch.MainClass">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestAnonSwitch.Tester+&lt;Test&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__0(System.Object, System.EventArgs)" attrs="131">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;m__1(System.Object, System.EventArgs)" attrs="131">\r
+        <size>23</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="X+&lt;MainHost&gt;c__AnonStorey0+&lt;MainHost&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>53</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>53</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-21.cs">\r
       </method>\r
     </type>\r
     <type name="X+&lt;M&gt;c__AnonStorey0+&lt;M&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>82</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>82</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-22.cs">\r
       </method>\r
     </type>\r
     <type name="X+&lt;T&gt;c__AnonStorey0+&lt;T&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>53</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>53</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-23.cs">\r
       </method>\r
     </type>\r
     <type name="X+&lt;M&gt;c__AnonStorey0+&lt;M&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>25</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-24.cs">\r
       </method>\r
     </type>\r
     <type name="X+&lt;M&gt;c__AnonStorey0+&lt;M&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>51</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>51</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-28.cs">\r
       </method>\r
     </type>\r
     <type name="T+&lt;Main&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>13</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>13</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-34.cs">\r
       </method>\r
     </type>\r
     <type name="Delegates.Space+&lt;Leak&gt;c__AnonStorey0">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Delegates.Space+&lt;Leak&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>20</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-35.cs">\r
     <type name="ExceptionWithAnonMethod">\r
       </method>\r
     </type>\r
     <type name="X+&lt;Test&gt;c__AnonStorey0+&lt;Test&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>35</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>35</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-39.cs">\r
       </method>\r
     </type>\r
     <type name="X+&lt;Test&gt;c__AnonStorey0+&lt;Test&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>36</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>36</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-42.cs">\r
       </method>\r
     </type>\r
     <type name="X+&lt;Test&gt;c__AnonStorey0+&lt;Test&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>35</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>35</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-44.cs">\r
       <method name="Simple &lt;&gt;m__1()" attrs="131">\r
         <size>41</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__3()" attrs="131">\r
-        <size>22</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="X+&lt;Test&gt;c__AnonStorey0+&lt;Test&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
-        <size>27</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X+&lt;Test&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__2()" attrs="131">\r
+        <size>22</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Test&gt;c__AnonStorey0+&lt;Test&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>27</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-45.cs">\r
     <type name="TestFunc">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>135</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-51.cs">\r
       </method>\r
     </type>\r
     <type name="Test+&lt;Test&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>13</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>13</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-54.cs">\r
       </method>\r
     </type>\r
     <type name="X+&lt;Test&gt;c__AnonStorey2+&lt;Test&gt;c__AnonStorey4">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>125</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>125</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-61.cs">\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
-      <method name="Void &lt;AddSource&gt;m__1(System.Object, System.EventArgs)" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Source">\r
+      <method name="Void &lt;AddSource&gt;m__0(System.Object, System.EventArgs)" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-65.cs">\r
     <type name="BaseClass">\r
       <method name="Void Main()" attrs="150">\r
         <size>99</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__3()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__AnonStorey1">\r
       <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>49</size>\r
-      </method>\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
         <size>36</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="Void &lt;Main&gt;m__0()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>49</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-71.cs">\r
     <type name="Program">\r
     </type>\r
     <type name="Test+&lt;TestMe&gt;c__AnonStorey0">\r
       <method name="Boolean &lt;&gt;m__1()" attrs="131">\r
-        <size>67</size>\r
-      </method>\r
-      <method name="Boolean &lt;&gt;m__2()" attrs="131">\r
         <size>22</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Boolean &lt;&gt;m__0()" attrs="131">\r
+        <size>67</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-76.cs">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>45</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test&gt;c__AnonStorey1+&lt;Test&gt;c__AnonStorey0">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
-        <size>19</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;Test&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>45</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__AnonStorey1+&lt;Test&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>19</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-82.cs">\r
     <type name="StringSender">\r
       <method name="Void SimpleCallback(MainClass, System.String)" attrs="145">\r
         <size>8</size>\r
       </method>\r
-      <method name="Void &lt;Test2&gt;m__1(System.String)" attrs="145">\r
-        <size>28</size>\r
-      </method>\r
-      <method name="Void &lt;Test3&gt;m__3()" attrs="145">\r
-        <size>2</size>\r
-      </method>\r
-      <method name="Void &lt;Test4&gt;m__4()" attrs="145">\r
-        <size>32</size>\r
-      </method>\r
-      <method name="Void &lt;Test4&gt;m__8()" attrs="145">\r
-        <size>29</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="Void &lt;&gt;m__0()" attrs="131">\r
         <size>26</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__6(System.String)" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="MainClass+&lt;Test3&gt;c__AnonStorey2">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="MainClass+&lt;Test5&gt;c__AnonStorey4">\r
-      <method name="Int32 &lt;&gt;m__5(Int32)" attrs="131">\r
-        <size>54</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__9(Int32)" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="MainClass+&lt;Test2&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__7()" attrs="131">\r
-        <size>13</size>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
       </method>\r
+    </type>\r
+    <type name="MainClass+&lt;Test4&gt;c__AnonStorey3">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="MainClass">\r
+      <method name="Void &lt;Test2&gt;m__0(System.String)" attrs="145">\r
+        <size>28</size>\r
+      </method>\r
+      <method name="Void &lt;Test3&gt;m__1()" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void &lt;Test4&gt;m__2()" attrs="145">\r
+        <size>32</size>\r
+      </method>\r
+      <method name="Void &lt;Test4&gt;m__3()" attrs="145">\r
+        <size>29</size>\r
+      </method>\r
+    </type>\r
+    <type name="MainClass+&lt;Main&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__1(System.String)" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
+    <type name="MainClass+&lt;Test3&gt;c__AnonStorey2">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="MainClass+&lt;Test5&gt;c__AnonStorey4">\r
+      <method name="Int32 &lt;&gt;m__0(Int32)" attrs="131">\r
+        <size>54</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1(Int32)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="MainClass+&lt;Test2&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
     <type name="MainClass+&lt;Test4&gt;c__AnonStorey3">\r
-      <method name="Void &lt;&gt;m__A()" attrs="131">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
         <size>15</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__B()" attrs="131">\r
+      <method name="Void &lt;&gt;m__1()" attrs="131">\r
         <size>9</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-83.cs">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test&gt;c__AnonStorey0">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
-        <size>9</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="Void &lt;&gt;m__1()" attrs="131">\r
         <size>9</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__4()" attrs="145">\r
-        <size>4</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test&gt;c__AnonStorey2+&lt;Test&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__3()" attrs="131">\r
-        <size>21</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;Test&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__AnonStorey2">\r
+      <method name="Void &lt;&gt;m__2()" attrs="145">\r
+        <size>4</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__AnonStorey2+&lt;Test&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>21</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-89.cs">\r
     <type name="C">\r
       <method name="Void &lt;&gt;m__0()" attrs="131">\r
         <size>113</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__3()" attrs="131">\r
-        <size>32</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test&gt;c__AnonStorey0+&lt;Test&gt;c__AnonStorey1">\r
       <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>19</size>\r
-      </method>\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
         <size>53</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;Test&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__1()" attrs="131">\r
+        <size>32</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__AnonStorey0+&lt;Test&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>19</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-90.cs">\r
     <type name="C">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Foo&gt;c__AnonStorey0+&lt;Foo&gt;c__AnonStorey2">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>33</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>33</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-91.cs">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test&gt;c__AnonStorey0+&lt;Test&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>24</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>24</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-anon-92.cs">\r
       <method name="Void Main()" attrs="150">\r
         <size>51</size>\r
       </method>\r
-      <method name="Void &lt;Main&gt;m__2(System.Object, System.EventArgs)" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="BaseTest.MainClass+&lt;&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__1(System.Object, System.EventArgs)" attrs="131">\r
-        <size>24</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="BaseTest.MainClass">\r
+      <method name="Void &lt;Main&gt;m__0(System.Object, System.EventArgs)" attrs="145">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="BaseTest.MainClass+&lt;&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0(System.Object, System.EventArgs)" attrs="131">\r
+        <size>24</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-94.cs">\r
     <type name="Program">\r
       <method name="Int32 Main()" attrs="150">\r
-        <size>75</size>\r
+        <size>97</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       <method name="Void &lt;Print&gt;__BaseCallProxy0(Int32)" attrs="129">\r
         <size>8</size>\r
       </method>\r
-      <method name="Void &lt;Print&gt;m__1()" attrs="129">\r
-        <size>9</size>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+BaseClass">\r
+      <method name="Void TestOut(Int32 ByRef)" attrs="454">\r
+        <size>5</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+Derived">\r
+      <method name="Void TestOut(Int32 ByRef)" attrs="198">\r
+        <size>50</size>\r
+      </method>\r
+      <method name="Void &lt;TestOut&gt;__BaseCallProxy1(Int32 ByRef)" attrs="129">\r
+        <size>8</size>\r
       </method>\r
+    </type>\r
+    <type name="Program+Derived+&lt;TestOut&gt;c__AnonStorey0">\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Program+DerivedLibrary">\r
+      <method name="Void &lt;Print&gt;m__0()" attrs="129">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+Derived+&lt;TestOut&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-anon-95.cs">\r
     <type name="D">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test&gt;c__AnonStorey0">\r
-      <method name="Void &lt;&gt;m__1()" attrs="131">\r
-        <size>72</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test&gt;c__AnonStorey0+&lt;Test&gt;c__AnonStorey2">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
-        <size>25</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;Test&gt;c__AnonStorey0">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>72</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__AnonStorey0+&lt;Test&gt;c__AnonStorey2">\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-01.cs">\r
     <type name="Program">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>482</size>\r
       </method>\r
-      <method name="System.Threading.Tasks.Task`1[System.Decimal] &lt;Main&gt;m__4(Decimal)" attrs="145">\r
-        <size>41</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="Void &lt;&gt;m__5()" attrs="131">\r
         <size>34</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__6()" attrs="131">\r
-        <size>34</size>\r
-      </method>\r
     </type>\r
     <type name="Program+&lt;Main&gt;c__AnonStorey1+&lt;Main&gt;c__async5">\r
       <method name="Void MoveNext()" attrs="486">\r
       </method>\r
     </type>\r
     <type name="Program+&lt;Main&gt;c__AnonStorey1+&lt;Main&gt;c__async3+&lt;Main&gt;c__AnonStorey4">\r
-      <method name="System.String &lt;&gt;m__7()" attrs="131">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Program+&lt;Main&gt;c__AnonStorey1+&lt;Main&gt;c__async5+&lt;Main&gt;c__AnonStorey6">\r
-      <method name="Decimal &lt;&gt;m__8()" attrs="131">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>13</size>\r
       </method>\r
     </type>\r
+    <type name="Program">\r
+      <method name="System.Threading.Tasks.Task`1[System.Decimal] &lt;Main&gt;m__0(Decimal)" attrs="145">\r
+        <size>41</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;Main&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__4()" attrs="131">\r
+        <size>34</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;Main&gt;c__AnonStorey1+&lt;Main&gt;c__async3+&lt;Main&gt;c__AnonStorey4">\r
+      <method name="System.String &lt;&gt;m__0()" attrs="131">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;Main&gt;c__AnonStorey1+&lt;Main&gt;c__async5+&lt;Main&gt;c__AnonStorey6">\r
+      <method name="Decimal &lt;&gt;m__0()" attrs="131">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-07.cs">\r
     <type name="Program">\r
       <method name="Int32 Main()" attrs="150">\r
         <size>358</size>\r
       </method>\r
-      <method name="System.Threading.Tasks.Task`1[System.Int16] &lt;Main&gt;m__2(Int16)" attrs="145">\r
-        <size>41</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>41</size>\r
       </method>\r
       <method name="Void &lt;&gt;m__3()" attrs="131">\r
-        <size>35</size>\r
+        <size>34</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Program+&lt;Main&gt;c__AnonStorey1">\r
-      <method name="Void &lt;&gt;m__5()" attrs="131">\r
-        <size>34</size>\r
-      </method>\r
-      <method name="Void &lt;&gt;m__6()" attrs="131">\r
-        <size>46</size>\r
-      </method>\r
-    </type>\r
     <type name="Program+&lt;Main&gt;c__AnonStorey1+&lt;Main&gt;c__async3">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>191</size>\r
       </method>\r
     </type>\r
     <type name="Program+&lt;Main&gt;c__AnonStorey1+&lt;Main&gt;c__async0+&lt;Main&gt;c__AnonStorey2">\r
-      <method name="System.String &lt;&gt;m__4()" attrs="131">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>13</size>\r
       </method>\r
     </type>\r
+    <type name="Program">\r
+      <method name="System.Threading.Tasks.Task`1[System.Int16] &lt;Main&gt;m__0(Int16)" attrs="145">\r
+        <size>41</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;Main&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__2()" attrs="131">\r
+        <size>35</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;m__4()" attrs="131">\r
+        <size>46</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;Main&gt;c__AnonStorey1+&lt;Main&gt;c__async0+&lt;Main&gt;c__AnonStorey2">\r
+      <method name="System.String &lt;&gt;m__0()" attrs="131">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-08.cs">\r
     <type name="AsyncTypeInference">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>196</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__5()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="AsyncTypeInference+&lt;Main&gt;c__async5">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>197</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__6()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="AsyncTypeInference+&lt;Main&gt;c__async8">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
+    <type name="AsyncTypeInference+&lt;Main&gt;c__async2">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="AsyncTypeInference+&lt;Main&gt;c__async5">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-09.cs">\r
     <type name="Test">\r
         <size>338</size>\r
       </method>\r
       <method name="System.String &lt;&gt;m__1()" attrs="145">\r
-        <size>21</size>\r
-      </method>\r
-      <method name="System.String &lt;&gt;m__2()" attrs="145">\r
         <size>13</size>\r
       </method>\r
     </type>\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>257</size>\r
       </method>\r
-      <method name="System.String &lt;&gt;m__3()" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;TestCompositionCall_3&gt;c__async2">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>310</size>\r
       </method>\r
-      <method name="Byte &lt;&gt;m__4()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;TestCompositionPair_1&gt;c__async3">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>208</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__5()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;TestCompositionPair_2&gt;c__async4">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>329</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__6()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__7()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;TestCompositionPair_3&gt;c__async5">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>209</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__8()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;TestCompositionPair_4&gt;c__async6">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>467</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__9()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__A()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__B()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;M&gt;c__AnonStorey7">\r
       <method name="Byte &lt;&gt;m__0()" attrs="131">\r
         <size>13</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;TestCompositionCall_1&gt;c__async0">\r
+      <method name="System.String &lt;&gt;m__0()" attrs="145">\r
+        <size>21</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;TestCompositionCall_2&gt;c__async1">\r
+      <method name="System.String &lt;&gt;m__0()" attrs="145">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;TestCompositionCall_3&gt;c__async2">\r
+      <method name="Byte &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;TestCompositionPair_1&gt;c__async3">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;TestCompositionPair_2&gt;c__async4">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;TestCompositionPair_3&gt;c__async5">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;TestCompositionPair_4&gt;c__async6">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-11.cs">\r
     <type name="G`1[T]">\r
       <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
     </type>\r
-    <type name="C+&lt;TestStack_1&gt;c__async1">\r
+    <type name="C+&lt;TestStack_1&gt;c__async0">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>327</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="C+&lt;TestStack_2&gt;c__async2">\r
+    <type name="C+&lt;TestStack_2&gt;c__async1">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>302</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="C+&lt;TestStack_3&gt;c__async3">\r
+    <type name="C+&lt;TestStack_3&gt;c__async2">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>467</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__3()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-    </type>\r
-    <type name="C+&lt;TestStack_4&gt;c__async4">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>323</size>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__4()" attrs="145">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="C+&lt;TestStack_5&gt;c__async5">\r
+    <type name="C+&lt;TestStack_4&gt;c__async3">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>347</size>\r
-      </method>\r
-    </type>\r
-    <type name="G`1+&lt;TestStack_1&gt;c__async0[T]">\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
-      </method>\r
-    </type>\r
-    <type name="C+&lt;TestStack_1&gt;c__async1">\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
+        <size>323</size>\r
       </method>\r
-    </type>\r
-    <type name="C+&lt;TestStack_2&gt;c__async2">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-    </type>\r
-    <type name="C+&lt;TestStack_3&gt;c__async3">\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="C+&lt;TestStack_4&gt;c__async4">\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
+    <type name="C+&lt;TestStack_5&gt;c__async4">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>347</size>\r
       </method>\r
-    </type>\r
-    <type name="C+&lt;TestStack_5&gt;c__async5">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="C+&lt;TestStack_5&gt;c__async5+&lt;TestStack_5&gt;c__AnonStorey6">\r
-      <method name="Int32 &lt;&gt;m__5()" attrs="131">\r
+    <type name="C+&lt;TestStack_5&gt;c__async4+&lt;TestStack_5&gt;c__AnonStorey5">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
         <size>48</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>335</size>\r
       </method>\r
-      <method name="Boolean &lt;&gt;m__4()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__5()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_2&gt;c__async1">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>740</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__6()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__7()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__8()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Double &lt;&gt;m__9()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_3&gt;c__async2">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>1090</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__A()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__B()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Decimal &lt;&gt;m__C()" attrs="145">\r
-        <size>19</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__D()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Decimal &lt;&gt;m__E()" attrs="145">\r
-        <size>19</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_4&gt;c__async3">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>421</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__F()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="System.String &lt;&gt;m__10()" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_5&gt;c__async4">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>428</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__11()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_6&gt;c__async5">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>257</size>\r
       </method>\r
-      <method name="Int64 &lt;&gt;m__13()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_7&gt;c__async6">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>385</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__14()" attrs="145">\r
-        <size>9</size>\r
+        <size>426</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_8&gt;c__async7">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>670</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__15()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Byte &lt;&gt;m__16()" attrs="145">\r
-        <size>10</size>\r
+        <size>792</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_9&gt;c__async8">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>1209</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__17()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__18()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__19()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__1A()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__1B()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__1C()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="S &lt;&gt;m__1D()" attrs="145">\r
-        <size>25</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;AssignTest_1&gt;c__async9">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>223</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__1E()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;AssignTest_2&gt;c__asyncA">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>273</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;&gt;m__1F()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;AssignTest_3&gt;c__asyncB">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>364</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__20()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__21()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;BinaryTest_1&gt;c__asyncC">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>435</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__22()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__23()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__24()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;BinaryTest_2&gt;c__asyncD">\r
       <method name="Void MoveNext()" attrs="486">\r
     </type>\r
     <type name="Tester+&lt;BinaryTest_3&gt;c__asyncE">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>1082</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__28()" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__29()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2A()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2B()" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2C()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2D()" attrs="145">\r
-        <size>14</size>\r
+        <size>1137</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;BinaryTest_4&gt;c__asyncF">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>809</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2E()" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__2F()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__30()" attrs="145">\r
-        <size>20</size>\r
-      </method>\r
-      <method name="Nullable`1 &lt;&gt;m__31()" attrs="145">\r
-        <size>17</size>\r
+        <size>872</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;ArrayAccessTest_1&gt;c__async0">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;CallTest_1&gt;c__async11">\r
+    <type name="Tester">\r
+      <method name="System.Threading.Tasks.Task`1[System.Boolean] BinaryTest_6()" attrs="129">\r
+        <size>33</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;BinaryTest_6&gt;c__async11">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>430</size>\r
+        <size>209</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__32()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__33()" attrs="145">\r
-        <size>10</size>\r
+    </type>\r
+    <type name="Tester+&lt;CallTest_1&gt;c__async12">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>430</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__34()" attrs="145">\r
-        <size>9</size>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;CallTest_2&gt;c__async12">\r
+    <type name="Tester+&lt;CallTest_2&gt;c__async13">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>267</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__35()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;CallTest_3&gt;c__async13">\r
+    <type name="Tester+&lt;CallTest_3&gt;c__async14">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>237</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__36()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;CallTest_4&gt;c__async14">\r
+    <type name="Tester+&lt;CallTest_4&gt;c__async15">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>234</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="E &lt;&gt;m__37()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;CallTest_5&gt;c__async15">\r
+    <type name="Tester+&lt;CallTest_5&gt;c__async16">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>250</size>\r
       </method>\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;CastTest_1&gt;c__async16">\r
+    <type name="Tester+&lt;CastTest_1&gt;c__async17">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>246</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Decimal &lt;&gt;m__39()" attrs="145">\r
-        <size>15</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;CastTest_2&gt;c__async17">\r
+    <type name="Tester+&lt;CastTest_2&gt;c__async18">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>233</size>\r
       </method>\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;CoalescingTest_1&gt;c__async18">\r
+    <type name="Tester+&lt;CoalescingTest_1&gt;c__async19">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>358</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.String &lt;&gt;m__3B()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="System.String &lt;&gt;m__3C()" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;CoalescingTest_2&gt;c__async19">\r
+    <type name="Tester+&lt;CoalescingTest_2&gt;c__async1A">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>364</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;&gt;m__3D()" attrs="145">\r
-        <size>17</size>\r
-      </method>\r
-      <method name="Byte &lt;&gt;m__3E()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;ConditionalTest_1&gt;c__async1A">\r
+    <type name="Tester+&lt;ConditionalTest_1&gt;c__async1B">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>197</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__3F()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;ConditionalTest_2&gt;c__async1B">\r
+    <type name="Tester+&lt;ConditionalTest_2&gt;c__async1C">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>329</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__40()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__41()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;ConditionalTest_3&gt;c__async1C">\r
+    <type name="Tester+&lt;ConditionalTest_3&gt;c__async1D">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>347</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Boolean &lt;&gt;m__42()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__43()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;ConditionalTest_4&gt;c__async1D">\r
+    <type name="Tester+&lt;ConditionalTest_4&gt;c__async1E">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>243</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__44()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;DelegateInvoke_4&gt;c__async1E">\r
+    <type name="Tester+&lt;DelegateInvoke_4&gt;c__async1F">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>271</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__45(Int32)" attrs="145">\r
-        <size>11</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__46()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;EventInvoke_1&gt;c__async1F">\r
+    <type name="Tester+&lt;EventInvoke_1&gt;c__async20">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>260</size>\r
       </method>\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;FieldTest_1&gt;c__async20">\r
+    <type name="Tester+&lt;FieldTest_1&gt;c__async21">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>535</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__49()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__4A()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_1&gt;c__async21">\r
+    <type name="Tester+&lt;IndexerTest_1&gt;c__async22">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>225</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__4B()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_2&gt;c__async22">\r
+    <type name="Tester+&lt;IndexerTest_2&gt;c__async23">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>335</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__4C()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__4D()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_3&gt;c__async23">\r
+    <type name="Tester+&lt;IndexerTest_3&gt;c__async24">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>402</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__4F()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_4&gt;c__async24">\r
+    <type name="Tester+&lt;IndexerTest_4&gt;c__async25">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>442</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__51()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_5&gt;c__async25">\r
+    <type name="Tester+&lt;IndexerTest_5&gt;c__async26">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>548</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__53()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_6&gt;c__async26">\r
+    <type name="Tester+&lt;IndexerTest_6&gt;c__async27">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>544</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__54()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__55()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
-      <method name="Int32 &lt;&gt;m__56()" attrs="145">\r
-        <size>10</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_7&gt;c__async27">\r
+    <type name="Tester+&lt;IndexerTest_7&gt;c__async28">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>295</size>\r
       </method>\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;IsTest_1&gt;c__async28">\r
+    <type name="Tester+&lt;IsTest_1&gt;c__async29">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>233</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Tester &lt;&gt;m__58()" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;IsTest_2&gt;c__async29">\r
+    <type name="Tester+&lt;IsTest_2&gt;c__async2A">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>233</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Nullable`1 &lt;&gt;m__59()" attrs="145">\r
-        <size>14</size>\r
-      </method>\r
     </type>\r
-    <type name="Tester+&lt;LogicalUserOperator_1&gt;c__async2A">\r
+    <type name="Tester+&lt;LogicalUserOperator_1&gt;c__async2B">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>391</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Base &lt;&gt;m__5A()" attrs="145">\r
-        <size>13</size>\r
+    </type>\r
+    <type name="Tester+&lt;LogicalUserOperator_2&gt;c__async2C">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>299</size>\r
       </method>\r
-      <method name="Base &lt;&gt;m__5B()" attrs="145">\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;LogicalUserOperator_2&gt;c__async2B">\r
+    <type name="Tester+&lt;LogicalUserOperator_3&gt;c__async2D">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>299</size>\r
+        <size>390</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Base &lt;&gt;m__5C()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;NewTest_1&gt;c__async2E">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>260</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;LogicalUserOperator_3&gt;c__async2C">\r
+    <type name="Tester+&lt;NewTest_2&gt;c__async2F">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>390</size>\r
+        <size>348</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Base &lt;&gt;m__5D()" attrs="145">\r
-        <size>13</size>\r
+    </type>\r
+    <type name="Tester+&lt;NewInitTest_1&gt;c__async30">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>1026</size>\r
       </method>\r
-      <method name="Base &lt;&gt;m__5E()" attrs="145">\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewTest_1&gt;c__async2D">\r
+    <type name="Tester+&lt;NewInitTest_2&gt;c__async31">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>260</size>\r
+        <size>739</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__5F()" attrs="145">\r
-        <size>10</size>\r
+    </type>\r
+    <type name="Tester+&lt;NewArrayInitTest_1&gt;c__async32">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>240</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewTest_2&gt;c__async2E">\r
+    <type name="Tester+&lt;NewArrayInitTest_2&gt;c__async33">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>348</size>\r
+        <size>355</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__60()" attrs="145">\r
-        <size>10</size>\r
+    </type>\r
+    <type name="Tester+&lt;NewArrayInitTest_3&gt;c__async34">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>246</size>\r
       </method>\r
-      <method name="System.String &lt;&gt;m__61()" attrs="145">\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewInitTest_1&gt;c__async2F">\r
+    <type name="Tester+&lt;NewArrayInitTest_4&gt;c__async35">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>1026</size>\r
+        <size>427</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__62()" attrs="145">\r
-        <size>10</size>\r
+    </type>\r
+    <type name="Tester+&lt;NewArrayInitTest_5&gt;c__async36">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>264</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__63()" attrs="145">\r
-        <size>10</size>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__64()" attrs="145">\r
-        <size>10</size>\r
+    </type>\r
+    <type name="Tester+&lt;NewArrayInitTest_6&gt;c__async37">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>266</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__65()" attrs="145">\r
-        <size>10</size>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__66()" attrs="145">\r
-        <size>10</size>\r
+    </type>\r
+    <type name="Tester+&lt;PropertyTest_1&gt;c__async38">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>222</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__67()" attrs="145">\r
-        <size>10</size>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewInitTest_2&gt;c__async30">\r
+    <type name="Tester+&lt;PropertyTest_2&gt;c__async39">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>739</size>\r
+        <size>295</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.String &lt;&gt;m__68()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;PropertyTest_3&gt;c__async3A">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>645</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.String &lt;&gt;m__69()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;StringConcatTest_1&gt;c__async3B">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>455</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__6A()" attrs="145">\r
-        <size>10</size>\r
+    </type>\r
+    <type name="Tester+&lt;UnaryTest_1&gt;c__async3C">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>233</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__6B()" attrs="145">\r
-        <size>10</size>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_1&gt;c__async31">\r
+    <type name="Tester+&lt;UnaryTest_2&gt;c__async3D">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>240</size>\r
+        <size>339</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__6C()" attrs="145">\r
-        <size>9</size>\r
+    </type>\r
+    <type name="Tester+&lt;UnaryTest_3&gt;c__async3E">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>372</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_2&gt;c__async32">\r
+    <type name="Tester+&lt;VariableInitializer_1&gt;c__async3F">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>355</size>\r
+        <size>348</size>\r
       </method>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__6D()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;ArrayAccessTest_5&gt;c__async4+&lt;ArrayAccessTest_5&gt;c__AnonStorey40">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;BinaryTest_2&gt;c__asyncD+&lt;BinaryTest_2&gt;c__AnonStorey41">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;CallTest_5&gt;c__async16+&lt;CallTest_5&gt;c__AnonStorey42">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;EventInvoke_1&gt;c__async20+&lt;EventInvoke_1&gt;c__AnonStorey43">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_3&gt;c__async24+&lt;IndexerTest_3&gt;c__AnonStorey44">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_4&gt;c__async25+&lt;IndexerTest_4&gt;c__AnonStorey45">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_5&gt;c__async26+&lt;IndexerTest_5&gt;c__AnonStorey46">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_7&gt;c__async28+&lt;IndexerTest_7&gt;c__AnonStorey47">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;UnaryTest_2&gt;c__async3D+&lt;UnaryTest_2&gt;c__AnonStorey48">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester">\r
+      <method name="Tester &lt;CastTest_2&gt;m__4()" attrs="129">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;ArrayAccessTest_1&gt;c__async0">\r
+      <method name="Boolean &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__6E()" attrs="145">\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_3&gt;c__async33">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>246</size>\r
+    <type name="Tester+&lt;ArrayAccessTest_2&gt;c__async1">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
-      <method name="Byte &lt;&gt;m__6F()" attrs="145">\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
         <size>9</size>\r
       </method>\r
+      <method name="Double &lt;&gt;m__3()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_4&gt;c__async34">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>427</size>\r
+    <type name="Tester+&lt;ArrayAccessTest_3&gt;c__async2">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Decimal &lt;&gt;m__2()" attrs="145">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__3()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Decimal &lt;&gt;m__4()" attrs="145">\r
+        <size>19</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;ArrayAccessTest_4&gt;c__async3">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="System.String &lt;&gt;m__1()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-      <method name="UInt16 &lt;&gt;m__70()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;ArrayAccessTest_5&gt;c__async4">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
-      <method name="UInt16 &lt;&gt;m__71()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;ArrayAccessTest_6&gt;c__async5">\r
+      <method name="Int64 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;ArrayAccessTest_7&gt;c__async6">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_5&gt;c__async35">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>264</size>\r
+    <type name="Tester+&lt;ArrayAccessTest_8&gt;c__async7">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
+      <method name="Byte &lt;&gt;m__1()" attrs="145">\r
+        <size>10</size>\r
       </method>\r
-      <method name="S &lt;&gt;m__72()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;ArrayAccessTest_9&gt;c__async8">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__3()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__4()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__5()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="S &lt;&gt;m__6()" attrs="145">\r
         <size>25</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;NewArrayInitTest_6&gt;c__async36">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>266</size>\r
+    <type name="Tester+&lt;AssignTest_1&gt;c__async9">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
+    </type>\r
+    <type name="Tester+&lt;AssignTest_2&gt;c__asyncA">\r
+      <method name="System.Nullable`1[System.SByte] &lt;&gt;m__0()" attrs="145">\r
+        <size>17</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__73()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;AssignTest_3&gt;c__asyncB">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;PropertyTest_1&gt;c__async37">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>222</size>\r
+    <type name="Tester+&lt;BinaryTest_1&gt;c__asyncC">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>17</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;BinaryTest_3&gt;c__asyncE">\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__0()" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__1()" attrs="145">\r
+        <size>17</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__74()" attrs="145">\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__2()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__3()" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__4()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Boolean] &lt;&gt;m__5()" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;BinaryTest_4&gt;c__asyncF">\r
+      <method name="System.Nullable`1[System.Int16] &lt;&gt;m__0()" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Byte] &lt;&gt;m__1()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Decimal] &lt;&gt;m__2()" attrs="145">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="System.Nullable`1[System.Decimal] &lt;&gt;m__3()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;CallTest_1&gt;c__async12">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;PropertyTest_2&gt;c__async38">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>295</size>\r
+    <type name="Tester+&lt;CallTest_2&gt;c__async13">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>17</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
+    </type>\r
+    <type name="Tester+&lt;CallTest_3&gt;c__async14">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__75()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;CallTest_4&gt;c__async15">\r
+      <method name="E &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;PropertyTest_3&gt;c__async39">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>645</size>\r
+    <type name="Tester+&lt;CastTest_1&gt;c__async17">\r
+      <method name="Decimal &lt;&gt;m__0()" attrs="145">\r
+        <size>15</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+    </type>\r
+    <type name="Tester+&lt;CoalescingTest_1&gt;c__async19">\r
+      <method name="System.String &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="System.String &lt;&gt;m__1()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__76()" attrs="145">\r
-        <size>10</size>\r
+    </type>\r
+    <type name="Tester+&lt;CoalescingTest_2&gt;c__async1A">\r
+      <method name="System.Nullable`1[System.Int16] &lt;&gt;m__0()" attrs="145">\r
+        <size>17</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__77()" attrs="145">\r
+      <method name="Byte &lt;&gt;m__1()" attrs="145">\r
         <size>9</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__78()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;ConditionalTest_1&gt;c__async1B">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;StringConcatTest_1&gt;c__async3A">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>455</size>\r
+    <type name="Tester+&lt;ConditionalTest_2&gt;c__async1C">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;ConditionalTest_3&gt;c__async1D">\r
+      <method name="Boolean &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;ConditionalTest_4&gt;c__async1E">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;DelegateInvoke_4&gt;c__async1F">\r
+      <method name="Int32 &lt;&gt;m__0(Int32)" attrs="145">\r
+        <size>11</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;FieldTest_1&gt;c__async21">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_1&gt;c__async22">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_2&gt;c__async23">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_3&gt;c__async24">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_4&gt;c__async25">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_5&gt;c__async26">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_6&gt;c__async27">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;IsTest_1&gt;c__async29">\r
+      <method name="Tester &lt;&gt;m__0()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.String &lt;&gt;m__79()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;IsTest_2&gt;c__async2A">\r
+      <method name="System.Nullable`1[System.UInt32] &lt;&gt;m__0()" attrs="145">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;LogicalUserOperator_1&gt;c__async2B">\r
+      <method name="Base &lt;&gt;m__0()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.String &lt;&gt;m__7A()" attrs="145">\r
+      <method name="Base &lt;&gt;m__1()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.String &lt;&gt;m__7B()" attrs="145">\r
-        <size>9</size>\r
+    </type>\r
+    <type name="Tester+&lt;LogicalUserOperator_2&gt;c__async2C">\r
+      <method name="Base &lt;&gt;m__0()" attrs="145">\r
+        <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;UnaryTest_1&gt;c__async3B">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>233</size>\r
+    <type name="Tester+&lt;LogicalUserOperator_3&gt;c__async2D">\r
+      <method name="Base &lt;&gt;m__0()" attrs="145">\r
+        <size>13</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+      <method name="Base &lt;&gt;m__1()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__7C()" attrs="145">\r
-        <size>9</size>\r
+    </type>\r
+    <type name="Tester+&lt;NewTest_1&gt;c__async2E">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;UnaryTest_2&gt;c__async3C">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>354</size>\r
+    <type name="Tester+&lt;NewTest_2&gt;c__async2F">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+      <method name="System.String &lt;&gt;m__1()" attrs="145">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;UnaryTest_3&gt;c__async3D">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>369</size>\r
+    <type name="Tester+&lt;NewInitTest_1&gt;c__async30">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>10</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__7E()" attrs="145">\r
-        <size>9</size>\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__3()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__4()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__5()" attrs="145">\r
+        <size>10</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;VariableInitializer_1&gt;c__async3E">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>348</size>\r
+    <type name="Tester+&lt;NewInitTest_2&gt;c__async31">\r
+      <method name="System.String &lt;&gt;m__0()" attrs="145">\r
+        <size>13</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+      <method name="System.String &lt;&gt;m__1()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__7F()" attrs="145">\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__3()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;NewArrayInitTest_1&gt;c__async32">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;NewArrayInitTest_2&gt;c__async33">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__80()" attrs="145">\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester">\r
-      <method name="Tester &lt;CastTest_2&gt;m__3A()" attrs="129">\r
+    <type name="Tester+&lt;NewArrayInitTest_3&gt;c__async34">\r
+      <method name="Byte &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;ArrayAccessTest_5&gt;c__async4+&lt;ArrayAccessTest_5&gt;c__AnonStorey3F">\r
-      <method name="Int32 &lt;&gt;m__12()" attrs="131">\r
+    <type name="Tester+&lt;NewArrayInitTest_4&gt;c__async35">\r
+      <method name="UInt16 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="UInt16 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;NewArrayInitTest_5&gt;c__async36">\r
+      <method name="S &lt;&gt;m__0()" attrs="145">\r
         <size>25</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+    </type>\r
+    <type name="Tester+&lt;NewArrayInitTest_6&gt;c__async37">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;BinaryTest_2&gt;c__asyncD+&lt;BinaryTest_2&gt;c__AnonStorey40">\r
-      <method name="Boolean &lt;&gt;m__25()" attrs="131">\r
-        <size>24</size>\r
+    <type name="Tester+&lt;PropertyTest_1&gt;c__async38">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
-      <method name="Boolean &lt;&gt;m__26()" attrs="131">\r
-        <size>24</size>\r
+    </type>\r
+    <type name="Tester+&lt;PropertyTest_2&gt;c__async39">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
-      <method name="Boolean &lt;&gt;m__27()" attrs="131">\r
-        <size>24</size>\r
+    </type>\r
+    <type name="Tester+&lt;PropertyTest_3&gt;c__async3A">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>10</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;CallTest_5&gt;c__async15+&lt;CallTest_5&gt;c__AnonStorey41">\r
-      <method name="Int32 &lt;&gt;m__38()" attrs="131">\r
-        <size>25</size>\r
+    <type name="Tester+&lt;StringConcatTest_1&gt;c__async3B">\r
+      <method name="System.String &lt;&gt;m__0()" attrs="145">\r
+        <size>13</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+      <method name="System.String &lt;&gt;m__1()" attrs="145">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="System.String &lt;&gt;m__2()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;EventInvoke_1&gt;c__async1F+&lt;EventInvoke_1&gt;c__AnonStorey42">\r
-      <method name="System.Action &lt;&gt;m__47()" attrs="131">\r
-        <size>23</size>\r
+    <type name="Tester+&lt;UnaryTest_1&gt;c__async3C">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__48()" attrs="131">\r
+    </type>\r
+    <type name="Tester+&lt;UnaryTest_3&gt;c__async3E">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
         <size>9</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+    </type>\r
+    <type name="Tester+&lt;VariableInitializer_1&gt;c__async3F">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
+        <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_3&gt;c__async23+&lt;IndexerTest_3&gt;c__AnonStorey43">\r
-      <method name="Int32 &lt;&gt;m__4E()" attrs="131">\r
+    <type name="Tester+&lt;ArrayAccessTest_5&gt;c__async4+&lt;ArrayAccessTest_5&gt;c__AnonStorey40">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
         <size>25</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+    </type>\r
+    <type name="Tester+&lt;BinaryTest_2&gt;c__asyncD+&lt;BinaryTest_2&gt;c__AnonStorey41">\r
+      <method name="Boolean &lt;&gt;m__0()" attrs="131">\r
+        <size>24</size>\r
+      </method>\r
+      <method name="Boolean &lt;&gt;m__1()" attrs="131">\r
+        <size>24</size>\r
+      </method>\r
+      <method name="Boolean &lt;&gt;m__2()" attrs="131">\r
+        <size>24</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_4&gt;c__async24+&lt;IndexerTest_4&gt;c__AnonStorey44">\r
-      <method name="Int32 &lt;&gt;m__50()" attrs="131">\r
+    <type name="Tester+&lt;CallTest_5&gt;c__async16+&lt;CallTest_5&gt;c__AnonStorey42">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
         <size>25</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+    </type>\r
+    <type name="Tester+&lt;EventInvoke_1&gt;c__async20+&lt;EventInvoke_1&gt;c__AnonStorey43">\r
+      <method name="System.Action &lt;&gt;m__0()" attrs="131">\r
+        <size>23</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;m__1()" attrs="131">\r
+        <size>9</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_5&gt;c__async25+&lt;IndexerTest_5&gt;c__AnonStorey45">\r
-      <method name="Int32 &lt;&gt;m__52()" attrs="131">\r
+    <type name="Tester+&lt;IndexerTest_3&gt;c__async24+&lt;IndexerTest_3&gt;c__AnonStorey44">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
         <size>25</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_4&gt;c__async25+&lt;IndexerTest_4&gt;c__AnonStorey45">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;IndexerTest_7&gt;c__async27+&lt;IndexerTest_7&gt;c__AnonStorey46">\r
-      <method name="Int32 &lt;&gt;m__57()" attrs="131">\r
+    <type name="Tester+&lt;IndexerTest_5&gt;c__async26+&lt;IndexerTest_5&gt;c__AnonStorey46">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
         <size>25</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
+    </type>\r
+    <type name="Tester+&lt;IndexerTest_7&gt;c__async28+&lt;IndexerTest_7&gt;c__AnonStorey47">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>25</size>\r
       </method>\r
     </type>\r
-    <type name="Tester+&lt;UnaryTest_2&gt;c__async3C+&lt;UnaryTest_2&gt;c__AnonStorey47">\r
-      <method name="Nullable`1 &lt;&gt;m__7D()" attrs="131">\r
+    <type name="Tester+&lt;UnaryTest_2&gt;c__async3D+&lt;UnaryTest_2&gt;c__AnonStorey48">\r
+      <method name="System.Nullable`1[System.Int16] &lt;&gt;m__0()" attrs="131">\r
         <size>14</size>\r
       </method>\r
-      <method name="Void .ctor()" attrs="6278">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
   </test>\r
   <test name="test-async-14.cs">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>222</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__1()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;Main&gt;c__async1">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>232</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;TestResult&gt;c__async0">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
+    <type name="C+&lt;TestResult&gt;c__async0">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Main&gt;c__async1">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-15.cs">\r
     <type name="S">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.String &lt;&gt;m__4()" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;Using_1&gt;c__async1">\r
       <method name="Void MoveNext()" attrs="486">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Base &lt;&gt;m__5()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;Foreach_1&gt;c__async2">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>331</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Tester &lt;&gt;m__6()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;SwitchTest_1&gt;c__async0">\r
+      <method name="System.String &lt;&gt;m__0()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-      <method name="Base &lt;&gt;m__7()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;Using_1&gt;c__async1">\r
+      <method name="Base &lt;&gt;m__0()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-      <method name="Base &lt;&gt;m__8()" attrs="145">\r
+      <method name="Tester &lt;&gt;m__1()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-    </type>\r
-    <type name="Tester+&lt;Foreach_1&gt;c__async2">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>331</size>\r
+      <method name="Base &lt;&gt;m__2()" attrs="145">\r
+        <size>13</size>\r
       </method>\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+      <method name="Base &lt;&gt;m__3()" attrs="145">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.Collections.Generic.List`1[System.Int32] &lt;&gt;m__9()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;Foreach_1&gt;c__async2">\r
+      <method name="System.Collections.Generic.List`1[System.Int32] &lt;&gt;m__0()" attrs="145">\r
         <size>36</size>\r
       </method>\r
     </type>\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>207</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__4()" attrs="145">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;TestException_2&gt;c__async1">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>199</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__5()" attrs="145">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;TestException_3&gt;c__async2">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>206</size>\r
       </method>\r
-      <method name="System.Threading.Tasks.Task &lt;&gt;m__6()" attrs="145">\r
-        <size>33</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;TestException_4&gt;c__async3">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>239</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__8()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;TestException_5&gt;c__async4">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>289</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__9()" attrs="145">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;TestException_6&gt;c__async5">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>243</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__A()" attrs="145">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;TestException_1&gt;c__async0">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__B()" attrs="145">\r
-        <size>7</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;TestException_3&gt;c__async2+&lt;TestException_3&gt;c__async7">\r
       <method name="Void MoveNext()" attrs="486">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__7()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;TestException_1&gt;c__async0">\r
+      <method name="Void &lt;&gt;m__0()" attrs="145">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;TestException_2&gt;c__async1">\r
+      <method name="Void &lt;&gt;m__0()" attrs="145">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;TestException_3&gt;c__async2">\r
+      <method name="System.Threading.Tasks.Task &lt;&gt;m__0()" attrs="145">\r
+        <size>33</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;TestException_4&gt;c__async3">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;TestException_5&gt;c__async4">\r
+      <method name="Void &lt;&gt;m__0()" attrs="145">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;TestException_6&gt;c__async5">\r
+      <method name="Void &lt;&gt;m__0()" attrs="145">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;TestException_7&gt;c__async6">\r
+      <method name="Void &lt;&gt;m__0()" attrs="145">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;TestException_3&gt;c__async2+&lt;TestException_3&gt;c__async7">\r
+      <method name="Void &lt;&gt;m__0()" attrs="145">\r
         <size>7</size>\r
       </method>\r
     </type>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;Lambda_2&gt;c__async1+&lt;Lambda_2&gt;c__AnonStorey4">\r
-      <method name="Int32 &lt;&gt;m__1()" attrs="131">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
     <type name="Tester+&lt;Lambda_3&gt;c__async2`1+&lt;Lambda_3&gt;c__AnonStorey6`1[T]">\r
-      <method name="Int32 &lt;&gt;m__2()" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Tester+&lt;Lambda_2&gt;c__async1+&lt;Lambda_2&gt;c__AnonStorey4">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;Lambda_3&gt;c__async2`1+&lt;Lambda_3&gt;c__AnonStorey6`1[T]">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-19.cs">\r
     <type name="C">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__4()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;AssignCompound_1&gt;c__async1">\r
       <method name="Void MoveNext()" attrs="486">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__5()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;Convert_1&gt;c__async2">\r
       <method name="Void MoveNext()" attrs="486">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.Object &lt;&gt;m__6()" attrs="145">\r
-        <size>13</size>\r
-      </method>\r
     </type>\r
     <type name="Tester+&lt;Invocation_1&gt;c__async3">\r
       <method name="Void MoveNext()" attrs="486">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.Object &lt;&gt;m__7()" attrs="145">\r
+    </type>\r
+    <type name="Tester+&lt;Add_1&gt;c__async0">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;AssignCompound_1&gt;c__async1">\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;Convert_1&gt;c__async2">\r
+      <method name="System.Object &lt;&gt;m__0()" attrs="145">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tester+&lt;Invocation_1&gt;c__async3">\r
+      <method name="System.Object &lt;&gt;m__0()" attrs="145">\r
         <size>13</size>\r
       </method>\r
     </type>\r
         <size>0</size>\r
       </method>\r
     </type>\r
-    <type name="A+&lt;async&gt;c__async0">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>38</size>\r
-      </method>\r
-    </type>\r
     <type name="A+&lt;async&gt;c__async1">\r
       <method name="Void MoveNext()" attrs="486">\r
-        <size>37</size>\r
+        <size>38</size>\r
       </method>\r
     </type>\r
     <type name="A">\r
         <size>35</size>\r
       </method>\r
     </type>\r
-    <type name="A+&lt;CastTest&gt;c__async2">\r
-      <method name="Void MoveNext()" attrs="486">\r
-        <size>285</size>\r
-      </method>\r
-    </type>\r
-    <type name="A+&lt;async&gt;c__async0">\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
-      </method>\r
-    </type>\r
     <type name="A+&lt;async&gt;c__async1">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
-    <type name="A+&lt;CastTest&gt;c__async2">\r
-      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
-        <size>13</size>\r
-      </method>\r
-    </type>\r
     <type name="C">\r
       <method name="Void Test(Boolean)" attrs="145">\r
         <size>20</size>\r
         <size>14</size>\r
       </method>\r
     </type>\r
+    <type name="A">\r
+      <method name="Void Iasync.async()" attrs="481">\r
+        <size>27</size>\r
+      </method>\r
+    </type>\r
+    <type name="A+&lt;async&gt;c__async2">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="A+&lt;CastTest&gt;c__async3">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>285</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="A+async&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>31</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-23.cs">\r
     <type name="MyContext">\r
       </method>\r
     </type>\r
     <type name="Program+&lt;CompilationTestOnly&gt;c__AnonStorey0">\r
-      <method name="System.Threading.Tasks.Task`1[System.Int32] &lt;&gt;m__1()" attrs="131">\r
-        <size>15</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] &lt;&gt;m__0()" attrs="131">\r
+        <size>15</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-async-26.cs">\r
   </test>\r
   <test name="test-async-30.cs">\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test(System.String)" attrs="129">\r
-        <size>30</size>\r
-      </method>\r
-      <method name="IEnumerable`1 Test2()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Int32 Main()" attrs="150">\r
         <size>214</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>138</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>137</size>\r
       </method>\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test2&gt;c__Iterator1+&lt;Test2&gt;c__AnonStorey5">\r
-      <method name="System.Threading.Tasks.Task`1[System.String] &lt;&gt;m__1()" attrs="131">\r
-        <size>41</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
         <size>13</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] Test(System.String)" attrs="129">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.String] Test2()" attrs="129">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test2&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.String] System.Collections.Generic.IEnumerable&lt;string&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test2&gt;c__Iterator1+&lt;Test2&gt;c__AnonStorey5">\r
+      <method name="System.Threading.Tasks.Task`1[System.String] &lt;&gt;m__0()" attrs="131">\r
+        <size>41</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-31.cs">\r
     <type name="C">\r
       </method>\r
     </type>\r
     <type name="C+&lt;M2&gt;c__async1+&lt;M2&gt;c__AnonStorey4">\r
-      <method name="Void &lt;&gt;m__2()" attrs="131">\r
-        <size>20</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>20</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-async-32.cs">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="Void &lt;&gt;m__1()" attrs="145">\r
+      <method name="Void &lt;&gt;m__0()" attrs="145">\r
         <size>2</size>\r
       </method>\r
     </type>\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
-      <method name="System.Threading.Tasks.Task`1[System.Int32] &lt;&gt;m__1()" attrs="145">\r
-        <size>33</size>\r
-      </method>\r
     </type>\r
     <type name="AmbiguousGeneric+&lt;NestedVoidTestSuccess&gt;c__async0+&lt;NestedVoidTestSuccess&gt;c__async4">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>13</size>\r
       </method>\r
     </type>\r
+    <type name="AmbiguousGeneric+&lt;NestedVoidTestSuccess&gt;c__async0">\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] &lt;&gt;m__0()" attrs="145">\r
+        <size>33</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-42.cs">\r
+    <type name="A">\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] OpenAsync()" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="A get_Connection()" attrs="2182">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>26</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] Foo()" attrs="129">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="T Test[T](System.Func`1[T])" attrs="129">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task &lt;Foo&gt;m__0()" attrs="129">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Foo&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>189</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Foo&gt;c__async3">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>169</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-async-43.cs">\r
     <type name="A">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-async-47.cs">\r
+    <type name="C">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>12</size>\r
+      </method>\r
+      <method name="Void Test()" attrs="129">\r
+        <size>32</size>\r
+      </method>\r
+      <method name="Void &lt;Test&gt;m__0(System.Object, System.EventArgs)" attrs="129">\r
+        <size>35</size>\r
+      </method>\r
+      <method name="Void &lt;Test&gt;m__1()" attrs="129">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="View">\r
+      <method name="Void add_Click(System.EventHandler)" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void remove_Click(System.EventHandler)" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void Run()" attrs="134">\r
+        <size>15</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Builder">\r
+      <method name="Void SetButton(System.Action)" attrs="134">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>61</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-48.cs">\r
+    <type name="App">\r
+      <method name="System.Threading.Tasks.Task Test()" attrs="134">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task &lt;Test&gt;m__0()" attrs="129">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="App+&lt;Test&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>173</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="App+&lt;Test&gt;c__async1">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>51</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-49.cs">\r
+    <type name="TodoItem">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="MobileServiceTable2`1[T]">\r
+      <method name="System.Threading.Tasks.Task`1[System.Collections.Generic.List`1[T]] ToListAsync()" attrs="134">\r
+        <size>36</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tests">\r
+      <method name="Int32 foo(System.Action)" attrs="129">\r
+        <size>16</size>\r
+      </method>\r
+      <method name="Void OnTap(TodoItem)" attrs="129">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task RefreshAsync()" attrs="129">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Void Main(System.String[])" attrs="150">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="Int32 &lt;RefreshAsync&gt;m__0(TodoItem)" attrs="129">\r
+        <size>46</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tests+&lt;RefreshAsync&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>213</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="Tests+&lt;RefreshAsync&gt;c__AnonStorey1">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;m__0()" attrs="131">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-50.cs">\r
+    <type name="X">\r
+      <method name="Void Main()" attrs="145">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task`1[System.Int32] AnimateAsync(System.Action)" attrs="129">\r
+        <size>21</size>\r
+      </method>\r
+      <method name="Void SecondLevel(System.Action)" attrs="129">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task Run()" attrs="129">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Void &lt;Run&gt;m__0()" attrs="129">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="Void &lt;Run&gt;m__1()" attrs="129">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Run&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>185</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-51.cs">\r
+    <type name="Program">\r
+      <method name="Void Main(System.String[])" attrs="150">\r
+        <size>19</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task LoadPlayers()" attrs="129">\r
+        <size>41</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>18</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+Model">\r
+      <method name="Program+Player get_SelectedPlayer()" attrs="2182">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void set_SelectedPlayer(Program+Player)" attrs="2182">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+Player">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program+&lt;LoadPlayers&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>87</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Void &lt;&gt;m__0(Program+Player)" attrs="145">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="Program">\r
+      <method name="System.Action`1[Program+Player] &lt;LoadPlayers&gt;m__0(System.Action`1[Program+Player])" attrs="129">\r
+        <size>20</size>\r
+      </method>\r
+      <method name="Void &lt;LoadPlayers&gt;m__1(Program+Player)" attrs="129">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-52.cs">\r
+    <type name="ActualValueDelegate`1[T]">\r
+      <method name="T Invoke()" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="IAsyncResult BeginInvoke(System.AsyncCallback, System.Object)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="T EndInvoke(IAsyncResult)" attrs="454">\r
+        <size>0</size>\r
+      </method>\r
+      <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+        <size>0</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>37</size>\r
+      </method>\r
+      <method name="Boolean Matches[T](ActualValueDelegate`1[T])" attrs="145">\r
+        <size>30</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task Throw()" attrs="145">\r
+        <size>33</size>\r
+      </method>\r
+      <method name="System.Threading.Tasks.Task &lt;Main&gt;m__0()" attrs="145">\r
+        <size>33</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Throw&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>157</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Main&gt;c__async3">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>160</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-async-53.cs">\r
+    <type name="Y">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X">\r
+      <method name="Void add_E(System.Action`2[System.Int32,System.String])" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void remove_E(System.Action`2[System.Int32,System.String])" attrs="2182">\r
+        <size>42</size>\r
+      </method>\r
+      <method name="Void Foo()" attrs="129">\r
+        <size>54</size>\r
+      </method>\r
+      <method name="Void Main()" attrs="150">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Foo&gt;c__AnonStorey1">\r
+      <method name="Void &lt;&gt;m__0(Int32, System.String)" attrs="131">\r
+        <size>35</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Foo&gt;c__AnonStorey1+&lt;Foo&gt;c__async0">\r
+      <method name="Void MoveNext()" attrs="486">\r
+        <size>44</size>\r
+      </method>\r
+      <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+        <size>13</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-cls-00.cs">\r
     <type name="CLSCLass_6">\r
       <method name="Void add_Disposed(Delegate)" attrs="2182">\r
       <method name="Void Switch_1(Int32)" attrs="129">\r
         <size>61</size>\r
       </method>\r
-      <method name="Void Switch_2(Nullable`1)" attrs="129">\r
-        <size>57</size>\r
-      </method>\r
       <method name="Void Switch_3(System.String)" attrs="129">\r
         <size>211</size>\r
       </method>\r
       <method name="Void ForEach_4(System.Int32[,])" attrs="129">\r
         <size>78</size>\r
       </method>\r
+      <method name="Void Switch_2(System.Nullable`1[System.Int32])" attrs="129">\r
+        <size>57</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-debug-12.cs">\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
-      <method name="IEnumerable`1 Iter_1()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="IEnumerable Iter_2()" attrs="129">\r
         <size>23</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>72</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>26</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Iter_1()" attrs="129">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Iter_1&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Iter_2&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-debug-14.cs">\r
     <type name="C">\r
       </method>\r
     </type>\r
     <type name="C+&lt;Test_Capturing_1&gt;c__AnonStorey0">\r
-      <method name="Int32 &lt;&gt;m__3()" attrs="131">\r
-        <size>14</size>\r
-      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="131">\r
+        <size>14</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-debug-15.cs">\r
       <method name="Void MoveNext()" attrs="486">\r
         <size>1229</size>\r
       </method>\r
-      <method name="Int32 &lt;&gt;m__2()" attrs="145">\r
-        <size>9</size>\r
-      </method>\r
     </type>\r
     <type name="C+&lt;Test_1&gt;c__async0">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
       <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
         <size>13</size>\r
       </method>\r
+      <method name="Int32 &lt;&gt;m__0()" attrs="145">\r
+        <size>9</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-debug-20.cs">\r
   </test>\r
   <test name="test-debug-21.cs">\r
     <type name="C">\r
-      <method name="IEnumerable`1 Test()" attrs="129">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>2</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
         <size>13</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] Test()" attrs="129">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;Test&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-debug-22.cs">\r
     <type name="A">\r
       </method>\r
     </type>\r
     <type name="C">\r
-      <method name="IEnumerable`1 GetIter()" attrs="134">\r
-        <size>30</size>\r
-      </method>\r
       <method name="Int32 Foo()" attrs="198">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>82</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="C">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Int32] GetIter()" attrs="134">\r
+        <size>30</size>\r
+      </method>\r
+    </type>\r
+    <type name="C+&lt;GetIter&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Int32] System.Collections.Generic.IEnumerable&lt;int&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-debug-23.cs">\r
     <type name="Program">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-debug-27.cs">\r
+    <type name="S">\r
+      <method name="Int32 op_Implicit(S)" attrs="2198">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void .ctor(Int32)" attrs="6278">\r
+        <size>2</size>\r
+      </method>\r
+    </type>\r
+    <type name="C">\r
+      <method name="Int32 A()" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 B(C)" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="C Test()" attrs="150">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.String Foo()" attrs="134">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void Test_1()" attrs="129">\r
+        <size>46</size>\r
+      </method>\r
+      <method name="Void Test_2()" attrs="129">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void Test_3()" attrs="129">\r
+        <size>32</size>\r
+      </method>\r
+      <method name="Void Test_4()" attrs="129">\r
+        <size>13</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-debug-28.cs">\r
+    <type name="StatementsAsBlocks">\r
+      <method name="Void ForEach(System.String[])" attrs="145">\r
+        <size>64</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-externalias-01.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>149</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-02.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>159</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>246</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X+&lt;GetIt&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;GetMulti&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-iter-04.cs">\r
     <type name="X">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>130</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-05.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>191</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-06.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>198</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>159</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="X+&lt;Get&gt;c__Iterator2">\r
+    <type name="S+&lt;Get&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
+    </type>\r
+    <type name="S+&lt;GetS&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
+    <type name="X+&lt;Get&gt;c__Iterator0">\r
       <method name="System.Object System.Collections.Generic.IEnumerator&lt;object&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>154</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
     </type>\r
-    <type name="X+&lt;GetS&gt;c__Iterator3">\r
+    <type name="X+&lt;GetS&gt;c__Iterator1">\r
       <method name="System.Object System.Collections.Generic.IEnumerator&lt;object&gt;.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
       <method name="System.Object System.Collections.IEnumerator.get_Current()" attrs="2529">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
-        <size>14</size>\r
-      </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>159</size>\r
       </method>\r
       <method name="Void Reset()" attrs="486">\r
         <size>6</size>\r
       </method>\r
+      <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
+        <size>14</size>\r
+      </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>264</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-08.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>377</size>\r
       </method>\r
       <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
         <size>23</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-09.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>168</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-11.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>190</size>\r
       </method>\r
       <method name="Void &lt;&gt;__Finally0()" attrs="129">\r
         <size>20</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-13.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>27</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-14.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>98</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-15.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>38</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-17.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>168</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-18.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>214</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-iter-19.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>40</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>242</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X+&lt;GetIt&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>40</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-iter-22.cs">\r
     <type name="Test">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>117</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="X+&lt;GetIt2&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-iter-25.cs">\r
     <type name="D">\r
       <method name="Void RunOnThread(System.Action)" attrs="150">\r
         <size>8</size>\r
       </method>\r
-      <method name="IEnumerable`1 TagsError()" attrs="150">\r
-        <size>23</size>\r
-      </method>\r
       <method name="Void Main()" attrs="150">\r
         <size>68</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>60</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="UploadAction">\r
+      <method name="System.Collections.Generic.IEnumerable`1[System.Object] TagsError()" attrs="150">\r
+        <size>23</size>\r
+      </method>\r
+    </type>\r
+    <type name="UploadAction+&lt;TagsError&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-iter-26.cs">\r
     <type name="C">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>52</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>101</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>52</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-named-01.cs">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-named-08.cs">\r
+    <type name="C">\r
+      <method name="Int32 Foo(System.String, Int32)" attrs="145">\r
+        <size>18</size>\r
+      </method>\r
+      <method name="Int32 Foo(System.String, Int32, Boolean, Boolean)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 Foo(Double, Boolean, Boolean, Boolean)" attrs="145">\r
+        <size>10</size>\r
+      </method>\r
+      <method name="Int32 Main()" attrs="150">\r
+        <size>34</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-partial-01.cs">\r
     <type name="Foo.Hello">\r
       <method name="Void .ctor()" attrs="6278">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>76</size>\r
       </method>\r
       <method name="Void .ctor()" attrs="6278">\r
         <size>7</size>\r
       </method>\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
     </type>\r
   </test>\r
   <test name="test-partial-13.cs">\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>32</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>32</size>\r
       </method>\r
       <method name="IEnumerator System.Collections.IEnumerable.GetEnumerator()" attrs="481">\r
         <size>14</size>\r
       </method>\r
-      <method name="IEnumerator`1 System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
-        <size>26</size>\r
-      </method>\r
       <method name="Boolean MoveNext()" attrs="486">\r
         <size>32</size>\r
       </method>\r
         <size>7</size>\r
       </method>\r
     </type>\r
+    <type name="Foo.X+&lt;Attempts2&gt;c__Iterator0">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Foo.X+&lt;&gt;c__Iterator1">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
+    <type name="Foo.X+&lt;&gt;c__Iterator2">\r
+      <method name="System.Collections.Generic.IEnumerator`1[System.Object] System.Collections.Generic.IEnumerable&lt;object&gt;.GetEnumerator()" attrs="481">\r
+        <size>26</size>\r
+      </method>\r
+    </type>\r
   </test>\r
   <test name="test-partial-16.cs">\r
     <type name="A.C">\r
       </method>\r
     </type>\r
   </test>\r
+  <test name="test-partial-31.cs">\r
+    <type name="TestPartialOverride.BaseNamespace.Base">\r
+      <method name="Void OverrideMe()" attrs="452">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6276">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestPartialOverride.Outer.Nested.Namespace.Inherits">\r
+      <method name="Void OverrideMe()" attrs="196">\r
+        <size>17</size>\r
+      </method>\r
+      <method name="Void DoesSomethignElse()" attrs="134">\r
+        <size>8</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="TestPartialOverride.Outer.C">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>12</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
+  <test name="test-partial-32.cs">\r
+    <type name="A.C">\r
+      <method name="Void Main()" attrs="150">\r
+        <size>2</size>\r
+      </method>\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="A.C+N">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X.C1">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+    <type name="X.C1+N1">\r
+      <method name="Void .ctor()" attrs="6278">\r
+        <size>7</size>\r
+      </method>\r
+    </type>\r
+  </test>\r
   <test name="test-var-01.cs">\r
     <type name="Test">\r
       <method name="Int32 Main()" attrs="150">\r
index 9fe965f5569a962ebdb8f631b43c4f36e5ce9bcd..4e7ca90fa6ecc9d56c39c9fa43c35ef0006d4a38 100644 (file)
@@ -98,7 +98,11 @@ namespace Mono.Cecil.Cil {
 
                public static VariableDefinition GetVariable (MethodBody body, int index)
                {
-                       return body.Variables [index];
+                       // bug 15727 - newer cecil does the same (in MethodDefinition.GetVariable)
+                       var variables = body.Variables;
+                       if (index < 0 || index >= variables.Count)
+                               return null;
+                       return variables [index];
                }
 
                void ReadCilBody (MethodBody body, BinaryReader br)
diff --git a/mcs/tools/cil-strip/cil-strip.csproj b/mcs/tools/cil-strip/cil-strip.csproj
new file mode 100644 (file)
index 0000000..8f4e068
--- /dev/null
@@ -0,0 +1,991 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.0</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{7B3D8F99-304A-4C2E-BAC5-7D1A29747B01}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>cilstrip</RootNamespace>
+    <AssemblyName>cil-strip</AssemblyName>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+    <Commandlineparameters>/Users/sebastienpouliot/Dropbox/iCatalogXniOS.exe /Users/sebastienpouliot/Dropbox/iCatalogXniOS-out.exe</Commandlineparameters>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>full</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Externalconsole>true</Externalconsole>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+  <ItemGroup>
+    <Folder Include="cil-strip\" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="AssemblyStripper.cs">
+      <Link>cil-strip\AssemblyStripper.cs</Link>
+    </Compile>
+    <Compile Include="cilstrip.cs">
+      <Link>cil-strip\cilstrip.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AggressiveReflectionReader.cs">
+      <Link>cil-strip\Mono.Cecil\AggressiveReflectionReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ArrayDimension.cs">
+      <Link>cil-strip\Mono.Cecil\ArrayDimension.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ArrayDimensionCollection.cs">
+      <Link>cil-strip\Mono.Cecil\ArrayDimensionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ArrayType.cs">
+      <Link>cil-strip\Mono.Cecil\ArrayType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AssemblyDefinition.cs">
+      <Link>cil-strip\Mono.Cecil\AssemblyDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AssemblyFactory.cs">
+      <Link>cil-strip\Mono.Cecil\AssemblyFactory.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AssemblyFlags.cs">
+      <Link>cil-strip\Mono.Cecil\AssemblyFlags.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AssemblyHashAlgorithm.cs">
+      <Link>cil-strip\Mono.Cecil\AssemblyHashAlgorithm.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AssemblyInfo.cs">
+      <Link>cil-strip\Mono.Cecil\AssemblyInfo.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AssemblyKind.cs">
+      <Link>cil-strip\Mono.Cecil\AssemblyKind.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AssemblyLinkedResource.cs">
+      <Link>cil-strip\Mono.Cecil\AssemblyLinkedResource.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AssemblyNameDefinition.cs">
+      <Link>cil-strip\Mono.Cecil\AssemblyNameDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AssemblyNameReference.cs">
+      <Link>cil-strip\Mono.Cecil\AssemblyNameReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\AssemblyNameReferenceCollection.cs">
+      <Link>cil-strip\Mono.Cecil\AssemblyNameReferenceCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\BaseAssemblyResolver.cs">
+      <Link>cil-strip\Mono.Cecil\BaseAssemblyResolver.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\BaseReflectionReader.cs">
+      <Link>cil-strip\Mono.Cecil\BaseReflectionReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\BaseReflectionVisitor.cs">
+      <Link>cil-strip\Mono.Cecil\BaseReflectionVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\BaseStructureVisitor.cs">
+      <Link>cil-strip\Mono.Cecil\BaseStructureVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\CallSite.cs">
+      <Link>cil-strip\Mono.Cecil\CallSite.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\CompactFrameworkCompatibility.cs">
+      <Link>cil-strip\Mono.Cecil\CompactFrameworkCompatibility.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\Constants.cs">
+      <Link>cil-strip\Mono.Cecil\Constants.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ConstraintCollection.cs">
+      <Link>cil-strip\Mono.Cecil\ConstraintCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ConstructorCollection.cs">
+      <Link>cil-strip\Mono.Cecil\ConstructorCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\CustomAttribute.cs">
+      <Link>cil-strip\Mono.Cecil\CustomAttribute.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\CustomAttributeCollection.cs">
+      <Link>cil-strip\Mono.Cecil\CustomAttributeCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\DefaultAssemblyResolver.cs">
+      <Link>cil-strip\Mono.Cecil\DefaultAssemblyResolver.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\DefaultImporter.cs">
+      <Link>cil-strip\Mono.Cecil\DefaultImporter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\EmbeddedResource.cs">
+      <Link>cil-strip\Mono.Cecil\EmbeddedResource.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\EventAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\EventAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\EventDefinition.cs">
+      <Link>cil-strip\Mono.Cecil\EventDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\EventDefinitionCollection.cs">
+      <Link>cil-strip\Mono.Cecil\EventDefinitionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\EventReference.cs">
+      <Link>cil-strip\Mono.Cecil\EventReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ExternTypeCollection.cs">
+      <Link>cil-strip\Mono.Cecil\ExternTypeCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\FieldAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\FieldAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\FieldDefinition.cs">
+      <Link>cil-strip\Mono.Cecil\FieldDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\FieldDefinitionCollection.cs">
+      <Link>cil-strip\Mono.Cecil\FieldDefinitionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\FieldReference.cs">
+      <Link>cil-strip\Mono.Cecil\FieldReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\FileAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\FileAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\FunctionPointerType.cs">
+      <Link>cil-strip\Mono.Cecil\FunctionPointerType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\GenericArgumentCollection.cs">
+      <Link>cil-strip\Mono.Cecil\GenericArgumentCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\GenericContext.cs">
+      <Link>cil-strip\Mono.Cecil\GenericContext.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\GenericInstanceMethod.cs">
+      <Link>cil-strip\Mono.Cecil\GenericInstanceMethod.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\GenericInstanceType.cs">
+      <Link>cil-strip\Mono.Cecil\GenericInstanceType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\GenericParameter.cs">
+      <Link>cil-strip\Mono.Cecil\GenericParameter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\GenericParameterAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\GenericParameterAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\GenericParameterCollection.cs">
+      <Link>cil-strip\Mono.Cecil\GenericParameterCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\HashCodeProvider.cs">
+      <Link>cil-strip\Mono.Cecil\HashCodeProvider.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IAnnotationProvider.cs">
+      <Link>cil-strip\Mono.Cecil\IAnnotationProvider.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IAssemblyResolver.cs">
+      <Link>cil-strip\Mono.Cecil\IAssemblyResolver.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ICustomAttributeProvider.cs">
+      <Link>cil-strip\Mono.Cecil\ICustomAttributeProvider.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IDetailReader.cs">
+      <Link>cil-strip\Mono.Cecil\IDetailReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IGenericInstance.cs">
+      <Link>cil-strip\Mono.Cecil\IGenericInstance.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IGenericParameterProvider.cs">
+      <Link>cil-strip\Mono.Cecil\IGenericParameterProvider.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IHasConstant.cs">
+      <Link>cil-strip\Mono.Cecil\IHasConstant.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IHasMarshalSpec.cs">
+      <Link>cil-strip\Mono.Cecil\IHasMarshalSpec.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IHasSecurity.cs">
+      <Link>cil-strip\Mono.Cecil\IHasSecurity.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IImporter.cs">
+      <Link>cil-strip\Mono.Cecil\IImporter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IMemberDefinition.cs">
+      <Link>cil-strip\Mono.Cecil\IMemberDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IMemberReference.cs">
+      <Link>cil-strip\Mono.Cecil\IMemberReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IMetadataScope.cs">
+      <Link>cil-strip\Mono.Cecil\IMetadataScope.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IMetadataTokenProvider.cs">
+      <Link>cil-strip\Mono.Cecil\IMetadataTokenProvider.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IMethodSignature.cs">
+      <Link>cil-strip\Mono.Cecil\IMethodSignature.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IReflectionStructureVisitable.cs">
+      <Link>cil-strip\Mono.Cecil\IReflectionStructureVisitable.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IReflectionStructureVisitor.cs">
+      <Link>cil-strip\Mono.Cecil\IReflectionStructureVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IReflectionVisitable.cs">
+      <Link>cil-strip\Mono.Cecil\IReflectionVisitable.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IReflectionVisitor.cs">
+      <Link>cil-strip\Mono.Cecil\IReflectionVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\IRequireResolving.cs">
+      <Link>cil-strip\Mono.Cecil\IRequireResolving.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ImportContext.cs">
+      <Link>cil-strip\Mono.Cecil\ImportContext.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\InterfaceCollection.cs">
+      <Link>cil-strip\Mono.Cecil\InterfaceCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\LinkedResource.cs">
+      <Link>cil-strip\Mono.Cecil\LinkedResource.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ManifestResourceAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\ManifestResourceAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MarshalSpec.cs">
+      <Link>cil-strip\Mono.Cecil\MarshalSpec.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MemberReference.cs">
+      <Link>cil-strip\Mono.Cecil\MemberReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MemberReferenceCollection.cs">
+      <Link>cil-strip\Mono.Cecil\MemberReferenceCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MetadataResolver.cs">
+      <Link>cil-strip\Mono.Cecil\MetadataResolver.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MethodAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\MethodAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MethodCallingConvention.cs">
+      <Link>cil-strip\Mono.Cecil\MethodCallingConvention.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MethodDefinition.cs">
+      <Link>cil-strip\Mono.Cecil\MethodDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MethodDefinitionCollection.cs">
+      <Link>cil-strip\Mono.Cecil\MethodDefinitionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MethodImplAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\MethodImplAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MethodReference.cs">
+      <Link>cil-strip\Mono.Cecil\MethodReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MethodReturnType.cs">
+      <Link>cil-strip\Mono.Cecil\MethodReturnType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MethodSemanticsAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\MethodSemanticsAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\MethodSpecification.cs">
+      <Link>cil-strip\Mono.Cecil\MethodSpecification.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\Modifiers.cs">
+      <Link>cil-strip\Mono.Cecil\Modifiers.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ModuleDefinition.cs">
+      <Link>cil-strip\Mono.Cecil\ModuleDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ModuleDefinitionCollection.cs">
+      <Link>cil-strip\Mono.Cecil\ModuleDefinitionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ModuleReference.cs">
+      <Link>cil-strip\Mono.Cecil\ModuleReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ModuleReferenceCollection.cs">
+      <Link>cil-strip\Mono.Cecil\ModuleReferenceCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\NameObjectCollectionBase.cs">
+      <Link>cil-strip\Mono.Cecil\NameObjectCollectionBase.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\NativeType.cs">
+      <Link>cil-strip\Mono.Cecil\NativeType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\NestedTypeCollection.cs">
+      <Link>cil-strip\Mono.Cecil\NestedTypeCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\NullReferenceImporter.cs">
+      <Link>cil-strip\Mono.Cecil\NullReferenceImporter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\OverrideCollection.cs">
+      <Link>cil-strip\Mono.Cecil\OverrideCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\PInvokeAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\PInvokeAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\PInvokeInfo.cs">
+      <Link>cil-strip\Mono.Cecil\PInvokeInfo.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ParameterAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\ParameterAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ParameterDefinition.cs">
+      <Link>cil-strip\Mono.Cecil\ParameterDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ParameterDefinitionCollection.cs">
+      <Link>cil-strip\Mono.Cecil\ParameterDefinitionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ParameterReference.cs">
+      <Link>cil-strip\Mono.Cecil\ParameterReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\PinnedType.cs">
+      <Link>cil-strip\Mono.Cecil\PinnedType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\PointerType.cs">
+      <Link>cil-strip\Mono.Cecil\PointerType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\PropertyAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\PropertyAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\PropertyDefinition.cs">
+      <Link>cil-strip\Mono.Cecil\PropertyDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\PropertyDefinitionCollection.cs">
+      <Link>cil-strip\Mono.Cecil\PropertyDefinitionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\PropertyReference.cs">
+      <Link>cil-strip\Mono.Cecil\PropertyReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ReferenceType.cs">
+      <Link>cil-strip\Mono.Cecil\ReferenceType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ReflectionController.cs">
+      <Link>cil-strip\Mono.Cecil\ReflectionController.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ReflectionException.cs">
+      <Link>cil-strip\Mono.Cecil\ReflectionException.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ReflectionHelper.cs">
+      <Link>cil-strip\Mono.Cecil\ReflectionHelper.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ReflectionReader.cs">
+      <Link>cil-strip\Mono.Cecil\ReflectionReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ReflectionWriter.cs">
+      <Link>cil-strip\Mono.Cecil\ReflectionWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\Resource.cs">
+      <Link>cil-strip\Mono.Cecil\Resource.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\ResourceCollection.cs">
+      <Link>cil-strip\Mono.Cecil\ResourceCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\SecurityAction.cs">
+      <Link>cil-strip\Mono.Cecil\SecurityAction.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\SecurityDeclaration.cs">
+      <Link>cil-strip\Mono.Cecil\SecurityDeclaration.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\SecurityDeclarationCollection.cs">
+      <Link>cil-strip\Mono.Cecil\SecurityDeclarationCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\SecurityDeclarationReader.cs">
+      <Link>cil-strip\Mono.Cecil\SecurityDeclarationReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\SentinelType.cs">
+      <Link>cil-strip\Mono.Cecil\SentinelType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\StructureReader.cs">
+      <Link>cil-strip\Mono.Cecil\StructureReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\StructureWriter.cs">
+      <Link>cil-strip\Mono.Cecil\StructureWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\TableComparers.cs">
+      <Link>cil-strip\Mono.Cecil\TableComparers.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\TargetRuntime.cs">
+      <Link>cil-strip\Mono.Cecil\TargetRuntime.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\TypeAttributes.cs">
+      <Link>cil-strip\Mono.Cecil\TypeAttributes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\TypeDefinition.cs">
+      <Link>cil-strip\Mono.Cecil\TypeDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\TypeDefinitionCollection.cs">
+      <Link>cil-strip\Mono.Cecil\TypeDefinitionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\TypeReference.cs">
+      <Link>cil-strip\Mono.Cecil\TypeReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\TypeReferenceCollection.cs">
+      <Link>cil-strip\Mono.Cecil\TypeReferenceCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\TypeSpecification.cs">
+      <Link>cil-strip\Mono.Cecil\TypeSpecification.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil\VariantType.cs">
+      <Link>cil-strip\Mono.Cecil\VariantType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\BaseImageVisitor.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\BaseImageVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\CLIHeader.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\CLIHeader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\CopyImageVisitor.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\CopyImageVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\DOSHeader.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\DOSHeader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\DataDirectory.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\DataDirectory.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\DebugHeader.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\DebugHeader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\DebugStoreType.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\DebugStoreType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ExportTable.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ExportTable.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\IBinaryVisitable.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\IBinaryVisitable.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\IBinaryVisitor.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\IBinaryVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\IHeader.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\IHeader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\Image.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\Image.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ImageCharacteristics.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ImageCharacteristics.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ImageFormatException.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ImageFormatException.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ImageInitializer.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ImageInitializer.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ImageReader.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ImageReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ImageWriter.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ImageWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\Imports.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\Imports.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\MemoryBinaryWriter.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\MemoryBinaryWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\PEFileHeader.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\PEFileHeader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\PEOptionalHeader.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\PEOptionalHeader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\RVA.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\RVA.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ResourceDataEntry.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ResourceDataEntry.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ResourceDirectoryEntry.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ResourceDirectoryEntry.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ResourceDirectoryString.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ResourceDirectoryString.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ResourceDirectoryTable.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ResourceDirectoryTable.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ResourceNode.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ResourceNode.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ResourceReader.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ResourceReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\ResourceWriter.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\ResourceWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\RuntimeImage.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\RuntimeImage.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\Section.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\Section.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\SectionCharacteristics.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\SectionCharacteristics.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\SectionCollection.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\SectionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Binary\SubSystem.cs">
+      <Link>cil-strip\Mono.Cecil.Binary\SubSystem.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\BaseCodeVisitor.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\BaseCodeVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\CilWorker.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\CilWorker.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\Code.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\Code.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\CodeReader.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\CodeReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\CodeWriter.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\CodeWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\Document.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\Document.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\DocumentHashAlgorithm.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\DocumentHashAlgorithm.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\DocumentLanguage.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\DocumentLanguage.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\DocumentLanguageVendor.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\DocumentLanguageVendor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\DocumentType.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\DocumentType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\ExceptionHandler.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\ExceptionHandler.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\ExceptionHandlerCollection.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\ExceptionHandlerCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\ExceptionHandlerType.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\ExceptionHandlerType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\FlowControl.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\FlowControl.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\GuidAttribute.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\GuidAttribute.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\ICodeVisitable.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\ICodeVisitable.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\ICodeVisitor.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\ICodeVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\IScopeProvider.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\IScopeProvider.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\ISymbolReader.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\ISymbolReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\ISymbolStoreFactory.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\ISymbolStoreFactory.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\ISymbolWriter.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\ISymbolWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\IVariableDefinitionProvider.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\IVariableDefinitionProvider.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\Instruction.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\Instruction.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\InstructionCollection.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\InstructionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\MethodBody.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\MethodBody.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\MethodDataSection.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\MethodDataSection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\MethodHeader.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\MethodHeader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\OpCode.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\OpCode.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\OpCodeNames.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\OpCodeNames.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\OpCodeType.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\OpCodeType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\OpCodes.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\OpCodes.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\OperandType.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\OperandType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\Scope.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\Scope.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\ScopeCollection.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\ScopeCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\SequencePoint.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\SequencePoint.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\StackBehaviour.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\StackBehaviour.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\SymbolStoreHelper.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\SymbolStoreHelper.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\VariableDefinition.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\VariableDefinition.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\VariableDefinitionCollection.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\VariableDefinitionCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Cil\VariableReference.cs">
+      <Link>cil-strip\Mono.Cecil.Cil\VariableReference.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\Assembly.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\Assembly.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\AssemblyOS.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\AssemblyOS.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\AssemblyProcessor.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\AssemblyProcessor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\AssemblyRef.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\AssemblyRef.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\AssemblyRefOS.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\AssemblyRefOS.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\AssemblyRefProcessor.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\AssemblyRefProcessor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\BaseMetadataVisitor.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\BaseMetadataVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\BlobHeap.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\BlobHeap.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\ClassLayout.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\ClassLayout.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\CodedIndex.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\CodedIndex.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\Constant.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\Constant.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\CultureUtils.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\CultureUtils.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\CustomAttribute.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\CustomAttribute.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\DeclSecurity.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\DeclSecurity.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\ElementType.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\ElementType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\Event.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\Event.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\EventMap.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\EventMap.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\EventPtr.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\EventPtr.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\ExportedType.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\ExportedType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\Field.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\Field.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\FieldLayout.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\FieldLayout.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\FieldMarshal.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\FieldMarshal.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\FieldPtr.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\FieldPtr.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\FieldRVA.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\FieldRVA.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\File.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\File.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\GenericParam.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\GenericParam.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\GenericParamConstraint.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\GenericParamConstraint.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\GuidHeap.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\GuidHeap.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\IMetadataRow.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\IMetadataRow.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\IMetadataTable.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\IMetadataTable.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\IMetadataVisitable.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\IMetadataVisitable.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\IMetadataVisitor.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\IMetadataVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\ImplMap.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\ImplMap.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\InterfaceImpl.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\InterfaceImpl.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\ManifestResource.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\ManifestResource.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MemberRef.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MemberRef.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataFormatException.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataFormatException.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataHeap.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataHeap.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataInitializer.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataInitializer.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataReader.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataRoot.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataRoot.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataRowReader.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataRowReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataRowWriter.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataRowWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataStream.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataStream.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataStreamCollection.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataStreamCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataTableReader.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataTableReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataTableWriter.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataTableWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataToken.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataToken.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MetadataWriter.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MetadataWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\Method.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\Method.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MethodImpl.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MethodImpl.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MethodPtr.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MethodPtr.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MethodSemantics.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MethodSemantics.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\MethodSpec.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\MethodSpec.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\Module.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\Module.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\ModuleRef.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\ModuleRef.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\NestedClass.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\NestedClass.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\Param.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\Param.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\ParamPtr.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\ParamPtr.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\Property.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\Property.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\PropertyMap.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\PropertyMap.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\PropertyPtr.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\PropertyPtr.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\RowCollection.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\RowCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\StandAloneSig.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\StandAloneSig.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\StringsHeap.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\StringsHeap.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\TableCollection.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\TableCollection.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\TablesHeap.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\TablesHeap.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\TokenType.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\TokenType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\TypeDef.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\TypeDef.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\TypeRef.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\TypeRef.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\TypeSpec.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\TypeSpec.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\UserStringsHeap.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\UserStringsHeap.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Metadata\Utilities.cs">
+      <Link>cil-strip\Mono.Cecil.Metadata\Utilities.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\Array.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\Array.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\ArrayShape.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\ArrayShape.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\BaseSignatureVisitor.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\BaseSignatureVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\Class.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\Class.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\Constraint.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\Constraint.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\CustomAttrib.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\CustomAttrib.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\CustomMod.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\CustomMod.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\FieldSig.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\FieldSig.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\FnPtr.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\FnPtr.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\GenericArg.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\GenericArg.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\GenericInst.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\GenericInst.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\GenericInstSignature.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\GenericInstSignature.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\ISignatureVisitable.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\ISignatureVisitable.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\ISignatureVisitor.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\ISignatureVisitor.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\InputOutputItem.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\InputOutputItem.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\LocalVarSig.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\LocalVarSig.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\MVar.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\MVar.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\MarshalSig.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\MarshalSig.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\MethodDefSig.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\MethodDefSig.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\MethodRefSig.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\MethodRefSig.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\MethodSig.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\MethodSig.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\MethodSpec.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\MethodSpec.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\Param.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\Param.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\PropertySig.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\PropertySig.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\Ptr.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\Ptr.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\RetType.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\RetType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\SigType.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\SigType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\Signature.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\Signature.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\SignatureReader.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\SignatureReader.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\SignatureWriter.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\SignatureWriter.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\SzArray.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\SzArray.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\TypeSpec.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\TypeSpec.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\ValueType.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\ValueType.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Cecil.Signatures\Var.cs">
+      <Link>cil-strip\Mono.Cecil.Signatures\Var.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Xml\SecurityParser.cs">
+      <Link>cil-strip\Mono.Xml\SecurityParser.cs</Link>
+    </Compile>
+    <Compile Include="Mono.Xml\SmallXmlParser.cs">
+      <Link>cil-strip\Mono.Xml\SmallXmlParser.cs</Link>
+    </Compile>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Mono.Xml\ChangeLog">
+      <Link>cil-strip\Mono.Xml\ChangeLog</Link>
+    </None>
+  </ItemGroup>
+</Project>
\ No newline at end of file
index 386a14519f2528e7ca632ad30fc1aa1d713702be..377f94ec09cf2f7542ab9853042c6e8bfd9814b8 100644 (file)
 ï»¿\r
-Microsoft Visual Studio Solution File, Format Version 10.00\r
-# Visual Studio 2008\r
+Microsoft Visual Studio Solution File, Format Version 11.00\r
+# Visual Studio 2010\r
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mono-api-info", "mono-api-info.csproj", "{6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}"\r
 EndProject\r
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil", "..\..\class\Mono.Cecil\Mono.Cecil.csproj", "{D8F63DFF-5230-43E4-9AB2-DA6E721A1FAE}"\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil", "..\..\..\external\cecil\Mono.Cecil.csproj", "{D68133BD-1E63-496E-9EDE-4FBDBF77B486}"\r
+EndProject\r
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mono-api-html", "mono-api-html\mono-api-html.csproj", "{D25986E2-7A41-4966-A26D-5614BAC7B8A7}"\r
 EndProject\r
 Global\r
        GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
                Debug|Any CPU = Debug|Any CPU\r
                Release|Any CPU = Release|Any CPU\r
+               net_2_0_Debug|Any CPU = net_2_0_Debug|Any CPU\r
+               net_2_0_Release|Any CPU = net_2_0_Release|Any CPU\r
+               net_3_5_Debug|Any CPU = net_3_5_Debug|Any CPU\r
+               net_3_5_Release|Any CPU = net_3_5_Release|Any CPU\r
+               net_4_0_Debug|Any CPU = net_4_0_Debug|Any CPU\r
+               net_4_0_Release|Any CPU = net_4_0_Release|Any CPU\r
+               silverlight_Debug|Any CPU = silverlight_Debug|Any CPU\r
+               silverlight_Release|Any CPU = silverlight_Release|Any CPU\r
+               winphone_Debug|Any CPU = winphone_Debug|Any CPU\r
+               winphone_Release|Any CPU = winphone_Release|Any CPU\r
        EndGlobalSection\r
        GlobalSection(ProjectConfigurationPlatforms) = postSolution\r
                {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
                {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_2_0_Release|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_2_0_Release|Any CPU.Build.0 = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_3_5_Release|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_3_5_Release|Any CPU.Build.0 = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_4_0_Release|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.net_4_0_Release|Any CPU.Build.0 = Debug|Any CPU\r
                {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
                {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.Release|Any CPU.Build.0 = Release|Any CPU\r
-               {D8F63DFF-5230-43E4-9AB2-DA6E721A1FAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
-               {D8F63DFF-5230-43E4-9AB2-DA6E721A1FAE}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
-               {D8F63DFF-5230-43E4-9AB2-DA6E721A1FAE}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
-               {D8F63DFF-5230-43E4-9AB2-DA6E721A1FAE}.Release|Any CPU.Build.0 = Release|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.silverlight_Release|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.silverlight_Release|Any CPU.Build.0 = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.winphone_Release|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {6446D5E1-8F4E-4692-8EF3-B1D4CA290ECF}.winphone_Release|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_2_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_2_0_Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_2_0_Release|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_2_0_Release|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_3_5_Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_3_5_Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_3_5_Release|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_3_5_Release|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_4_0_Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_4_0_Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_4_0_Release|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.net_4_0_Release|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.Release|Any CPU.ActiveCfg = Release|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.Release|Any CPU.Build.0 = Release|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.silverlight_Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.silverlight_Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.silverlight_Release|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.silverlight_Release|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.winphone_Debug|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.winphone_Debug|Any CPU.Build.0 = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.winphone_Release|Any CPU.ActiveCfg = Debug|Any CPU\r
+               {D25986E2-7A41-4966-A26D-5614BAC7B8A7}.winphone_Release|Any CPU.Build.0 = Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Any CPU.ActiveCfg = net_2_0_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Debug|Any CPU.Build.0 = net_2_0_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_2_0_Debug|Any CPU.ActiveCfg = net_2_0_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_2_0_Debug|Any CPU.Build.0 = net_2_0_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_2_0_Release|Any CPU.ActiveCfg = net_2_0_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_2_0_Release|Any CPU.Build.0 = net_2_0_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_3_5_Debug|Any CPU.ActiveCfg = net_3_5_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_3_5_Debug|Any CPU.Build.0 = net_3_5_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_3_5_Release|Any CPU.ActiveCfg = net_3_5_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_3_5_Release|Any CPU.Build.0 = net_3_5_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_4_0_Debug|Any CPU.ActiveCfg = net_4_0_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_4_0_Debug|Any CPU.Build.0 = net_4_0_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_4_0_Release|Any CPU.ActiveCfg = net_4_0_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.net_4_0_Release|Any CPU.Build.0 = net_4_0_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|Any CPU.ActiveCfg = net_2_0_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.Release|Any CPU.Build.0 = net_2_0_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.silverlight_Debug|Any CPU.ActiveCfg = silverlight_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.silverlight_Debug|Any CPU.Build.0 = silverlight_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.silverlight_Release|Any CPU.ActiveCfg = silverlight_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.silverlight_Release|Any CPU.Build.0 = silverlight_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.winphone_Debug|Any CPU.ActiveCfg = winphone_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.winphone_Debug|Any CPU.Build.0 = winphone_Debug|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.winphone_Release|Any CPU.ActiveCfg = winphone_Release|Any CPU\r
+               {D68133BD-1E63-496E-9EDE-4FBDBF77B486}.winphone_Release|Any CPU.Build.0 = winphone_Release|Any CPU\r
+       EndGlobalSection\r
+       GlobalSection(MonoDevelopProperties) = preSolution\r
+               StartupItem = mono-api-html\mono-api-html.csproj\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
                HideSolutionNode = FALSE\r
diff --git a/mcs/tools/corcompare/mono-api-html/ApiDiff.cs b/mcs/tools/corcompare/mono-api-html/ApiDiff.cs
new file mode 100644 (file)
index 0000000..ecfccea
--- /dev/null
@@ -0,0 +1,101 @@
+//
+// The main differences with mono-api-diff are:
+// * this tool directly produce HTML similar to gdiff.sh used for Xamarin.iOS
+// * this tool reports changes in an "evolutionary" way, not in a breaking way,
+//   i.e. it does not assume the source assembly is right (but simply older)
+// * the diff .xml output was not easy to convert back into the HTML format
+//   that gdiff.sh produced
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+
+namespace Xamarin.ApiDiff {
+
+       public static class State {
+               static TextWriter output;
+
+               public static TextWriter Output { 
+                       get {
+                               if (output == null)
+                                       output = Console.Out;
+                               return output;
+                       }
+                       set { output = value; } 
+               }
+
+               public static string Assembly { get; set; }
+               public static string Namespace { get; set; }
+               public static string Type { get; set; }
+               public static string BaseType { get; set; }
+
+               public static int Indent { get; set; }
+       }
+
+       class Program {
+
+               public static int Main (string[] args)
+               {
+                       if (args.Length < 2) {
+                               Console.WriteLine ("mono-api-html reference.xml assembly.xml [diff.html]");
+                               return 1;
+                       }
+
+                       try {
+                               string input = args [0];
+                               string output = args [1];
+                               var ac = new AssemblyComparer (input, output);
+                               if (args.Length > 2) {
+                                       string diff = String.Empty;
+                                       using (var writer = new StringWriter ()) {
+                                               State.Output = writer;
+                                               ac.Compare ();
+                                               diff = State.Output.ToString ();
+                                       }
+                                       if (diff.Length > 0) {
+                                               using (var file = new StreamWriter (args [2])) {
+                                                       if (ac.SourceAssembly == ac.TargetAssembly) {
+                                                               file.WriteLine ("<h1>{0}.dll</h1>", ac.SourceAssembly);
+                                                       } else {
+                                                               file.WriteLine ("<h1>{0}.dll vs {1}.dll</h1>", ac.SourceAssembly, ac.TargetAssembly);
+                                                       }
+                                                       file.Write (diff);
+                                               }
+                                       }
+                               } else {
+                                       State.Output = Console.Out;
+                                       ac.Compare ();
+                               }
+                       }
+                       catch (Exception e) {
+                               Console.WriteLine (e);
+                               return 1;
+                       }
+                       return 0;
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/AssemblyComparer.cs b/mcs/tools/corcompare/mono-api-html/AssemblyComparer.cs
new file mode 100644 (file)
index 0000000..e083c27
--- /dev/null
@@ -0,0 +1,78 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public class AssemblyComparer : Comparer {
+
+               XDocument source;
+               XDocument target;
+               NamespaceComparer comparer;
+
+               public AssemblyComparer (string sourceFile, string targetFile)
+               {
+                       source = XDocument.Load (sourceFile);
+                       target = XDocument.Load (targetFile);
+                       comparer =  new NamespaceComparer ();
+               }
+
+               public string SourceAssembly { get; private set; }
+               public string TargetAssembly { get; private set; }
+
+               public void Compare ()
+               {
+                       Compare (source.Element ("assemblies").Elements ("assembly"), 
+                                target.Element ("assemblies").Elements ("assembly"));
+               }
+
+               public override void SetContext (XElement current)
+               {
+                       State.Assembly = current.GetAttribute ("name");
+               }
+
+               public override void Added (XElement target)
+               {
+                       // one assembly per xml file
+               }
+
+               public override void Modified (XElement source, XElement target)
+               {
+                       SourceAssembly = source.GetAttribute ("name");
+                       TargetAssembly = target.GetAttribute ("name");
+                       // TODO: version
+                       // ? custom attributes ?
+                       comparer.Compare (source, target);
+               }
+
+               public override void Removed (XElement source)
+               {
+                       // one assembly per xml file
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/ClassComparer.cs b/mcs/tools/corcompare/mono-api-html/ClassComparer.cs
new file mode 100644 (file)
index 0000000..bdf22fe
--- /dev/null
@@ -0,0 +1,245 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public class ClassComparer : Comparer {
+
+               InterfaceComparer icomparer;
+               ConstructorComparer ccomparer;
+               FieldComparer fcomparer;
+               PropertyComparer pcomparer;
+               EventComparer ecomparer;
+               MethodComparer mcomparer;
+               ClassComparer kcomparer;
+
+               public ClassComparer ()
+               {
+                       icomparer = new InterfaceComparer ();
+                       ccomparer = new ConstructorComparer ();
+                       fcomparer = new FieldComparer ();
+                       pcomparer = new PropertyComparer ();
+                       ecomparer = new EventComparer ();
+                       mcomparer = new MethodComparer ();
+               }
+
+               public override void SetContext (XElement current)
+               {
+                       State.Type = current.GetAttribute ("name");
+                       State.BaseType = current.GetAttribute ("base");
+               }
+
+               public void Compare (XElement source, XElement target)
+               {
+                       var s = source.Element ("classes");
+                       var t = target.Element ("classes");
+                       if (XNode.DeepEquals (s, t))
+                               return;
+                       Compare (s.Elements ("class"), t.Elements ("class"));
+               }
+
+               public override void Added (XElement target)
+               {
+                       Output.WriteLine ("<h3>New Type {0}.{1}</h3>", State.Namespace, target.Attribute ("name").Value);
+                       Output.WriteLine ("<pre>");
+                       State.Indent = 0;
+                       AddedInner (target);
+                       Output.WriteLine ("</pre>");
+               }
+
+               public void AddedInner (XElement target)
+               {
+                       SetContext (target);
+                       if (target.IsTrue ("serializable"))
+                               Indent ().WriteLine ("[Serializable]");
+
+                       var type = target.Attribute ("type").Value;
+
+                       if (type == "enum") {
+                               // check if [Flags] is present
+                               var cattrs = target.Element ("attributes");
+                               if (cattrs != null) {
+                                       foreach (var ca in cattrs.Elements ("attribute")) {
+                                               if (ca.GetAttribute ("name") == "System.FlagsAttribute") {
+                                                       Indent ().WriteLine ("[Flags]");
+                                                       break;
+                                               }
+                                       }
+                               }
+                       }
+
+                       Indent ().Write ("public");
+
+                       if (type != "enum") {
+                               bool seal = target.IsTrue ("sealed");
+                               bool abst = target.IsTrue ("abstract");
+                               if (seal && abst)
+                                       Output.Write (" static");
+                               else if (seal && type != "struct")
+                                       Output.Write (" sealed");
+                               else if (abst && type != "interface")
+                                       Output.Write (" abstract");
+                       }
+
+                       Output.Write (' ');
+                       Output.Write (type);
+                       Output.Write (' ');
+                       Output.Write (target.GetAttribute ("name"));
+
+                       var baseclass = target.GetAttribute ("base");
+                       if ((type != "enum") && (type != "struct")) {
+                               if (baseclass != null) {
+                                       if (baseclass == "System.Object") {
+                                               // while true we do not need to be reminded every time...
+                                               baseclass = null;
+                                       } else {
+                                               Output.Write (" : ");
+                                               Output.Write (baseclass);
+                                       }
+                               }
+                       }
+
+                       // interfaces on enums are "standard" not user provided - so we do not want to show them
+                       if (type != "enum") {
+                               var i = target.Element ("interfaces");
+                               if (i != null) {
+                                       var interfaces = new List<string> ();
+                                       foreach (var iface in i.Elements ("interface"))
+                                               interfaces.Add (icomparer.GetDescription (iface));
+                                       Output.Write ((baseclass == null) ? " : " : ", ");
+                                       Output.Write (String.Join (", ", interfaces));
+                               }
+                       }
+
+                       Output.WriteLine (" {");
+
+                       var t = target.Element ("constructors");
+                       if (t != null) {
+                               Indent ().WriteLine ("\t// constructors");
+                               foreach (var ctor in t.Elements ("constructor"))
+                                       ccomparer.Added (ctor);
+                       }
+
+                       t = target.Element ("fields");
+                       if (t != null) {
+                               if (type != "enum")
+                                       Indent ().WriteLine ("\t// fields");
+                               else
+                                       SetContext (target);
+                               foreach (var field in t.Elements ("field"))
+                                       fcomparer.Added (field);
+                       }
+
+                       t = target.Element ("properties");
+                       if (t != null) {
+                               Indent ().WriteLine ("\t// properties");
+                               foreach (var property in t.Elements ("property"))
+                                       pcomparer.Added (property);
+                       }
+
+                       t = target.Element ("events");
+                       if (t != null) {
+                               Indent ().WriteLine ("\t// events");
+                               foreach (var evnt in t.Elements ("event"))
+                                       ecomparer.Added (evnt);
+                       }
+
+                       t = target.Element ("methods");
+                       if (t != null) {
+                               Indent ().WriteLine ("\t// methods");
+                               foreach (var method in t.Elements ("method"))
+                                       mcomparer.Added (method);
+                       }
+
+                       t = target.Element ("classes");
+                       if (t != null) {
+                               Output.WriteLine ();
+                               Indent ().WriteLine ("\t// inner types");
+                               kcomparer = new NestedClassComparer ();
+                               State.Indent++;
+                               foreach (var inner in t.Elements ("class"))
+                                       kcomparer.AddedInner (inner);
+                               State.Indent--;
+                       }
+                       Indent ().WriteLine ("}");
+               }
+
+               public override void Modified (XElement source, XElement target)
+               {
+                       // hack - there could be changes that we're not monitoring (e.g. attributes properties)
+                       var output = Output;
+                       State.Output = new StringWriter ();
+
+                       ccomparer.Compare (source, target);
+                       icomparer.Compare (source, target);
+                       fcomparer.Compare (source, target);
+                       pcomparer.Compare (source, target);
+                       ecomparer.Compare (source, target);
+                       mcomparer.Compare (source, target);
+
+                       var si = source.Element ("classes");
+                       if (si != null) {
+                               var ti = target.Element ("classes");
+                               kcomparer = new NestedClassComparer ();
+                               kcomparer.Compare (si.Elements ("class"), ti == null ? null : ti.Elements ("class"));
+                       }
+
+                       var s = (Output as StringWriter).ToString ();
+                       State.Output = output;
+                       if (s.Length > 0) {
+                               Output.WriteLine ("<h3>Type Changed: {0}.{1}</h3>", State.Namespace, GetTypeName (target));
+                               Output.WriteLine (s);
+                       }
+               }
+
+               public override void Removed (XElement source)
+               {
+                       Output.WriteLine ("<h3>Removed Type {0}.{1}", State.Namespace, GetTypeName (source));
+               }
+
+               public virtual string GetTypeName (XElement type)
+               {
+                       return type.GetAttribute ("name");
+               }
+       }
+
+       public class NestedClassComparer : ClassComparer {
+
+               public override void SetContext (XElement current)
+               {
+               }
+
+               public override string GetTypeName (XElement type)
+               {
+                       return State.Type + "." + base.GetTypeName (type);
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/Comparer.cs b/mcs/tools/corcompare/mono-api-html/Comparer.cs
new file mode 100644 (file)
index 0000000..7869637
--- /dev/null
@@ -0,0 +1,96 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public abstract class Comparer {
+
+               protected List<XElement> removed = new List<XElement> ();
+
+               public TextWriter Output {
+                       get { return State.Output; }
+               }
+
+               protected TextWriter Indent ()
+               {
+                       for (int i = 0; i < State.Indent; i++)
+                               State.Output.Write ("\t");
+                       return State.Output;
+               }
+
+               public abstract void Added (XElement target);
+               public abstract void Modified (XElement source, XElement target);
+               public abstract void Removed (XElement source);
+
+               public virtual bool Equals (XElement source, XElement target)
+               {
+                       return XNode.DeepEquals (source, target);
+               }
+
+               public abstract void SetContext (XElement current);
+
+               public virtual void Compare (IEnumerable<XElement> source, IEnumerable<XElement> target)
+               {
+                       removed.Clear ();
+
+                       foreach (var s in source) {
+                               SetContext (s);
+                               string sn = s.GetAttribute ("name");
+                               var t = target == null ? null : target.SingleOrDefault (x => x.GetAttribute ("name") == sn);
+                               if (t == null) {
+                                       // not in target, it was removed
+                                       removed.Add (s);
+                               } else {
+                                       t.Remove ();
+                                       // possibly modified
+                                       if (Equals (s, t))
+                                               continue;
+
+                                       // still in target so will be part of Added
+                                       Modified (s, t);
+                               }
+                       }
+                       // delayed, that way we show "Modified", "Added" and then "Removed"
+                       foreach (var item in removed) {
+                               SetContext (item);
+                               Removed (item);
+                       }
+                       // remaining == newly added in target
+                       if (target != null) {
+                               foreach (var item in target) {
+                                       SetContext (item);
+                                       Added (item);
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/ConstructorComparer.cs b/mcs/tools/corcompare/mono-api-html/ConstructorComparer.cs
new file mode 100644 (file)
index 0000000..93c4dbd
--- /dev/null
@@ -0,0 +1,114 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using System.Text;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public class ConstructorComparer : MemberComparer {
+
+               public override string GroupName {
+                       get { return "constructors"; }
+               }
+
+               public override string ElementName {
+                       get { return "constructor"; }
+               }
+
+               public override bool Find (XElement e)
+               {
+                       return (e.Attribute ("name").Value == Source.Attribute ("name").Value);
+               }
+
+               public override string GetDescription (XElement e)
+               {
+                       StringBuilder sb = GetObsoleteMessage (e);
+                       bool obsolete = sb.Length > 0;
+
+                       var attribs = e.Attribute ("attrib");
+                       if (attribs != null) {
+                               var attr = (MethodAttributes) Int32.Parse (attribs.Value);
+                               if ((attr & MethodAttributes.Public) != MethodAttributes.Public) {
+                                       sb.Append ("protected ");
+                               } else {
+                                       sb.Append ("public ");
+                               }
+
+                               if ((attr & MethodAttributes.Static) != 0) {
+                                       sb.Append ("static ");
+                               } else if ((attr & MethodAttributes.Virtual) != 0) {
+                                       if ((attr & MethodAttributes.VtableLayoutMask) == 0)
+                                               sb.Append ("override ");
+                                       else
+                                               sb.Append ("virtual ");
+                               }
+                       }
+
+                       string name = e.GetAttribute ("name");
+
+                       var r = e.GetTypeName ("returntype");
+                       if (r != null) {
+                               // ctor dont' have a return type
+                               sb.Append (r).Append (' ');
+                       } else {
+                               // show the constructor as it would be defined in C#
+                               name = name.Replace (".ctor", State.Type);
+                       }
+
+                       // the XML file `name` does not contain parameter names, so we must process them ourselves
+                       // which gives us the opportunity to simplify type names
+                       sb.Append (name.Substring (0, name.IndexOf ('(')));
+
+                       var genericp = e.Element ("generic-parameters");
+                       if (genericp != null) {
+                               var list = new List<string> ();
+                               foreach (var p in genericp.Elements ("generic-parameter")) {
+                                       list.Add (p.GetTypeName ("name"));
+                               }
+                               sb.Append ("&lt;").Append (String.Join (", ", list)).Append ("&gt;");
+                       }
+
+                       sb.Append (" (");
+                       var parameters = e.Element ("parameters");
+                       if (parameters != null) {
+                               var list = new List<string> ();
+                               foreach (var p in parameters.Elements ("parameter")) {
+                                       list.Add (p.GetTypeName ("type") + " " + p.GetAttribute ("name"));
+                               }
+                               sb.Append (String.Join (", ", list));
+                       }
+                       sb.Append (");");
+
+                       if (obsolete)
+                               sb.AppendLine (); // more readable output
+                       return sb.ToString ();
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/EventComparer.cs b/mcs/tools/corcompare/mono-api-html/EventComparer.cs
new file mode 100644 (file)
index 0000000..c7d1e8b
--- /dev/null
@@ -0,0 +1,53 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Text;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public class EventComparer : MemberComparer {
+
+               public override string GroupName {
+                       get { return "events"; }
+               }
+
+               public override string ElementName {
+                       get { return "event"; }
+               }
+
+               public override string GetDescription (XElement e)
+               {
+                       StringBuilder sb = GetObsoleteMessage (e);
+                       // TODO: attribs
+                       sb.Append ("public event ");
+                       sb.Append (e.GetTypeName ("eventtype")).Append (' ');
+                       sb.Append (e.GetAttribute ("name")).Append (';');
+                       return sb.ToString ();
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/FieldComparer.cs b/mcs/tools/corcompare/mono-api-html/FieldComparer.cs
new file mode 100644 (file)
index 0000000..54942b6
--- /dev/null
@@ -0,0 +1,100 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Reflection;
+using System.Text;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public class FieldComparer : MemberComparer {
+
+               public override string GroupName {
+                       get { return "fields"; }
+               }
+
+               public override string ElementName {
+                       get { return "field"; }
+               }
+
+               public override string GetDescription (XElement e)
+               {
+                       var sb = GetObsoleteMessage (e);
+                       bool obsolete = sb.Length > 0;
+
+                       string name = e.GetAttribute ("name");
+                       string value = e.GetAttribute ("value");
+
+                       if (State.BaseType == "System.Enum") {
+                               sb.Append (name).Append (" = ").Append (value).Append (',');
+                       } else {
+                               var attribs = e.Attribute ("attrib");
+                               if (attribs != null) {
+                                       var attr = (FieldAttributes)Int32.Parse (attribs.Value);
+                                       if ((attr & FieldAttributes.Public) != FieldAttributes.Public) {
+                                               sb.Append ("protected ");
+                                       } else {
+                                               sb.Append ("public ");
+                                       }
+
+                                       if ((attr & FieldAttributes.Static) != 0)
+                                               sb.Append ("static ");
+
+                                       if ((attr & FieldAttributes.Literal) != 0)
+                                               sb.Append ("const ");
+                               }
+
+                               string ftype = e.GetTypeName ("fieldtype");
+                               sb.Append (ftype).Append (' ');
+                               sb.Append (name);
+                               if (ftype == "string")
+                                       sb.Append (" = \"").Append (e.Attribute ("value").Value).Append ('"');
+                               sb.Append (';');
+                       }
+
+                       if (obsolete)
+                               sb.AppendLine (); // more readable output
+                       return sb.ToString ();
+               }
+
+               public override void BeforeAdding ()
+               {
+                       if (State.BaseType == "System.Enum")
+                               Output.WriteLine ("<p>Added values:</p><pre>");
+                       else
+                               base.BeforeAdding ();
+               }
+
+               public override void BeforeRemoving ()
+               {
+                       if (State.BaseType == "System.Enum")
+                               Output.WriteLine ("<p>Removed values:</p><pre>");
+                       else
+                               base.BeforeRemoving ();
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/Helpers.cs b/mcs/tools/corcompare/mono-api-html/Helpers.cs
new file mode 100644 (file)
index 0000000..098b29b
--- /dev/null
@@ -0,0 +1,130 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public static class Helper {
+
+               public static bool IsTrue (this XElement self, string name)
+               {
+                       return (self.GetAttribute (name) == "true");
+               }
+
+               public static string GetAttribute (this XElement self, string name)
+               {
+                       var n = self.Attribute (name);
+                       if (n == null)
+                               return null;
+                       return n.Value;
+               }
+
+               // null == no obsolete, String.Empty == no description
+               public static string GetObsoleteMessage (this XElement self)
+               {
+                       var cattrs = self.Element ("attributes");
+                       if (cattrs == null)
+                               return null;
+
+                       foreach (var ca in cattrs.Elements ("attribute")) {
+                               if (ca.GetAttribute ("name") != "System.ObsoleteAttribute")
+                                       continue;
+                               var props = ca.Element ("properties");
+                               if (props == null)
+                                       return String.Empty; // no description
+                               foreach (var p in props.Elements ("property")) {
+                                       if (p.GetAttribute ("name") != "Message")
+                                               continue;
+                                       return p.GetAttribute ("value");
+                               }
+                       }
+                       return null;
+               }
+
+               // make it beautiful (.NET -> C#)
+               public static string GetTypeName (this XElement self, string name)
+               {
+                       string type = self.GetAttribute (name);
+                       if (type == null)
+                               return null;
+
+                       // inner types
+                       return GetTypeName (type.Replace ('+', '.'));
+               }
+
+               static string GetTypeName (string type)
+               {
+                       if (type.StartsWith ("System.Nullable`1[", StringComparison.Ordinal))
+                               return type.Substring (18, type.Length - 19) + "?";
+
+                       int pos = type.IndexOf ('`');
+                       if (pos >= 0) {
+                               int end = type.LastIndexOf (']');
+                               string subtype = type.Substring (pos + 3, end - pos - 3);
+                               return type.Substring (0, pos) + "&lt;" + GetTypeName (subtype) + "&gt;";
+                       }
+
+                       switch (type) {
+                       case "System.String":
+                               return "string";
+                       case "System.Int32":
+                               return "int";
+                       case "System.UInt32":
+                               return "uint";
+                       case "System.Int64":
+                               return "long";
+                       case "System.UInt64":
+                               return "ulong";
+                       case "System.Void":
+                               return "void";
+                       case "System.Boolean":
+                               return "bool";
+                       case "System.Object":
+                               return "object";
+                       case "System.Single":
+                               return "float";
+                       case "System.Double":
+                               return "double";
+                       case "System.Byte":
+                               return "byte";
+                       case "System.SByte":
+                               return "sbyte";
+                       case "System.Int16":
+                               return "short";
+                       case "System.UInt16":
+                               return "ushort";
+                       case "System.Char":
+                               return "char";
+                       default:
+                               if (type.StartsWith (State.Namespace, StringComparison.Ordinal))
+                                       type = type.Substring (State.Namespace.Length + 1);
+                               return type;
+                       }
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/InterfaceComparer.cs b/mcs/tools/corcompare/mono-api-html/InterfaceComparer.cs
new file mode 100644 (file)
index 0000000..df52f16
--- /dev/null
@@ -0,0 +1,47 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public class InterfaceComparer : MemberComparer {
+
+               public override string GroupName {
+                       get { return "interfaces"; }
+               }
+
+               public override string ElementName {
+                       get { return "interface"; }
+               }
+
+               public override string GetDescription (XElement e)
+               {
+                       return e.GetTypeName ("name");
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/MemberComparer.cs b/mcs/tools/corcompare/mono-api-html/MemberComparer.cs
new file mode 100644 (file)
index 0000000..8dcdff5
--- /dev/null
@@ -0,0 +1,178 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public abstract class MemberComparer : Comparer {
+
+               public abstract string GroupName { get; }
+               public abstract string ElementName { get; }
+
+               public void Compare (XElement source, XElement target)
+               {
+                       var s = source.Element (GroupName);
+                       var t = target.Element (GroupName);
+                       if (XNode.DeepEquals (s, t))
+                               return;
+
+                       if (s == null) {
+                               BeforeAdding ();
+                               foreach (var item in t.Elements (ElementName))
+                                       Added (item);
+                               AfterAdding ();
+                       } else if (t == null) {
+                               BeforeRemoving ();
+                               foreach (var item in s.Elements (ElementName))
+                                       Removed (item);
+                               AfterRemoving ();
+                       } else {
+                               Compare (s.Elements (ElementName), t.Elements (ElementName));
+                       }
+               }
+
+               public override void SetContext (XElement current)
+               {
+               }
+
+               public XElement Source { get; set; }
+
+               public virtual bool Find (XElement e)
+               {
+                       return e.GetAttribute ("name") == Source.GetAttribute ("name");
+               }
+
+               public override void Compare (IEnumerable<XElement> source, IEnumerable<XElement> target)
+               {
+                       removed.Clear ();
+
+                       foreach (var s in source) {
+                               SetContext (s);
+                               Source = s;
+                               var t = target.SingleOrDefault (Find);
+                               if (t == null) {
+                                       // not in target, it was removed
+                                       removed.Add (s);
+                               } else {
+                                       // possibly modified
+                                       if (Equals (s, t)) {
+                                               t.Remove ();
+                                               continue;
+                                       }
+
+                                       // still in target so will be part of Added
+                                       removed.Add (s);
+                                       Modified (s, t);
+                               }
+                       }
+                       // delayed, that way we show "Modified", "Added" and then "Removed"
+                       bool r = false;
+                       foreach (var item in removed) {
+                               SetContext (item);
+                               if (!r) {
+                                       BeforeRemoving ();
+                                       r = true;
+                               }
+                               Removed (item);
+                       }
+                       if (r)
+                               AfterRemoving ();
+                       // remaining == newly added in target
+                       bool a = false;
+                       foreach (var item in target) {
+                               SetContext (item);
+                               if (!a) {
+                                       BeforeAdding ();
+                                       a = true;
+                               }
+                               Added (item);
+                       }
+                       if (a)
+                               AfterAdding ();
+               }
+
+               public abstract string GetDescription (XElement e);
+
+               protected StringBuilder GetObsoleteMessage (XElement e)
+               {
+                       var sb = new StringBuilder ();
+                       string o = e.GetObsoleteMessage ();
+                       if (o != null) {
+                               sb.Append ("[Obsolete (\"").Append (o).AppendLine ("\")]");
+                               for (int i = 0; i < State.Indent + 1; i++)
+                                       sb.Append ('\t');
+                       }
+                       return sb;
+               }
+
+               public override bool Equals (XElement source, XElement target)
+               {
+                       if (base.Equals (source, target))
+                               return true;
+
+                       return GetDescription (source) == GetDescription (target);
+               }
+
+               public virtual void BeforeAdding ()
+               {
+                       Output.WriteLine ("<p>Added {0}:</p><pre>", GroupName);
+               }
+
+               public override void Added (XElement target)
+               {
+                       Indent ().WriteLine ("\t{0}", GetDescription (target));
+               }
+
+               public virtual void AfterAdding ()
+               {
+                       Output.WriteLine ("</pre>");
+               }
+
+               public override void Modified (XElement source, XElement target)
+               {
+               }
+
+               public virtual void BeforeRemoving ()
+               {
+                       Output.WriteLine ("<p>Removed {0}:</p><pre>", GroupName);
+               }
+
+               public override void Removed (XElement source)
+               {
+                       Indent ().WriteLine ("\t{0}", GetDescription (source));
+               }
+
+               public virtual void AfterRemoving ()
+               {
+                       Output.WriteLine ("</pre>");
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/MethodComparer.cs b/mcs/tools/corcompare/mono-api-html/MethodComparer.cs
new file mode 100644 (file)
index 0000000..fb28c40
--- /dev/null
@@ -0,0 +1,49 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public class MethodComparer : ConstructorComparer {
+
+               public override string GroupName {
+                       get { return "methods"; }
+               }
+
+               public override string ElementName {
+                       get { return "method"; }
+               }
+
+               // operators have identical names but vary by return types
+               public override bool Find (XElement e)
+               {
+                       return (e.GetAttribute ("name") == Source.GetAttribute ("name")) &&
+                               (e.GetAttribute ("returntype") == Source.GetAttribute ("returntype"));
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/NamespaceComparer.cs b/mcs/tools/corcompare/mono-api-html/NamespaceComparer.cs
new file mode 100644 (file)
index 0000000..7239385
--- /dev/null
@@ -0,0 +1,90 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.IO;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public class NamespaceComparer : Comparer {
+
+               ClassComparer comparer;
+
+               public NamespaceComparer ()
+               {
+                       comparer =  new ClassComparer ();
+               }
+
+               public void Compare (XElement source, XElement target)
+               {
+                       var s = source.Element ("namespaces");
+                       var t = target.Element ("namespaces");
+                       if (XNode.DeepEquals (s, t))
+                               return;
+                       Compare (s.Elements ("namespace"), t.Elements ("namespace"));
+               }
+
+               public override void SetContext (XElement current)
+               {
+                       State.Namespace = current.Attribute ("name").Value;
+               }
+
+               public override void Added (XElement target)
+               {
+                       Output.WriteLine ("<h2>New Namespace {0}</h2>", target.Attribute ("name").Value);
+                       Output.WriteLine ();
+                       // list all new types
+                       foreach (var addedType in target.Element ("classes").Elements ("class"))
+                               comparer.Added (addedType);
+                       Output.WriteLine ();
+               }
+
+               public override void Modified (XElement source, XElement target)
+               {
+                       var output = Output;
+                       State.Output = new StringWriter ();
+                       comparer.Compare (source, target);
+
+                       var s = Output.ToString ();
+                       State.Output = output;
+                       if (s.Length > 0) {
+                               Output.WriteLine ("<h2>Namespace {0}</h2>", target.Attribute ("name").Value);
+                               Output.WriteLine (s);
+                       }
+               }
+
+               public override void Removed (XElement source)
+               {
+                       Output.WriteLine ("<h2>Removed Namespace {0}</h2>", source.Attribute ("name").Value);
+                       Output.WriteLine ();
+                       // list all removed types
+                       foreach (var removedType in source.Element ("classes").Elements ("class"))
+                               comparer.Removed (removedType);
+                       Output.WriteLine ();
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/PropertyComparer.cs b/mcs/tools/corcompare/mono-api-html/PropertyComparer.cs
new file mode 100644 (file)
index 0000000..0971e71
--- /dev/null
@@ -0,0 +1,97 @@
+// 
+// Authors
+//    Sebastien Pouliot  <sebastien@xamarin.com>
+//
+// Copyright 2013 Xamarin Inc. http://www.xamarin.com
+// 
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Reflection;
+using System.Text;
+using System.Xml.Linq;
+
+namespace Xamarin.ApiDiff {
+
+       public class PropertyComparer : MemberComparer {
+
+               public override string GroupName {
+                       get { return "properties"; }
+               }
+
+               public override string ElementName {
+                       get { return "property"; }
+               }
+
+               public override bool Find (XElement e)
+               {
+                       if (!base.Find (e))
+                               return false;
+                       // the same Item (indexer) property can have different parameters
+                       return e.GetAttribute ("params") == Source.GetAttribute ("params");
+               }
+
+               public override string GetDescription (XElement e)
+               {
+                       string name = e.Attribute ("name").Value;
+                       string ptype = e.GetTypeName ("ptype");
+
+                       bool virt = false;
+                       bool over = false;
+                       bool stat = false;
+                       bool getter = false;
+                       bool setter = false;
+                       bool family = false;
+                       var methods = e.Element ("methods");
+                       if (methods != null) {
+                               foreach (var m in methods.Elements ("method")) {
+                                       virt |= m.IsTrue ("virtual");
+                                       stat |= m.IsTrue ("static");
+                                       var n = m.GetAttribute ("name");
+                                       getter |= n.StartsWith ("get_", StringComparison.Ordinal);
+                                       setter |= n.StartsWith ("set_", StringComparison.Ordinal);
+                                       var attribs = (MethodAttributes) Int32.Parse (m.GetAttribute ("attrib"));
+                                       family = ((attribs & MethodAttributes.Public) != MethodAttributes.Public);
+                                       over |= (attribs & MethodAttributes.VtableLayoutMask) == 0;
+                               }
+                       }
+
+                       var sb = GetObsoleteMessage (e);
+                       bool obsolete = sb.Length > 0;
+
+                       sb.Append (family ? "protected " : "public ");
+                       if (virt)
+                               sb.Append (over ? "override " : "virtual ");
+                       else if (stat)
+                               sb.Append ("static ");
+                       sb.Append (ptype).Append (' ').Append (name).Append (" { ");
+                       if (getter)
+                               sb.Append ("get; ");
+                       if (setter)
+                               sb.Append ("set; ");
+                       sb.Append ("}");
+
+                       if (obsolete)
+                               sb.AppendLine (); // more readable output
+                       return sb.ToString ();
+               }
+       }
+}
\ No newline at end of file
diff --git a/mcs/tools/corcompare/mono-api-html/mono-api-html.csproj b/mcs/tools/corcompare/mono-api-html/mono-api-html.csproj
new file mode 100644 (file)
index 0000000..6a205f2
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+    <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+    <ProductVersion>10.0.0</ProductVersion>
+    <SchemaVersion>2.0</SchemaVersion>
+    <ProjectGuid>{D25986E2-7A41-4966-A26D-5614BAC7B8A7}</ProjectGuid>
+    <OutputType>Exe</OutputType>
+    <RootNamespace>Xamarin.ApiDiff</RootNamespace>
+    <AssemblyName>mono-api-html</AssemblyName>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
+    <DebugSymbols>true</DebugSymbols>
+    <DebugType>full</DebugType>
+    <Optimize>false</Optimize>
+    <OutputPath>bin\Debug</OutputPath>
+    <DefineConstants>DEBUG;</DefineConstants>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <ConsolePause>false</ConsolePause>
+    <Commandlineparameters>../../../6.4.5.xml ../../../7.0.2.xml</Commandlineparameters>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
+    <DebugType>full</DebugType>
+    <Optimize>true</Optimize>
+    <OutputPath>bin\Release</OutputPath>
+    <ErrorReport>prompt</ErrorReport>
+    <WarningLevel>4</WarningLevel>
+    <Externalconsole>true</Externalconsole>
+  </PropertyGroup>
+  <ItemGroup>
+    <Reference Include="System" />
+    <Reference Include="System.Xml.Linq" />
+    <Reference Include="System.Xml" />
+    <Reference Include="System.Core" />
+  </ItemGroup>
+  <ItemGroup>
+    <Compile Include="Helpers.cs" />
+    <Compile Include="InterfaceComparer.cs" />
+    <Compile Include="NamespaceComparer.cs" />
+    <Compile Include="MemberComparer.cs" />
+    <Compile Include="FieldComparer.cs" />
+    <Compile Include="PropertyComparer.cs" />
+    <Compile Include="EventComparer.cs" />
+    <Compile Include="MethodComparer.cs" />
+    <Compile Include="ConstructorComparer.cs" />
+    <Compile Include="Comparer.cs" />
+    <Compile Include="AssemblyComparer.cs" />
+    <Compile Include="ClassComparer.cs" />
+    <Compile Include="ApiDiff.cs" />
+  </ItemGroup>
+  <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+</Project>
\ No newline at end of file
index 1596015470e1372724a2fc19575f28fdab1ee966..44ef75821a1f923b5bf00fffd867b7754b6ca601 100644 (file)
@@ -56,7 +56,7 @@
     <Reference Include="System.Core">\r
       <RequiredTargetFramework>3.5</RequiredTargetFramework>\r
     </Reference>\r
-    <Reference Include="System.XML" />\r
+    <Reference Include="System.Xml" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <Compile Include="AssemblyResolver.cs" />\r
       <Install>true</Install>\r
     </BootstrapperPackage>\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <ProjectReference Include="..\..\..\external\cecil\Mono.Cecil.csproj">\r
-      <Project>{d68133bd-1e63-496e-9ede-4fbdbf77b486}</Project>\r
-      <Name>Mono.Cecil</Name>\r
-    </ProjectReference>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <None Include="app.config" />\r
-  </ItemGroup>\r
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />\r
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. \r
        Other similar extension points exist, see Microsoft.Common.targets.\r
   <Target Name="AfterBuild">\r
   </Target>\r
   -->\r
+  <ItemGroup>\r
+    <ProjectReference Include="..\..\..\external\cecil\Mono.Cecil.csproj">\r
+      <Project>{D68133BD-1E63-496E-9EDE-4FBDBF77B486}</Project>\r
+      <Name>Mono.Cecil</Name>\r
+    </ProjectReference>\r
+  </ItemGroup>\r
 </Project>
\ No newline at end of file
index 2544964d01f38eb6688a2a3e04a85c8bc6e77c27..abdaed2d135dfacb23760b91f23414e075e00228 100644 (file)
@@ -68,6 +68,7 @@ namespace Mono {
 
                        eval.InteractiveBaseClass = typeof (InteractiveBaseShell);
                        eval.DescribeTypeExpressions = true;
+                       eval.WaitOnTask = true;
 
                        CSharpShell shell;
 #if !ON_DOTNET
diff --git a/mcs/tools/ildasm/DataConverter.cs b/mcs/tools/ildasm/DataConverter.cs
deleted file mode 100644 (file)
index d0bf047..0000000
+++ /dev/null
@@ -1,1836 +0,0 @@
-//
-// Authors:
-//   Miguel de Icaza (miguel@novell.com)
-//
-// See the following url for documentation:
-//     http://www.mono-project.com/Mono_DataConvert
-//
-// Compilation Options:
-//     MONO_DATACONVERTER_PUBLIC:
-//         Makes the class public instead of the default internal.
-//
-//     MONO_DATACONVERTER_STATIC_METHODS:     
-//         Exposes the public static methods.
-//
-// TODO:
-//   Support for "DoubleWordsAreSwapped" for ARM devices
-//
-// Copyright (C) 2006 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-using System;
-using System.Collections;
-using System.Text;
-
-#pragma warning disable 3021
-
-namespace Mono {
-
-#if MONO_DATACONVERTER_PUBLIC
-       unsafe public abstract class DataConverter {
-#else
-       unsafe internal abstract class DataConverter {
-
-// Disables the warning: CLS compliance checking will not be performed on
-//  `XXXX' because it is not visible from outside this assembly
-#pragma warning disable  3019
-#endif
-               static DataConverter SwapConv = new SwapConverter ();
-               static DataConverter CopyConv = new CopyConverter ();
-
-               public static readonly bool IsLittleEndian = BitConverter.IsLittleEndian;
-                       
-               public abstract double GetDouble (byte [] data, int index);
-               public abstract float  GetFloat  (byte [] data, int index);
-               public abstract long   GetInt64  (byte [] data, int index);
-               public abstract int    GetInt32  (byte [] data, int index);
-
-               public abstract short  GetInt16  (byte [] data, int index);
-
-                [CLSCompliant (false)]
-               public abstract uint   GetUInt32 (byte [] data, int index);
-                [CLSCompliant (false)]
-               public abstract ushort GetUInt16 (byte [] data, int index);
-                [CLSCompliant (false)]
-               public abstract ulong  GetUInt64 (byte [] data, int index);
-               
-               public abstract void PutBytes (byte [] dest, int destIdx, double value);
-               public abstract void PutBytes (byte [] dest, int destIdx, float value);
-               public abstract void PutBytes (byte [] dest, int destIdx, int value);
-               public abstract void PutBytes (byte [] dest, int destIdx, long value);
-               public abstract void PutBytes (byte [] dest, int destIdx, short value);
-
-                [CLSCompliant (false)]
-               public abstract void PutBytes (byte [] dest, int destIdx, ushort value);
-                [CLSCompliant (false)]
-               public abstract void PutBytes (byte [] dest, int destIdx, uint value);
-                [CLSCompliant (false)]
-               public abstract void PutBytes (byte [] dest, int destIdx, ulong value);
-
-               public byte[] GetBytes (double value)
-               {
-                       byte [] ret = new byte [8];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-               public byte[] GetBytes (float value)
-               {
-                       byte [] ret = new byte [4];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-               public byte[] GetBytes (int value)
-               {
-                       byte [] ret = new byte [4];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-               public byte[] GetBytes (long value)
-               {
-                       byte [] ret = new byte [8];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-               public byte[] GetBytes (short value)
-               {
-                       byte [] ret = new byte [2];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-
-                [CLSCompliant (false)]
-               public byte[] GetBytes (ushort value)
-               {
-                       byte [] ret = new byte [2];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-                [CLSCompliant (false)]
-               public byte[] GetBytes (uint value)
-               {
-                       byte [] ret = new byte [4];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-                [CLSCompliant (false)]
-               public byte[] GetBytes (ulong value)
-               {
-                       byte [] ret = new byte [8];
-                       PutBytes (ret, 0, value);
-                       return ret;
-               }
-               
-               static public DataConverter LittleEndian {
-                       get {
-                               return BitConverter.IsLittleEndian ? CopyConv : SwapConv;
-                       }
-               }
-
-               static public DataConverter BigEndian {
-                       get {
-                               return BitConverter.IsLittleEndian ? SwapConv : CopyConv;
-                       }
-               }
-
-               static public DataConverter Native {
-                       get {
-                               return CopyConv;
-                       }
-               }
-
-               static int Align (int current, int align)
-               {
-                       return ((current + align - 1) / align) * align;
-               }
-                       
-               class PackContext {
-                       // Buffer
-                       public byte [] buffer;
-                       int next;
-
-                       public string description;
-                       public int i; // position in the description
-                       public DataConverter conv;
-                       public int repeat;
-                       
-                       //
-                       // if align == -1, auto align to the size of the byte array
-                       // if align == 0, do not do alignment
-                       // Any other values aligns to that particular size
-                       //
-                       public int align;
-
-                       public void Add (byte [] group)
-                       {
-                               //Console.WriteLine ("Adding {0} bytes to {1} (next={2}", group.Length,
-                               // buffer == null ? "null" : buffer.Length.ToString (), next);
-                               
-                               if (buffer == null){
-                                       buffer = group;
-                                       next = group.Length;
-                                       return;
-                               }
-                               if (align != 0){
-                                       if (align == -1)
-                                               next = Align (next, group.Length);
-                                       else
-                                               next = Align (next, align);
-                                       align = 0;
-                               }
-
-                               if (next + group.Length > buffer.Length){
-                                       byte [] nb = new byte [System.Math.Max (next, 16) * 2 + group.Length];
-                                       Array.Copy (buffer, nb, buffer.Length);
-                                       Array.Copy (group, 0, nb, next, group.Length);
-                                       next = next + group.Length;
-                                       buffer = nb;
-                               } else {
-                                       Array.Copy (group, 0, buffer, next, group.Length);
-                                       next += group.Length;
-                               }
-                       }
-
-                       public byte [] Get ()
-                       {
-                               if (buffer == null)
-                                       return new byte [0];
-                               
-                               if (buffer.Length != next){
-                                       byte [] b = new byte [next];
-                                       Array.Copy (buffer, b, next);
-                                       return b;
-                               }
-                               return buffer;
-                       }
-               }
-
-               //
-               // Format includes:
-               // Control:
-               //   ^    Switch to big endian encoding
-               //   _    Switch to little endian encoding
-               //   %    Switch to host (native) encoding
-               //   !    aligns the next data type to its natural boundary (for strings this is 4).
-               //
-               // Types:
-               //   s    Int16
-               //   S    UInt16
-               //   i    Int32
-               //   I    UInt32
-               //   l    Int64
-               //   L    UInt64
-               //   f    float
-               //   d    double
-               //   b    byte
-                //   c    1-byte signed character
-                //   C    1-byte unsigned character
-               //   z8   string encoded as UTF8 with 1-byte null terminator
-               //   z6   string encoded as UTF16 with 2-byte null terminator
-               //   z7   string encoded as UTF7 with 1-byte null terminator
-               //   zb   string encoded as BigEndianUnicode with 2-byte null terminator
-               //   z3   string encoded as UTF32 with 4-byte null terminator
-               //   z4   string encoded as UTF32 big endian with 4-byte null terminator
-               //   $8   string encoded as UTF8
-               //   $6   string encoded as UTF16
-               //   $7   string encoded as UTF7
-               //   $b   string encoded as BigEndianUnicode
-               //   $3   string encoded as UTF32
-               //   $4   string encoded as UTF-32 big endian encoding
-               //   x    null byte
-               //
-               // Repeats, these are prefixes:
-               //   N    a number between 1 and 9, indicates a repeat count (process N items
-               //        with the following datatype
-               //   [N]  For numbers larger than 9, use brackets, for example [20]
-               //   *    Repeat the next data type until the arguments are exhausted
-               //
-               static public byte [] Pack (string description, params object [] args)
-               {
-                       int argn = 0;
-                       PackContext b = new PackContext ();
-                       b.conv = CopyConv;
-                       b.description = description;
-
-                       for (b.i = 0; b.i < description.Length; ){
-                               object oarg;
-
-                               if (argn < args.Length)
-                                       oarg = args [argn];
-                               else {
-                                       if (b.repeat != 0)
-                                               break;
-                                       
-                                       oarg = null;
-                               }
-
-                               int save = b.i;
-                               
-                               if (PackOne (b, oarg)){
-                                       argn++;
-                                       if (b.repeat > 0){
-                                               if (--b.repeat > 0)
-                                                       b.i = save;
-                                               else
-                                                       b.i++;
-                                       } else
-                                               b.i++;
-                               } else
-                                       b.i++;
-                       }
-                       return b.Get ();
-               }
-
-               static public byte [] PackEnumerable (string description, IEnumerable args)
-               {
-                       PackContext b = new PackContext ();
-                       b.conv = CopyConv;
-                       b.description = description;
-                       
-                       IEnumerator enumerator = args.GetEnumerator ();
-                       bool ok = enumerator.MoveNext ();
-
-                       for (b.i = 0; b.i < description.Length; ){
-                               object oarg;
-
-                               if (ok)
-                                       oarg = enumerator.Current;
-                               else {
-                                       if (b.repeat != 0)
-                                               break;
-                                       oarg = null;
-                               }
-                                               
-                               int save = b.i;
-                               
-                               if (PackOne (b, oarg)){
-                                       ok = enumerator.MoveNext ();
-                                       if (b.repeat > 0){
-                                               if (--b.repeat > 0)
-                                                       b.i = save;
-                                               else
-                                                       b.i++;
-                                       } else
-                                               b.i++;
-                               } else
-                                       b.i++;
-                       }
-                       return b.Get ();
-               }
-                       
-               //
-               // Packs one datum `oarg' into the buffer `b', using the string format
-               // in `description' at position `i'
-               //
-               // Returns: true if we must pick the next object from the list
-               //
-               static bool PackOne (PackContext b, object oarg)
-               {
-                       int n;
-                       
-                       switch (b.description [b.i]){
-                       case '^':
-                               b.conv = BigEndian;
-                               return false;
-                       case '_':
-                               b.conv = LittleEndian;
-                               return false;
-                       case '%':
-                               b.conv = Native;
-                               return false;
-
-                       case '!':
-                               b.align = -1;
-                               return false;
-                               
-                       case 'x':
-                               b.Add (new byte [] { 0 });
-                               return false;
-                               
-                               // Type Conversions
-                       case 'i':
-                               b.Add (b.conv.GetBytes (Convert.ToInt32 (oarg)));
-                               break;
-                               
-                       case 'I':
-                               b.Add (b.conv.GetBytes (Convert.ToUInt32 (oarg)));
-                               break;
-                               
-                       case 's':
-                               b.Add (b.conv.GetBytes (Convert.ToInt16 (oarg)));
-                               break;
-                               
-                       case 'S':
-                               b.Add (b.conv.GetBytes (Convert.ToUInt16 (oarg)));
-                               break;
-                               
-                       case 'l':
-                               b.Add (b.conv.GetBytes (Convert.ToInt64 (oarg)));
-                               break;
-                               
-                       case 'L':
-                               b.Add (b.conv.GetBytes (Convert.ToUInt64 (oarg)));
-                               break;
-                               
-                       case 'f':
-                               b.Add (b.conv.GetBytes (Convert.ToSingle (oarg)));
-                               break;
-                               
-                       case 'd':
-                               b.Add (b.conv.GetBytes (Convert.ToDouble (oarg)));
-                               break;
-                               
-                       case 'b':
-                               b.Add (new byte [] { Convert.ToByte (oarg) });
-                               break;
-
-                       case 'c':
-                               b.Add (new byte [] { (byte) (Convert.ToSByte (oarg)) });
-                               break;
-
-                       case 'C':
-                               b.Add (new byte [] { Convert.ToByte (oarg) });
-                               break;
-
-                               // Repeat acount;
-                       case '1': case '2': case '3': case '4': case '5':
-                       case '6': case '7': case '8': case '9':
-                               b.repeat = ((short) b.description [b.i]) - ((short) '0');
-                               return false;
-
-                       case '*':
-                               b.repeat = Int32.MaxValue;
-                               return false;
-                               
-                       case '[':
-                               int count = -1, j;
-                               
-                               for (j = b.i+1; j < b.description.Length; j++){
-                                       if (b.description [j] == ']')
-                                               break;
-                                       n = ((short) b.description [j]) - ((short) '0');
-                                       if (n >= 0 && n <= 9){
-                                               if (count == -1)
-                                                       count = n;
-                                               else
-                                                       count = count * 10 + n;
-                                       }
-                               }
-                               if (count == -1)
-                                       throw new ArgumentException ("invalid size specification");
-                               b.i = j;
-                               b.repeat = count;
-                               return false;
-                               
-                       case '$': case 'z':
-                               bool add_null = b.description [b.i] == 'z';
-                               b.i++;
-                               if (b.i >= b.description.Length)
-                                       throw new ArgumentException ("$ description needs a type specified", "description");
-                               char d = b.description [b.i];
-                               Encoding e;
-                               
-                               switch (d){
-                               case '8':
-                                       e = Encoding.UTF8;
-                                       n = 1;
-                                       break;
-                               case '6':
-                                       e = Encoding.Unicode;
-                                       n = 2;
-                                       break;
-                               case '7':
-                                       e = Encoding.UTF7;
-                                       n = 1;
-                                       break;
-                               case 'b':
-                                       e = Encoding.BigEndianUnicode;
-                                       n = 2;
-                                       break;
-                               case '3':
-                                       e = Encoding.GetEncoding (12000);
-                                       n = 4;
-                                       break;
-                               case '4':
-                                       e = Encoding.GetEncoding (12001);
-                                       n = 4;
-                                       break;
-                                       
-                               default:
-                                       throw new ArgumentException ("Invalid format for $ specifier", "description");
-                               }
-                               if (b.align == -1)
-                                       b.align = 4;
-                               b.Add (e.GetBytes (Convert.ToString (oarg)));
-                               if (add_null)
-                                       b.Add (new byte [n]);
-                               break;
-                       default:
-                               throw new ArgumentException (String.Format ("invalid format specified `{0}'",
-                                                                           b.description [b.i]));
-                       }
-                       return true;
-               }
-
-               static bool Prepare (byte [] buffer, ref int idx, int size, ref bool align)
-               {
-                       if (align){
-                               idx = Align (idx, size);
-                               align = false;
-                       }
-                       if (idx + size > buffer.Length){
-                               idx = buffer.Length;
-                               return false;
-                       }
-                       return true;
-               }
-               
-               static public IList Unpack (string description, byte [] buffer, int startIndex)
-               {
-                       DataConverter conv = CopyConv;
-                       ArrayList result = new ArrayList ();
-                       int idx = startIndex;
-                       bool align = false;
-                       int repeat = 0, n;
-                       
-                       for (int i = 0; i < description.Length && idx < buffer.Length; ){
-                               int save = i;
-                               
-                               switch (description [i]){
-                               case '^':
-                                       conv = BigEndian;
-                                       break;
-                               case '_':
-                                       conv = LittleEndian;
-                                       break;
-                               case '%':
-                                       conv = Native;
-                                       break;
-                               case 'x':
-                                       idx++;
-                                       break;
-
-                               case '!':
-                                       align = true;
-                                       break;
-
-                                       // Type Conversions
-                               case 'i':
-                                       if (Prepare (buffer, ref idx, 4, ref align)){
-                                               result.Add (conv.GetInt32 (buffer, idx));
-                                               idx += 4;
-                                       } 
-                                       break;
-                               
-                               case 'I':
-                                       if (Prepare (buffer, ref idx, 4, ref align)){
-                                               result.Add (conv.GetUInt32 (buffer, idx));
-                                               idx += 4;
-                                       }
-                                       break;
-                               
-                               case 's':
-                                       if (Prepare (buffer, ref idx, 2, ref align)){
-                                               result.Add (conv.GetInt16 (buffer, idx));
-                                               idx += 2;
-                                       }
-                                       break;
-                               
-                               case 'S':
-                                       if (Prepare (buffer, ref idx, 2, ref align)){
-                                               result.Add (conv.GetUInt16 (buffer, idx));
-                                               idx += 2;
-                                       }
-                                       break;
-                               
-                               case 'l':
-                                       if (Prepare (buffer, ref idx, 8, ref align)){
-                                               result.Add (conv.GetInt64 (buffer, idx));
-                                               idx += 8;
-                                       }
-                                       break;
-                               
-                               case 'L':
-                                       if (Prepare (buffer, ref idx, 8, ref align)){
-                                               result.Add (conv.GetUInt64 (buffer, idx));
-                                               idx += 8;
-                                       }
-                                       break;
-                               
-                               case 'f':
-                                       if (Prepare (buffer, ref idx, 4, ref align)){
-                                               result.Add (conv.GetDouble (buffer, idx));
-                                               idx += 4;
-                                       }
-                                       break;
-                               
-                               case 'd':
-                                       if (Prepare (buffer, ref idx, 8, ref align)){
-                                               result.Add (conv.GetDouble (buffer, idx));
-                                               idx += 8;
-                                       }
-                                       break;
-                               
-                               case 'b':
-                                       if (Prepare (buffer, ref idx, 1, ref align)){
-                                               result.Add (buffer [idx]);
-                                               idx++;
-                                       }
-                                       break;
-
-                               case 'c': case 'C':
-                                       if (Prepare (buffer, ref idx, 1, ref align)){
-                                               char c;
-                                               
-                                               if (description [i] == 'c')
-                                                       c = ((char) ((sbyte)buffer [idx]));
-                                               else
-                                                       c = ((char) ((byte)buffer [idx]));
-                                               
-                                               result.Add (c);
-                                               idx++;
-                                       }
-                                       break;
-                                       
-                                       // Repeat acount;
-                               case '1': case '2': case '3': case '4': case '5':
-                               case '6': case '7': case '8': case '9':
-                                       repeat = ((short) description [i]) - ((short) '0');
-                                       save = i + 1;
-                                       break;
-
-                               case '*':
-                                       repeat = Int32.MaxValue;
-                                       break;
-                               
-                               case '[':
-                                       int count = -1, j;
-                               
-                                       for (j = i+1; j < description.Length; j++){
-                                               if (description [j] == ']')
-                                                       break;
-                                               n = ((short) description [j]) - ((short) '0');
-                                               if (n >= 0 && n <= 9){
-                                                       if (count == -1)
-                                                               count = n;
-                                                       else
-                                                               count = count * 10 + n;
-                                               }
-                                       }
-                                       if (count == -1)
-                                               throw new ArgumentException ("invalid size specification");
-                                       i = j;
-                                       repeat = count;
-                                       break;
-                               
-                               case '$': case 'z':
-                                       // bool with_null = description [i] == 'z';
-                                       i++;
-                                       if (i >= description.Length)
-                                               throw new ArgumentException ("$ description needs a type specified", "description");
-                                       char d = description [i];
-                                       Encoding e;
-                                       if (align){
-                                               idx = Align (idx, 4);
-                                               align = false;
-                                       }
-                                       if (idx >= buffer.Length)
-                                               break;
-                               
-                                       switch (d){
-                                       case '8':
-                                               e = Encoding.UTF8;
-                                               n = 1;
-                                               break;
-                                       case '6':
-                                               e = Encoding.Unicode;
-                                               n = 2;
-                                               break;
-                                       case '7':
-                                               e = Encoding.UTF7;
-                                               n = 1;
-                                               break;
-                                       case 'b':
-                                               e = Encoding.BigEndianUnicode;
-                                               n = 2;
-                                               break;
-                                       case '3':
-                                               e = Encoding.GetEncoding (12000);
-                                               n = 4;
-                                               break;
-                                       case '4':
-                                               e = Encoding.GetEncoding (12001);
-                                               n = 4;
-                                               break;
-                                       
-                                       default:
-                                               throw new ArgumentException ("Invalid format for $ specifier", "description");
-                                       }
-                                       int k = idx;
-                                       switch (n){
-                                       case 1:
-                                               for (; k < buffer.Length && buffer [k] != 0; k++)
-                                                       ;
-                                               result.Add (e.GetChars (buffer, idx, k-idx));
-                                               if (k == buffer.Length)
-                                                       idx = k;
-                                               else
-                                                       idx = k+1;
-                                               break;
-                                               
-                                       case 2:
-                                               for (; k < buffer.Length; k++){
-                                                       if (k+1 == buffer.Length){
-                                                               k++;
-                                                               break;
-                                                       }
-                                                       if (buffer [k] == 0 && buffer [k+1] == 0)
-                                                               break;
-                                               }
-                                               result.Add (e.GetChars (buffer, idx, k-idx));
-                                               if (k == buffer.Length)
-                                                       idx = k;
-                                               else
-                                                       idx = k+2;
-                                               break;
-                                               
-                                       case 4:
-                                               for (; k < buffer.Length; k++){
-                                                       if (k+3 >= buffer.Length){
-                                                               k = buffer.Length;
-                                                               break;
-                                                       }
-                                                       if (buffer[k]==0 && buffer[k+1] == 0 && buffer[k+2] == 0 && buffer[k+3]== 0)
-                                                               break;
-                                               }
-                                               result.Add (e.GetChars (buffer, idx, k-idx));
-                                               if (k == buffer.Length)
-                                                       idx = k;
-                                               else
-                                                       idx = k+4;
-                                               break;
-                                       }
-                                       break;
-                               default:
-                                       throw new ArgumentException (String.Format ("invalid format specified `{0}'",
-                                                                                   description [i]));
-                               }
-
-                               if (repeat > 0){
-                                       if (--repeat > 0)
-                                               i = save;
-                               } else
-                                       i++;
-                       }
-                       return result;
-               }
-
-               internal void Check (byte [] dest, int destIdx, int size)
-               {
-                       if (dest == null)
-                               throw new ArgumentNullException ("dest");
-                       if (destIdx < 0 || destIdx > dest.Length - size)
-                               throw new ArgumentException ("destIdx");
-               }
-               
-               class CopyConverter : DataConverter {
-                       public override double GetDouble (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-                               double ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-
-                       public override ulong GetUInt64 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               ulong ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-
-                       public override long GetInt64 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               long ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override float GetFloat  (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               float ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override int GetInt32  (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               int ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override uint GetUInt32 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               uint ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override short GetInt16 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 2)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               short ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 2; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override ushort GetUInt16 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 2)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               ushort ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 2; i++)
-                                       b [i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, double value)
-                       {
-                               Check (dest, destIdx, 8);
-                               fixed (byte *target = &dest [destIdx]){
-                                       long *source = (long *) &value;
-
-                                       *((long *)target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, float value)
-                       {
-                               Check (dest, destIdx, 4);
-                               fixed (byte *target = &dest [destIdx]){
-                                       uint *source = (uint *) &value;
-
-                                       *((uint *)target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, int value)
-                       {
-                               Check (dest, destIdx, 4);
-                               fixed (byte *target = &dest [destIdx]){
-                                       uint *source = (uint *) &value;
-
-                                       *((uint *)target) = *source;
-                               }
-                       }
-
-                       public override void PutBytes (byte [] dest, int destIdx, uint value)
-                       {
-                               Check (dest, destIdx, 4);
-                               fixed (byte *target = &dest [destIdx]){
-                                       uint *source = (uint *) &value;
-
-                                       *((uint *)target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, long value)
-                       {
-                               Check (dest, destIdx, 8);
-                               fixed (byte *target = &dest [destIdx]){
-                                       long *source = (long *) &value;
-
-                                       *((long*)target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, ulong value)
-                       {
-                               Check (dest, destIdx, 8);
-                               fixed (byte *target = &dest [destIdx]){
-                                       ulong *source = (ulong *) &value;
-
-                                       *((ulong *) target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, short value)
-                       {
-                               Check (dest, destIdx, 2);
-                               fixed (byte *target = &dest [destIdx]){
-                                       ushort *source = (ushort *) &value;
-
-                                       *((ushort *)target) = *source;
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, ushort value)
-                       {
-                               Check (dest, destIdx, 2);
-                               fixed (byte *target = &dest [destIdx]){
-                                       ushort *source = (ushort *) &value;
-
-                                       *((ushort *)target) = *source;
-                               }
-                       }
-               }
-
-               class SwapConverter : DataConverter {
-                       public override double GetDouble (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               double ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [7-i] = data [index+i];
-
-                               return ret;
-                       }
-
-                       public override ulong GetUInt64 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               ulong ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [7-i] = data [index+i];
-
-                               return ret;
-                       }
-
-                       public override long GetInt64 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 8)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               long ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 8; i++)
-                                       b [7-i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override float GetFloat  (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               float ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [3-i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override int GetInt32  (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               int ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [3-i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override uint GetUInt32 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 4)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               uint ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 4; i++)
-                                       b [3-i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override short GetInt16 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 2)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               short ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 2; i++)
-                                       b [1-i] = data [index+i];
-
-                               return ret;
-                       }
-                       
-                       public override ushort GetUInt16 (byte [] data, int index)
-                       {
-                               if (data == null)
-                                       throw new ArgumentNullException ("data");
-                               if (data.Length - index < 2)
-                                       throw new ArgumentException ("index");
-                               if (index < 0)
-                                       throw new ArgumentException ("index");
-
-                               ushort ret;
-                               byte *b = (byte *)&ret;
-
-                               for (int i = 0; i < 2; i++)
-                                       b [1-i] = data [index+i];
-
-                               return ret;
-                       }
-
-                       public override void PutBytes (byte [] dest, int destIdx, double value)
-                       {
-                               Check (dest, destIdx, 8);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 8; i++)
-                                               target [i] = source [7-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, float value)
-                       {
-                               Check (dest, destIdx, 4);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 4; i++)
-                                               target [i] = source [3-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, int value)
-                       {
-                               Check (dest, destIdx, 4);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 4; i++)
-                                               target [i] = source [3-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, uint value)
-                       {
-                               Check (dest, destIdx, 4);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 4; i++)
-                                               target [i] = source [3-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, long value)
-                       {
-                               Check (dest, destIdx, 8);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 8; i++)
-                                               target [i] = source [7-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, ulong value)
-                       {
-                               Check (dest, destIdx, 8);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 4; i++)
-                                               target [i] = source [7-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, short value)
-                       {
-                               Check (dest, destIdx, 2);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 2; i++)
-                                               target [i] = source [1-i];
-                               }
-                       }
-                       
-                       public override void PutBytes (byte [] dest, int destIdx, ushort value)
-                       {
-                               Check (dest, destIdx, 2);
-
-                               fixed (byte *target = &dest [destIdx]){
-                                       byte *source = (byte *) &value;
-
-                                       for (int i = 0; i < 2; i++)
-                                               target [i] = source [1-i];
-                               }
-                       }
-               }
-               
-#if MONO_DATACONVERTER_STATIC_METHODS
-               static unsafe void PutBytesLE (byte *dest, byte *src, int count)
-               {
-                       int i = 0;
-                       
-                       if (BitConverter.IsLittleEndian){
-                               for (; i < count; i++)
-                                       *dest++ = *src++;
-                       } else {
-                               dest += count;
-                               for (; i < count; i++)
-                                       *(--dest) = *src++;
-                       }
-               }
-
-               static unsafe void PutBytesBE (byte *dest, byte *src, int count)
-               {
-                       int i = 0;
-                       
-                       if (BitConverter.IsLittleEndian){
-                               dest += count;
-                               for (; i < count; i++)
-                                       *(--dest) = *src++;
-                       } else {
-                               for (; i < count; i++)
-                                       *dest++ = *src++;
-                       }
-               }
-
-               static unsafe void PutBytesNative (byte *dest, byte *src, int count)
-               {
-                       int i = 0;
-                       
-                       for (; i < count; i++)
-                               dest [i-count] = *src++;
-               }
-               
-               static public unsafe double DoubleFromLE (byte[] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       double ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe float FloatFromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       float ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe long Int64FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       long ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ulong UInt64FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ulong ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe int Int32FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       int ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe uint UInt32FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       uint ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe short Int16FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-
-                       short ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ushort UInt16FromLE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ushort ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesLE ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-
-               static public unsafe double DoubleFromBE (byte[] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       double ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe float FloatFromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       float ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe long Int64FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       long ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ulong UInt64FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ulong ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe int Int32FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       int ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe uint UInt32FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       uint ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe short Int16FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-
-                       short ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ushort UInt16FromBE (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ushort ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesBE ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-
-               static public unsafe double DoubleFromNative (byte[] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       double ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe float FloatFromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       float ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe long Int64FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       long ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ulong UInt64FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 8)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ulong ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 8);
-                       }
-                       return ret;
-               }
-
-               static public unsafe int Int32FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       int ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe uint UInt32FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 4)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       uint ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 4);
-                       }
-                       return ret;
-               }
-
-               static public unsafe short Int16FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-
-                       short ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-               
-               static public unsafe ushort UInt16FromNative (byte [] data, int index)
-               {
-                       if (data == null)
-                               throw new ArgumentNullException ("data");
-                       if (data.Length - index < 2)
-                               throw new ArgumentException ("index");
-                       if (index < 0)
-                               throw new ArgumentException ("index");
-                       
-                       ushort ret;
-                       fixed (byte *src = &data[index]){
-                               PutBytesNative ((byte *) &ret, src, 2);
-                       }
-                       return ret;
-               }
-
-                unsafe static byte[] GetBytesPtr (byte *ptr, int count)
-                {
-                        byte [] ret = new byte [count];
-
-                        for (int i = 0; i < count; i++) {
-                                ret [i] = ptr [i];
-                        }
-
-                        return ret;
-                }
-
-                unsafe static byte[] GetBytesSwap (bool swap, byte *ptr, int count)
-                {
-                        byte [] ret = new byte [count];
-
-                       if (swap){
-                               int t = count-1;
-                               for (int i = 0; i < count; i++) {
-                                       ret [t-i] = ptr [i];
-                               }
-                       } else {
-                               for (int i = 0; i < count; i++) {
-                                       ret [i] = ptr [i];
-                               }
-                       }
-                        return ret;
-                }
-               
-                unsafe public static byte[] GetBytesNative (bool value)
-                {
-                        return GetBytesPtr ((byte *) &value, 1);
-                }
-
-                unsafe public static byte[] GetBytesNative (char value)
-                {
-                        return GetBytesPtr ((byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesNative (short value)
-                {
-                        return GetBytesPtr ((byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesNative (int value)
-                {
-                        return GetBytesPtr ((byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesNative (long value)
-                {
-                        return GetBytesPtr ((byte *) &value, 8);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesNative (ushort value)
-                {
-                        return GetBytesPtr ((byte *) &value, 2);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesNative (uint value)
-                {
-                        return GetBytesPtr ((byte *) &value, 4);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesNative (ulong value)
-                {
-                        return GetBytesPtr ((byte *) &value, 8);
-                }
-
-                unsafe public static byte[] GetBytesNative (float value)
-                {
-                        return GetBytesPtr ((byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesNative (double value)
-                {
-                       return GetBytesPtr ((byte *) &value, 8);
-                }
-
-                unsafe public static byte[] GetBytesLE (bool value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 1);
-                }
-
-                unsafe public static byte[] GetBytesLE (char value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesLE (short value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesLE (int value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesLE (long value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesLE (ushort value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesLE (uint value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesLE (ulong value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-
-                unsafe public static byte[] GetBytesLE (float value)
-                {
-                        return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesLE (double value)
-                {
-                       return GetBytesSwap (!BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-               
-                unsafe public static byte[] GetBytesBE (bool value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 1);
-                }
-
-                unsafe public static byte[] GetBytesBE (char value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesBE (short value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                unsafe public static byte[] GetBytesBE (int value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesBE (long value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesBE (ushort value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 2);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesBE (uint value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                [CLSCompliant (false)]
-                unsafe public static byte[] GetBytesBE (ulong value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-
-                unsafe public static byte[] GetBytesBE (float value)
-                {
-                        return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 4);
-                }
-
-                unsafe public static byte[] GetBytesBE (double value)
-                {
-                       return GetBytesSwap (BitConverter.IsLittleEndian, (byte *) &value, 8);
-                }
-#endif
-               
-       }
-}
diff --git a/mcs/tools/ildasm/Makefile b/mcs/tools/ildasm/Makefile
deleted file mode 100644 (file)
index 15b8dfb..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-thisdir = tools/ildasm
-SUBDIRS = 
-include ../../build/rules.make
-
-LOCAL_MCS_FLAGS = -r:Mono.Cecil.dll -D:MONO_DATACONVERTER_STATIC_METHODS -unsafe
-PROGRAM = $(topdir)/class/lib/$(PROFILE)/ildasm.exe
-
-include ../../build/executable.make
diff --git a/mcs/tools/ildasm/ildasm.cs b/mcs/tools/ildasm/ildasm.cs
deleted file mode 100644 (file)
index b19eea4..0000000
+++ /dev/null
@@ -1,1029 +0,0 @@
-using System;
-using System.IO;
-using System.Text;
-using System.Collections.Generic;
-using System.Linq;
-using Mono.Cecil;
-using Mono.Cecil.Cil;
-using Mono;
-
-public partial class ILDAsm
-{
-       public static int Main (String[] args) {
-               if (args.Length != 1) {
-                       Console.Error.WriteLine ("Usage: ildasm <assembly file>");
-                       return 1;
-               }
-
-               var inst = new ILDAsm ();
-               return inst.Run (args);
-       }
-
-       public AssemblyDefinition ad;
-       public ModuleDefinition main;
-       public TextWriter os;
-       public int indent;
-       public List<FieldDefinition> fields_with_rva = new List<FieldDefinition> ();
-
-       public void WriteLine () {
-               os.WriteLine ();
-       }
-
-       public void WriteLine (String s) {
-               for (int i = 0; i < indent; ++i)
-                       os.Write ("  ");
-               os.WriteLine (s);
-       }
-
-       public int Run (String[] args) {
-               ad = AssemblyDefinition.ReadAssembly (args [0]);
-
-               main = ad.MainModule;
-
-               os = Console.Out;
-
-               // Emit assembly references
-               EmitAssemblyReferences ();
-               EmitAssembly ();
-               EmitModule ();
-               foreach (var typedef in main.Types) {
-                       // FIXME:
-                       if (typedef.Name == "<Module>")
-                               EmitGlobals (typedef);
-                       else
-                               EmitType (typedef);
-               }
-               EmitData ();
-
-               return 0;
-       }
-
-       string EscapeName (string s) {
-               bool escape = false;
-
-               if (s.Contains ("/")) {
-                       string[] parts = s.Split ('/');
-                       var sb = new StringBuilder ();
-                       for (int i = 0; i < parts.Length; ++i) {
-                               if (i > 0)
-                                       sb.Append ("/");
-                               sb.Append (EscapeName (parts [i]));
-                       }
-                       return sb.ToString ();
-               }
-                       
-               foreach (char c in s) {
-                       if (!((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || (c == '_') || (c == '.') || (c == '`')))
-                               escape = true;
-               }
-               if (!escape && keyword_table.ContainsKey (s))
-                       escape = true;
-               if (escape)
-                       return "'" + s + "'";
-               else
-                       return s;
-       }
-
-       string EscapeString (string s) {
-               return s.Replace ("\\", "\\\\").Replace ("\"", "\\\"");
-       }
-
-       void EmitScope (IMetadataScope s, StringBuilder sb) {
-               if (s is AssemblyNameReference) {
-                       AssemblyNameReference aname = (s as AssemblyNameReference);
-                       sb.Append ("[" + EscapeName (aname.Name) + "]");
-               } else if (s is ModuleDefinition) {
-                       if (s != main)
-                               throw new NotImplementedException ();
-               } else {
-                       throw new NotImplementedException (s.GetType ().ToString ());
-               }
-       }
-
-       string StringifyTypeRef (TypeReference t) {
-               switch (t.MetadataType) {
-               case MetadataType.Void:
-                       return "void";
-               case MetadataType.Boolean:
-                       return "bool";
-               case MetadataType.Char:
-                       return "char";
-               case MetadataType.SByte:
-                       return "int8";
-               case MetadataType.Byte:
-                       return "unsigned int8";
-               case MetadataType.Int16:
-                       return "int16";
-               case MetadataType.UInt16:
-                       return "unsigned int16";
-               case MetadataType.Int32:
-                       return "int32";
-               case MetadataType.UInt32:
-                       return "unsigned int32";
-               case MetadataType.Int64:
-                       return "int64";
-               case MetadataType.UInt64:
-                       return "unsigned int64";
-               case MetadataType.Single:
-                       return "float32";
-               case MetadataType.Double:
-                       return "float64";
-               case MetadataType.String:
-                       return "string";
-               case MetadataType.IntPtr:
-                       return "native int";
-               case MetadataType.UIntPtr:
-                       //return "unsigned native int";
-                       return "[mscorlib]System.UIntPtr";
-               case MetadataType.TypedByReference:
-                       return "typedref";
-               case MetadataType.Class:
-               case MetadataType.Object:
-               case MetadataType.ValueType: {
-                       var sb = new StringBuilder ();
-                       IMetadataScope s = t.Scope;
-                       if (t.MetadataType == MetadataType.ValueType)
-                               sb.Append ("valuetype ");
-                       else
-                               sb.Append ("class ");
-                       EmitScope (s, sb);
-                       sb.Append (EscapeName (t.FullName));
-                       return sb.ToString ();
-               }
-               case MetadataType.Array: {
-                       ArrayType at = (t as ArrayType);
-                       
-                       if (at.IsVector)
-                               return StringifyTypeRef (at.ElementType) + "[]";
-
-                       var suffix = new StringBuilder ();
-                       suffix.Append ("[");
-                       for (int i = 0; i < at.Dimensions.Count; i++) {
-                               if (i > 0)
-                                       suffix.Append (",");
-
-                               suffix.Append (at.Dimensions [i].ToString ());
-                       }
-                       suffix.Append ("]");
-
-                       return StringifyTypeRef (at.ElementType) + suffix;
-               }
-               case MetadataType.Pointer:
-                       return StringifyTypeRef ((t as TypeSpecification).ElementType) + "*";
-               case MetadataType.ByReference:
-                       return StringifyTypeRef ((t as TypeSpecification).ElementType) + "&";
-               case MetadataType.Pinned:
-                       return StringifyTypeRef ((t as TypeSpecification).ElementType) + " pinned";
-               case MetadataType.GenericInstance: {
-                       var sb = new StringBuilder ();
-                       var inst = (t as GenericInstanceType);
-                       sb.Append (StringifyTypeRef (inst.ElementType));
-                       sb.Append ("<");
-                       int aindex = 0;
-                       foreach (TypeReference arg in inst.GenericArguments) {
-                               if (aindex > 0)
-                                       sb.Append (", ");
-                               sb.Append (StringifyTypeRef (arg));
-                               aindex ++;
-                       }
-                       sb.Append (">");
-                       return sb.ToString ();
-               }
-               case MetadataType.Var:
-                       return "!" + (t as GenericParameter).Position;
-               case MetadataType.MVar:
-                       return "!!" + (t as GenericParameter).Position;
-               case MetadataType.Sentinel:
-                       return "..., " + StringifyTypeRef ((t as SentinelType).ElementType);
-               case MetadataType.RequiredModifier: {
-                       var mod = (t as RequiredModifierType);
-                       if (mod.ModifierType.MetadataType != MetadataType.Class)
-                               throw new NotImplementedException ();
-                       var sb = new StringBuilder ();
-                       sb.Append (StringifyTypeRef (mod.ElementType));
-                       sb.Append (" modreq (");
-                       EmitScope (mod.ModifierType.Scope, sb);
-                       sb.Append (EscapeName (mod.ModifierType.FullName));
-                       sb.Append (")");
-                       return sb.ToString ();
-               }
-               default:
-                       throw new NotImplementedException ("" + t.MetadataType + " " + t.ToString ());
-               }
-       }
-
-       // Same as StringifyTypeRef, but emit primitive types as [mscorlib]...
-       string StringifyTypeRefNoPrim (TypeReference t) {
-               switch (t.MetadataType) {
-               case MetadataType.Void:
-               case MetadataType.Boolean:
-               case MetadataType.Char:
-               case MetadataType.SByte:
-               case MetadataType.Byte:
-               case MetadataType.Int16:
-               case MetadataType.UInt16:
-               case MetadataType.Int32:
-               case MetadataType.UInt32:
-               case MetadataType.Int64:
-               case MetadataType.UInt64:
-               case MetadataType.Single:
-               case MetadataType.Double:
-               case MetadataType.String:
-               case MetadataType.IntPtr:
-               case MetadataType.UIntPtr:
-               case MetadataType.TypedByReference:
-                       return "[mscorlib]" + t.FullName;
-               default:
-                       return StringifyTypeRef (t);
-               }
-       }
-
-       string StringifyMethodRef (MethodReference method) {
-               var sb = new StringBuilder ();
-               if (method.CallingConvention == MethodCallingConvention.VarArg)
-                       sb.Append ("vararg ");
-               if (method.HasThis)
-                       sb.Append ("instance ");
-               sb.Append (StringifyTypeRef (method.ReturnType));
-               sb.Append (' ');
-               sb.Append (StringifyTypeRefNoPrim (method.DeclaringType));
-               sb.Append ("::");
-               sb.Append (EscapeName (method.Name));
-               if (method is GenericInstanceMethod) {
-                       sb.Append ("<");
-                       int idx = 0;
-                       foreach (var gpar in (method as GenericInstanceMethod).GenericArguments) {
-                               if (idx > 0)
-                                       sb.Append (", ");
-                               sb.Append (StringifyTypeRef (gpar));
-                               idx ++;
-                       }
-                       sb.Append (">");
-               }
-               sb.Append ('(');
-               int par_index = 0;
-               foreach (ParameterReference par in method.Parameters) {
-                       if (par_index > 0)
-                               sb.Append (", ");
-                       sb.Append (StringifyTypeRef (par.ParameterType));
-                       par_index ++;
-               }
-               sb.Append (")");
-               return sb.ToString ();
-       }
-
-       string StringifyFieldRef (FieldReference field) {
-               var sb = new StringBuilder ();
-               sb.Append (StringifyTypeRef (field.FieldType));
-               sb.Append (' ');
-               sb.Append (StringifyTypeRefNoPrim (field.DeclaringType));
-               sb.Append ("::");
-               sb.Append (EscapeName (field.Name));
-               return sb.ToString ();
-       }
-
-       void WriteBlob (byte[] blob) {
-               int idx = 0;
-               while (idx < blob.Length) {
-                       int len = idx + 16 < blob.Length ? 16 : blob.Length - idx;
-                       var sb = new StringBuilder ();
-                       var sb2 = new StringBuilder ();
-                       for (int i = idx; i < idx + len; ++i) {
-                               sb.Append (String.Format ("{0:X2} ", blob [i]));
-                               if (Char.IsLetterOrDigit ((char)blob [i]))
-                                       sb2.Append ((char)blob [i]);
-                               else
-                                       sb2.Append ('.');
-                       }
-                       for (int i = 0; i < 16 - len; ++i)
-                               sb.Append ("   ");
-                       if (len < 16 || idx + 16 == blob.Length)
-                               sb.Append (')');
-                       else
-                               sb.Append (' ');
-                       WriteLine (String.Format ("{0} // {1}", sb.ToString (), sb2.ToString ()));
-                       idx += 16;
-               }
-       }
-
-       string Map (Dictionary <uint, string> map, uint val) {
-               string s;
-
-               if (map.TryGetValue (val, out s))
-                       return s;
-               else
-                       throw new NotImplementedException ("Value '" + val + "' not supported.");
-       }
-
-       string MapFlags (Dictionary <uint, string> map, uint val) {
-               var sb = new StringBuilder ();
-               foreach (var flag in map.Keys)
-                       if ((val & flag) != 0)
-                               sb.Append (map [flag]);
-               return sb.ToString ();
-       }
-
-       void EmitAssemblyReferences () {
-               foreach (var aname in main.AssemblyReferences) {
-                       os.WriteLine (".assembly extern " + EscapeName (aname.Name));
-                       os.WriteLine ("{");
-                       indent ++;
-                       Version v = aname.Version;
-                       WriteLine (String.Format (".ver {0}:{1}:{2}:{3}", v.Major, v.Minor, v.Build, v.Revision));
-                       byte [] token = aname.PublicKeyToken;
-                       if (token.Length > 0) {
-                               StringBuilder sb = new StringBuilder ();
-                               StringBuilder sb2 = new StringBuilder ();
-                               for (int i = 0; i < token.Length; ++i) {
-                                       if (i > 0)
-                                               sb.Append (" ");
-                                       sb.Append (String.Format ("{0:X2}", token [i]));
-                                       if (Char.IsLetterOrDigit ((char)token [i]))
-                                               sb2.Append ((char)token [i]);
-                                       else
-                                               sb2.Append ('.');
-                               }
-                               WriteLine (String.Format (".publickeytoken = ({0}) // {1}", sb, sb2));
-                       }
-                       indent --;
-                       WriteLine ("}");
-               }
-       }
-
-       void EmitCattrs (ICustomAttributeProvider prov) {
-               foreach (var cattr in prov.CustomAttributes) {
-                       WriteLine (String.Format (".custom {0} = (", StringifyMethodRef (cattr.Constructor)));
-                       indent += 3;
-                       byte[] blob = cattr.GetBlob ();
-                       WriteBlob (blob);
-                       indent -= 3;
-               }
-       }
-
-       void EmitSecDeclarations (ISecurityDeclarationProvider prov) {
-               foreach (var sec in prov.SecurityDeclarations) {
-                       string act_str = null;
-                       if (!sec_action_to_string.TryGetValue (sec.Action, out act_str))
-                               throw new NotImplementedException (sec.Action.ToString ());
-                       WriteLine (".permissionset " + act_str + " = (");
-                       WriteBlob (sec.GetBlob ());
-               }
-       }
-
-       void EmitAssembly () {
-               AssemblyNameDefinition aname = ad.Name;
-
-               WriteLine (".assembly " + EscapeName (aname.Name));
-               WriteLine ("{");
-               indent ++;
-               EmitCattrs (ad);
-               EmitSecDeclarations (ad);
-               WriteLine (String.Format (".hash algorithm 0x{0:X8}", (int)aname.HashAlgorithm));
-               Version v = aname.Version;
-               WriteLine (String.Format (".ver {0}:{1}:{2}:{3}", v.Major, v.Minor, v.Build, v.Revision));
-               byte[] token = aname.PublicKey;
-               if (token != null && token.Length > 0) {
-                       StringBuilder sb = new StringBuilder ();
-                       StringBuilder sb2 = new StringBuilder ();
-                       for (int i = 0; i < token.Length; ++i) {
-                               if (i > 0)
-                                       sb.Append (" ");
-                               sb.Append (String.Format ("{0:X2}", token [i]));
-                               if (Char.IsLetterOrDigit ((char)token [i]))
-                                       sb2.Append ((char)token [i]);
-                               else
-                                       sb2.Append ('.');
-                       }
-                       WriteLine (String.Format (".publickey = ({0}) // {1}", sb, sb2));
-               }
-               indent --;
-               WriteLine ("}");
-       }
-
-       void EmitModule () {
-               WriteLine (".module " + EscapeName (main.Name) + " // GUID = " + "{" + main.Mvid.ToString ().ToUpper () + "}");
-               EmitCattrs (main);
-       }
-
-       string StringifyTypeAttrs (TypeAttributes attrs) {
-               var sb = new StringBuilder ();
-
-               sb.Append (Map (type_sem_map, (uint)(attrs & TypeAttributes.ClassSemanticMask)));
-               sb.Append (Map (type_access_map, (uint)(attrs & TypeAttributes.VisibilityMask)));
-               sb.Append (Map (type_layout_map, (uint)(attrs & TypeAttributes.LayoutMask)));
-               sb.Append (Map (type_string_format_map, (uint)(attrs & TypeAttributes.StringFormatMask)));
-               sb.Append (MapFlags (type_flag_map, (uint)(attrs)));
-
-               return sb.ToString ();
-       }
-
-       void EmitGenParams (IGenericParameterProvider prov, StringBuilder sb) {
-               sb.Append ("<");
-               int idx = 0;
-               foreach (var gpar in prov.GenericParameters) {
-                       if (idx > 0)
-                               sb.Append (", ");
-                       if (gpar.HasDefaultConstructorConstraint)
-                               sb.Append (".ctor ");
-                       if (gpar.HasNotNullableValueTypeConstraint)
-                               sb.Append ("valuetype ");
-                       if (gpar.HasReferenceTypeConstraint)
-                               sb.Append ("class ");
-                       if (gpar.HasConstraints) {
-                               int idx2 = 0;
-                               sb.Append ("(");
-                               foreach (var c in gpar.Constraints) {
-                                       if (idx2 > 0)
-                                               sb.Append (", ");
-                                       sb.Append (StringifyTypeRef (c));
-                                       idx2 ++;
-                               }
-                               sb.Append (")");
-                       }
-                       sb.Append (EscapeName (gpar.Name));
-                       idx ++;
-               }
-               sb.Append (">");
-       }
-
-       void EmitGenParamCattrs (IGenericParameterProvider prov) {
-               foreach (var gpar in prov.GenericParameters) {
-                       if (gpar.HasCustomAttributes) {
-                               WriteLine (".param type " + gpar.Name);
-                               EmitCattrs (gpar);
-                       }
-               }
-       }
-
-       void EmitGlobals (TypeDefinition td) {
-               foreach (var md in td.Methods)
-                       EmitMethod (md);
-       }
-
-       void EmitType (TypeDefinition td) {
-               WriteLine ("");
-
-               if (td.MetadataType != MetadataType.Class && td.MetadataType != MetadataType.ValueType)
-                       throw new NotImplementedException (td.MetadataType.ToString ());
-
-               // FIXME: Group types by namespaces
-               if (!td.IsNested && td.Namespace != null && td.Namespace != String.Empty) {
-                       WriteLine (".namespace " + EscapeName (td.Namespace));
-                       WriteLine ("{");
-                       indent ++;
-               }
-
-               var sb = new StringBuilder ();
-               sb.Append (".class ");
-               sb.Append (StringifyTypeAttrs (td.Attributes));
-               sb.Append (EscapeName (td.Name));
-               if (td.HasGenericParameters)
-                       EmitGenParams (td, sb);
-               WriteLine (sb.ToString ());
-               indent ++;
-               if (td.BaseType != null)
-                       WriteLine ("extends " + StringifyTypeRef (td.BaseType));
-               if (td.HasInterfaces) {
-                       int idx = 0;
-                       sb = new StringBuilder ();
-                       foreach (TypeReference t in td.Interfaces) {
-                               if (idx > 0)
-                                       sb.Append (", ");
-                               sb.Append (StringifyTypeRef (t));
-                               idx ++;
-                       }
-                       WriteLine (String.Format ("implements {0}", sb.ToString ()));
-               }
-               indent --;
-               WriteLine ("{");
-               indent ++;
-               if (td.PackingSize != -1)
-                       WriteLine (".pack " + td.PackingSize);
-               if (td.ClassSize != -1)
-                       WriteLine (".size " + td.ClassSize);
-               EmitCattrs (td);
-               EmitGenParamCattrs (td);
-               EmitSecDeclarations (td);
-               foreach (var fd in td.Fields)
-                       EmitField (fd);
-               foreach (var md in td.Methods)
-                       EmitMethod (md);
-               foreach (var p in td.Properties)
-                       EmitProperty (p);
-               foreach (var e in td.Events)
-                       EmitEvent (e);
-               foreach (var t in td.NestedTypes)
-                       EmitType (t);
-               indent --;
-               WriteLine ("}");
-
-               if (!td.IsNested && td.Namespace != null && td.Namespace != String.Empty) {
-                       WriteLine ("}");
-                       indent --;
-               }
-       }
-
-       string StringifyFieldAttributes (FieldAttributes attrs) {
-               var sb = new StringBuilder ();
-               sb.Append (Map (field_access_map, (uint)(attrs & FieldAttributes.FieldAccessMask)));
-               sb.Append (MapFlags (field_flag_map, (uint)(attrs)));
-               return sb.ToString ();
-       }
-
-       void EmitField (FieldDefinition fd) {
-               var sb = new StringBuilder ();
-               sb.Append (".field ");
-               if (fd.Offset != -1)
-                       sb.Append ("[" + fd.Offset + "] ");
-               sb.Append (StringifyFieldAttributes (fd.Attributes));
-               if (fd.HasMarshalInfo) {
-                       sb.Append (" ");
-                       sb.Append (StringifyMarshalInfo (fd.MarshalInfo));
-               }
-               sb.Append (" ");
-               sb.Append (StringifyTypeRef (fd.FieldType));
-               sb.Append (" ");
-               sb.Append (EscapeName (fd.Name));
-               if (fd.HasConstant)
-                       EmitConstant (fd.Constant, sb);
-               if (fd.RVA != 0) {
-                       sb.Append (String.Format (" at D_{0:x8}", fd.RVA));
-                       fields_with_rva.Add (fd);
-               }
-               WriteLine (sb.ToString ());
-               EmitCattrs (fd);
-       }
-
-       string StringifyMethodAttributes (MethodAttributes attrs) {
-               var sb = new StringBuilder ();
-               sb.Append (Map (method_access_map, (uint)(attrs & MethodAttributes.MemberAccessMask)));
-               sb.Append (MapFlags (method_flag_map, (uint)(attrs)));
-               return sb.ToString ();
-       }
-
-       string StringifyMethodImplAttributes (MethodImplAttributes attrs) {
-               var sb = new StringBuilder ();
-               sb.Append (Map (method_impl_map, (uint)(attrs & MethodImplAttributes.CodeTypeMask)));
-               sb.Append (Map (method_managed_map, (uint)(attrs & MethodImplAttributes.ManagedMask)));
-               sb.Append (MapFlags (method_impl_flag_map, (uint)(attrs)));
-
-               return sb.ToString ();
-       }
-
-       string StringifyTypeNameReflection (TypeReference t) {
-               if (t.MetadataType != MetadataType.Class)
-                       throw new NotImplementedException ();
-               IMetadataScope s = t.Scope;
-               if (!(s is ModuleDefinition))
-                       throw new NotImplementedException ();
-               return t.FullName.Replace ("/", "+");
-       }
-
-       string StringifyMarshalInfo (MarshalInfo mi) {
-               var sb = new StringBuilder ();
-
-               sb.Append ("marshal (");
-
-               string s = null;
-               switch (mi.NativeType) {
-               case NativeType.Array: {
-                       var ami = (mi as ArrayMarshalInfo);
-                       if (native_type_to_str.TryGetValue (ami.ElementType, out s)) {
-                               sb.Append (s);
-                       }
-                       sb.Append ("[");
-                       //Console.WriteLine ("// XXX: " + ami.Size + " " + ami.SizeParameterIndex + " " + ami.SizeParameterMultiplier);
-
-                       /*
-                        * Comments in metadata.c:
-                        * So if (param_num == 0) && (num_elem > 0), then
-                        * elem_mult == 0 -> the array size is num_elem
-                        * elem_mult == 1 -> the array size is @param_num + num_elem
-                        */
-                       if (ami.Size != -1 && ami.Size != 0)
-                               sb.Append (ami.Size.ToString ());
-                       if (ami.SizeParameterMultiplier != 0 && ami.SizeParameterIndex != -1)
-                               sb.Append ("+" + ami.SizeParameterIndex.ToString ());
-                       sb.Append ("]");
-                       break;
-               }
-               case NativeType.FixedArray: {
-                       var ami = (mi as FixedArrayMarshalInfo);
-                       /*
-                       if (native_type_to_str.TryGetValue (ami.ElementType, out s)) {
-                               sb.Append (s);
-                       }
-                       */
-                       sb.Append ("fixed array [" + ami.Size + "]");
-                       break;
-               }
-               case NativeType.FixedSysString: {
-                       var ami = (mi as FixedSysStringMarshalInfo);
-                       sb.Append ("fixed sysstring [" + ami.Size + "]");
-                       break;
-               }
-               case NativeType.SafeArray: {
-                       var sami = (mi as SafeArrayMarshalInfo);
-                       sb.Append ("safearray ");
-                       switch (sami.ElementType) {
-                       case VariantType.Variant:
-                               sb.Append ("variant");
-                               break;
-                       default:
-                               throw new NotImplementedException ();
-                       }
-                       break;
-               }
-               case NativeType.CustomMarshaler: {
-                       var cmi = (mi as CustomMarshalInfo);
-
-                       if (cmi.Guid != Guid.Empty || cmi.UnmanagedType != String.Empty)
-                               throw new NotImplementedException ();
-                       sb.Append ("custom (\"" + StringifyTypeNameReflection (cmi.ManagedType) + "\", \"" + EscapeString (cmi.Cookie) + "\")");
-                       break;
-               }
-               default:
-                       if (native_type_to_str.TryGetValue (mi.NativeType, out s))
-                               sb.Append (s);
-                       else
-                               throw new NotImplementedException (mi.NativeType.ToString ());
-                       break;
-               }
-               sb.Append (")");
-               return sb.ToString ();
-       }
-
-       string StringifySignature (MethodDefinition md) {
-               var sb = new StringBuilder ();
-               int pindex = 0;
-               foreach (var par in md.Parameters) {
-                       if (pindex > 0)
-                               sb.Append (", ");
-                       if (par.IsIn)
-                               sb.Append ("[in] ");
-                       if (par.IsOut)
-                               sb.Append ("[out] ");
-                       if (par.IsOptional)
-                               sb.Append ("[opt] ");
-                       sb.Append (StringifyTypeRef (par.ParameterType));
-                       if (par.HasMarshalInfo) {
-                               sb.Append (" ");
-                               sb.Append (StringifyMarshalInfo (par.MarshalInfo));
-                       }
-                       sb.Append (" ");
-                       sb.Append (EscapeName (par.Name));
-                       pindex ++;
-               }
-
-               return sb.ToString ();
-       }
-
-       string StringifyPInvokeAttrs (PInvokeAttributes attrs) {
-               var sb = new StringBuilder ();
-               sb.Append (Map (pinvoke_char_set_map, (uint)(attrs & PInvokeAttributes.CharSetMask)));
-               sb.Append (Map (pinvoke_cconv_map, (uint)(attrs & PInvokeAttributes.CallConvMask)));
-               sb.Append (MapFlags (pinvoke_flags_map, (uint)(attrs)));
-               return sb.ToString ();
-       }               
-
-       string StringifyCallingConvention (MethodCallingConvention cconv) {
-               switch (cconv) {
-               case MethodCallingConvention.Default:
-                       return "default";
-               case MethodCallingConvention.VarArg:
-                       return "vararg";
-               default:
-                       throw new NotImplementedException (cconv.ToString ());
-               }
-       }
-
-       void EmitMethod (MethodDefinition md) {
-               int idx;
-
-               WriteLine ();
-               var pinvoke_sb = new StringBuilder ();
-               if ((uint)(md.Attributes & MethodAttributes.PInvokeImpl) != 0) {
-                       var pinvoke = md.PInvokeInfo;
-                       pinvoke_sb.Append ("pinvokeimpl (\"" + pinvoke.Module.Name + "\" as \"" + pinvoke.EntryPoint + "\" " + StringifyPInvokeAttrs (pinvoke.Attributes) + " )");
-               }
-               WriteLine (String.Format (".method {0}{1}", StringifyMethodAttributes (md.Attributes), pinvoke_sb));
-
-               var sb = new StringBuilder ();
-               sb.Append ("       ");
-               if (!md.IsStatic)
-                       sb.Append ("instance ");                
-               // CallingConvention seems to be 32
-               sb.Append (StringifyCallingConvention ((MethodCallingConvention)((uint)md.CallingConvention & 0xf)));
-               sb.Append (" ");
-               sb.Append (StringifyTypeRef (md.ReturnType));
-               sb.Append (" ");
-               if (md.MethodReturnType.HasMarshalInfo) {
-                       sb.Append (StringifyMarshalInfo (md.MethodReturnType.MarshalInfo));
-                       sb.Append (" ");
-               }
-               sb.Append (EscapeName (md.Name));
-               if (md.HasGenericParameters)
-                       EmitGenParams (md, sb);
-               WriteLine (String.Format ("{0} ({1}) {2}", sb, StringifySignature (md), StringifyMethodImplAttributes (md.ImplAttributes)));
-               WriteLine ("{");
-               indent ++;
-               foreach (var ov in md.Overrides)
-                       WriteLine (".override method " + StringifyMethodRef (ov));
-               EmitCattrs (md);
-               EmitGenParamCattrs (md);
-               EmitSecDeclarations (md);
-               idx = 0;
-               foreach (var par in md.Parameters) {
-                       if (par.HasCustomAttributes) {
-                               WriteLine (".param [" + (idx + 1) + "]");
-                               EmitCattrs (par);
-                       }
-                       if (par.HasConstant) {
-                               sb = new StringBuilder ();
-                               EmitConstant (par.Constant, sb);
-                               WriteLine (".param [" + (idx + 1) + "]" + sb);
-                       }
-                       idx ++;
-               }
-               // FIXME: Print RVA, code size
-               if (md == main.EntryPoint)
-                       WriteLine (".entrypoint");
-               if (md.HasBody) {
-                       MethodBody body = md.Body;
-                       WriteLine (".maxstack " + body.MaxStackSize);
-                       if (body.InitLocals)
-                               WriteLine (".locals init (");
-                       else
-                               WriteLine (".locals (");
-                       indent ++;
-                       int vindex = 0;
-                       foreach (var v in body.Variables) {
-                               WriteLine (StringifyTypeRef (v.VariableType) + " " + (v.Name == "" ? "V_" + v.Index : v.Name) + (vindex + 1 < body.Variables.Count ? ", " : ""));
-                               vindex ++;
-                       }
-                       indent --;
-                       WriteLine (")");
-
-                       List<ExceptionHandler> handlers = body.ExceptionHandlers.ToList ();
-                       List<ExceptionHandler> reverse_handlers = body.ExceptionHandlers.Reverse ().ToList ();
-
-                       var trys = new Dictionary<ExceptionHandler, bool> ();
-                       if (handlers.Count > 0)
-                               trys [handlers [0]] = true;
-                       for (int i = 1; i < handlers.Count; ++i) {
-                               trys [handlers [i]] = true;
-                               for (int j = 0; j < i; ++j) {
-                                       if (handlers [i].TryStart == handlers [j].TryStart && handlers [i].TryEnd == handlers [j].TryEnd) {
-                                               trys [handlers [i]] = false;
-                                               break;
-                                       }
-                               }
-                       }
-
-                       idx = 0;
-                       var handler_to_idx = new Dictionary<ExceptionHandler, int> ();
-                       foreach (ExceptionHandler eh in body.ExceptionHandlers) {
-                               handler_to_idx [eh] = idx;
-                               idx ++;
-                       }
-
-                       foreach (var ins in body.Instructions) {
-                               foreach (var eh in handlers) {
-                                       if (eh.TryEnd == ins && trys [eh]) {
-                                               indent --;
-                                               WriteLine ("} // end try " + handler_to_idx [eh]);
-                                       }
-
-                                       if (eh.HandlerEnd == ins) {
-                                               indent --;
-                                               WriteLine ("} // end handler " + handler_to_idx [eh]);
-                                       }
-                               }                       
-
-                               foreach (var eh in reverse_handlers) {
-                                       if (eh.TryStart == ins && trys [eh]) {
-                                               WriteLine (".try { // " + handler_to_idx [eh]);
-                                               indent ++;
-                                       }
-                                       if (eh.HandlerStart == ins) {
-                                               string type_str = null;
-                                               switch (eh.HandlerType) {
-                                               case ExceptionHandlerType.Catch:
-                                                       type_str = "catch";
-                                                       break;
-                                               case ExceptionHandlerType.Finally:
-                                                       type_str = "finally";
-                                                       break;
-                                               default:
-                                                       throw new NotImplementedException (eh.HandlerType.ToString ());
-                                               }
-                                               if (eh.CatchType == null)
-                                                       WriteLine (type_str + " { // " + handler_to_idx [eh]);
-                                               else
-                                                       WriteLine (type_str + " " + StringifyTypeRef (eh.CatchType) + " { // " + handler_to_idx [eh]);
-                                               indent ++;
-                                       }
-                               }
-
-                               WriteLine (StringifyIns (ins));
-                       }
-               }
-               indent --;
-               WriteLine ("}");
-       }
-
-       // Based on Instruction:ToString ()
-       public string StringifyIns (Instruction ins) {
-               var sb = new StringBuilder ();
-
-               AppendLabel (sb, ins);
-               sb.Append (':');
-               sb.Append ("  ");
-               sb.Append (ins.OpCode.Name);
-
-               if (ins.Operand == null)
-                       return sb.ToString ();
-
-               sb.Append (' ');
-
-               object operand = ins.Operand;
-               switch (ins.OpCode.OperandType) {
-               case OperandType.ShortInlineBrTarget:
-               case OperandType.InlineBrTarget:
-                       AppendLabel (sb, (Instruction) operand);
-                       break;
-               case OperandType.InlineSwitch:
-                       var labels = (Instruction []) operand;
-                       sb.Append ("(");
-                       for (int i = 0; i < labels.Length; i++) {
-                               if (i > 0)
-                                       sb.Append (',');
-
-                               AppendLabel (sb, labels [i]);
-                       }
-                       sb.Append (")");
-                       break;
-                       case OperandType.InlineString:
-                               sb.Append ('\"');
-                               sb.Append (EscapeString ((string)operand));
-                               sb.Append ('\"');
-                               break;
-               default:
-                       if (operand is MethodReference) {
-                               if (ins.OpCode == OpCodes.Ldtoken)
-                                       sb.Append ("method ");
-                               sb.Append (StringifyMethodRef ((MethodReference)operand));
-                       } else if (operand is TypeReference)
-                               sb.Append (StringifyTypeRef ((TypeReference)operand));
-                       else if (operand is VariableDefinition)
-                               sb.Append (operand.ToString ());
-                       else if (operand is FieldReference) {
-                               if (ins.OpCode == OpCodes.Ldtoken)
-                                       sb.Append ("field ");
-                               sb.Append (StringifyFieldRef ((FieldReference)operand));
-                       } else if (operand is ParameterDefinition) {
-                               var pd = (operand as ParameterDefinition);
-                               sb.Append (pd.Index + (pd.Method.HasThis ? 1 : 0));
-                       }
-                       else {
-                               EmitConstantOperand (operand, sb);
-                       }
-                       break;
-                       }
-
-               return sb.ToString ();
-       }
-
-       static void AppendLabel (StringBuilder builder, Instruction instruction) {
-               builder.Append ("IL_");
-               builder.Append (instruction.Offset.ToString ("x4"));
-       }
-
-       void EmitProperty (PropertyDefinition p) {
-               // FIXME: attributes
-
-               var sb = new StringBuilder ();
-               sb.Append (".property ");
-               if (p.HasThis)
-                       sb.Append ("instance ");
-               sb.Append (StringifyTypeRef (p.PropertyType));
-               sb.Append (" ");
-               sb.Append (EscapeName (p.Name));
-               sb.Append ("(");
-               int idx = 0;
-               foreach (var par in p.Parameters) {
-                       if (idx > 0)
-                               sb.Append (", ");
-                       sb.Append (StringifyTypeRef (par.ParameterType));
-                       idx ++;
-               }
-               sb.Append (")");
-               WriteLine (sb.ToString ());
-               WriteLine ("{");
-               indent ++;
-               EmitCattrs (p);
-               if (p.SetMethod != null)
-                       WriteLine (".set " + StringifyMethodRef (p.SetMethod));
-               if (p.GetMethod != null)
-                       WriteLine (".get " + StringifyMethodRef (p.GetMethod));
-               if (p.HasOtherMethods)
-                       throw new NotImplementedException ();
-               indent --;
-               WriteLine ("}");
-       }
-
-       void EmitEvent (EventDefinition e) {
-               WriteLine (".event " + StringifyTypeRef (e.EventType) + " " + EscapeName (e.Name));
-               WriteLine ("{");
-               indent ++;
-               if (e.AddMethod != null)
-                       WriteLine (".addon " + StringifyMethodRef (e.AddMethod));
-               if (e.RemoveMethod != null)
-                       WriteLine (".removeon " + StringifyMethodRef (e.RemoveMethod));
-               foreach (var m in e.OtherMethods)
-                       WriteLine (".other " + StringifyMethodRef (m));
-               indent --;
-               WriteLine ("}");
-       }
-
-       void EmitData () {
-               foreach (var fd in fields_with_rva) {
-                       WriteLine (String.Format (".data D_{0:x8} = bytearray (", fd.RVA));
-                       WriteBlob (fd.InitialValue);
-               }
-       }
-
-       void EmitConstantOperand (object operand, StringBuilder sb) {
-               if (operand is double) {
-                       double d = (double)operand;
-                       // FIXME:
-                       //if (Double.IsNaN (d) || Double.IsInfinity (d)) {
-                       {
-                               byte[] b = DataConverter.GetBytesLE (d);
-                               sb.Append ("(");
-                               int index = 0;
-                               for (int i = 0; i < b.Length; ++i) {
-                                       if (index > 0)
-                                               sb.Append (" ");
-                                       sb.Append (String.Format ("{0:x2}", b [i]));
-                                       index ++;
-                               }
-                               sb.Append (")");
-                       }
-               } else if (operand is float) {
-                       float d = (float)operand;
-                       // FIXME:
-                       //if (Single.IsNaN (d) || Single.IsInfinity (d)) {
-                       {
-                               byte[] b = DataConverter.GetBytesLE (d);
-                               sb.Append ("(");
-                               int index = 0;
-                               for (int i = 0; i < b.Length; ++i) {
-                                       if (index > 0)
-                                               sb.Append (" ");
-                                       sb.Append (String.Format ("{0:x2}", b [i]));
-                                       index ++;
-                               }
-                               sb.Append (")");
-                       }
-               } else if (operand.GetType ().Assembly == typeof (int).Assembly)
-                       sb.Append (operand.ToString ());
-               else
-                       throw new NotImplementedException (operand.GetType ().ToString ());
-       }
-
-       void EmitConstant (object o, StringBuilder sb) {
-               if (o is byte)
-                       sb.Append (String.Format (" = int8(0x{0:x2})", (byte)o));
-               else if (o is sbyte)
-                       sb.Append (String.Format (" = int8(0x{0:x2})", (sbyte)o));
-               else if (o is short)
-                       sb.Append (String.Format (" = int16(0x{0:x4})", (short)o));
-               else if (o is ushort)
-                       sb.Append (String.Format (" = int16(0x{0:x4})", (ushort)o));
-               else if (o is int)
-                       sb.Append (String.Format (" = int32(0x{0:x8})", (int)o));
-               else if (o is uint)
-                       sb.Append (String.Format (" = int32(0x{0:x8})", (uint)o));
-               else if (o is long)
-                       sb.Append (String.Format (" = int64(0x{0:x8})", (long)o));
-               else if (o is ulong)
-                       sb.Append (String.Format (" = int64(0x{0:x8})", (ulong)o));
-               else if (o is string)
-                       sb.Append (String.Format (" = \"{0}\"", EscapeString ((string)o)));
-               else if (o is bool)
-                       sb.Append (String.Format (" = bool({0})", (bool)o ? "true" : " false"));
-               else if (o is char)
-                       sb.Append (String.Format (" = char(0x{0:x4})", (int)(char)o));
-               else if (o is double)
-                       // FIXME:
-                       sb.Append (String.Format (" = float64({0:f})", (double)o));
-               else if (o is float)
-                       // FIXME:
-                       sb.Append (String.Format (" = float32({0:f})", (float)o));
-               else if (o == null)
-                       sb.Append ("= nullref");
-               else
-                       throw new NotImplementedException ("" + o.GetType ().ToString () + " " + o.ToString ());
-       }
-}
diff --git a/mcs/tools/ildasm/ildasm.exe.sources b/mcs/tools/ildasm/ildasm.exe.sources
deleted file mode 100644 (file)
index 937aaea..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-ildasm.cs
-tables.cs
-DataConverter.cs
-
-
diff --git a/mcs/tools/ildasm/tables.cs b/mcs/tools/ildasm/tables.cs
deleted file mode 100644 (file)
index dd8d8c6..0000000
+++ /dev/null
@@ -1,606 +0,0 @@
-using System;
-using System.IO;
-using System.Text;
-using System.Collections.Generic;
-using System.Linq;
-using Mono.Cecil;
-using Mono.Cecil.Cil;
-using Mono;
-
-/*
- * This partial class contains the tables used by the disassembler.
- */
-public partial class ILDAsm {
-
-       Dictionary<uint, string> type_access_map = new Dictionary <uint, string> () {
-               { (uint)TypeAttributes.NotPublic, "private " },
-               { (uint)TypeAttributes.Public, "public " },
-               { (uint)TypeAttributes.NestedPublic, "nested public " },
-               { (uint)TypeAttributes.NestedPrivate, "nested private " },
-               { (uint)TypeAttributes.NestedFamily, "nested family " },
-               { (uint)TypeAttributes.NestedAssembly, "nested assembly " },
-               { (uint)TypeAttributes.NestedFamANDAssem, "nested famandassem " },
-               { (uint)TypeAttributes.NestedFamORAssem, "nested famorassem " },
-       };
-       Dictionary<uint, string> type_layout_map = new Dictionary <uint, string> () {
-               { (uint)TypeAttributes.AutoLayout, "auto " },
-               { (uint)TypeAttributes.SequentialLayout, "sequential " },
-               { (uint)TypeAttributes.ExplicitLayout, "explicit " }
-       };
-       Dictionary<uint, string> type_string_format_map = new Dictionary <uint, string> () {
-               { (uint)TypeAttributes.AnsiClass, "ansi " },
-               { (uint)TypeAttributes.UnicodeClass, "unicode " },
-               //{ (uint)TypeAttributes.AutoClass, "unicode " },
-       };
-       Dictionary<uint, string> type_flag_map = new Dictionary <uint, string> () {
-               { (uint)TypeAttributes.Abstract, "abstract " },
-               { (uint)TypeAttributes.Sealed, "sealed " },
-               { (uint)TypeAttributes.SpecialName, "specialname " },
-               { (uint)TypeAttributes.Import, "import " },
-               { (uint)TypeAttributes.Serializable, "serializable " },
-               { (uint)TypeAttributes.BeforeFieldInit, "beforefieldinit " },
-               { (uint)TypeAttributes.RTSpecialName, "rtspecialname " },
-               //{ (uint)TypeAttributes.HasSecurity, "rtspecialname " },
-               //{ (uint)TypeAttributes.Forwarder, "rtspecialname " },
-       };
-
-       Dictionary<uint, string> type_sem_map = new Dictionary <uint, string> () {
-               { (uint)TypeAttributes.Class, "" },
-               { (uint)TypeAttributes.Interface, "interface " },
-       };
-
-
-       Dictionary<uint, string> field_access_map = new Dictionary <uint, string> () {
-               { (uint)FieldAttributes.Private, "private " },
-               { (uint)FieldAttributes.FamANDAssem, "famandassem " },
-               { (uint)FieldAttributes.Assembly, "assembly " },
-               { (uint)FieldAttributes.Family, "family " },
-               { (uint)FieldAttributes.FamORAssem, "famorassem " },
-               { (uint)FieldAttributes.Public, "public " },
-       };
-
-       Dictionary<uint, string> field_flag_map = new Dictionary <uint, string> () {
-               { (uint)FieldAttributes.Static, "static " },
-               { (uint)FieldAttributes.Literal, "literal " },
-               { (uint)FieldAttributes.InitOnly, "initonly " },
-               { (uint)FieldAttributes.SpecialName, "specialname " },
-               { (uint)FieldAttributes.RTSpecialName, "rtspecialname " },
-               { (uint)FieldAttributes.NotSerialized, "notserialized " },              
-       };
-
-
-       Dictionary<uint, string> method_access_map = new Dictionary <uint, string> () {
-               { (uint)MethodAttributes.CompilerControlled, "privatescope " },
-               { (uint)MethodAttributes.Private, "private " },
-               { (uint)MethodAttributes.Public, "public " },
-               { (uint)MethodAttributes.Family, "family " },
-               { (uint)MethodAttributes.FamORAssem, "famorassem " },
-               { (uint)MethodAttributes.Assembly, "assembly " }
-       };
-
-       Dictionary<uint, string> method_flag_map = new Dictionary <uint, string> () {
-               { (uint)MethodAttributes.Static, "static " },
-               { (uint)MethodAttributes.Final, "final " },
-               { (uint)MethodAttributes.Virtual, "virtual " },
-               { (uint)MethodAttributes.HideBySig, "hidebysig " },
-               { (uint)MethodAttributes.NewSlot, "newslot " },
-               { (uint)MethodAttributes.CheckAccessOnOverride, "strict " },
-               { (uint)MethodAttributes.Abstract, "abstract " },
-               { (uint)MethodAttributes.SpecialName, "specialname " },
-               { (uint)MethodAttributes.RTSpecialName, "rtspecialname " },
-       };
-
-
-       Dictionary<uint, string> method_impl_map = new Dictionary <uint, string> () {
-               { (uint)MethodImplAttributes.IL, "cil " },
-               { (uint)MethodImplAttributes.Runtime, "runtime " }
-       };
-       Dictionary<uint, string> method_managed_map = new Dictionary <uint, string> () {
-               { (uint)MethodImplAttributes.Managed, "managed " }
-       };
-       Dictionary<uint, string> method_impl_flag_map = new Dictionary <uint, string> () {
-               { (uint)MethodImplAttributes.PreserveSig, "preservesig " },
-               { (uint)MethodImplAttributes.InternalCall, "internalcall " },
-               { (uint)MethodImplAttributes.Synchronized, "synchronized " },
-               { (uint)MethodImplAttributes.NoInlining, "noinlining " },
-       };
-
-
-       Dictionary<NativeType, string> native_type_to_str = new Dictionary<NativeType, string> () {
-               { NativeType.Boolean, "bool" },
-               { NativeType.I1, "int8" },
-               { NativeType.U1, "unsigned int8" },
-               { NativeType.I2, "int16" },
-               { NativeType.U2, "unsigned int16" },
-               { NativeType.I4, "int32" },
-               { NativeType.U4, "unsigned int32" },
-               { NativeType.I8, "int64" },
-               { NativeType.U8, "unsigned int64" },
-               //{ NativeType.R4, "int32" },
-               //{ NativeType.R8, "unsigned int32" },
-               { NativeType.LPStr, "lpstr" },
-               { NativeType.Int, "int" },
-               //{ NativeType.Int, "int" },
-               { NativeType.Func, "method" },
-               //{ NativeType.Array, "int" },
-               //{ NativeType.Currency, "method" },
-               { NativeType.BStr, "bstr " },
-               { NativeType.LPWStr, "lpwstr" },
-               //{ NativeType.LPTStr, "lpwstr" },
-               //{ NativeType.FixedSysString, "lpwstr" },
-               { NativeType.IUnknown, "iunknown" },
-               { NativeType.IDispatch, "idispatch" },
-               { NativeType.Struct, "struct" },
-               { NativeType.IntF, "interface" },
-               //{ NativeType.SafeArray, "interface" },
-               //{ NativeType.FixedArray, "interface" },
-               //{ NativeType.ByValStr, "interface" },
-               //{ NativeType.ANSIBStr, "interface" },
-               //{ NativeType.TBStr, "interface" },
-               { NativeType.VariantBool, "variant bool" },
-               { NativeType.ASAny, "as any" },
-               { NativeType.LPStruct, "lpstruct" },
-               //{ NativeType.CustomMarshaler, "lpstruct" },
-               //{ NativeType.Error, "lpstruct" },
-       };
-
-
-       Dictionary<uint, string> pinvoke_char_set_map = new Dictionary <uint, string> () {
-               { (uint)PInvokeAttributes.CharSetNotSpec, "" },
-               { (uint)PInvokeAttributes.CharSetAnsi, "ansi " },
-               { (uint)PInvokeAttributes.CharSetUnicode, "unicode " },
-               { (uint)PInvokeAttributes.CharSetAuto, "autochar " },
-       };
-
-       Dictionary<uint, string> pinvoke_cconv_map = new Dictionary <uint, string> () {
-               { (uint)PInvokeAttributes.CallConvWinapi, "winapi " },
-               { (uint)PInvokeAttributes.CallConvCdecl, "cdecl " },
-               { (uint)PInvokeAttributes.CallConvStdCall, "stdcall " },
-               { (uint)PInvokeAttributes.CallConvThiscall, "thiscall " },
-               { (uint)PInvokeAttributes.CallConvFastcall, "fastcall " },
-       };
-
-       Dictionary<uint, string> pinvoke_flags_map = new Dictionary <uint, string> () {
-               { (uint)PInvokeAttributes.SupportsLastError, "lasterr " },
-       };
-
-
-       Dictionary<SecurityAction, string> sec_action_to_string = new Dictionary<SecurityAction, string> () {
-               //{ SecurityAction.Request, "reqmin" },
-               { SecurityAction.Demand, "demand" },
-               { SecurityAction.Assert, "assert" },
-               { SecurityAction.Deny, "deny" },
-               { SecurityAction.PermitOnly, "permitonly" },
-               { SecurityAction.LinkDemand, "linkcheck" },
-               { SecurityAction.InheritDemand, "inheritcheck" },
-               { SecurityAction.RequestMinimum, "reqmin" },
-               { SecurityAction.RequestOptional, "reqopt" },
-               { SecurityAction.RequestRefuse, "reqrefuse" },
-               //{ SecurityAction.PreJitGrant, "reqmin" },
-               //{ SecurityAction.PreJitDeny, "reqmin" },
-               //{ SecurityAction.NonCasDemand, "reqmin" },
-               //{ SecurityAction.NonCasLinkDemand, "reqmin" },
-               //{ SecurityAction.NonCasInheritance, "reqmin" },
-       };
-
-
-       Dictionary<string, bool> keyword_table = new Dictionary<string, bool> {
-               {"9", true},
-               {"abstract", true},
-               {"add", true},
-               {"add.ovf", true},
-               {"add.ovf.un", true},
-               {"algorithm", true},
-               {"alignment", true},
-               {"and", true},
-               {"ansi", true},
-               {"any", true},
-               {"arglist", true},
-               {"array", true},
-               {"as", true},
-               {"assembly", true},
-               {"assert", true},
-               {"at", true},
-               {"autochar", true},
-               {"auto", true},
-               {"beforefieldinit", true},
-               {"bestfit", true},
-               {"beq", true},
-               {"beq.s", true},
-               {"bge", true},
-               {"bge.s", true},
-               {"bge.un", true},
-               {"bge.un.s", true},
-               {"bgt", true},
-               {"bgt.s", true},
-               {"bgt.un", true},
-               {"bgt.un.s", true},
-               {"ble", true},
-               {"ble.s", true},
-               {"ble.un", true},
-               {"ble.un.s", true},
-               {"blob", true},
-               {"blob_object", true},
-               {"blt", true},
-               {"blt.s", true},
-               {"blt.un", true},
-               {"blt.un.s", true},
-               {"bne.un", true},
-               {"bne.un.s", true},
-               {"bool", true},
-               {"box", true},
-               {"break", true},
-               {"brfalse", true},
-               {"brfalse.s", true},
-               {"br", true},
-               {"brinst", true},
-               {"brinst.s", true},
-               {"brnull", true},
-               {"brnull.s", true},
-               {"br.s", true},
-               {"brtrue", true},
-               {"brtrue.s", true},
-               {"brzero", true},
-               {"brzero.s", true},
-               {"bstr", true},
-               {"bytearray", true},
-               {"byvalstr", true},
-               {"call", true},
-               {"callconv", true},
-               {"calli", true},
-               {"callmostderived", true},
-               {"callvirt", true},
-               {"carray", true},
-               {"castclass", true},
-               {"catch", true},
-               {"cdecl", true},
-               {"ceq", true},
-               {"cf", true},
-               {"cgt", true},
-               {"cgt.un", true},
-               {"char", true},
-               {"charmaperror", true},
-               {"cil", true},
-               {"ckfinite", true},
-               {"class", true},
-               {"clsid", true},
-               {"clt", true},
-               {"clt.un", true},
-               {"Compilercontrolled", true},
-               {"const", true},
-               {"conv.i1", true},
-               {"conv.i2", true},
-               {"conv.i4", true},
-               {"conv.i8", true},
-               {"conv.i", true},
-               {"conv.ovf.i1", true},
-               {"conv.ovf.i1.un", true},
-               {"conv.ovf.i2", true},
-               {"conv.ovf.i2.un", true},
-               {"conv.ovf.i4", true},
-               {"conv.ovf.i4.un", true},
-               {"conv.ovf.i8", true},
-               {"conv.ovf.i8.un", true},
-               {"conv.ovf.i", true},
-               {"conv.ovf.i.un", true},
-               {"conv.ovf.u1", true},
-               {"conv.ovf.u1.un", true},
-               {"conv.ovf.u2", true},
-               {"conv.ovf.u2.un", true},
-               {"conv.ovf.u4", true},
-               {"conv.ovf.u4.un", true},
-               {"conv.ovf.u8", true},
-               {"conv.ovf.u8.un", true},
-               {"conv.ovf.u", true},
-               {"conv.ovf.u.un", true},
-               {"conv.r4", true},
-               {"conv.r8", true},
-               {"conv.r.un", true},
-               {"conv.u1", true},
-               {"conv.u2", true},
-               {"conv.u4", true},
-               {"conv.u8", true},
-               {"conv.u", true},
-               {"cpblk", true},
-               {"cpobj", true},
-               {"currency", true},
-               {"custom", true},
-               {"date", true},
-               {"decimal", true},
-               {"default", true},
-               {"demand", true},
-               {"deny", true},
-               {"div", true},
-               {"div.un", true},
-               {"dup", true},
-               {"endfault", true},
-               {"endfilter", true},
-               {"endfinally", true},
-               {"endmac", true},
-               {"enum", true},
-               {"error", true},
-               {"explicit", true},
-               {"extends", true},
-               {"extern", true},
-               {"false", true},
-               {"famandassem", true},
-               {"family", true},
-               {"famorassem", true},
-               {"fastcall", true},
-               {"fault", true},
-               {"field", true},
-               {"filetime", true},
-               {"filter", true},
-               {"final", true},
-               {"finally", true},
-               {"fixed", true},
-               {"flags", true},
-               {"float32", true},
-               {"float64", true},
-               {"float", true},
-               {"forwardref", true},
-               {"fromunmanaged", true},
-               {"handler", true},
-               {"hidebysig", true},
-               {"hresult", true},
-               {"idispatch", true},
-               {"il", true},
-               {"illegal", true},
-               {"implements", true},
-               {"implicitcom", true},
-               {"implicitres", true},
-               {"import", true},
-               {"in", true},
-               {"inheritcheck", true},
-               {"initblk", true},
-               {"init", true},
-               {"initobj", true},
-               {"initonly", true},
-               {"instance", true},
-               {"int16", true},
-               {"int32", true},
-               {"int64", true},
-               {"int8", true},
-               {"interface", true},
-               {"internalcall", true},
-               {"int", true},
-               {"isinst", true},
-               {"iunknown", true},
-               {"jmp", true},
-               {"lasterr", true},
-               {"lcid", true},
-               {"ldarg.0", true},
-               {"ldarg.1", true},
-               {"ldarg.2", true},
-               {"ldarg.3", true},
-               {"ldarga", true},
-               {"ldarga.s", true},
-               {"ldarg", true},
-               {"ldarg.s", true},
-               {"ldc.i4.0", true},
-               {"ldc.i4.1", true},
-               {"ldc.i4.2", true},
-               {"ldc.i4.3", true},
-               {"ldc.i4.4", true},
-               {"ldc.i4.5", true},
-               {"ldc.i4.6", true},
-               {"ldc.i4.7", true},
-               {"ldc.i4.8", true},
-               {"ldc.i4", true},
-               {"ldc.i4.m1", true},
-               {"ldc.i4.M1", true},
-               {"ldc.i4.s", true},
-               {"ldc.i8", true},
-               {"ldc.r4", true},
-               {"ldc.r8", true},
-               {"ldelem", true},
-               {"ldelema", true},
-               {"ldelem.i1", true},
-               {"ldelem.i2", true},
-               {"ldelem.i4", true},
-               {"ldelem.i8", true},
-               {"ldelem.i", true},
-               {"ldelem.r4", true},
-               {"ldelem.r8", true},
-               {"ldelem.ref", true},
-               {"ldelem.u1", true},
-               {"ldelem.u2", true},
-               {"ldelem.u4", true},
-               {"ldelem.u8", true},
-               {"ldflda", true},
-               {"ldfld", true},
-               {"ldftn", true},
-               {"ldind.i1", true},
-               {"ldind.i2", true},
-               {"ldind.i4", true},
-               {"ldind.i8", true},
-               {"ldind.i", true},
-               {"ldind.r4", true},
-               {"ldind.r8", true},
-               {"ldind.ref", true},
-               {"ldind.u1", true},
-               {"ldind.u2", true},
-               {"ldind.u4", true},
-               {"ldind.u8", true},
-               {"ldlen", true},
-               {"ldloc.0", true},
-               {"ldloc.1", true},
-               {"ldloc.2", true},
-               {"ldloc.3", true},
-               {"ldloca", true},
-               {"ldloca.s", true},
-               {"ldloc", true},
-               {"ldloc.s", true},
-               {"ldnull", true},
-               {"ldobj", true},
-               {"ldsflda", true},
-               {"ldsfld", true},
-               {"ldstr", true},
-               {"ldtoken", true},
-               {"ldvirtftn", true},
-               {"leave", true},
-               {"leave.s", true},
-               {"legacy", true},
-               {"linkcheck", true},
-               {"literal", true},
-               {"localloc", true},
-               {"lpstr", true},
-               {"lpstruct", true},
-               {"lptstr", true},
-               {"lpvoid", true},
-               {"lpwstr", true},
-               {"managed", true},
-               {"marshal", true},
-               {"method", true},
-               {"mkrefany", true},
-               {"modopt", true},
-               {"modreq", true},
-               {"mul", true},
-               {"mul.ovf", true},
-               {"mul.ovf.un", true},
-               {"native", true},
-               {"neg", true},
-               {"nested", true},
-               {"newarr", true},
-               {"newobj", true},
-               {"newslot", true},
-               {"noappdomain", true},
-               {"noinlining", true},
-               {"nomachine", true},
-               {"nomangle", true},
-               {"nometadata", true},
-               {"noncasdemand", true},
-               {"noncasinheritance", true},
-               {"noncaslinkdemand", true},
-               {"nop", true},
-               {"noprocess", true},
-               {"not", true},
-               {"not_in_gc_heap", true},
-               {"notremotable", true},
-               {"notserialized", true},
-               {"null", true},
-               {"nullref", true},
-               {"object", true},
-               {"objectref", true},
-               {"off", true},
-               {"on", true},
-               {"opt", true},
-               {"optil", true},
-               {"or", true},
-               {"out", true},
-               {"permitonly", true},
-               {"pinned", true},
-               {"pinvokeimpl", true},
-               {"pop", true},
-               {"prefix1", true},
-               {"prefix2", true},
-               {"prefix3", true},
-               {"prefix4", true},
-               {"prefix5", true},
-               {"prefix6", true},
-               {"prefix7", true},
-               {"prefixref", true},
-               {"prejitdeny", true},
-               {"prejitgrant", true},
-               {"preservesig", true},
-               {"private", true},
-               {"privatescope", true},
-               {"property", true},
-               {"protected", true},
-               {"public", true},
-               {"readonly", true},
-               {"record", true},
-               {"refany", true},
-               {"refanytype", true},
-               {"refanyval", true},
-               {"rem", true},
-               {"rem.un", true},
-               {"reqmin", true},
-               {"reqopt", true},
-               {"reqrefuse", true},
-               {"reqsecobj", true},
-               {"request", true},
-               {"ret", true},
-               {"rethrow", true},
-               {"retval", true},
-               {"rtspecialname", true},
-               {"runtime", true},
-               {"safearray", true},
-               {"sealed", true},
-               {"sequential", true},
-               {"serializable", true},
-               {"shl", true},
-               {"shr", true},
-               {"shr.un", true},
-               {"sizeof", true},
-               {"special", true},
-               {"specialname", true},
-               {"starg", true},
-               {"starg.s", true},
-               {"static", true},
-               {"stdcall", true},
-               {"stelem", true},
-               {"stelem.i1", true},
-               {"stelem.i2", true},
-               {"stelem.i4", true},
-               {"stelem.i8", true},
-               {"stelem.i", true},
-               {"stelem.r4", true},
-               {"stelem.r8", true},
-               {"stelem.ref", true},
-               {"stfld", true},
-               {"stind.i1", true},
-               {"stind.i2", true},
-               {"stind.i4", true},
-               {"stind.i8", true},
-               {"stind.i", true},
-               {"stind.r4", true},
-               {"stind.r8", true},
-               {"stloc", true},
-               {"stobj", true},
-               {"storage", true},
-               {"stored_object", true},
-               {"streamed_object", true},
-               {"stream", true},
-               {"strict", true},
-               {"string", true},
-               {"struct", true},
-               {"stsfld", true},
-               {"sub", true},
-               {"sub.ovf", true},
-               {"sub.ovf.un", true},
-               {"switch", true},
-               {"synchronized", true},
-               {"syschar", true},
-               {"sysstring", true},
-               {"tbstr", true},
-               {"thiscall", true},
-               {"tls", true},
-               {"to", true},
-               {"true", true},
-               {"type", true},
-               {"typedref", true},
-               {"uint", true},
-               {"uint8", true},
-               {"uint16", true},
-               {"uint32", true},
-               {"uint64", true},
-               {"unbox", true},
-               {"unicode", true},
-               {"unmanagedexp", true},
-               {"unmanaged", true},
-               {"unsigned", true},
-               {"userdefined", true},
-               {"value", true},
-               {"valuetype", true},
-               {"vararg", true},
-               {"variant", true},
-               {"vector", true},
-               {"virtual", true},
-               {"void", true},
-               {"wchar", true},
-               {"winapi", true},
-               {"with", true},
-               {"xor", true},
-       };
-}
\ No newline at end of file
index 4f814f4bde44957401aa90a6af44d771a3006e7a..0fae1a02c00e199a0a7ce7fc313fa3cd73f34963 100644 (file)
@@ -33,6 +33,8 @@
                        <method name="InternalArray__IndexOf" />
                        <method name="InternalArray__get_Item" />
                        <method name="InternalArray__set_Item" />
+                       <method name="InternalArray__IReadOnlyList_get_Item" />
+                       <method name="InternalArray__IReadOnlyCollection_get_Count" />
                </type>
                <type fullname="System.ArrayTypeMismatchException" />
                <type fullname="System.Attribute" />
index 1c3175fbf4fc6af3276120b61c066af8f06cb7c1..08761871fd6c2ce4e517009daf8b127357828edf 100644 (file)
@@ -26,7 +26,6 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System.Collections;
 using System.IO;
 using System.Reflection;
 using System.Xml.XPath;
@@ -54,7 +53,7 @@ namespace Mono.Linker.Steps {
 
                static string GetAssemblyName (string descriptor)
                {
-                       int pos = descriptor.LastIndexOf (".");
+                       int pos = descriptor.LastIndexOf ('.');
                        if (pos == -1)
                                return descriptor;
 
index cadab17357a7f6b2995bca2c47cbaa3e8740cc97..21a26b62d37773a98f99342e716c588e01890014 100644 (file)
@@ -296,7 +296,7 @@ namespace Mono.Linker.Steps {
                                MarkCustomAttributes (module);
                }
 
-               void MarkField (FieldReference reference)
+               protected void MarkField (FieldReference reference)
                {
 //                     if (IgnoreScope (reference.DeclaringType.Scope))
 //                             return;
@@ -868,7 +868,7 @@ namespace Mono.Linker.Steps {
                                (Annotations.GetAction (assembly) == AssemblyAction.Link && Annotations.GetAction (method) == MethodAction.Parse));
                }
 
-               static bool IsPropertyMethod (MethodDefinition md)
+               static internal bool IsPropertyMethod (MethodDefinition md)
                {
                        return (md.SemanticsAttributes & MethodSemanticsAttributes.Getter) != 0 ||
                                (md.SemanticsAttributes & MethodSemanticsAttributes.Setter) != 0;
@@ -881,7 +881,7 @@ namespace Mono.Linker.Steps {
                                (md.SemanticsAttributes & MethodSemanticsAttributes.RemoveOn) != 0;
                }
 
-               static PropertyDefinition GetProperty (MethodDefinition md)
+               static internal PropertyDefinition GetProperty (MethodDefinition md)
                {
                        TypeDefinition declaringType = (TypeDefinition) md.DeclaringType;
                        foreach (PropertyDefinition prop in declaringType.Properties)
@@ -901,12 +901,12 @@ namespace Mono.Linker.Steps {
                        return null;
                }
 
-               void MarkProperty (PropertyDefinition prop)
+               protected void MarkProperty (PropertyDefinition prop)
                {
                        MarkCustomAttributes (prop);
                }
 
-               void MarkEvent (EventDefinition evt)
+               protected void MarkEvent (EventDefinition evt)
                {
                        MarkCustomAttributes (evt);
                        MarkMethodIfNotNull (evt.AddMethod);
index af3325a77af5c30cbc841ab080dcfdb9a54c8229..5dfa488d6251b22d5c556edcc0a2ea3bea074909 100644 (file)
@@ -61,6 +61,7 @@ namespace Mono.Linker.Steps {
                        CopyConfigFileIfNeeded (assembly, directory);
 
                        switch (Annotations.GetAction (assembly)) {
+                       case AssemblyAction.Save:
                        case AssemblyAction.Link:
                                assembly.Write (GetAssemblyFileName (assembly, directory), SaveSymbols (assembly));
                                break;
index 0f2518843ff243603907cdc3292cc63cb7819ff0..552693546beebd33a082fc9ed2384ec68b349d4a 100644 (file)
@@ -37,6 +37,7 @@ namespace Mono.Linker.Steps {
        public class SweepStep : BaseStep {
 
                AssemblyDefinition [] assemblies;
+               HashSet<AssemblyDefinition> resolvedTypeReferences;
 
                protected override void Process ()
                {
@@ -100,7 +101,50 @@ namespace Mono.Linker.Steps {
                                        continue;
 
                                references.RemoveAt (i);
+                               // Removing the reference does not mean it will be saved back to disk!
+                               // That depends on the AssemblyAction set for the `assembly`
+                               switch (Annotations.GetAction (assembly)) {
+                               case AssemblyAction.Copy:
+                                       // Copy means even if "unlinked" we still want that assembly to be saved back 
+                                       // to disk (OutputStep) without the (removed) reference
+                                       Annotations.SetAction (assembly, AssemblyAction.Save);
+                                       ResolveAllTypeReferences (assembly);
+                                       break;
+
+                               case AssemblyAction.Save:
+                               case AssemblyAction.Link:
+                                       ResolveAllTypeReferences (assembly);
+                                       break;
+                               }
+                               return;
+                       }
+               }
+
+               void ResolveAllTypeReferences (AssemblyDefinition assembly)
+               {
+                       if (resolvedTypeReferences == null)
+                               resolvedTypeReferences = new HashSet<AssemblyDefinition> ();
+                       if (resolvedTypeReferences.Contains (assembly))
                                return;
+                       resolvedTypeReferences.Add (assembly);
+
+                       var hash = new Dictionary<TypeReference,IMetadataScope> ();
+
+                       foreach (TypeReference tr in assembly.MainModule.GetTypeReferences ()) {
+                               if (hash.ContainsKey (tr))
+                                       continue;
+                               var td = tr.Resolve ();
+                               // at this stage reference might include things that can't be resolved
+                               var scope = td == null ? null : assembly.MainModule.Import (td).Scope;
+                               hash.Add (tr, scope);
+                       }
+
+                       // Resolve everything first before updating scopes.
+                       // If we set the scope to null, then calling Resolve() on any of its
+                       // nested types would crash.
+
+                       foreach (var e in hash) {
+                               e.Key.Scope = e.Value;
                        }
                }
 
index 8eac19e5e4872f987dda8f53ed318f8eb34c49a8..14282b376be1b1091e0481d5286606deedd8f170 100644 (file)
 namespace Mono.Linker {
 
        public enum AssemblyAction {
+               // Ignore the assembly
                Skip,
+               // Copy the existing files, assembly and symbols, into the output destination. E.g. .dll and .mdb
+               // The linker still analyze the assemblies (to know what they require) but does not modify them
                Copy,
+               // Link the assembly
                Link,
+               // Remove the assembly from the output
                Delete,
+               // Save the assembly/symbols in memory without linking it. 
+               // E.g. useful to remove unneeded assembly references (as done in SweepStep), 
+               //  resolving [TypeForwardedTo] attributes (like PCL) to their final location
+               Save
        }
 }
index 65e7f26fa91ca37d7dc3655b03fe3063d6877900..40b683600311feffd744b79d3a38db0a50d4ca5e 100644 (file)
@@ -2,6 +2,7 @@ using System;
 using System.Reflection;
 using System.Collections;
 using System.Collections.Generic;
+using System.Text.RegularExpressions;
 using System.IO;
 
 using Mono.CompilerServices.SymbolWriter;
@@ -15,6 +16,11 @@ class Settings
        public string OutputDirectory { get; set; }
        public string InputPattern { get; set; }
        public string OutputPattern { get; set; }
+       public bool InputPatternIsRegex { get; set; }
+       public bool FileNamesOnly { get; set; }
+       public bool Verbose { get; set; }
+
+       Regex inputPatternRegex;
 
        public bool Validate ()
        {
@@ -23,8 +29,15 @@ class Settings
 
        public string Replace (string input)
        {
-               if (input.StartsWith (InputPattern))
-                       return input.Replace (InputPattern, OutputPattern);
+               if (InputPatternIsRegex) {
+                       if (inputPatternRegex == null)
+                               inputPatternRegex = new Regex (InputPattern);
+                       return inputPatternRegex.Replace (input, OutputPattern);
+               } else {
+                       if (input.StartsWith (InputPattern))
+                               return OutputPattern + input.Substring (InputPattern.Length);
+               }
+
                return input;
        }
 }
@@ -46,7 +59,14 @@ class MdbRebase
                var output = new MonoSymbolFile ();
 
                foreach (var s in input.Sources) {
-                       s.FileName = settings.Replace (s.FileName);
+                       var newFileName = settings.FileNamesOnly
+                               ? Path.Combine (Path.GetDirectoryName (s.FileName), settings.Replace (Path.GetFileName (s.FileName)))
+                               : settings.Replace (s.FileName);
+
+                       if (settings.Verbose)
+                               Console.WriteLine ("{0} -> {1}", s.FileName, newFileName);
+
+                       s.FileName = newFileName;
                        output.AddSource (s);
                }
 
@@ -97,6 +117,9 @@ class Driver {
 
                var p = new OptionSet () {
                        { "d=|output=",  "Output directory to the mdb file, replace existing one if ommited", v => s.OutputDirectory = v },
+                       { "v|verbose", "Be verbose with output (show individual path rewrites)", v => s.Verbose = true },
+                       { "f|filenames", "Only operate on file names, not full absolute paths", v => s.FileNamesOnly = true },
+                       { "r|regex", "Input pattern is a regular expression", v => s.InputPatternIsRegex = true },
                        { "i=|input-pattern=", "Input pattern to replace (must not be a prefix to output-pattern)(required)", v => s.InputPattern = v },
                        { "o=|output-pattern=", "Output pattern to replace (required)", v => s.OutputPattern = v },
                        { "h|?|help", v => showHelp = true },
index 9929998565c9e1f63eafd7ff4d33c760156b5dde..5919870876ca773db4ebbb255220415b927870c5 100644 (file)
@@ -47,13 +47,11 @@ namespace Mono.Documentation {
                internal ExceptionSources (TypeReference exception)
                {
                        Exception = exception;
-                       SourcesList = new List<MemberReference> ();
-                       Sources = new ReadOnlyCollection<MemberReference> (SourcesList);
+                       Sources   = new HashSet<MemberReference> ();
                }
 
                public TypeReference Exception { get; private set; }
-               public ReadOnlyCollection<MemberReference> Sources { get; private set; }
-               internal List<MemberReference> SourcesList;
+               internal  HashSet<MemberReference>  Sources;
        }
 
 
@@ -93,13 +91,13 @@ namespace Mono.Documentation {
                                Dictionary<string, ExceptionSources> e;
                                if (!db.TryGetValue (memberDecl, out e)) {
                                        e = new Dictionary<string, ExceptionSources> ();
+                                       db.Add (memberDecl, e);
                                        var bodies = GetMethodBodies (member);
                                        foreach (var body in bodies) {
                                                if (body == null)
                                                        continue;
                                                FillExceptions (body, e);
                                        }
-                                       db.Add (memberDecl, e);
                                }
                                return e.Values;
                        }
@@ -145,6 +143,7 @@ namespace Mono.Documentation {
                                                                        body.Method.DeclaringType.Scope.Name == memberRef.DeclaringType.Scope.Name) ||
                                                                ((locations & ExceptionLocations.DependentAssemblies) != 0 && 
                                                                        body.Method.DeclaringType.Scope.Name != memberRef.DeclaringType.Scope.Name)) {
+
                                                        IEnumerable<ExceptionSources> memberExceptions = this [memberRef];
                                                        AddExceptions (body, instruction, 
                                                                        memberExceptions.Select (es => es.Exception),
@@ -181,7 +180,8 @@ namespace Mono.Documentation {
                                                s = new ExceptionSources (ex);
                                                exceptions.Add (eName, s);
                                        }
-                                       s.SourcesList.AddRange (sources);
+                                       foreach (var m in sources)
+                                               s.Sources.Add (m);
                                }
                        }
                }
index cccb63f5a472b7974b2bd9c95ee9480788395fa4..244d0478bdfac18a75c546c33a641262184f0e06 100644 (file)
@@ -1813,6 +1813,7 @@ class MDocUpdater : MDocCommand
        
        private void UpdateExceptions (XmlNode docs, MemberReference member)
        {
+               string indent = new string (' ', 10);
                foreach (var source in new ExceptionLookup (exceptions.Value)[member]) {
                        string cref = slashdocFormatter.GetDeclaration (source.Exception);
                        var node = docs.SelectSingleNode ("exception[@cref='" + cref + "']");
@@ -1820,10 +1821,10 @@ class MDocUpdater : MDocCommand
                                continue;
                        XmlElement e = docs.OwnerDocument.CreateElement ("exception");
                        e.SetAttribute ("cref", cref);
-                       e.InnerXml = "To be added; from: <see cref=\"" + 
-                               string.Join ("\" />, <see cref=\"", 
+                       e.InnerXml = "To be added; from:\n" + indent + "<see cref=\"" +
+                               string.Join ("\" />,\n" + indent + "<see cref=\"",
                                                source.Sources.Select (m => slashdocFormatter.GetDeclaration (m))
-                                               .ToArray ()) +
+                                               .OrderBy (s => s)) +
                                "\" />";
                        docs.AppendChild (e);
                }
@@ -3364,10 +3365,10 @@ public abstract class MemberFormatter {
                if (type is PointerType) {
                        return AppendPointerTypeName (buf, type, context);
                }
-               AppendNamespace (buf, type);
                if (type is GenericParameter) {
                        return AppendTypeName (buf, type, context);
                }
+               AppendNamespace (buf, type);
                GenericInstanceType genInst = type as GenericInstanceType;
                if (type.GenericParameters.Count == 0 &&
                                (genInst == null ? true : genInst.GenericArguments.Count == 0)) {
index 4bfe5962a28bf5c228e4ef9ba34e293fba84f2f1..b818401eca1644e5845841dffac17d22bb4bdeb6 100644 (file)
@@ -119,12 +119,10 @@ public class MDocToMSXDocConverter : MDocCommand {
                                XmlElement members = outputfiles [assemblyname];
                                if (members == null) continue; // assembly is strangely not listed in the index
                                
-                               //CreateMember(EcmaDoc.GetCref (type.DocumentElement), type.DocumentElement, members);
+                               CreateMember (GetCref (type.DocumentElement), type.DocumentElement, members);
                                        
                                foreach (XmlElement memberdoc in type.SelectNodes("Type/Members/Member")) {
-                                       //string name = EcmaDoc.GetCref (memberdoc);
-                                       // FIXME
-                                       string name = ns + "." + typename + "." + memberdoc.GetAttribute ("MemberName");
+                                       string name = GetCref (memberdoc);
                                        CreateMember(name, memberdoc, members);
                                }
                        }
@@ -133,6 +131,48 @@ public class MDocToMSXDocConverter : MDocCommand {
                        AddNamespaceSummary(nsSummaries, basepath, nsnode.GetAttribute("Name"));
                }
        }
+
+       static string GetCref (XmlElement member)
+       {
+               string typeName = XmlDocUtils.ToEscapedTypeName (member.SelectSingleNode("/Type/@FullName").InnerText);
+               if (member.Name == "Type")
+                       return "T:" + typeName;
+               string memberType = member.SelectSingleNode("MemberType").InnerText;
+               switch (memberType) {
+                       case "Constructor":
+                               return "C:" + typeName + MakeArgs(member);
+                       case "Event":
+                               return "E:" + typeName + "." + XmlDocUtils.ToEscapedMemberName (member.GetAttribute("MemberName"));
+                       case "Field":
+                               return "F:" + typeName + "." + XmlDocUtils.ToEscapedMemberName (member.GetAttribute("MemberName"));
+                       case "Method": {
+                               string name = "M:" + typeName + "." + XmlDocUtils.ToEscapedMemberName (member.GetAttribute("MemberName")) + MakeArgs(member);
+                               if (member.GetAttribute("MemberName") == "op_Implicit" || member.GetAttribute("MemberName") == "op_Explicit")
+                                       name += "~" + XmlDocUtils.ToTypeName (member.SelectSingleNode("ReturnValue/ReturnType").InnerText, member);
+                               return name;
+                       }
+                       case "Property":
+                               return "P:" + typeName + "." + XmlDocUtils.ToEscapedMemberName (member.GetAttribute("MemberName")) + MakeArgs(member);
+                       default:
+                               throw new NotSupportedException ("MemberType '" + memberType + "' is not supported.");
+               }
+       }
+
+       static string MakeArgs (XmlElement member)
+       {
+               XmlNodeList parameters = member.SelectNodes ("Parameters/Parameter");
+               if (parameters.Count == 0)
+                       return "";
+               StringBuilder args = new StringBuilder ();
+               args.Append ("(");
+               args.Append (XmlDocUtils.ToTypeName (parameters [0].Attributes ["Type"].Value, member));
+               for (int i = 1; i < parameters.Count; ++i) {
+                       args.Append (",");
+                       args.Append (XmlDocUtils.ToTypeName (parameters [i].Attributes ["Type"].Value, member));
+               }
+               args.Append (")");
+               return args.ToString ();
+       }
        
        private static void AddNamespaceSummary(XmlDocument nsSummaries, string basepath, string currentNs) {
                foreach (var filename in new [] {
index b8bc52ffecc13a666510df363517f5f4c78ef628..75d65a244b05105fd3f9fae787a0eca2b0d17166 100644 (file)
@@ -203,8 +203,7 @@ namespace Mono.Documentation
                                        continue;
                                var file = XmlDocUtils.GetCachedFileName (outDir, url);
                                using (var o = File.AppendText (file)) {
-                                       Node _;
-                                       string contents = docRoot.RenderUrl (url, generator, out _);
+                                       string contents = docRoot.RenderUrl (url, generator, hs);
                                        o.Write (contents);
                                }
                        }
index e98f0a129587ccbea20f09b8300fe70c0faf18a9..a44b91988ada1e1ecbf34fa48bb7da98d5bc61df 100644 (file)
   <xsl:template name="create-index">
     <xsl:if test="
         count(PageTitle/@id) &gt; 0 and 
-        count(Signature/@id) &gt; 0 and
+        (count(Signature/@id) &gt; 0 or count(Signature/div/@id) &gt; 0) and
         count(Remarks/@id) &gt; 0 and
         count(Members/@id) &gt; 0
         ">
             <xsl:attribute name="href">
               <xsl:text>#</xsl:text>
               <xsl:value-of select="Signature/@id" />
+              <xsl:value-of select="Signature/div/@id" />
             </xsl:attribute>
             <xsl:text>Signature</xsl:text>
           </a>
index fe14e2cdd26fcb7ab185b717742cb1be4ed096b3..7755b2c6e863ab5463f0c3f86e9c78ad44f0869b 100644 (file)
@@ -351,7 +351,7 @@ add masterdoc support?
   <xs:element name="format">
     <xs:complexType>
       <xs:sequence>
-        <xs:any minOccurs="0" processContents="lax" />
+        <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
       </xs:sequence>
       <xs:attribute ref="type" />
     </xs:complexType>
index 6896008e2f200e9b313027b264a4583f9bd8760e..52bc1961113cd8cd08e0b61e198a03390a71a2fa 100644 (file)
@@ -362,6 +362,10 @@ namespace Mono.DocTest {
                /// <returns>A <see cref="T:Mono.DocTest.Widget" /> instance.</returns>
                public static Widget operator+ (Widget x) {return null;}
 
+               /// <remarks><c>M:Mono.DocTest.Widget.op_Division</c>.</remarks>
+               /// <returns>A <see cref="T:Mono.DocTest.Widget" /> instance.</returns>
+               public static Widget op_Division = null;
+
                /// <param name="x1">Yet Another <see cref="T:Mono.DocTest.Widget" />.</param>
                /// <param name="x2">Yay, <see cref="T:Mono.DocTest.Widget" />s.</param>
                /// <remarks><c>M:Mono.DocTest.Widget.op_Addition(Mono.DocTest.Widget,Mono.DocTest.Widget)</c>.</remarks>
index d28bcd6515f16eaef76d3c1bf02f618b615ec34b..9700fe0543d474e38aa23d90e2e6a1bc6b2721f8 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="MyEvent">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="op_Explicit">
index 0fe3b00451ea840bb67279cc60849e67ecb72f20..0a415dc1226b34761e08e19f321a5cc3f2a74038 100644 (file)
@@ -29,7 +29,8 @@
         <param name="docs">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Field">
index e2acdfc9cde026aee6ed823179e6c3f7aae9f5a1..848096553647593acb8009c514615576bfa90ee5 100644 (file)
         <param name="i">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ApplicationException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
-        <exception cref="T:System.SystemException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.ApplicationException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.SystemException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="total">
index 0fa5fb91367ef927a5bffc9f9250dc161a4b9797..c9a3fade121af8b9259e671f439983f57ad69bbe 100644 (file)
@@ -80,7 +80,8 @@
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />,
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process&lt;T&gt;">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="UseHelper&lt;T,U,V&gt;">
index 881946f6580bca06f45642a9a6bc39a776e79182..8918f4d86884af136610c06c40c275d5feac1576 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="array1">
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Dynamic1">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="DynamicE2">
         <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>
+      <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 int op_Explicit (Mono.DocTest.Widget x);" />
       <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int32 op_Explicit(class Mono.DocTest.Widget x) cil managed" />
index dd0db58d231252e9a7832f9df62ed6db673e56f0..c38f72491c80acf75ca1fd83b9578991cafb98e2 100644 (file)
@@ -42,7 +42,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+        <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
       </Docs>
     </Member>
     <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
@@ -68,7 +69,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+        <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Resize&lt;T&gt;">
@@ -91,7 +93,8 @@
         <param name="newSize">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
       </Docs>
     </Member>
   </Members>
index 8734f749a9b2eb05af19977d6c2e8ea868ed3c7b..c1d7858ae45136a728e44ae16e3b12c4740c64fa 100644 (file)
@@ -28,7 +28,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+        <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
       </Docs>
     </Member>
   </Members>
index b082688677f9891ede22b3618dd8a51d14a0f8a4..96aee607a9951683ebd223f8b5efe2fde0c539cd 100644 (file)
@@ -131,7 +131,8 @@ and the second dimension indexed by 1, 2, and 3. </para>
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+        <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
       </Docs>
     </Member>
     <Member MemberName="ConvertAll&lt;T,U&gt;">
@@ -168,7 +169,8 @@ and the second dimension indexed by 1, 2, and 3. </para>
         <remarks>
           <para>The <see cref="T:System.Converter&lt;T,U&gt;" /> is a delegate that converts an array element to the target type.  The elements of  <paramref name="array" /> are individually passed to this converter, and the converted elements are saved in the new array. The source array remains unchanged.</para>
         </remarks>
-        <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+        <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
         <exception cref="T:System.ArgumentNullException">
           <paramref name="array" /> is <see langword="null" /> or <paramref name="converter" /> is <see langword="null" />.</exception>
       </Docs>
@@ -196,7 +198,8 @@ and the second dimension indexed by 1, 2, and 3. </para>
         <param name="newSize">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
       </Docs>
     </Member>
   </Members>
index 5ce89496398ac49cd002401634d0c52c6f1909f1..f7a5f40c8f45795f4b9a60438039b3eebeba5e4d 100644 (file)
@@ -78,7 +78,8 @@
    property.</para>
           </block>
         </remarks>
-        <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+        <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
         <exception cref="T:System.ArgumentException">foo</exception>
         <permission cref="T:System.SomePermission">bar</permission>
         <altmember cref="T:System.SomeMember">alt member</altmember>
index 9fe29c5aa686b03ca03e637295e817daada1421b..a4f8b4baf8d7d0df4d03d850460930f441952983 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>E:Mono.DocTest.Generic.GenericBase`1.ItemChanged</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="MyEvent">
       <Docs>
         <summary>To be added.</summary>
         <remarks>E:Mono.DocTest.Generic.GenericBase`1.MyEvent</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="op_Explicit">
index cc491e85254c7f8554c2a0a94e9d25e5ec23d999..82aa9a349194ae35692ad7a0efcec0e51ea8a6cb 100644 (file)
@@ -53,7 +53,8 @@ class Example {
         <remarks>
           <c>C:Mono.DocTest.DocAttribute(System.String)</c>
         </remarks>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Field">
index 42c429c98f8eb129ed800b2dff57f67c0a592047..d33393476a1efff36bdfce0bffe5c40add2a9d02 100644 (file)
         <summary>To be added.</summary>
         <remarks>
           <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" />.</remarks>
-        <exception cref="T:System.ApplicationException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
-        <exception cref="T:System.SystemException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.ApplicationException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.SystemException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="total">
index 37b8e40116b858a00bec455b4db5850827986c89..d949b562def12545dd909e8f47701484371b403b 100644 (file)
             <see cref="M:System.Collections.Generic.List{System.Int32}.Remove(`0)" />
           </para>
         </remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process">
         <summary>To be added.</summary>
         <remarks>
           <c>M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})</c>.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />,
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process&lt;T&gt;">
         <summary>To be added.</summary>
         <remarks>
           <c>M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})</c>.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="UseHelper&lt;T,U,V&gt;">
index a3ae10a149eceb9be2ec6e694a20e6ed6eae54ea..c873e3aa4159940dd3007691310ae8bb31b11358 100644 (file)
         <summary>To be added.</summary>
         <remarks>
           <c>E:Mono.DocTest.Widget.AnotherEvent</c>.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="array1">
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Dynamic1">
         <remarks>
           <c>E:Mono.DocTest.Widget.DynamicE1</c>
         </remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="DynamicE2">
           <c>M:Mono.DocTest.Widget.op_Addition(Mono.DocTest.Widget,Mono.DocTest.Widget)</c>.</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>
+        <returns>A <see cref="T:Mono.DocTest.Widget" /> instance.</returns>
+        <remarks>
+          <c>M:Mono.DocTest.Widget.op_Division</c>.</remarks>
+      </Docs>
+    </Member>
     <Member MemberName="op_Explicit">
       <MemberSignature Language="C#" Value="public static int op_Explicit (Mono.DocTest.Widget x);" />
       <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int32 op_Explicit(class Mono.DocTest.Widget x) cil managed" />
index 2965a7f7da2ea1c9722dc82b5e48353be9932554..1f221eb27b275a8540a435acddf053668e1eff65 100644 (file)
@@ -49,7 +49,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+        <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
       </Docs>
     </Member>
     <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
@@ -78,7 +79,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+        <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Resize&lt;T&gt;">
         <param name="newSize">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
       </Docs>
     </Member>
   </Members>
index 0a1b9400db414588564e9f653fc3fe729d0a67ec..ceb5e1acfc73644967cf97a96f6c0961d418c144 100644 (file)
@@ -38,7 +38,8 @@
         <remarks>
           <c>M:System.Environment.GetFolderPath(System.Environment+SpecialFolder)</c>
         </remarks>
-        <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+        <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
       </Docs>
     </Member>
   </Members>
index c8283811e0fd92ed9159051620776b49ea7bba84..393a51ae7b3e11d5c4b008a23755981f982e377b 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="MyEvent">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="op_Explicit">
index c00d0e991f32a5ec1c725ef76a04c4fdb9a15147..5516cf272ebf5d8368031f8519de9de62db4e741 100644 (file)
@@ -35,7 +35,8 @@
         <param name="docs">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Field">
index ae648fae699390fada86a85342186711cb2e5e47..410dece134385e1f29cf6b88fef4e0af23b076d9 100644 (file)
         <param name="i">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ApplicationException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
-        <exception cref="T:System.SystemException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.ApplicationException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.SystemException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="total">
index 458a2e255ea570236decdc1ed5a0ee26b4ca178f..96e73c3baf54b4dfdc7de15a2a75fda81aaf1371 100644 (file)
@@ -98,7 +98,8 @@
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />,
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process&lt;T&gt;">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="UseHelper&lt;T,U,V&gt;">
index 774d2396397f3999de0428c1bcd143e8b83a239a..af7e8564c1a11c410e6740b79b42f5d352059f20 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="array1">
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Dynamic1">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="DynamicE2">
         <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>
+        <AssemblyVersion>2.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 int op_Explicit (Mono.DocTest.Widget x);" />
       <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int32 op_Explicit(class Mono.DocTest.Widget x) cil managed" />
index 67fbe3ef045eb8259cae8d1dd594d8f4060ce7ba..779981099833dc7713412ac586cea044a6e554d4 100644 (file)
@@ -52,7 +52,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+        <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
       </Docs>
     </Member>
     <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
@@ -82,7 +83,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+        <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Resize&lt;T&gt;">
         <param name="newSize">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
       </Docs>
     </Member>
   </Members>
index 0576dfb26044af82a6ba47f3477b4eb1305862d9..df4c852ba766efb40577c6e4fa0a1f42b19fd034 100644 (file)
@@ -34,7 +34,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+        <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
       </Docs>
     </Member>
   </Members>
index e4b74d3bac8fd0a18a061e5c3d044699958b69af..42c2af1365f43bb63f0dcdb1c58186ef85bd7e70 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="MyEvent">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="op_Explicit">
index 8fa875fe6ffa48bd0f78bbc2d41682fe8b95d7e9..fbc5798295f9105ddf938c216218949b6b219c58 100644 (file)
@@ -33,7 +33,8 @@
         <param name="docs">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Field">
index 5d27f0ade8c51687f46f7c7573bdd77dd7b5836b..6aa658cc09fc6cb96f3f8af7429ceab7b338bc68 100644 (file)
         <param name="i">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ApplicationException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
-        <exception cref="T:System.SystemException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.ApplicationException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+        <exception cref="T:System.SystemException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="total">
index b30f8bdb0f126284ac8577741e65c926b654b033..a7afb6cf27a92882519bf0eacb271b108be4e90d 100644 (file)
@@ -93,7 +93,8 @@
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />,
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Process&lt;T&gt;">
         <param name="list">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-        <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="UseHelper&lt;T,U,V&gt;">
index 82529c49ba35d914758ce0fda24e6194d0724c22..d7fb2ea21da64f4774cf911adf6ddcf7788977bb 100644 (file)
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="array1">
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Dynamic1">
       <Docs>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-        <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+        <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+        <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
       </Docs>
     </Member>
     <Member MemberName="DynamicE2">
         <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 int op_Explicit (Mono.DocTest.Widget x);" />
       <MemberSignature Language="ILAsm" Value=".method public static hidebysig specialname int32 op_Explicit(class Mono.DocTest.Widget x) cil managed" />
index 2965a7f7da2ea1c9722dc82b5e48353be9932554..1f221eb27b275a8540a435acddf053668e1eff65 100644 (file)
@@ -49,7 +49,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+        <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
       </Docs>
     </Member>
     <Member MemberName="ConvertAll&lt;TInput,TOutput&gt;">
@@ -78,7 +79,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+        <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
       </Docs>
     </Member>
     <Member MemberName="Resize&lt;T&gt;">
         <param name="newSize">To be added.</param>
         <summary>To be added.</summary>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+        <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
       </Docs>
     </Member>
   </Members>
index 7bf1dc8fc10f9ae428990d1993772dcc90b8fbb1..5c1923816d25d423ac6282eb0c763e5cacf252e5 100644 (file)
@@ -32,7 +32,8 @@
         <summary>To be added.</summary>
         <returns>To be added.</returns>
         <remarks>To be added.</remarks>
-        <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+        <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
       </Docs>
     </Member>
   </Members>
index 9da902d5dd3c4e465a8cdeb01a9e6439dea6313c..00b54d75199606ca4d2c4c7e248ae1a9584736f1 100644 (file)
     </div>
     <h1 class="PageTitle" id="T:Mono.DocTest.Generic.Extensions">Extensions  Class</h1>
     <p class="Summary" id="T:Mono.DocTest.Generic.Extensions:Summary">extension methods!</p>
-    <div id="T:Mono.DocTest.Generic.Extensions:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public static class  <b>Extensions</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.Extensions:Signature">public static class  <b>Extensions</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.Extensions:Docs">
       <h2 class="Section">Remarks</h2>
index 78e190fc140f193e61d8b623423d0101fc222209..1336f30720eaa1b918a4acf6ffe5b7b0e4aaf098 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.Func`2:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.Func`2:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">[Mono.DocTest.Doc("method")]<br />[return:Mono.DocTest.Doc("return", Field=false)]<br />public delegate <i title="return type, with attributes!">TRet</i> <b>Func&lt;[Mono.DocTest.Doc("arg!")] TArg, [Mono.DocTest.Doc("ret!")] TRet&gt;</b> ([Mono.DocTest.Doc("arg-actual")] <i title="argument type, with attributes!">TArg</i> a)<br /> where TArg : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Exception">Exception</a><br /> where TRet : </div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.Func`2:Signature">[Mono.DocTest.Doc("method")]<br />[return:Mono.DocTest.Doc("return", Field=false)]<br />public delegate <i title="return type, with attributes!">TRet</i> <b>Func&lt;[Mono.DocTest.Doc("arg!")] TArg, [Mono.DocTest.Doc("ret!")] TRet&gt;</b> ([Mono.DocTest.Doc("arg-actual")] <i title="argument type, with attributes!">TArg</i> a)<br /> where TArg : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Exception">Exception</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.Func`2:Docs">
       <h4 class="Subsection">Type Parameters</h4>
index ad1ce4e5fb5a8fb842f089050c62d862ecdc8bfa..640edea5d159a35c35fbc75f5ab7d095e0940cee 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>GenericBase&lt;U&gt;.FooEventArgs</b> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.EventArgs">EventArgs</a></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Signature">public class  <b>GenericBase&lt;U&gt;.FooEventArgs</b> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.EventArgs">EventArgs</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs">GenericBase</a>
+                      <a href="#C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs()">GenericBase</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs">GenericBase Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:member">
+        <h3 id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs()">GenericBase Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>GenericBase</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.FooEventArgs():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 73d94d0ed4259dbb19119ff8dea86e00edef7f12..93df5378c0a9bcc08ccd5c5c6858e5f7d421ddc7 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection.Enumerator:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection.Enumerator:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">protected struct  <b>GenericBase&lt;U&gt;.NestedCollection.Enumerator</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection.Enumerator:Signature">protected struct  <b>GenericBase&lt;U&gt;.NestedCollection.Enumerator</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection.Enumerator:Docs">
       <h2 class="Section">Remarks</h2>
index ff94eab5013a35b930e8fad3b85137a0ebf12279..5eaccf4724866b1bdfca4d6aad441f0b7222dc75 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>GenericBase&lt;U&gt;.NestedCollection</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Signature">public class  <b>GenericBase&lt;U&gt;.NestedCollection</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.GenericBase`1.NestedCollection">GenericBase</a>
+                      <a href="#C:Mono.DocTest.Generic.GenericBase`1.NestedCollection()">GenericBase</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection">GenericBase Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection:member">
+        <h3 id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection()">GenericBase Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>GenericBase</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1.NestedCollection():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 59dd7e0721f462a4cce50fbd1f00c2f2a24947e2..51183f4e2bc0537219328afd00cba5aa792baa46 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.GenericBase`1:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.GenericBase`1:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>GenericBase&lt;U&gt;</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.GenericBase`1:Signature">public class  <b>GenericBase&lt;U&gt;</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.GenericBase`1:Docs">
       <h4 class="Subsection">Type Parameters</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.GenericBase`1">GenericBase</a>
+                      <a href="#C:Mono.DocTest.Generic.GenericBase`1()">GenericBase</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Generic.GenericBase`1:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.GenericBase`1">GenericBase Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1:member">
+        <h3 id="C:Mono.DocTest.Generic.GenericBase`1()">GenericBase Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.GenericBase`1():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>GenericBase</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.GenericBase`1():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
                   <span class="NotEntered">Documentation for this section has not yet been entered.</span>
                 </td>
               </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentNullException">ArgumentNullException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentOutOfRangeException">ArgumentOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.FormatException">FormatException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IndexOutOfRangeException">IndexOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
               <tr valign="top">
                 <td>
                   <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.MulticastNotSupportedException">MulticastNotSupportedException</a>
                   <span class="NotEntered">Documentation for this section has not yet been entered.</span>
                 </td>
               </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentNullException">ArgumentNullException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentOutOfRangeException">ArgumentOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.FormatException">FormatException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IndexOutOfRangeException">IndexOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
               <tr valign="top">
                 <td>
                   <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.MulticastNotSupportedException">MulticastNotSupportedException</a>
index 44da611b8bd8656c70431c3b2bcbd0d2964c1602..2a71d47683c2acddc6ca52bec7948e34c5f4cdf9 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.IFoo`1:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.IFoo`1:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public interface  <b>IFoo&lt;T&gt;</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.IFoo`1:Signature">public interface  <b>IFoo&lt;T&gt;</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.IFoo`1:Docs">
       <h4 class="Subsection">Type Parameters</h4>
index d38aa369c1ddd36e0e5e79cd6ffc348ccc5fb415..4ce462af161b624e25f7febf041ee4b2fa644072 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.MyList`1.Helper`2:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.MyList`1.Helper`2:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>MyList&lt;T, U, V&gt;</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.MyList`1.Helper`2:Signature">public class  <b>MyList&lt;T, U, V&gt;</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.MyList`1.Helper`2:Docs">
       <h4 class="Subsection">Type Parameters</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.MyList`1.Helper`2">MyList</a>
+                      <a href="#C:Mono.DocTest.Generic.MyList`1.Helper`2()">MyList</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Generic.MyList`1.Helper`2:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.MyList`1.Helper`2">MyList Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.MyList`1.Helper`2:member">
+        <h3 id="C:Mono.DocTest.Generic.MyList`1.Helper`2()">MyList Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.MyList`1.Helper`2():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>MyList</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1.Helper`2:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1.Helper`2():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1.Helper`2:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1.Helper`2():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index da02046714c62454158a44cf200f8ed5dea9786a..312b3c4385e434565fab9bb76cfce6a01f95e1f8 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.MyList`1:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.MyList`1:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>MyList&lt;[Mono.DocTest.Doc("Type Parameter!")] T&gt;</b> : <a href="../Mono.DocTest.Generic/GenericBase`1.html">GenericBase&lt;T&gt;</a>,       <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerable`1">IEnumerable&lt;Int32[]&gt;</a></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.MyList`1:Signature">public class  <b>MyList&lt;[Mono.DocTest.Doc("Type Parameter!")] T&gt;</b> : <a href="../Mono.DocTest.Generic/GenericBase`1.html">GenericBase&lt;T&gt;</a>,        <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerable`1">IEnumerable&lt;Int32[]&gt;</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.MyList`1:Docs">
       <h4 class="Subsection">Type Parameters</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.MyList`1">MyList</a>
+                      <a href="#C:Mono.DocTest.Generic.MyList`1()">MyList</a>
                     </b>()</div>
                 </td>
                 <td>
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`1.GetEnumerator">GetEnumerator</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`1.GetEnumerator()">GetEnumerator</a>
                   </b>()<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;Int32[]&gt;</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`1.GetHelper``2">GetHelper&lt;U,V&gt;</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`1.GetHelper``2()">GetHelper&lt;U,V&gt;</a>
                   </b>()<nobr> : <a href="../Mono.DocTest.Generic/MyList`1+Helper`2.html">MyList&lt;T&gt;.Helper&lt;U, V&gt;</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                   </div>
                 </td>
                 <td>
-                  <a href="#M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator">
+                  <a href="#M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator()">
                     <b>IEnumerable.GetEnumerator</b>
                   </a>
                 </td>
     <div class="Members" id="T:Mono.DocTest.Generic.MyList`1:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.MyList`1">MyList Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.MyList`1:member">
+        <h3 id="C:Mono.DocTest.Generic.MyList`1()">MyList Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.MyList`1():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>MyList</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`1():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator">GetEnumerator Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator()">GetEnumerator Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;Int32[]&gt;</a> <b>GetEnumerator</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator():Returns">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator():Remarks">
             <tt>M:Mono.DocTest.MyList`1.GetEnumerator</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetEnumerator():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2">GetHelper&lt;U,V&gt; Generic Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2()">GetHelper&lt;U,V&gt; Generic Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="../Mono.DocTest.Generic/MyList`1+Helper`2.html">MyList&lt;T&gt;.Helper&lt;U, V&gt;</a> <b>GetHelper&lt;U, V&gt;</b> ()</div>
           <h4 class="Subsection">Type Parameters</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2:Type Parameters">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2():Type Parameters">
             <dl>
               <dt>
                 <i>U</i>
             </dl>
           </blockquote>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2():Returns">
             <tt>null</tt>.</blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2():Remarks">
             <tt>M:Mono.DocTest.Generic.MyList`1.GetHelper``2</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.GetHelper``2():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator">System.Collections.IEnumerable.GetEnumerator Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator()">System.Collections.IEnumerable.GetEnumerator Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <div class="Signature">
             <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.IEnumerator">IEnumerator</a> <b>System.Collections.IEnumerable.GetEnumerator</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator():Returns">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator():Remarks">
             <tt>M:Mono.DocTest.MyList`1.System#Collections#GetEnumerator</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`1.System#Collections#IEnumerable#GetEnumerator():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 4766687f9fb3d5b3df59e07429a30bb81627244f..75444ea1c4a7776b348c511e345dd09a9f00910b 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Generic.MyList`2:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Generic.MyList`2:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>MyList&lt;A, B&gt;</b> : <a href="../Mono.DocTest.Generic/GenericBase`1.html">GenericBase&lt;Dictionary&lt;A, B&gt;&gt;</a>,     <a href="../Mono.DocTest.Generic/IFoo`1.html">IFoo&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.ICollection`1">ICollection&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerable`1">IEnumerable&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;A&gt;</a><br /> where A : class, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IList`1">IList&lt;B&gt;</a>, new()<br /> where B : class, <i title="Ako generic param">A</i></div>
+      <div class="Signature" id="T:Mono.DocTest.Generic.MyList`2:Signature">public class  <b>MyList&lt;A, B&gt;</b> : <a href="../Mono.DocTest.Generic/GenericBase`1.html">GenericBase&lt;Dictionary&lt;A, B&gt;&gt;</a>,      <a href="../Mono.DocTest.Generic/IFoo`1.html">IFoo&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.ICollection`1">ICollection&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerable`1">IEnumerable&lt;A&gt;</a>, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;A&gt;</a><br /> where A : class, <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IList`1">IList&lt;B&gt;</a>, new()<br /> where B : class, <i title="Ako generic param">A</i></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Generic.MyList`2:Docs">
       <h4 class="Subsection">Type Parameters</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Generic.MyList`2">MyList</a>
+                      <a href="#C:Mono.DocTest.Generic.MyList`2()">MyList</a>
                     </b>()</div>
                 </td>
                 <td>
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`2.Dispose">Dispose</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`2.Dispose()">Dispose</a>
                   </b>()<blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`2.Foo">Foo</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`2.Foo()">Foo</a>
                   </b>()<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.KeyValuePair`2">KeyValuePair&lt;IEnumerable&lt;A&gt;, IEnumerable&lt;B&gt;&gt;</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`2.GetEnumerator">GetEnumerator</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`2.GetEnumerator()">GetEnumerator</a>
                   </b>()<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.List`1.Enumerator">List&lt;A&gt;.Enumerator</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`2.MoveNext">MoveNext</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`2.MoveNext()">MoveNext</a>
                   </b>()<nobr> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a></nobr><blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Generic.MyList`2.Reset">Reset</a>
+                    <a href="#M:Mono.DocTest.Generic.MyList`2.Reset()">Reset</a>
                   </b>()<blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
             </table>
                   </div>
                 </td>
                 <td>
-                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear">
+                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear()">
                     <b>ICollection&lt;A&gt;.Clear</b>
                   </a>
                 </td>
                   </div>
                 </td>
                 <td>
-                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator">
+                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator()">
                     <b>IEnumerable&lt;A&gt;.GetEnumerator</b>
                   </a>
                 </td>
                   </div>
                 </td>
                 <td>
-                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator">
+                  <a href="#M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator()">
                     <b>IEnumerable.GetEnumerator</b>
                   </a>
                 </td>
     <div class="Members" id="T:Mono.DocTest.Generic.MyList`2:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Generic.MyList`2">MyList Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Generic.MyList`2:member">
+        <h3 id="C:Mono.DocTest.Generic.MyList`2()">MyList Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Generic.MyList`2():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>MyList</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`2:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`2():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`2:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Generic.MyList`2():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.Dispose">Dispose Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Dispose:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.Dispose()">Dispose Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Dispose():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Dispose</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Dispose:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Dispose():Remarks">
             <tt>M:Mono.DocTest.MyList`2.Dispose</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Dispose:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Dispose():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.Foo">Foo Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Foo:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.Foo()">Foo Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Foo():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.KeyValuePair`2">KeyValuePair&lt;IEnumerable&lt;A&gt;, IEnumerable&lt;B&gt;&gt;</a> <b>Foo</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo():Returns">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo:Remarks">M:Mono.DocTest.Generic.MyList`2.Foo</div>
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo():Remarks">M:Mono.DocTest.Generic.MyList`2.Foo</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Foo():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator">GetEnumerator Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator()">GetEnumerator Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.List`1.Enumerator">List&lt;A&gt;.Enumerator</a> <b>GetEnumerator</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator:Returns">A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.List`1.Enumerator">List&lt;`0&gt;.Enumerator</a>.</blockquote>
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator():Returns">A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.List`1.Enumerator">List&lt;`0&gt;.Enumerator</a>.</blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator():Remarks">
             <tt>M:Mono.DocTest.MyList`2.GetEnumerator</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.GetEnumerator():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.MoveNext">MoveNext Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.MoveNext:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.MoveNext()">MoveNext Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.MoveNext():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a> <b>MoveNext</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext():Returns">
             <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Boolean">bool</a>
           </blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext():Remarks">
             <tt>M:Mono.DocTest.MyList`2.MoveNext</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.MoveNext():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.Reset">Reset Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Reset:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.Reset()">Reset Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.Reset():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Reset</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Reset:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Reset():Remarks">
             <tt>M:Mono.DocTest.MyList`2.Reset</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Reset:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.Reset():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear">System.Collections.Generic.ICollection&lt;A&gt;.Clear Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear()">System.Collections.Generic.ICollection&lt;A&gt;.Clear Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <div class="Signature">
             <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>System.Collections.Generic.ICollection&lt;A&gt;.Clear</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear():Remarks">
             <tt>M:Mono.DocTest.MyList`2.System#Collections#Generic#ICollection{A}#Clear</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#ICollection{A}#Clear():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator">System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator()">System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <div class="Signature">
             <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;A&gt;</a> <b>System.Collections.Generic.IEnumerable&lt;A&gt;.GetEnumerator</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator:Returns">A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;`0&gt;</a>.</blockquote>
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator():Returns">A <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.Generic.IEnumerator`1">IEnumerator&lt;`0&gt;</a>.</blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator():Remarks">
             <tt>M:Mono.DocTest.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#Generic#IEnumerable{A}#GetEnumerator():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator">System.Collections.IEnumerable.GetEnumerator Method</h3>
-        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator:member">
+        <h3 id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator()">System.Collections.IEnumerable.GetEnumerator Method</h3>
+        <blockquote id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <div class="Signature">
             <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Collections.IEnumerator">IEnumerator</a> <b>System.Collections.IEnumerable.GetEnumerator</b> ()</div>
           <h4 class="Subsection">Returns</h4>
-          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator:Returns">
+          <blockquote class="SubsectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator():Returns">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </blockquote>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator():Remarks">
             <tt>M:Mono.DocTest.MyList`2.System#Collections#GetEnumerator</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Generic.MyList`2.System#Collections#IEnumerable#GetEnumerator():Version Information">
             <b>Namespace: </b>Mono.DocTest.Generic<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index d438287e94fb442dd342ae34bd38c6913edecbfd..dae529e4670ffa4ae2804b63467aaeeef3e4b83f 100644 (file)
     </div>
     <h1 class="PageTitle" id="T:Mono.DocTest.Color">Color  Enum</h1>
     <p class="Summary" id="T:Mono.DocTest.Color:Summary">Possible colors</p>
-    <div id="T:Mono.DocTest.Color:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public enum <b>Color</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Color:Signature">public enum <b>Color</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Color:Docs">
       <h2 class="Section">Remarks</h2>
index b69c1eb4e42009755ee742618eeb8b047f75056d..a3bb5ddffefbc8459a34662e2089af1c8432d0c6 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.D:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.D:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Object">object</a> <b>D</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Func`3">Func&lt;string, object, object&gt;</a> value)</div>
+      <div class="Signature" id="T:Mono.DocTest.D:Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Object">object</a> <b>D</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Func`3">Func&lt;string, object, object&gt;</a> value)</div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.D:Docs">
       <h4 class="Subsection">Parameters</h4>
index 9c293849c14a072558b55cea07feec90ed233310..609837edbcc43382a772f4343508ecc42dfbe327 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.DocAttribute:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.DocAttribute:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">[System.AttributeUsage(System.AttributeTargets.All)]<br />public class  <b>DocAttribute</b> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Attribute">Attribute</a></div>
+      <div class="Signature" id="T:Mono.DocTest.DocAttribute:Signature">[System.AttributeUsage(System.AttributeTargets.All)]<br />public class  <b>DocAttribute</b> : <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Attribute">Attribute</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.DocAttribute:Docs">
       <h2 class="Section">Remarks</h2>
index 0cd98cc3cb45b86a85b460ffe1a9696e2839e985..bad6608916c2538ec7f354605cc452245a4a67d6 100644 (file)
     </div>
     <h1 class="PageTitle" id="T:Mono.DocTest.DocValueType">DocValueType  Struct</h1>
     <p class="Summary" id="T:Mono.DocTest.DocValueType:Summary">Process interface</p>
-    <div id="T:Mono.DocTest.DocValueType:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public struct  <b>DocValueType</b> : <a href="../Mono.DocTest/IProcess.html">IProcess</a></div>
+      <div class="Signature" id="T:Mono.DocTest.DocValueType:Signature">public struct  <b>DocValueType</b> : <a href="../Mono.DocTest/IProcess.html">IProcess</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.DocValueType:Docs">
       <h2 class="Section">Remarks</h2>
index 278dfe86f58d44058ce8b8eaa2446807abcbfa99..75443ba178afd3fc1e64b22d7ad7c47255fc6717 100644 (file)
     </div>
     <h1 class="PageTitle" id="T:Mono.DocTest.IProcess">IProcess  Interface</h1>
     <p class="Summary" id="T:Mono.DocTest.IProcess:Summary">Process interface</p>
-    <div id="T:Mono.DocTest.IProcess:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public interface  <b>IProcess</b></div>
+      <div class="Signature" id="T:Mono.DocTest.IProcess:Signature">public interface  <b>IProcess</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.IProcess:Docs">
       <h2 class="Section">Remarks</h2>
index fba5a9f6ccdde020535d4fe6ad2107344b3e5e3b..7e45227c71bd9a45d312962074b26544581d46a1 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.UseLists:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.UseLists:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>UseLists</b></div>
+      <div class="Signature" id="T:Mono.DocTest.UseLists:Signature">public class  <b>UseLists</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.UseLists:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.UseLists">UseLists</a>
+                      <a href="#C:Mono.DocTest.UseLists()">UseLists</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.UseLists:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.UseLists">UseLists Constructor</h3>
-        <blockquote id="C:Mono.DocTest.UseLists:member">
+        <h3 id="C:Mono.DocTest.UseLists()">UseLists Constructor</h3>
+        <blockquote id="C:Mono.DocTest.UseLists():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>UseLists</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.UseLists:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.UseLists():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.UseLists:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.UseLists():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 47cce1db7595173f0bed9efa7b5fc625b7f45016..ba4e2ac9660e16bafaf140546a6ba9927e83bccd 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.Del:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.Del:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Widget.Del</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Int32">int</a> i)</div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.Del:Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Widget.Del</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Int32">int</a> i)</div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.Del:Docs">
       <h4 class="Subsection">Parameters</h4>
index 1962c75179f61776055caa71c272cc0379a73be4..0d2bc273e90355c15da3b0acde973db38f7abb0c 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.Direction:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.Direction:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">[System.Flags]<br />protected enum <b>Widget.Direction</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.Direction:Signature">[System.Flags]<br />protected enum <b>Widget.Direction</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.Direction:Docs">
       <h2 class="Section">Remarks</h2>
index a98e7c74827fe3840f9f3b6141351a565d2b154c..05beb05f4c99eefdae9f1f1746560eeaa4ecb1be 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.IMenuItem:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.IMenuItem:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public interface  <b>Widget.IMenuItem</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.IMenuItem:Signature">public interface  <b>Widget.IMenuItem</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.IMenuItem:Docs">
       <h2 class="Section">Remarks</h2>
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Widget.IMenuItem.A">A</a>
+                    <a href="#M:Mono.DocTest.Widget.IMenuItem.A()">A</a>
                   </b>()<blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
             </table>
     <div class="Members" id="T:Mono.DocTest.Widget.IMenuItem:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="M:Mono.DocTest.Widget.IMenuItem.A">A Method</h3>
-        <blockquote id="M:Mono.DocTest.Widget.IMenuItem.A:member">
+        <h3 id="M:Mono.DocTest.Widget.IMenuItem.A()">A Method</h3>
+        <blockquote id="M:Mono.DocTest.Widget.IMenuItem.A():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>A</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Widget.IMenuItem.A:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Widget.IMenuItem.A():Remarks">
             <tt>M:Mono.DocTest.Widget.IMenuItem.A</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Widget.IMenuItem.A:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Widget.IMenuItem.A():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 1e9918bd722a6507c7ccd0fbd4ec4a8faf3f1a49..8e2397f2c41c407e90a7ffb023182576ffda3df3 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget.NestedClass.Double.Triple.Quadruple</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Signature">public class  <b>Widget.NestedClass.Double.Triple.Quadruple</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple">Widget.NestedClass.Double.Triple.Quadruple</a>
+                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple()">Widget.NestedClass.Double.Triple.Quadruple</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple">Widget.NestedClass.Double.Triple.Quadruple Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:member">
+        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple()">Widget.NestedClass.Double.Triple.Quadruple Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget.NestedClass.Double.Triple.Quadruple</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple.Quadruple():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index b004c0872d581f67ce55688da36fac39f5fd605f..dd28c310b2a854272be8a1da24fa52cbc70432e0 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.NestedClass.Double.Triple:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget.NestedClass.Double.Triple</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple:Signature">public class  <b>Widget.NestedClass.Double.Triple</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double.Triple">Widget.NestedClass.Double.Triple</a>
+                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double.Triple()">Widget.NestedClass.Double.Triple</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Widget.NestedClass.Double.Triple:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double.Triple">Widget.NestedClass.Double.Triple Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double.Triple:member">
+        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double.Triple()">Widget.NestedClass.Double.Triple Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double.Triple():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget.NestedClass.Double.Triple</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double.Triple():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 5aad9ed459ee9f24e472d3fc68225857f6ce887d..2b6640cdde2c2ffb791a439ec3ad332e30ae6be1 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.NestedClass.Double:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.NestedClass.Double:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget.NestedClass.Double</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.NestedClass.Double:Signature">public class  <b>Widget.NestedClass.Double</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.NestedClass.Double:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double">Widget.NestedClass.Double</a>
+                      <a href="#C:Mono.DocTest.Widget.NestedClass.Double()">Widget.NestedClass.Double</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Widget.NestedClass.Double:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double">Widget.NestedClass.Double Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double:member">
+        <h3 id="C:Mono.DocTest.Widget.NestedClass.Double()">Widget.NestedClass.Double Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget.NestedClass.Double():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget.NestedClass.Double</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass.Double():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index e6eea8d8dd9410dd41d575e633b43a931bdc6ead..4b2f9b768f594e02ab1bddb1dd2b0eb420f6fb5c 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.NestedClass:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.NestedClass:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget.NestedClass</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.NestedClass:Signature">public class  <b>Widget.NestedClass</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.NestedClass:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget.NestedClass">Widget.NestedClass</a>
+                      <a href="#C:Mono.DocTest.Widget.NestedClass()">Widget.NestedClass</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Widget.NestedClass:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget.NestedClass">Widget.NestedClass Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget.NestedClass:member">
+        <h3 id="C:Mono.DocTest.Widget.NestedClass()">Widget.NestedClass Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget.NestedClass():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget.NestedClass</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index cb38b39455b8b0b9e44a342fc577a8c2ba5edf17..160b3ca1e72e6fbda580e92503c8b9a8d39fdd31 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget.NestedClass`1:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget.NestedClass`1:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget.NestedClass&lt;T&gt;</b></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget.NestedClass`1:Signature">public class  <b>Widget.NestedClass&lt;T&gt;</b></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget.NestedClass`1:Docs">
       <h4 class="Subsection">Type Parameters</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget.NestedClass`1">Widget.NestedClass</a>
+                      <a href="#C:Mono.DocTest.Widget.NestedClass`1()">Widget.NestedClass</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:Mono.DocTest.Widget.NestedClass`1:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget.NestedClass`1">Widget.NestedClass Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget.NestedClass`1:member">
+        <h3 id="C:Mono.DocTest.Widget.NestedClass`1()">Widget.NestedClass Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget.NestedClass`1():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget.NestedClass</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass`1:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass`1():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass`1:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget.NestedClass`1():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 75dce8428156d65a91d308ee6d2465cb61f2eacb..7f29d8c54a2f46a274111820156c090c167a66b5 100644 (file)
     <p class="Summary" id="T:Mono.DocTest.Widget:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:Mono.DocTest.Widget:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Widget</b> : <a href="../Mono.DocTest/IProcess.html">IProcess</a></div>
+      <div class="Signature" id="T:Mono.DocTest.Widget:Signature">public class  <b>Widget</b> : <a href="../Mono.DocTest/IProcess.html">IProcess</a></div>
     </div>
     <div class="Remarks" id="T:Mono.DocTest.Widget:Docs">
       <h4 class="Subsection">See Also</h4>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:Mono.DocTest.Widget">Widget</a>
+                      <a href="#C:Mono.DocTest.Widget()">Widget</a>
                     </b>()</div>
                 </td>
                 <td>
                     <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.String">string</a>
                   </i>. <span class="NotEntered">Documentation for this section has not yet been entered.</span></td>
               </tr>
+              <tr valign="top">
+                <td>
+                  <div>static </div>
+                </td>
+                <td>
+                  <b>
+                    <a href="#F:Mono.DocTest.Widget.op_Division">op_Division</a>
+                  </b>
+                </td>
+                <td>
+                  <i>
+                    <a href="../Mono.DocTest/Widget.html">Widget</a>
+                  </i>. <span class="NotEntered">Documentation for this section has not yet been entered.</span></td>
+              </tr>
               <tr valign="top">
                 <td>
                   <div>
                 </td>
                 <td colspan="2">
                   <b>
-                    <a href="#M:Mono.DocTest.Widget.M0">M0</a>
+                    <a href="#M:Mono.DocTest.Widget.M0()">M0</a>
                   </b>()<blockquote><span class="NotEntered">Documentation for this section has not yet been entered.</span></blockquote></td>
               </tr>
               <tr valign="top">
     <div class="Members" id="T:Mono.DocTest.Widget:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:Mono.DocTest.Widget">Widget Constructor</h3>
-        <blockquote id="C:Mono.DocTest.Widget:member">
+        <h3 id="C:Mono.DocTest.Widget()">Widget Constructor</h3>
+        <blockquote id="C:Mono.DocTest.Widget():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Widget</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget:Remarks">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget():Remarks">
             <p>
               <tt>C:Mono.DocTest.Widget</tt>.</p>
             <p>
             </p>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:Mono.DocTest.Widget:Version Information">
+          <div class="SectionBox" id="C:Mono.DocTest.Widget():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
                   <span class="NotEntered">Documentation for this section has not yet been entered.</span>
                 </td>
               </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentNullException">ArgumentNullException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentOutOfRangeException">ArgumentOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.FormatException">FormatException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IndexOutOfRangeException">IndexOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
               <tr valign="top">
                 <td>
                   <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.MulticastNotSupportedException">MulticastNotSupportedException</a>
                   <span class="NotEntered">Documentation for this section has not yet been entered.</span>
                 </td>
               </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentNullException">ArgumentNullException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.ArgumentOutOfRangeException">ArgumentOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.FormatException">FormatException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
+              <tr valign="top">
+                <td>
+                  <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IndexOutOfRangeException">IndexOutOfRangeException</a>
+                </td>
+                <td>
+                  <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+                </td>
+              </tr>
               <tr valign="top">
                 <td>
                   <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.MulticastNotSupportedException">MulticastNotSupportedException</a>
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
-        <h3 id="M:Mono.DocTest.Widget.M0">M0 Method</h3>
-        <blockquote id="M:Mono.DocTest.Widget.M0:member">
+        <h3 id="M:Mono.DocTest.Widget.M0()">M0 Method</h3>
+        <blockquote id="M:Mono.DocTest.Widget.M0():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public static <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>M0</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Widget.M0:Remarks">
+          <div class="SectionBox" id="M:Mono.DocTest.Widget.M0():Remarks">
             <tt>M:Mono.DocTest.Widget.M0</tt>.</div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="M:Mono.DocTest.Widget.M0:Version Information">
+          <div class="SectionBox" id="M:Mono.DocTest.Widget.M0():Version Information">
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
             <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
+        <h3 id="F:Mono.DocTest.Widget.op_Division">op_Division Field</h3>
+        <blockquote id="F:Mono.DocTest.Widget.op_Division:member">
+          <p class="Summary">
+            <span class="NotEntered">Documentation for this section has not yet been entered.</span>
+          </p>
+          <h2>Syntax</h2>
+          <div class="Signature">public static <a href="../Mono.DocTest/Widget.html">Widget</a> operator/ </div>
+          <h4 class="Subsection">Returns</h4>
+          <blockquote class="SubsectionBox" id="F:Mono.DocTest.Widget.op_Division:Returns">A <a href="../Mono.DocTest/Widget.html">Mono.DocTest.Widget</a> instance.</blockquote>
+          <h2 class="Section">Remarks</h2>
+          <div class="SectionBox" id="F:Mono.DocTest.Widget.op_Division:Remarks">
+            <tt>M:Mono.DocTest.Widget.op_Division</tt>.</div>
+          <h2 class="Section">Requirements</h2>
+          <div class="SectionBox" id="F:Mono.DocTest.Widget.op_Division:Version Information">
+            <b>Namespace: </b>Mono.DocTest<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
+          <hr size="1" />
+        </blockquote>
         <h3 id="M:Mono.DocTest.Widget.op_Explicit(Mono.DocTest.Widget)~System.Int32">Conversion Method</h3>
         <blockquote id="M:Mono.DocTest.Widget.op_Explicit(Mono.DocTest.Widget)~System.Int32:member">
           <p class="Summary">
index 057984a71ba9db5a1fae04881d2f895c56762a23..e0711675d7f91dbf93f4e33713f0e9dcdf34fae7 100644 (file)
     </div>
     <h1 class="PageTitle" id="T:NoNamespace">NoNamespace  Class</h1>
     <p class="Summary" id="T:NoNamespace:Summary">Namespace Test: [<a href="Mono.DocTest/index.html">Mono.DocTest</a>]</p>
-    <div id="T:NoNamespace:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>NoNamespace</b></div>
+      <div class="Signature" id="T:NoNamespace:Signature">public class  <b>NoNamespace</b></div>
     </div>
     <div class="Remarks" id="T:NoNamespace:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:NoNamespace">NoNamespace</a>
+                      <a href="#C:NoNamespace()">NoNamespace</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:NoNamespace:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:NoNamespace">NoNamespace Constructor</h3>
-        <blockquote id="C:NoNamespace:member">
+        <h3 id="C:NoNamespace()">NoNamespace Constructor</h3>
+        <blockquote id="C:NoNamespace():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>NoNamespace</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:NoNamespace:Remarks">
+          <div class="SectionBox" id="C:NoNamespace():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:NoNamespace:Version Information">
+          <div class="SectionBox" id="C:NoNamespace():Version Information">
             <b>Namespace: </b>
             <br />
             <b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
index d012d7772fbd880ccc21bb92113e2f48656bf008..4a0f413147cadcff48a9bc43be9649922894d62b 100644 (file)
     <p class="Summary" id="T:System.Action`1:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:System.Action`1:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Action&lt;T&gt;</b> (<i title="To be added.">T</i> obj)</div>
+      <div class="Signature" id="T:System.Action`1:Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>Action&lt;T&gt;</b> (<i title="To be added.">T</i> obj)</div>
     </div>
     <div class="Remarks" id="T:System.Action`1:Docs">
       <h4 class="Subsection">Type Parameters</h4>
index fe4d7ed74badc38aa3c7a1c04d69708305a8ae8b..4e82fe559ac0b3e56b3dca77a835297989b6ed79 100644 (file)
     <p class="Summary" id="T:System.Array:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:System.Array:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public class  <b>Array</b></div>
+      <div class="Signature" id="T:System.Array:Signature">public class  <b>Array</b></div>
     </div>
     <div class="Remarks" id="T:System.Array:Docs">
       <h2 class="Section">Remarks</h2>
                 <td>
                   <div>
                     <b>
-                      <a href="#C:System.Array">Array</a>
+                      <a href="#C:System.Array()">Array</a>
                     </b>()</div>
                 </td>
                 <td>
     <div class="Members" id="T:System.Array:Members">
       <h2 class="Section" id="MemberDetails">Member Details</h2>
       <div class="SectionBox" id="_MemberDetails">
-        <h3 id="C:System.Array">Array Constructor</h3>
-        <blockquote id="C:System.Array:member">
+        <h3 id="C:System.Array()">Array Constructor</h3>
+        <blockquote id="C:System.Array():member">
           <p class="Summary">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </p>
           <h2>Syntax</h2>
           <div class="Signature">public  <b>Array</b> ()</div>
           <h2 class="Section">Remarks</h2>
-          <div class="SectionBox" id="C:System.Array:Remarks">
+          <div class="SectionBox" id="C:System.Array():Remarks">
             <span class="NotEntered">Documentation for this section has not yet been entered.</span>
           </div>
           <h2 class="Section">Requirements</h2>
-          <div class="SectionBox" id="C:System.Array:Version Information">
+          <div class="SectionBox" id="C:System.Array():Version Information">
             <b>Namespace: </b>System<br /><b>Assembly: </b>DocTest (in DocTest.dll)<br /><b>Assembly Versions: </b>0.0.0.0</div>
           <hr size="1" />
         </blockquote>
index 308f3060ea458ce8058c224a1cb9a3e3100bd7fa..906eaab1e5a9f15fd4cceb274c70be7fb6877c3c 100644 (file)
     <p class="Summary" id="T:System.AsyncCallback:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:System.AsyncCallback:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>AsyncCallback</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IAsyncResult">IAsyncResult</a> ar)</div>
+      <div class="Signature" id="T:System.AsyncCallback:Signature">public delegate <a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.Void">void</a> <b>AsyncCallback</b> (<a href="http://www.go-mono.com/docs/monodoc.ashx?link=T:System.IAsyncResult">IAsyncResult</a> ar)</div>
     </div>
     <div class="Remarks" id="T:System.AsyncCallback:Docs">
       <h4 class="Subsection">Parameters</h4>
index a99c87ca88f0ffac2ab85a3a379ae92e5351bfb3..edb7aa381956f919bb62ae34b1e5616b50884b5f 100644 (file)
     <p class="Summary" id="T:System.Environment.SpecialFolder:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:System.Environment.SpecialFolder:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public enum <b>Environment.SpecialFolder</b></div>
+      <div class="Signature" id="T:System.Environment.SpecialFolder:Signature">public enum <b>Environment.SpecialFolder</b></div>
     </div>
     <div class="Remarks" id="T:System.Environment.SpecialFolder:Docs">
       <h2 class="Section">Remarks</h2>
index d279fea30f49c36e47da8fddec7ea977633eabfe..f63fc35b9f2d6821d2f5c8becaa6b924a9505199 100644 (file)
     <p class="Summary" id="T:System.Environment:Summary">
       <span class="NotEntered">Documentation for this section has not yet been entered.</span>
     </p>
-    <div id="T:System.Environment:Signature">
+    <div>
       <h2>Syntax</h2>
-      <div class="Signature">public static class  <b>Environment</b></div>
+      <div class="Signature" id="T:System.Environment:Signature">public static class  <b>Environment</b></div>
     </div>
     <div class="Remarks" id="T:System.Environment:Docs">
       <h2 class="Section">Remarks</h2>
index 140bbe40ca37f9a6e31c4b85b9b59cf6c92f2a9d..eb7fb859d7108ca9f31e808a113e126bc422dc0e 100644 (file)
@@ -74,7 +74,8 @@ class Example {
             <remarks>
                 <c>C:Mono.DocTest.DocAttribute(System.String)</c>
             </remarks>
-            <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.DocAttribute.#ctor(System.String)" /></exception>
         </member>
         <member name="F:Mono.DocTest.DocAttribute.Field">
             <summary>To be added.</summary>
@@ -111,8 +112,10 @@ class Example {
             <summary>To be added.</summary>
             <remarks>
                 <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" />.</remarks>
-            <exception cref="T:System.ApplicationException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
-            <exception cref="T:System.SystemException">To be added; from: <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+            <exception cref="T:System.ApplicationException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
+            <exception cref="T:System.SystemException">To be added; from:
+          <see cref="M:Mono.DocTest.DocValueType.M(System.Int32)" /></exception>
         </member>
         <member name="F:Mono.DocTest.DocValueType.total">
             <summary>To be added.</summary>
@@ -157,15 +160,21 @@ class Example {
                     <see cref="M:System.Collections.Generic.List{System.Int32}.Remove(`0)" />
                 </para>
             </remarks>
-            <exception cref="T:System.Exception">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
+            <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Int32})" /></exception>
         </member>
         <member name="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})">
             <param name="list">A <see cref="T:Mono.DocTest.Generic.MyList{System.Predicate{System.Int32}}" />.</param>
             <summary>To be added.</summary>
             <remarks>
                 <c>M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})</c>.</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-            <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process(System.Collections.Generic.List{System.Predicate{System.Int32}})" />,
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" />,
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
         </member>
         <member name="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})">
             <typeparam name="T">Something Else</typeparam>
@@ -173,8 +182,10 @@ class Example {
             <summary>To be added.</summary>
             <remarks>
                 <c>M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})</c>.</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
-            <exception cref="T:System.ArgumentNullException">To be added; from: <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" />, <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:Mono.DocTest.UseLists.Process``1(System.Collections.Generic.List{System.Predicate{``0}})" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Linq.Check.SourceAndPredicate(System.Object,System.Object)" /></exception>
         </member>
         <member name="M:Mono.DocTest.UseLists.UseHelper``3(Mono.DocTest.Generic.MyList{``0}+Helper{``1,``2})">
             <typeparam name="T">
@@ -240,8 +251,73 @@ class Example {
             <summary>To be added.</summary>
             <remarks>
                 <c>E:Mono.DocTest.Widget.AnotherEvent</c>.</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-            <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
         </member>
         <member name="F:Mono.DocTest.Widget.array1">
             <summary>To be added.</summary>
@@ -285,7 +361,8 @@ class Example {
             <summary>To be added.</summary>
             <returns>To be added.</returns>
             <remarks>To be added.</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Linq.Expressions.Error.TypeMustBeDerivedFromSystemDelegate" /></exception>
         </member>
         <member name="M:Mono.DocTest.Widget.Dynamic1(System.Collections.Generic.Dictionary{System.Object,System.String})">
             <param name="value">To be added.</param>
@@ -310,8 +387,73 @@ class Example {
             <remarks>
                 <c>E:Mono.DocTest.Widget.DynamicE1</c>
             </remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-            <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
         </member>
         <member name="E:Mono.DocTest.Widget.DynamicE2">
             <summary>To be added.</summary>
@@ -426,6 +568,12 @@ class Example {
             <remarks>
                 <c>M:Mono.DocTest.Widget.op_Addition(Mono.DocTest.Widget,Mono.DocTest.Widget)</c>.</remarks>
         </member>
+        <member name="F:Mono.DocTest.Widget.op_Division">
+            <summary>To be added.</summary>
+            <returns>A <see cref="T:Mono.DocTest.Widget" /> instance.</returns>
+            <remarks>
+                <c>M:Mono.DocTest.Widget.op_Division</c>.</remarks>
+        </member>
         <member name="M:Mono.DocTest.Widget.op_Explicit(Mono.DocTest.Widget)~System.Int32">
             <param name="x">
                 <see cref="T:Mono.DocTest.Widget" />s are fun!.</param>
@@ -691,14 +839,144 @@ class Example {
         <member name="E:Mono.DocTest.Generic.GenericBase`1.ItemChanged">
             <summary>To be added.</summary>
             <remarks>E:Mono.DocTest.Generic.GenericBase`1.ItemChanged</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-            <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
         </member>
         <member name="E:Mono.DocTest.Generic.GenericBase`1.MyEvent">
             <summary>To be added.</summary>
             <remarks>E:Mono.DocTest.Generic.GenericBase`1.MyEvent</remarks>
-            <exception cref="T:System.ArgumentException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />, <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" /></exception>
-            <exception cref="T:System.MulticastNotSupportedException">To be added; from: <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />, <see cref="M:System.Delegate.CombineImpl(System.Delegate)" /></exception>
+            <exception cref="T:System.ArgumentException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.Delegate.Remove(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentNullException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.ArgumentOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.FormatException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.IndexOutOfRangeException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
+            <exception cref="T:System.MulticastNotSupportedException">To be added; from:
+          <see cref="M:System.Delegate.Combine(System.Delegate,System.Delegate)" />,
+          <see cref="M:System.Delegate.CombineImpl(System.Delegate)" />,
+          <see cref="M:System.String.FormatHelper(System.Text.StringBuilder,System.IFormatProvider,System.String,System.Object[])" />,
+          <see cref="M:System.String.get_Chars(System.Int32)" />,
+          <see cref="M:System.String.InternalSetChar(System.Int32,System.Char)" />,
+          <see cref="M:System.String.ParseFormatSpecifier(System.String,System.Int32@,System.Int32@,System.Int32@,System.Boolean@,System.String@)" />,
+          <see cref="M:System.String.Substring(System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.Char,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.Append(System.String,System.Int32,System.Int32)" />,
+          <see cref="M:System.Text.StringBuilder.InternalEnsureCapacity(System.Int32)" /></exception>
         </member>
         <member name="M:Mono.DocTest.Generic.GenericBase`1.op_Explicit(`0Mono`0.`0DocTest`0.`0Generic`0.`0GenericBase`0{`0U`0})~`0U`0">
             <param name="list">Insert description here</param>
@@ -972,7 +1250,8 @@ class Example {
             <summary>To be added.</summary>
             <returns>To be added.</returns>
             <remarks>To be added.</remarks>
-            <exception cref="T:System.NotImplementedException">To be added; from: <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
+            <exception cref="T:System.NotImplementedException">To be added; from:
+          <see cref="M:System.Array.AsReadOnly``1(``0[])" /></exception>
         </member>
         <member name="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})">
             <typeparam name="TInput">To be added.</typeparam>
@@ -982,7 +1261,8 @@ class Example {
             <summary>To be added.</summary>
             <returns>To be added.</returns>
             <remarks>To be added.</remarks>
-            <exception cref="T:System.InvalidOperationException">To be added; from: <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
+            <exception cref="T:System.InvalidOperationException">To be added; from:
+          <see cref="M:System.Array.ConvertAll``2(``0[],System.Converter{``0,``1})" /></exception>
         </member>
         <member name="M:System.Array.Resize``1(``0[]@,System.Int32)">
             <typeparam name="T">To be added.</typeparam>
@@ -990,7 +1270,8 @@ class Example {
             <param name="newSize">To be added.</param>
             <summary>To be added.</summary>
             <remarks>To be added.</remarks>
-            <exception cref="T:System.Exception">To be added; from: <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
+            <exception cref="T:System.Exception">To be added; from:
+          <see cref="M:System.Array.Resize``1(``0[]@,System.Int32)" /></exception>
         </member>
         <member name="T:System.AsyncCallback">
             <param name="ar">To be added.</param>
@@ -1012,7 +1293,8 @@ class Example {
             <remarks>
                 <c>M:System.Environment.GetFolderPath(System.Environment+SpecialFolder)</c>
             </remarks>
-            <exception cref="T:System.NotSupportedException">To be added; from: <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
+            <exception cref="T:System.NotSupportedException">To be added; from:
+          <see cref="M:System.Environment.GetFolderPath(System.Environment.SpecialFolder)" /></exception>
         </member>
         <member name="T:System.Environment+SpecialFolder">
             <summary>To be added.</summary>
index c4387a2fad308c0f70a48ea82d70456cfecc5e53..7c543f4beacf2f88a9ac3bc2023e465092830a6b 100644 (file)
@@ -10,6 +10,8 @@ RESOURCE_FILES = $(OTHER_RES)
 
 LOCAL_MCS_FLAGS= $(OTHER_RES:%=-resource:%)
 
+LOCAL_MCS_FLAGS += -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE
+
 EXTRA_DISTFILES = $(RESOURCE_FILES)
 
 include ../../build/executable.make
old mode 100644 (file)
new mode 100755 (executable)
index 3ddf728..8f7e736
@@ -12,11 +12,11 @@ using System;
 using System.Diagnostics;
 using System.Xml;
 using System.Collections.Generic;
-using System.Reflection;
 using System.IO;
 using System.IO.Compression;
 using System.Runtime.InteropServices;
 using System.Text;
+using IKVM.Reflection;
 
 
 #if NET_4_5
@@ -37,6 +37,9 @@ class MakeBundle {
        static string style = "linux";
        static bool compress;
        static bool nomain;
+       static bool? use_dos2unix = null;
+       static bool skip_scan;
+       static string ctor_func;
        
        static int Main (string [] args)
        {
@@ -144,6 +147,16 @@ class MakeBundle {
                                        return 1;
                                }
                                        
+                               break;
+                       case "--skip-scan":
+                               skip_scan = true;
+                               break;
+                       case "--static-ctor":
+                               if (i+1 == top) {
+                                       Help ();
+                                       return 1;
+                               }
+                               ctor_func = args [++i];
                                break;
                        default:
                                sources.Add (args [i]);
@@ -162,10 +175,10 @@ class MakeBundle {
                        Environment.Exit (1);
                }
 
-               List<Assembly> assemblies = LoadAssemblies (sources);
+               List<string> assemblies = LoadAssemblies (sources);
                List<string> files = new List<string> ();
-               foreach (Assembly a in assemblies)
-                       QueueAssembly (files, a.CodeBase);
+               foreach (string file in assemblies)
+                       QueueAssembly (files, file);
                        
                // Special casing mscorlib.dll: any specified mscorlib.dll cannot be loaded
                // by Assembly.ReflectionFromLoadFrom(). Instead the fx assembly which runs
@@ -265,15 +278,27 @@ class MakeBundle {
                try {
                        List<string> c_bundle_names = new List<string> ();
                        List<string[]> config_names = new List<string[]> ();
-                       byte [] buffer = new byte [8192];
 
                        using (StreamWriter ts = new StreamWriter (File.Create (temp_s))) {
                        using (StreamWriter tc = new StreamWriter (File.Create (temp_c))) {
                        string prog = null;
 
+#if XAMARIN_ANDROID
                        tc.WriteLine ("/* This source code was produced by mkbundle, do not edit */");
+                       tc.WriteLine ("\n#ifndef NULL\n#define NULL (void *)0\n#endif");
+                       tc.WriteLine (@"
+typedef struct {
+       const char *name;
+       const unsigned char *data;
+       const unsigned int size;
+} MonoBundledAssembly;
+void          mono_register_bundled_assemblies (const MonoBundledAssembly **assemblies);
+void          mono_register_config_for_assembly (const char* assembly_name, const char* config_xml);
+");
+#else
                        tc.WriteLine ("#include <mono/metadata/mono-config.h>");
                        tc.WriteLine ("#include <mono/metadata/assembly.h>\n");
+#endif
 
                        if (compress) {
                                tc.WriteLine ("typedef struct _compressed_data {");
@@ -295,10 +320,11 @@ class MakeBundle {
                                long real_size = stream.Length;
                                int n;
                                if (compress) {
+                                       byte[] cbuffer = new byte [8192];
                                        MemoryStream ms = new MemoryStream ();
                                        GZipStream deflate = new GZipStream (ms, CompressionMode.Compress, leaveOpen:true);
-                                       while ((n = stream.Read (buffer, 0, buffer.Length)) != 0){
-                                               deflate.Write (buffer, 0, n);
+                                       while ((n = stream.Read (cbuffer, 0, cbuffer.Length)) != 0){
+                                               deflate.Write (cbuffer, 0, n);
                                        }
                                        stream.Close ();
                                        deflate.Close ();
@@ -312,7 +338,8 @@ class MakeBundle {
                                }
                        };
 
-#if NET_4_5
+                       //#if NET_4_5
+#if FALSE
                        Parallel.ForEach (files, body);
 #else
                        foreach (var url in files)
@@ -320,6 +347,7 @@ class MakeBundle {
 #endif
 
                        // The non-parallel part
+                       byte [] buffer = new byte [8192];
                        foreach (var url in files) {
                                string fname = new Uri (url).LocalPath;
                                string aname = Path.GetFileName (fname);
@@ -421,6 +449,12 @@ class MakeBundle {
                        tc.WriteLine ("\tNULL\n};\n");
                        tc.WriteLine ("static char *image_name = \"{0}\";", prog);
 
+                       if (ctor_func != null) {
+                               tc.WriteLine ("\nextern void {0} (void);", ctor_func);
+                               tc.WriteLine ("\n__attribute__ ((constructor)) static void mono_mkbundle_ctor (void)");
+                               tc.WriteLine ("{{\n\t{0} ();\n}}", ctor_func);
+                       }
+
                        tc.WriteLine ("\nstatic void install_dll_config_files (void) {\n");
                        foreach (string[] ass in config_names){
                                tc.WriteLine ("\tmono_register_config_for_assembly (\"{0}\", assembly_config_{1});\n", ass [0], ass [1]);
@@ -438,9 +472,9 @@ class MakeBundle {
 
                        Stream template_stream;
                        if (compress) {
-                               template_stream = Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template_z.c");
+                               template_stream = System.Reflection.Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template_z.c");
                        } else {
-                               template_stream = Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template.c");
+                               template_stream = System.Reflection.Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template.c");
                        }
 
                        StreamReader s = new StreamReader (template_stream);
@@ -448,7 +482,7 @@ class MakeBundle {
                        tc.Write (template);
 
                        if (!nomain) {
-                               Stream template_main_stream = Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template_main.c");
+                               Stream template_main_stream = System.Reflection.Assembly.GetAssembly (typeof(MakeBundle)).GetManifestResourceStream ("template_main.c");
                                StreamReader st = new StreamReader (template_main_stream);
                                string maintemplate = st.ReadToEnd ();
                                tc.Write (maintemplate);
@@ -461,7 +495,7 @@ class MakeBundle {
 
                        string zlib = (compress ? "-lz" : "");
                        string debugging = "-g";
-                       string cc = GetEnv ("CC", IsUnix ? "cc" : "gcc -mno-cygwin");
+                       string cc = GetEnv ("CC", IsUnix ? "cc" : "i686-pc-mingw32-gcc");
 
                        if (style == "linux")
                                debugging = "-ggdb";
@@ -502,20 +536,29 @@ class MakeBundle {
                }
        }
        
-       static List<Assembly> LoadAssemblies (List<string> sources)
+       static List<string> LoadAssemblies (List<string> sources)
        {
-               List<Assembly> assemblies = new List<Assembly> ();
+               List<string> assemblies = new List<string> ();
                bool error = false;
                
                foreach (string name in sources){
-                       Assembly a = LoadAssembly (name);
+                       try {
+                               Assembly a = LoadAssembly (name);
 
-                       if (a == null){
-                               error = true;
-                               continue;
-                       }
+                               if (a == null){
+                                       error = true;
+                                       continue;
+                               }
                        
-                       assemblies.Add (a);
+                               assemblies.Add (a.CodeBase);
+                       } catch (Exception e) {
+                               if (skip_scan) {
+                                       Console.WriteLine ("File will not be scanned: {0}", name);
+                                       assemblies.Add (new Uri (new FileInfo (name).FullName).ToString ());
+                               } else {
+                                       throw;
+                               }
+                       }
                }
 
                if (error)
@@ -524,20 +567,27 @@ class MakeBundle {
                return assemblies;
        }
        
+       static readonly Universe universe = new Universe ();
+       
        static void QueueAssembly (List<string> files, string codebase)
        {
+               // Console.WriteLine ("CODE BASE IS {0}", codebase);
                if (files.Contains (codebase))
                        return;
 
                files.Add (codebase);
-               Assembly a = Assembly.LoadFrom (new Uri(codebase).LocalPath);
-
                if (!autodeps)
                        return;
-               
-               foreach (AssemblyName an in a.GetReferencedAssemblies ()) {
-                       a = Assembly.Load (an);
-                       QueueAssembly (files, a.CodeBase);
+               try {
+                       Assembly a = universe.LoadFile (new Uri(codebase).LocalPath);
+
+                       foreach (AssemblyName an in a.GetReferencedAssemblies ()) {
+                               a = universe.Load (an.Name);
+                               QueueAssembly (files, a.CodeBase);
+                       }
+               } catch (Exception e) {
+                       if (!skip_scan)
+                               throw;
                }
        }
 
@@ -549,12 +599,12 @@ class MakeBundle {
                        char[] path_chars = { '/', '\\' };
                        
                        if (assembly.IndexOfAny (path_chars) != -1) {
-                               a = Assembly.LoadFrom (assembly);
+                               a = universe.LoadFile (assembly);
                        } else {
                                string ass = assembly;
                                if (ass.EndsWith (".dll"))
                                        ass = assembly.Substring (0, assembly.Length - 4);
-                               a = Assembly.Load (ass);
+                               a = universe.Load (ass);
                        }
                        return a;
                } catch (FileNotFoundException){
@@ -566,7 +616,7 @@ class MakeBundle {
                                        full_path += ".dll";
                                
                                try {
-                                       a = Assembly.LoadFrom (full_path);
+                                       a = universe.LoadFile (full_path);
                                        return a;
                                } catch (FileNotFoundException ff) {
                                        total_log += ff.FusionLog;
@@ -575,10 +625,12 @@ class MakeBundle {
                        }
                        Error ("Cannot find assembly `" + assembly + "'" );
                        Console.WriteLine ("Log: \n" + total_log);
-               } catch (BadImageFormatException f) {
-                       Error ("Cannot load assembly (bad file format)" + f.FusionLog);
+               } catch (IKVM.Reflection.BadImageFormatException f) {
+                       if (skip_scan)
+                               throw;
+                       Error ("Cannot load assembly (bad file format) " + f.Message);
                } catch (FileLoadException f){
-                       Error ("Cannot load assembly " + f.FusionLog);
+                       Error ("Cannot load assembly " + f.Message);
                } catch (ArgumentNullException){
                        Error("Cannot load assembly (null argument)");
                }
@@ -608,6 +660,8 @@ class MakeBundle {
                                   "    --static            Statically link to mono libs\n" +
                                   "    --nomain            Don't include a main() function, for libraries\n" +
                                   "    -z                  Compress the assemblies before embedding.\n" +
+                                  "    --skip-scan         Skip scanning assemblies that could not be loaded (but still embed them).\n" +
+                                  "    --static-ctor ctor  Add a constructor call to the supplied function.\n" +
                                   "                        You need zlib development headers and libraries.\n");
        }
 
@@ -651,11 +705,42 @@ class MakeBundle {
                        Console.WriteLine (cmdLine);
                        return system (cmdLine);
                }
-
+               
                // on Windows, we have to pipe the output of a
                // `cmd` interpolation to dos2unix, because the shell does not
                // strip the CRLFs generated by the native pkg-config distributed
                // with Mono.
+               //
+               // But if it's *not* on cygwin, just skip it.
+               
+               // check if dos2unix is applicable.
+               if (use_dos2unix == null) {
+                       use_dos2unix = false;
+                       try {
+                               var dos2unix = Process.Start ("dos2unix");
+                               dos2unix.StandardInput.WriteLine ("aaa");
+                               dos2unix.StandardInput.WriteLine ("\u0004");
+                               dos2unix.WaitForExit ();
+                               if (dos2unix.ExitCode == 0)
+                                       use_dos2unix = true;
+                       } catch {
+                               // ignore
+                       }
+               }
+               // and if there is no dos2unix, just run cmd /c.
+               if (use_dos2unix == false) {
+                       Console.WriteLine (cmdLine);
+                       ProcessStartInfo dos2unix = new ProcessStartInfo ();
+                       dos2unix.UseShellExecute = false;
+                       dos2unix.FileName = "cmd";
+                       dos2unix.Arguments = String.Format ("/c \"{0}\"", cmdLine);
+
+                       using (Process p = Process.Start (dos2unix)) {
+                               p.WaitForExit ();
+                               return p.ExitCode;
+                       }
+               }
+
                StringBuilder b = new StringBuilder ();
                int count = 0;
                for (int i = 0; i < cmdLine.Length; i++) {
index d9260760a461148b54052edb396ad43a88f069aa..6d249f2da70c39b68e5cc2296491cb51c33d4d11 100644 (file)
@@ -1 +1,8 @@
 mkbundle.cs
+../../../external/ikvm/reflect/*.cs
+../../../external/ikvm/reflect/Emit/*.cs
+../../../external/ikvm/reflect/Metadata/*.cs
+../../../external/ikvm/reflect/Reader/*.cs
+../../../external/ikvm/reflect/Writer/*.cs
+../../../external/ikvm/reflect/Impl/ITypeOwner.cs
+../../../external/ikvm/reflect/Impl/SymbolSupport.cs
index 7987f82c7e893a540266476c92d57e71839c0192..9bd32cf8c668555b06f920478ee15ee03b7a3f95 100644 (file)
@@ -13,7 +13,8 @@ my_inflate (const Byte *compr, uLong compr_len, Byte *uncompr, uLong uncompr_len
        memset (&stream, 0, sizeof (z_stream));
        stream.next_in = (Byte *) compr;
        stream.avail_in = (uInt) compr_len;
-       /* To decompress gzip format: http://stackoverflow.com/a/1838702/83444 */
+
+       // http://www.zlib.net/manual.html
        err = inflateInit2 (&stream, 16+MAX_WBITS);
        if (err != Z_OK)
                return 1;
@@ -67,7 +68,7 @@ void mono_mkbundle_init ()
                buffer = (Bytef *) malloc (real_size);
                result = my_inflate ((*ptr)->assembly.data, zsize, buffer, real_size);
                if (result != 0) {
-                       fprintf (stderr, "Error %d decompresing data for %s\n", result, (*ptr)->assembly.name);
+                       fprintf (stderr, "mkbundle: Error %d decompressing data for %s\n", result, (*ptr)->assembly.name);
                        exit (1);
                }
                (*ptr)->assembly.data = buffer;
index 20e43d84c97d1fd5e469ea73d5c38a404a20423f..87847f849c245cf01076a68486acba9ac99eff09 100644 (file)
@@ -269,7 +269,8 @@ class MonoServiceRunner : MarshalByRefObject
                                        info (logname, "Stopping service {0}", service.ServiceName);
                                        call (service, "OnStop", null);
                                        if (service.ExitCode != 0)
-                                               error (logname, "Service stopped with a non-zero ExitCode: {0}", service.ExitCode);
+                                               error (logname, "Service {0} stopped returning a non-zero ExitCode: {1}",
+                                                      service.ServiceName, service.ExitCode);
                                        running = false;
                                }
                                else if (usr1.IsSet && service.CanPauseAndContinue) {
index c84505d30ab9a745dd37c4971c575e1698974969..4f6660077050d007c56f426b49c7265bf1271f60 100644 (file)
@@ -126,7 +126,7 @@ namespace Mono.Tools {
                                return new StrongName (data).RSA;
                        }
                        catch {
-                               if (data [0] != 0x30)
+                               if (data.Length == 0 || data [0] != 0x30)
                                        throw;
                                // this could be a PFX file
                                Console.Write ("Enter password for private key (will be visible when typed): ");
index 30c5ac4b9db6d1ca21840af28eaaed038f54a17c..6b684b6066704a5df9bb0f1df77953715c275e61 100644 (file)
@@ -38,9 +38,6 @@ using Mono.Cecil;
 namespace Mono.Tuner {
 
        public class AdjustVisibility : BaseStep {
-
-               static readonly object internalized_key = new object ();
-
                protected override void ProcessAssembly (AssemblyDefinition assembly)
                {
                        if (Annotations.GetAction (assembly) != AssemblyAction.Link)
index 0aea81dac014639c37ba5ec6688e3d0b6ad2defb..439afd50e35f2afc5f9fe50dd3d8865494954fd1 100644 (file)
@@ -46,7 +46,7 @@ namespace Mono.Tuner {
 
                public abstract SubStepTargets Targets { get; }
 
-               void ISubStep.Initialize (LinkContext context)
+               public virtual void Initialize (LinkContext context)
                {
                        this.context = context;
                }
index 185bac96510019c80a80bfcc9ccd0964dfad3c5d..bdb04a94db239e4935bd20139ca2fc0392e443f6 100644 (file)
@@ -62,7 +62,7 @@ namespace Mono.Tuner {
                {
                        methodName = null;
 
-                       int pos = fullName.IndexOf (prefix);
+                       int pos = fullName.IndexOf (prefix, StringComparison.Ordinal);
                        if (pos == -1)
                                return false;
 
@@ -74,7 +74,7 @@ namespace Mono.Tuner {
                {
                        methodName = null;
 
-                       int pos = fullName.LastIndexOf (suffix);
+                       int pos = fullName.LastIndexOf (suffix, StringComparison.Ordinal);
                        if (pos == -1)
                                return false;
 
index 3d53996a826d2453368a623272447021b60035dd..0fcbbfa7848437c7df95a0118da7c3b1fdae0907 100644 (file)
@@ -32,16 +32,18 @@ include $(XBUILD_DIR)/xbuild_targets.make
 
 install-local: install-extras
 
-WEBAPP_DIR = Microsoft/VisualStudio/v9.0/WebApplications
+WEBAPP_DIR = Microsoft/VisualStudio
 SILVERLIGHT_DIR = $(mono_libdir)/mono/xbuild/Microsoft/Silverlight
 PORTABLE_DIR = $(mono_libdir)/mono/xbuild/Microsoft/Portable
 EXTRAS_DIR = $(mono_libdir)/mono/$(INSTALL_FRAMEWORK_VERSION)
 install-extras: 
-       $(MKINSTALLDIRS) $(DESTDIR)$(EXTRAS_DIR) $(DESTDIR)$(REDISTLIST_DIR) $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v3.0/RedistList $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v4.0/RedistList
+       $(MKINSTALLDIRS) $(DESTDIR)$(EXTRAS_DIR) $(DESTDIR)$(REDISTLIST_DIR) $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v3.0/RedistList $(DESTDIR)$(XBUILD_FRAMEWORKS_DIR)/v4.0/RedistList $(DESTDIR)$(mono_libdir)/mono/3.5 $(DESTDIR)$(mono_libdir)/mono/4.0
        $(INSTALL_DATA) xbuild/xbuild.rsp $(DESTDIR)$(mono_libdir)/mono/$(FRAMEWORK_VERSION)
-       $(INSTALL_DATA) xbuild/$(FRAMEWORK_VERSION)/Microsoft.Common.tasks $(DESTDIR)$(EXTRAS_DIR)
+       $(INSTALL_DATA) xbuild/$(INSTALL_FRAMEWORK_VERSION)/Microsoft.Common.tasks $(DESTDIR)$(EXTRAS_DIR)
+       $(INSTALL_DATA) xbuild/$(INSTALL_FRAMEWORK_VERSION)/Microsoft.Common.targets $(DESTDIR)$(EXTRAS_DIR)
        $(INSTALL_DATA) xbuild/Microsoft.Build.xsd $(DESTDIR)$(EXTRAS_DIR)
-       $(INSTALL_DATA) xbuild/$(FRAMEWORK_VERSION)/Microsoft.Common.targets $(DESTDIR)$(EXTRAS_DIR)
+       $(INSTALL_DATA) xbuild/2.0/Microsoft.Common.targets $(DESTDIR)$(mono_libdir)/mono/2.0
+       $(INSTALL_DATA) xbuild/3.5/Microsoft.Common.targets $(DESTDIR)$(mono_libdir)/mono/3.5
        $(INSTALL_DATA) xbuild/Microsoft.CSharp.targets $(DESTDIR)$(EXTRAS_DIR)
        $(INSTALL_DATA) xbuild/Microsoft.VisualBasic.targets $(DESTDIR)$(EXTRAS_DIR)
        $(INSTALL_DATA) xbuild/$(FRAMEWORK_VERSION)/FrameworkList.xml $(DESTDIR)$(REDISTLIST_DIR)
@@ -51,8 +53,12 @@ install-extras:
        $(INSTALL_DATA) xbuild/MSBuild/Microsoft.Build.CommonTypes.xsd $(DESTDIR)$(EXTRAS_DIR)/MSBuild
        $(INSTALL_DATA) xbuild/MSBuild/Microsoft.Build.Core.xsd $(DESTDIR)$(EXTRAS_DIR)/MSBuild
        $(MKINSTALLDIRS) $(DESTDIR)$(mono_libdir)/mono/xbuild
-       $(MKINSTALLDIRS) $(DESTDIR)$(mono_libdir)/mono/xbuild/$(WEBAPP_DIR)
-       $(INSTALL_DATA) xbuild/Microsoft.WebApplication.targets $(DESTDIR)$(mono_libdir)/mono/xbuild/$(WEBAPP_DIR)
+       $(MKINSTALLDIRS) $(DESTDIR)$(mono_libdir)/mono/xbuild/$(WEBAPP_DIR)/v9.0/WebApplications
+       $(INSTALL_DATA) xbuild/Microsoft.WebApplication.targets $(DESTDIR)$(mono_libdir)/mono/xbuild/$(WEBAPP_DIR)/v9.0/WebApplications
+       $(MKINSTALLDIRS) $(DESTDIR)$(mono_libdir)/mono/xbuild/$(WEBAPP_DIR)/v10.0/WebApplications
+       $(INSTALL_DATA) xbuild/Microsoft.WebApplication.targets $(DESTDIR)$(mono_libdir)/mono/xbuild/$(WEBAPP_DIR)/v10.0/WebApplications
+       $(MKINSTALLDIRS) $(DESTDIR)$(mono_libdir)/mono/xbuild/$(WEBAPP_DIR)/v11.0/WebApplications
+       $(INSTALL_DATA) xbuild/Microsoft.WebApplication.targets $(DESTDIR)$(mono_libdir)/mono/xbuild/$(WEBAPP_DIR)/v11.0/WebApplications
        $(MKINSTALLDIRS) $(DESTDIR)$(SILVERLIGHT_DIR)/v2.0
        $(MKINSTALLDIRS) $(DESTDIR)$(SILVERLIGHT_DIR)/v3.0
        $(INSTALL_DATA) xbuild/Microsoft.Silverlight.CSharp.targets $(DESTDIR)$(SILVERLIGHT_DIR)/v2.0
@@ -62,18 +68,21 @@ install-extras:
        sed -e 's/@SILVERLIGHT_VERSION@/2.0/g' xbuild/Microsoft.Silverlight.Common.targets > $(DESTDIR)$(SILVERLIGHT_DIR)/v2.0/Microsoft.Silverlight.Common.targets
        sed -e 's/@SILVERLIGHT_VERSION@/3.0/g' xbuild/Microsoft.Silverlight.Common.targets > $(DESTDIR)$(SILVERLIGHT_DIR)/v3.0/Microsoft.Silverlight.Common.targets
        $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_DIR)/v4.0
-       $(INSTALL_DATA) xbuild/Microsoft.Portable.CSharp.targets $(DESTDIR)$(PORTABLE_DIR)/v4.0
+       $(MKINSTALLDIRS) $(DESTDIR)$(PORTABLE_DIR)/v4.5
+       $(INSTALL_DATA) xbuild/4.0/Microsoft.Portable.CSharp.targets $(DESTDIR)$(PORTABLE_DIR)/v4.0
+       $(INSTALL_DATA) xbuild/4.5/Microsoft.Portable.CSharp.targets $(DESTDIR)$(PORTABLE_DIR)/v4.5
+       $(INSTALL_DATA) xbuild/Microsoft.Portable.CSharp.targets $(DESTDIR)$(mono_libdir)/mono/4.0
 
 EXTRA_DISTFILES = \
        xbuild/xbuild.rsp \
        xbuild/2.0/Microsoft.Common.tasks \
        xbuild/3.5/Microsoft.Common.tasks \
        xbuild/4.0/Microsoft.Common.tasks \
-       xbuild/4.5/Microsoft.Common.tasks \
        xbuild/2.0/Microsoft.Common.targets \
        xbuild/3.5/Microsoft.Common.targets \
        xbuild/4.0/Microsoft.Common.targets \
-       xbuild/4.5/Microsoft.Common.targets \
+       xbuild/4.0/Microsoft.Portable.CSharp.targets \
+       xbuild/4.5/Microsoft.Portable.CSharp.targets \
        xbuild/2.0/FrameworkList.xml \
        xbuild/3.5/FrameworkList.xml \
        xbuild/4.0/FrameworkList.xml \
index ca18ee093313940c729539635b748c71437670e8..53c27b05869794a0d48f31c4cf698ef84455679f 100644 (file)
@@ -1,5 +1,7 @@
 <Project DefaultTargets="Build" InitialTargets="_ValidateEssentialProperties" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
+       <Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')"/>
+       
        <PropertyGroup>
                <TargetExt Condition="'$(OutputType)' == 'Winexe'">.exe</TargetExt>
                <TargetExt Condition="'$(OutputType)' == 'Exe'">.exe</TargetExt>
                </AllowedReferenceAssemblyFileExtensions>
 
                <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
-                       .mdb
+                       .exe.mdb;
+                       .dll.mdb;
+                       .xml
                </AllowedReferenceRelatedFileExtensions>
 
                <AssemblySearchPaths Condition="'$(AssemblySearchPaths)' == ''">
                        {CandidateAssemblyFiles};
                        $(ReferencePath);
+                       @(AdditionalReferencePath);
                        {HintPathFromItem};
                        {TargetFrameworkDirectory};
                        {PkgConfig};
        </Target>
 
        <Target
-               Name="AssignProjectConfigurations"
+               Name="AssignProjectConfiguration"
                Condition="'@(ProjectReference)' != ''">
 
                <!-- assign configs if building a solution file -->
                ProjectReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
 
        <Target Name="SplitProjectReferencesByExistent"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <CreateItem Include="@(ProjectReferenceWithConfiguration)" Condition="'@(ProjectReferenceWithConfiguration)' != ''">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationExistent"
                        <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
                </ReadLinesFromFile>
 
-               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
-                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
-               </RemoveDuplicates>
-
                <!-- CopyLocal files: In case all the projects build to common output
                     directory, then other projects might depend on some of these
                     CopyLocal files, so delete only the ones under *this* project
                        <Output TaskParameter="InPath" ItemName="FileWrites"/>
                </FindUnderPath>
 
+               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
+                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
+               </RemoveDuplicates>
+
                <WriteLinesToFile
                        File="$(IntermediateOutputPath)$(CleanFile)"
                        Lines="@(CombinedFileWrites)"
        </Target>
 
        <Target Name="CleanReferencedProjects"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <!-- If building from .sln.proj or from IDE, clean will get handled by them,
                     else we are building a project directly, from the command line, so
index 0605ae69d0fb42dd1c4615bbb12c35f8b11027a2..bf686b06af2b0c4dadd49cc765fb0687f8475451 100644 (file)
@@ -1,5 +1,7 @@
 <Project DefaultTargets="Build" InitialTargets="_ValidateEssentialProperties" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 
+       <Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')"/>
+       
        <PropertyGroup>
                <TargetExt Condition="'$(OutputType)' == 'Winexe'">.exe</TargetExt>
                <TargetExt Condition="'$(OutputType)' == 'Exe'">.exe</TargetExt>
                </AllowedReferenceAssemblyFileExtensions>
 
                <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
-                       .mdb
+                       .exe.mdb;
+                       .dll.mdb;
+                       .xml
                </AllowedReferenceRelatedFileExtensions>
 
                <AssemblySearchPaths Condition="'$(AssemblySearchPaths)' == ''">
                        {CandidateAssemblyFiles};
                        $(ReferencePath);
+                       @(AdditionalReferencePath);
                        {HintPathFromItem};
                        {TargetFrameworkDirectory};
                        {PkgConfig};
        </Target>
 
        <Target
-               Name="AssignProjectConfigurations"
+               Name="AssignProjectConfiguration"
                Condition="'@(ProjectReference)' != ''">
 
                <!-- assign configs if building a solution file -->
                ProjectReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
 
        <Target Name="SplitProjectReferencesByExistent"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <CreateItem Include="@(ProjectReferenceWithConfiguration)" Condition="'@(ProjectReferenceWithConfiguration)' != ''">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationExistent"
                        <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
                </ReadLinesFromFile>
 
-               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
-                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
-               </RemoveDuplicates>
-
                <!-- CopyLocal files: In case all the projects build to common output
                     directory, then other projects might depend on some of these
                     CopyLocal files, so delete only the ones under *this* project
                        <Output TaskParameter="InPath" ItemName="FileWrites"/>
                </FindUnderPath>
 
+               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
+                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
+               </RemoveDuplicates>
+
                <WriteLinesToFile
                        File="$(IntermediateOutputPath)$(CleanFile)"
                        Lines="@(CombinedFileWrites)"
        </Target>
 
        <Target Name="CleanReferencedProjects"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <!-- If building from .sln.proj or from IDE, clean will get handled by them,
                     else we are building a project directly, from the command line, so
index e306cd304d6d990baf1b4938a91c1d455f013e1e..7bd9900af727cb470f0722f1f1a994fffc066ee3 100644 (file)
@@ -7,6 +7,8 @@
        <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*"
                Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
 
+       <Import Project="$(MSBuildProjectFullPath).user" Condition="Exists('$(MSBuildProjectFullPath).user')"/> 
+       
        <PropertyGroup>
                <TargetExt Condition="'$(OutputType)' == 'Winexe'">.exe</TargetExt>
                <TargetExt Condition="'$(OutputType)' == 'Exe'">.exe</TargetExt>
@@ -80,6 +82,7 @@
                <TargetPath Condition=" '$(TargetPath)' == '' ">@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
                <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildProjectFullPath);$(MSBuildToolsPath)\Microsoft.Common.targets</MSBuildAllProjects>
                <KeyOriginatorFile Condition=" '$(SignAssembly)' == 'true' ">$(AssemblyOriginatorKeyFile)</KeyOriginatorFile>
+               <TargetingClr2Framework Condition="('$(TargetFrameworkIdentifier)' == '.NETFramework') and ('$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5')">true</TargetingClr2Framework>
        </PropertyGroup>
 
        <Target Name="_ValidateEssentialProperties">
                Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework'"
                DependsOnTargets="$(GetFrameworkPathsDependsOn)">
                <GetFrameworkPath>
+                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5'"
+                               TaskParameter="FrameworkVersion45Path"
+                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
                        <Output Condition="'$(TargetFrameworkVersion)' == 'v4.0'"
                                TaskParameter="FrameworkVersion40Path"
                                ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
                </CreateProperty>
 
                <Warning Text="TargetFrameworkVersion '$(TargetFrameworkVersion)' not supported by this toolset (ToolsVersion: $(MSBuildToolsVersion))."
-                       Condition="'$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
+                       Condition="'$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
        </Target>
 
        <PropertyGroup>
                        <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName"/>
                </GetReferenceAssemblyPaths>
 
-               <CreateProperty Value="$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory)">
-                       <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
-               </CreateProperty>
+               
+               <!-- Remove duplicates. -->
+               <ItemGroup>
+                       <_TargetFrameworkDirectories Include="$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory)" KeepDuplicates="false" />
+               </ItemGroup>
+               <PropertyGroup>
+                       <TargetFrameworkDirectory>@(_TargetFrameworkDirectories)</TargetFrameworkDirectory>
+               </PropertyGroup>
+               
+               <ItemGroup Condition="'$(ImplicitlyExpandDesignTimeFacades)' == 'true'">
+                       <DesignTimeFacadeDirectoryRoots Include="$(TargetFrameworkDirectory)" />
+                       <DesignTimeFacadeDirectories Include="%(DesignTimeFacadeDirectoryRoots.Identity)\Facades\" Condition="Exists('%(DesignTimeFacadeDirectoryRoots.Identity)\Facades\')" />
+                       <_DesignTimeFacadeAssemblies Include="%(DesignTimeFacadeDirectories.Identity)\*.dll"/>
+               </ItemGroup>
+               
+               <PropertyGroup Condition="'@(DesignTimeFacadeDirectories)' != ''">
+                       <TargetFrameworkDirectory>$(TargetFrameworkDirectory);@(DesignTimeFacadeDirectories)</TargetFrameworkDirectory>
+               </PropertyGroup>
+               
        </Target>
 
        <PropertyGroup>
                </AllowedReferenceAssemblyFileExtensions>
 
                <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
-                       .mdb
+                       .exe.mdb;
+                       .dll.mdb;
+                       .xml
                </AllowedReferenceRelatedFileExtensions>
 
                <AssemblySearchPaths Condition="'$(AssemblySearchPaths)' == ''">
                        {CandidateAssemblyFiles};
                        $(ReferencePath);
+                       @(AdditionalReferencePath);
                        {HintPathFromItem};
                        {TargetFrameworkDirectory};
                        {PkgConfig};
                        PrepareForBuild
                </ResolveAssemblyReferencesDependsOn>
        </PropertyGroup>
+       
+       <PropertyGroup Condition="'$(TargetFrameworkMoniker)' != ''">
+               <TargetFrameworkMonikerAssemblyAttributesPath Condition="'$(TargetFrameworkMonikerAssemblyAttributesPath)' == ''">$(IntermediateOutputPath)$(TargetFrameworkMoniker).AssemblyAttribute$(DefaultLanguageSourceExtension)</TargetFrameworkMonikerAssemblyAttributesPath>
+               <GenerateTargetFrameworkAttribute Condition="'$(GenerateTargetFrameworkAttribute)' == '' and '$(TargetFrameworkMoniker)' 
+       != '' and '$(TargetingClr2Framework)' != 'true'">true</GenerateTargetFrameworkAttribute>
+       </PropertyGroup>
+       
+       <ItemGroup Condition="'$(GenerateTargetFrameworkAttribute)' == 'true'">
+               <FileWrites Include="$(TargetFrameworkMonikerAssemblyAttributesPath)" />
+       </ItemGroup>
+       
+       <Target Name="GenerateTargetFrameworkMonikerAttribute"
+               DependsOnTargets="PrepareForBuild;GetReferenceAssemblyPaths"
+               Inputs="$(MSBuildToolsPath)\Microsoft.Common.targets"
+               Outputs="$(TargetFrameworkMonikerAssemblyAttributesPath)"
+               Condition="'$(GenerateTargetFrameworkAttribute)' == 'true'">
+               
+               <WriteLinesToFile
+                       File="$(TargetFrameworkMonikerAssemblyAttributesPath)"
+                       Lines="$(TargetFrameworkMonikerAssemblyAttributeText)"
+                       Overwrite="true"
+                       ContinueOnError="true"
+                       Condition="'@(Compile)' != '' and '$(TargetFrameworkMonikerAssemblyAttributeText)' != ''"
+               />
+               
+               <ItemGroup Condition="'@(Compile)' != '' and '$(TargetFrameworkMonikerAssemblyAttributeText)' != ''">
+                       <Compile Include="$(TargetFrameworkMonikerAssemblyAttributesPath)"/>
+               </ItemGroup>
+       </Target>
 
        <Target Name="ResolveReferences" DependsOnTargets="$(ResolveReferencesDependsOn)"/>
 
                >
                        <Output TaskParameter="ResolvedFiles" ItemName="ResolvedFiles"/>
                        <Output TaskParameter="ResolvedFiles" ItemName="ReferencePath"/>
-                       <Output TaskParameter="ResolvedDependencyFiles" ItemName="_ResolvedDependencyFiles"/>
+                       <Output TaskParameter="ResolvedDependencyFiles" ItemName="ReferenceDependencyPaths"/>
                        <Output TaskParameter="RelatedFiles" ItemName="_ReferenceRelatedPaths"/>
                        <Output TaskParameter="SatelliteFiles" ItemName="ReferenceSatellitePaths"/>
                        <Output TaskParameter="CopyLocalFiles" ItemName="ReferenceCopyLocalPaths"/>
+                       
+                       <!-- FIXME: backwards compatibility -->
+                       <Output TaskParameter="ResolvedDependencyFiles" ItemName="_ResolvedDependencyFiles"/>
                </ResolveAssemblyReference>
        </Target>
 
        <Target
-               Name="AssignProjectConfigurations"
+               Name="AssignProjectConfiguration"
                Condition="'@(ProjectReference)' != ''">
 
                <!-- assign configs if building a solution file -->
                ProjectReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
 
        <Target Name="SplitProjectReferencesByExistent"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <CreateItem Include="@(ProjectReferenceWithConfiguration)" Condition="'@(ProjectReferenceWithConfiguration)' != ''">
                        <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationExistent"
 
        <PropertyGroup>
                <BuildDependsOn>
+                       BuildOnlySettings;
                        BeforeBuild;
                        CoreBuild;
                        AfterBuild
                </BuildDependsOn>
        </PropertyGroup>
-
+       
+       <Target Name="BuildOnlySettings"/>
        <Target Name="BeforeBuild"/>
        <Target Name="AfterBuild"/>
 
        <PropertyGroup>
                <CompileDependsOn>
                        ResolveReferences;
+                       GenerateTargetFrameworkMonikerAttribute;
                        BeforeCompile;
                        _TimestampBeforeCompile;
                        CoreCompile;
                        LicenseTarget = "$(TargetFileName)"
                        OutputDirectory = "$(IntermediateOutputPath)"
                        OutputLicense = "$(IntermediateOutputPath)$(TargetFileName).licenses"
-                       ReferencedAssemblies = "@(ReferencePath);@(_ResolvedDependencyFiles)"
+                       ReferencedAssemblies = "@(ReferencePath);@(ReferenceDependencyPaths)"
                        ToolPath = "$(LCToolPath)"
                        ToolExe = "$(LCToolExe)">
 
                        <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
                </ReadLinesFromFile>
 
-               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
-                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
-               </RemoveDuplicates>
-
                <!-- CopyLocal files: In case all the projects build to common output
                     directory, then other projects might depend on some of these
                     CopyLocal files, so delete only the ones under *this* project
                        <Output TaskParameter="InPath" ItemName="FileWrites"/>
                </FindUnderPath>
 
+               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
+                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
+               </RemoveDuplicates>
+
                <WriteLinesToFile
                        File="$(IntermediateOutputPath)$(CleanFile)"
                        Lines="@(CombinedFileWrites)"
        </Target>
 
        <Target Name="CleanReferencedProjects"
-               DependsOnTargets="AssignProjectConfigurations">
+               DependsOnTargets="AssignProjectConfiguration">
 
                <!-- If building from .sln.proj or from IDE, clean will get handled by them,
                     else we are building a project directly, from the command line, so
                     we can safely remove the file list now -->
                <Delete Files="$(IntermediateOutputPath)$(CleanFile)" TreatErrorsAsWarnings="true" />
        </Target>
+       
+       <PropertyGroup>
+               <ImplicitlyExpandDesignTimeFacades>true</ImplicitlyExpandDesignTimeFacades>
 
+               <ResolveReferencesDependsOn>
+                       $(ResolveReferencesDependsOn);
+                       ImplicitlyExpandDesignTimeFacades
+               </ResolveReferencesDependsOn>
+
+               <ImplicitlyExpandDesignTimeFacadesDependsOn>
+                       $(ImplicitlyExpandDesignTimeFacadesDependsOn);
+                       GetReferenceAssemblyPaths
+               </ImplicitlyExpandDesignTimeFacadesDependsOn>
+       </PropertyGroup>
+       
+       <Target Name="ImplicitlyExpandDesignTimeFacades" Condition="'$(ImplicitlyExpandDesignTimeFacades)' == 'true'" DependsOnTargets="$(ImplicitlyExpandDesignTimeFacadesDependsOn)">
+       
+               <PropertyGroup>
+                       <_HasReferenceToSystemRuntime Condition="'%(_ResolvedDependencyFiles.Filename)' == 'System.Runtime'">true</_HasReferenceToSystemRuntime>
+               </PropertyGroup>
+
+               <ItemGroup Condition="'$(_HasReferenceToSystemRuntime)' == 'true'">
+                       <!-- If the user has manually referenced these assemblies, remove them so we don't end up with duplicates -->
+                       <ReferencePath Remove="@(_DesignTimeFacadeAssemblies)"/>
+                       <ReferencePath Include="%(_DesignTimeFacadeAssemblies.Identity)">
+                               <WinMDFile>false</WinMDFile>
+                               <CopyLocal>false</CopyLocal>
+                               <ResolvedFrom>ImplicitlyExpandDesignTimeFacades</ResolvedFrom>
+                       </ReferencePath>
+                       <_ResolveAssemblyReferenceResolvedFiles Include="@(ReferencePath)" Condition="'%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandDesignTimeFacades'" />
+               </ItemGroup>
+    
+               <Message Importance="Low" Text="Including @(ReferencePath)" Condition="'%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandDesignTimeFacades'" />
+
+       </Target>
+       
        <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter\*"
                Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter')"/>
 </Project>
diff --git a/mcs/tools/xbuild/xbuild/4.0/Microsoft.Portable.CSharp.targets b/mcs/tools/xbuild/xbuild/4.0/Microsoft.Portable.CSharp.targets
new file mode 100644 (file)
index 0000000..d80a9f5
--- /dev/null
@@ -0,0 +1,3 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+       <Import Project="$(MSBuildToolsPath)\Microsoft.Portable.CSharp.Targets" />    
+</Project>
diff --git a/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.targets b/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.targets
deleted file mode 100644 (file)
index 2118874..0000000
+++ /dev/null
@@ -1,824 +0,0 @@
-<Project DefaultTargets="Build" InitialTargets="_ValidateEssentialProperties" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-       <PropertyGroup>
-               <ImportByWildcardBeforeMicrosoftCommonTargets Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == ''">true</ImportByWildcardBeforeMicrosoftCommonTargets>
-               <ImportByWildcardAfterMicrosoftCommonTargets Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == ''">true</ImportByWildcardAfterMicrosoftCommonTargets>
-       </PropertyGroup>
-
-       <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore\*"
-               Condition="'$(ImportByWildcardBeforeMicrosoftCommonTargets)' == 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportBefore')"/>
-
-       <PropertyGroup>
-               <TargetExt Condition="'$(OutputType)' == 'Winexe'">.exe</TargetExt>
-               <TargetExt Condition="'$(OutputType)' == 'Exe'">.exe</TargetExt>
-               <TargetExt Condition="'$(OutputType)' == 'Library'">.dll</TargetExt>
-               <TargetExt Condition="'$(OutputType)' == 'Netmodule'">.netmodule</TargetExt>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <ProjectDir Condition="'$(ProjectDir)' == ''">$(MSBuildProjectDirectory)\</ProjectDir>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <AssemblyName Condition="'$(AssemblyName)' == ''">$(RootNamespace)</AssemblyName>
-               <OutputPath Condition="'$(OutputPath)' != '' and !HasTrailingSlash('$(OutputPath)')">$(OutputPath)\</OutputPath> 
-               <OutputPath Condition=" '$(Platform)'=='' and '$(Configuration)'=='' and '$(OutputPath)'=='' ">bin\Debug\</OutputPath>
-               <WarningLevel Condition="'$(WarningLevel)' == ''" >2</WarningLevel>
-
-               <TargetFrameworkIdentifier Condition="'$(TargetFrameworkIdentifier)' == ''">.NETFramework</TargetFrameworkIdentifier>
-               <TargetFrameworkVersion Condition="'$(TargetFrameworkVersion)' == ''">v4.0</TargetFrameworkVersion>
-
-               <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == '' and '$(TargetFrameworkProfile)' != ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion),Profile=$(TargetFrameworkProfile)</TargetFrameworkMoniker>
-               <TargetFrameworkMoniker Condition="'$(TargetFrameworkMoniker)' == ''">$(TargetFrameworkIdentifier),Version=$(TargetFrameworkVersion)</TargetFrameworkMoniker>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <OutDir Condition="'$(OutDir)' == ''">$(OutputPath)</OutDir>
-               <OutDir Condition="'$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')">$(OutDir)\</OutDir>
-
-               <_OriginalConfiguration>$(Configuration)</_OriginalConfiguration>
-               <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
-               <ConfigurationName Condition="'$(ConfigurationName)' == ''">$(Configuration)</ConfigurationName>
-
-               <_OriginalPlatform>$(Platform)</_OriginalPlatform>
-               <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
-               <PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>
-
-               <AddAdditionalExplicitAssemblyReferences Condition="'$(AddAdditionalExplicitAssemblyReferences)' == ''">true</AddAdditionalExplicitAssemblyReferences>
-               <AdditionalExplicitAssemblyReferences Condition="'$(AddAdditionalExplicitAssemblyReferences)' == 'true' and '$(TargetFrameworkVersion)' != 'v2.0' and '$(TargetFrameworkVersion)' != 'v3.0'">System.Core;$(AdditionalExplicitAssemblyReferences)</AdditionalExplicitAssemblyReferences>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <SkipCopyUnchangedFiles Condition="'$(SkipCopyUnchangedFiles)' == ''">true</SkipCopyUnchangedFiles>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
-               <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' != '' and !HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
-               <CleanFile Condition="'$(CleanFile)'==''">$(MSBuildProjectFile).FilesWrittenAbsolute.txt</CleanFile>
-       </PropertyGroup>
-
-       <PropertyGroup Condition="'$(IntermediateOutputPath)' == ''">
-               <IntermediateOutputPath Condition=" '$(PlatformName)' == 'AnyCPU'">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
-               <IntermediateOutputPath Condition=" '$(PlatformName)' != 'AnyCPU'">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
-       </PropertyGroup>
-
-       <PropertyGroup>
-               <IntermediateOutputPath Condition="'$(IntermediateOutputPath)' != '' and !HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
-       </PropertyGroup>
-
-       <ItemGroup>
-               <IntermediateAssembly Include="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt)" />
-
-               <!-- creating this as a item to use FullPath on it, to build TargetPath -->
-               <_OutDirItem Include="$(OutDir)"/>
-       </ItemGroup>
-
-       <PropertyGroup>
-               <TargetName Condition="'$(TargetName)' == '' ">$(AssemblyName)</TargetName>
-               <TargetFileName Condition="'$(TargetFileName)' == '' ">$(TargetName)$(TargetExt)</TargetFileName>
-               <TargetDir Condition=" '$(TargetDir)' == '' ">@(_OutDirItem->'%(FullPath)')</TargetDir>
-               <TargetPath Condition=" '$(TargetPath)' == '' ">@(_OutDirItem->'%(FullPath)\$(TargetFileName)')</TargetPath>
-               <MSBuildAllProjects>$(MSBuildAllProjects);$(MSBuildProjectFullPath);$(MSBuildToolsPath)\Microsoft.Common.targets</MSBuildAllProjects>
-               <KeyOriginatorFile Condition=" '$(SignAssembly)' == 'true' ">$(AssemblyOriginatorKeyFile)</KeyOriginatorFile>
-       </PropertyGroup>
-
-       <Target Name="_ValidateEssentialProperties">
-               <Error Condition=" '$(OutputPath)' == '' and '$(SkipInvalidConfigurations)' != 'true'"
-                       Text="'OutputPath' property is not set for this project. Usually this is caused by invalid Configuration/Platform combination. Original values: Configuration: $(_OriginalConfiguration) Platform: $(_OriginalPlatform)."/>
-
-               <Warning Condition=" '$(OutputPath)' == '' and '$(SkipInvalidConfigurations)' == 'true'"
-                       Text="'OutputPath' property is not set for this project. Usually this is caused by invalid Configuration/Platform combination. Original values: Configuration: $(_OriginalConfiguration) Platform: $(_OriginalPlatform)."/>
-
-               <!-- If OutDir is specified via the command line, then the earlier check
-                    to add a trailing slash won't have any affect, so error here. -->
-               <Error
-                       Condition="'$(OutDir)' != '' and !HasTrailingSlash('$(OutDir)')"
-                       Text="OutDir property must end with a slash."/>
-       </Target>
-
-       <Target Name="PrepareForBuild">
-               <Message Importance="High" Text="Configuration: $(Configuration) Platform: $(Platform)"/>
-
-               <!-- Look for app.config, if $(AppConfig) is specified, then use that. Else look in
-                    @(None) and @(Content) -->
-               <CreateItem Include="$(AppConfig)" Condition="'$(AppConfig)' != ''"
-                       AdditionalMetadata="TargetPath=$(TargetFileName).config">
-                       <Output TaskParameter="Include" ItemName="AppConfigWithTargetPath" />
-               </CreateItem>
-
-               <FindAppConfigFile PrimaryList="@(None)" SecondaryList="@(Content)" TargetPath="$(TargetFileName).config"
-                       Condition="'$(AppConfig)' == ''">
-                       <Output TaskParameter="AppConfigFile" ItemName="AppConfigWithTargetPath"/>
-               </FindAppConfigFile>
-
-               <MakeDir 
-                       Directories="$(OutDir);$(IntermediateOutputPath);@(DocFileItem->'%(RelativeDir)')"
-               />
-       </Target>
-
-       <PropertyGroup>
-               <GetFrameworkPathsDependsOn />
-       </PropertyGroup>
-       <Target Name="GetFrameworkPaths"
-               Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkIdentifier)' == '.NETFramework'"
-               DependsOnTargets="$(GetFrameworkPathsDependsOn)">
-               <GetFrameworkPath>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.5'"
-                               TaskParameter="FrameworkVersion45Path"
-                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v4.0'"
-                               TaskParameter="FrameworkVersion40Path"
-                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v3.5'"
-                               TaskParameter="FrameworkVersion35Path"
-                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5'" 
-                               TaskParameter="FrameworkVersion30Path"
-                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
-                       <Output Condition="'$(TargetFrameworkVersion)' == 'v2.0' or '$(TargetFrameworkVersion)' == 'v3.0' or '$(TargetFrameworkVersion)' == 'v3.5'" 
-                               TaskParameter="FrameworkVersion20Path"
-                               ItemName="_CombinedTargetFrameworkDirectoriesItem"/>
-               </GetFrameworkPath>
-               <CreateProperty Value="@(_CombinedTargetFrameworkDirectoriesItem)">
-                       <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
-               </CreateProperty>
-
-               <Warning Text="TargetFrameworkVersion '$(TargetFrameworkVersion)' not supported by this toolset (ToolsVersion: $(MSBuildToolsVersion))."
-                       Condition="'$(TargetFrameworkVersion)' != 'v4.5' and '$(TargetFrameworkVersion)' != 'v4.0' and '$(TargetFrameworkVersion)' != 'v3.5' and '$(TargetFrameworkVersion)' != 'v3.0' and '$(TargetFrameworkVersion)' != 'v2.0'"/>
-       </Target>
-
-       <PropertyGroup>
-               <GetReferenceAssemblyPathsDependsOn />
-       </PropertyGroup>
-       <Target Name="GetReferenceAssemblyPaths" DependsOnTargets="$(GetReferenceAssemblyPathsDependsOn)">
-               <!-- in case of .NETFramework, $(TargetFrameworkDirectory) would have been set by
-               GetFrameworkPaths, if it hasn't been changed, then clear it, to avoid duplicates -->
-               <CreateProperty Value="" Condition="'@(_CombinedTargetFrameworkDirectoriesItem)' == '$(TargetFrameworkDirectory)'">
-                       <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
-               </CreateProperty>
-
-               <GetReferenceAssemblyPaths
-                       Condition="'$(TargetFrameworkMoniker)' != '' and '$(_TargetFrameworkDirectories)' == ''"
-                       TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
-                       RootPath="$(TargetFrameworkRootPath)">
-
-                       <Output TaskParameter="ReferenceAssemblyPaths" PropertyName="_TargetFrameworkDirectories"/>
-                       <Output TaskParameter="FullFrameworkReferenceAssemblyPaths" PropertyName="_FullFrameworkReferenceAssemblyPaths"/>
-                       <Output TaskParameter="TargetFrameworkMonikerDisplayName" PropertyName="TargetFrameworkMonikerDisplayName"/>
-               </GetReferenceAssemblyPaths>
-
-               <CreateProperty Value="$(_TargetFrameworkDirectories);$(TargetFrameworkDirectory)">
-                       <Output TaskParameter="Value" PropertyName="TargetFrameworkDirectory"/>
-               </CreateProperty>
-       </Target>
-
-       <PropertyGroup>
-               <AllowedReferenceAssemblyFileExtensions Condition=" '$(AllowedReferenceAssemblyFileExtensions)' == '' ">
-                       .exe;
-                       .dll
-               </AllowedReferenceAssemblyFileExtensions>
-
-               <AllowedReferenceRelatedFileExtensions Condition=" '$(AllowedReferenceRelatedFileExtensions)' == '' ">
-                       .mdb
-               </AllowedReferenceRelatedFileExtensions>
-
-               <AssemblySearchPaths Condition="'$(AssemblySearchPaths)' == ''">
-                       {CandidateAssemblyFiles};
-                       $(ReferencePath);
-                       {HintPathFromItem};
-                       {TargetFrameworkDirectory};
-                       {PkgConfig};
-                       {GAC};
-                       {RawFileName};
-                       $(OutDir)
-               </AssemblySearchPaths>
-
-               <ResolveReferencesDependsOn>
-                       BeforeResolveReferences;
-                       ResolveProjectReferences;
-                       ResolveAssemblyReferences;
-                       AfterResolveReferences
-               </ResolveReferencesDependsOn>
-
-               <ResolveAssemblyReferencesDependsOn>
-                       GetFrameworkPaths;
-                       GetReferenceAssemblyPaths;
-                       PrepareForBuild
-               </ResolveAssemblyReferencesDependsOn>
-       </PropertyGroup>
-
-       <Target Name="ResolveReferences" DependsOnTargets="$(ResolveReferencesDependsOn)"/>
-
-       <Target Name="BeforeResolveReferences" />
-       <Target Name="AfterResolveReferences" />
-
-       <Target Name="ResolveAssemblyReferences" DependsOnTargets="$(ResolveAssemblyReferencesDependsOn)">
-               <CreateItem Include="@(Reference)" Exclude="$(AdditionalExplicitAssemblyReferences)">
-                       <Output TaskParameter="Include" ItemName="_Reference"/>
-               </CreateItem>
-
-               <CreateItem Include="$(AdditionalExplicitAssemblyReferences)">
-                       <Output TaskParameter="Include" ItemName="_Reference"/>
-               </CreateItem>
-
-               <ResolveAssemblyReference
-                       Assemblies="@(_Reference)"
-                       AssemblyFiles="@(ChildProjectReferences)"
-                       SearchPaths="$(AssemblySearchPaths)"
-                       CandidateAssemblyFiles="@(Content);@(None)"
-                       TargetFrameworkDirectories="$(TargetFrameworkDirectory)"
-                       AllowedAssemblyExtensions="$(AllowedReferenceAssemblyFileExtensions)"
-                       AllowedRelatedFileExtensions="$(AllowedReferenceRelatedFileExtensions)"
-                       FindDependencies="true"
-                       FindSatellites="true"
-                       FindRelatedFiles="true"
-                       TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
-                       TargetFrameworkMonikerDisplayName="$(TargetFrameworkMonikerDisplayName)"
-                       TargetFrameworkVersion="$(TargetFrameworkVersion)"
-               >
-                       <Output TaskParameter="ResolvedFiles" ItemName="ResolvedFiles"/>
-                       <Output TaskParameter="ResolvedFiles" ItemName="ReferencePath"/>
-                       <Output TaskParameter="ResolvedDependencyFiles" ItemName="_ResolvedDependencyFiles"/>
-                       <Output TaskParameter="RelatedFiles" ItemName="_ReferenceRelatedPaths"/>
-                       <Output TaskParameter="SatelliteFiles" ItemName="ReferenceSatellitePaths"/>
-                       <Output TaskParameter="CopyLocalFiles" ItemName="ReferenceCopyLocalPaths"/>
-               </ResolveAssemblyReference>
-       </Target>
-
-       <Target
-               Name="AssignProjectConfigurations"
-               Condition="'@(ProjectReference)' != ''">
-
-               <!-- assign configs if building a solution file -->
-               <AssignProjectConfiguration
-                       ProjectReferences = "@(ProjectReference)"
-                       SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
-                       Condition="'$(BuildingSolutionFile)' == 'true'">
-
-                       <Output TaskParameter = "AssignedProjects" ItemName = "ProjectReferenceWithConfiguration"/>
-               </AssignProjectConfiguration>
-
-               <!-- Else, just -->
-               <CreateItem Include="@(ProjectReference)" Condition="'$(BuildingSolutionFile)' != 'true'">
-                       <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfiguration"/>
-               </CreateItem>
-
-       </Target>
-
-       <!-- Split projects into 2 lists
-               ProjectReferenceWithConfigurationExistent: Projects existent on disk
-               ProjectReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
-
-       <Target Name="SplitProjectReferencesByExistent"
-               DependsOnTargets="AssignProjectConfigurations">
-
-               <CreateItem Include="@(ProjectReferenceWithConfiguration)" Condition="'@(ProjectReferenceWithConfiguration)' != ''">
-                       <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationExistent"
-                               Condition="Exists ('%(ProjectReferenceWithConfiguration.Identity)')"/>
-
-                       <Output TaskParameter="Include" ItemName="ProjectReferenceWithConfigurationNonExistent"
-                               Condition="!Exists ('%(ProjectReferenceWithConfiguration.Identity)')"/>
-               </CreateItem>
-       </Target>
-
-       <Target
-               Name="ResolveProjectReferences"
-               DependsOnTargets="SplitProjectReferencesByExistent"
-       >
-               <!-- If building from a .sln.proj or from IDE, then referenced projects have already
-                    been built, so just get the target paths -->
-               <MSBuild
-                       Projects="@(ProjectReferenceWithConfigurationExistent)"
-                       Targets="GetTargetPath"
-                       Properties="%(ProjectReferenceWithConfigurationExistent.SetConfiguration); %(ProjectReferenceWithConfigurationExistent.SetPlatform)"
-                       Condition="'@(ProjectReferenceWithConfigurationExistent)' != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
-
-                       <Output TaskParameter="TargetOutputs" ItemName="ChildProjectReferences" />
-               </MSBuild>
-
-               <!-- Building a project directly, build the referenced the projects also -->
-               <MSBuild
-                       Projects="@(ProjectReferenceWithConfigurationExistent)"
-                       Properties="%(ProjectReferenceWithConfigurationExistent.SetConfiguration); %(ProjectReferenceWithConfigurationExistent.SetPlatform)"
-                       Condition="'@(ProjectReferenceWithConfigurationExistent)' != '' and '$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true' ">
-
-                       <Output TaskParameter="TargetOutputs" ItemName="ChildProjectReferences" />
-               </MSBuild>
-
-               <Warning Text="Referenced Project %(ProjectReferenceWithConfigurationNonExistent.Identity) not found, ignoring."
-                        Condition="'@(ProjectReferenceWithConfigurationNonExistent)' != ''"/>
-       </Target>
-
-       <Target Name = "CopyFilesMarkedCopyLocal">
-               <Copy
-                       SourceFiles="@(ReferenceCopyLocalPaths)"
-                       DestinationFiles="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
-                       <Output TaskParameter = "DestinationFiles" ItemName = "FileWritesShareable"/>
-               </Copy>
-       </Target>
-
-       <Target Name="_ComputeNonExistentFileProperty" Condition='false'>
-               <CreateProperty Value="__NonExistentSubDir__\__NonExistentFile__">
-                       <Output TaskParameter="Value" PropertyName="NonExistentFile"/>
-               </CreateProperty>
-       </Target>
-
-       <PropertyGroup>
-               <BuildDependsOn>
-                       BeforeBuild;
-                       CoreBuild;
-                       AfterBuild
-               </BuildDependsOn>
-       </PropertyGroup>
-
-       <Target Name="BeforeBuild"/>
-       <Target Name="AfterBuild"/>
-
-       <Target Name="Build" DependsOnTargets="$(BuildDependsOn)" Outputs="$(TargetPath)"/>
-
-       <PropertyGroup>
-               <CoreBuildDependsOn>
-                       PrepareForBuild;
-                       GetFrameworkPaths;
-                       GetReferenceAssemblyPaths;
-                       PreBuildEvent;
-                       ResolveReferences;
-                       CopyFilesMarkedCopyLocal;
-                       PrepareResources;
-                       Compile;
-                       PrepareForRun;
-                       DeployOutputFiles;
-                       _RecordCleanFile;
-                       PostBuildEvent
-               </CoreBuildDependsOn>
-       </PropertyGroup>
-
-       <Target
-               Name="CoreBuild"
-               DependsOnTargets="$(CoreBuildDependsOn)"
-               Outputs="$(OutDir)$(AssemblyName)$(TargetExt)">
-
-               <OnError ExecuteTargets="_TimestampAfterCompile;PostBuildEvent"
-                       Condition=" '$(RunPostBuildEvent)' == 'Always' or '$(RunPostBuildEvent)' == 'OnOutputUpdated'"/>
-
-               <OnError ExecuteTargets="_RecordCleanFile" />
-       </Target>
-
-       <PropertyGroup>
-               <CompileDependsOn>
-                       ResolveReferences;
-                       BeforeCompile;
-                       _TimestampBeforeCompile;
-                       CoreCompile;
-                       _TimestampAfterCompile;
-                       AfterCompile
-               </CompileDependsOn>
-       </PropertyGroup>
-
-       <Target Name="BeforeCompile" />
-       <Target Name="AfterCompile" />
-
-       <Target Name="Compile" DependsOnTargets="$(CompileDependsOn)"/>
-
-       <PropertyGroup>
-               <PrepareForRunDependsOn>
-                       DeployOutputFiles
-               </PrepareForRunDependsOn>
-       </PropertyGroup>
-       <Target Name="PrepareForRun" DependsOnTargets="$(PrepareForRunDependsOn)"/>
-
-       <PropertyGroup>
-               <PrepareResourcesDependsOn>
-                       AssignTargetPaths;
-                       SplitResourcesByCulture;
-                       CreateManifestResourceNames;
-                       CopyNonResxEmbeddedResources;
-                       GenerateResources;
-                       GenerateSatelliteAssemblies;
-                       CompileLicxFiles
-               </PrepareResourcesDependsOn>
-       </PropertyGroup>
-       <Target Name="PrepareResources" DependsOnTargets="$(PrepareResourcesDependsOn)" />
-
-       <Target Name="SplitResourcesByCulture" DependsOnTargets="AssignTargetPaths">
-               <!-- Extract .licx files into @(LicxFiles) -->
-               <CreateItem Include="@(EmbeddedResourceWithTargetPath)" Condition="'%(Extension)' == '.licx'">
-                       <Output TaskParameter="Include" ItemName="LicxFiles"/>
-               </CreateItem>
-
-               <!-- Split *remaining* resource files into various groups.. -->
-               <AssignCulture Files="@(EmbeddedResourceWithTargetPath)" Condition="'%(Extension)' != '.licx'">
-                       <Output TaskParameter="AssignedFilesWithNoCulture" ItemName="ResourcesWithNoCulture"/>
-                       <Output TaskParameter="AssignedFilesWithCulture" ItemName="ResourcesWithCulture"/>
-               </AssignCulture>
-
-               <CreateItem Include="@(ResourcesWithNoCulture)" Condition="'%(Extension)' == '.resx'">
-                       <Output TaskParameter="Include" ItemName="ResxWithNoCulture"/>
-               </CreateItem>
-
-               <CreateItem Include="@(ResourcesWithNoCulture)" Condition="'%(Extension)' != '.resx'">
-                       <Output TaskParameter="Include" ItemName="NonResxWithNoCulture"/>
-               </CreateItem>
-
-               <CreateItem Include="@(ResourcesWithCulture)" Condition="'%(Extension)' == '.resx'">
-                       <Output TaskParameter="Include" ItemName="ResxWithCulture"/>
-               </CreateItem>
-
-               <CreateItem Include="@(ResourcesWithCulture)" Condition="'%(Extension)' != '.resx'">
-                       <Output TaskParameter="Include" ItemName="NonResxWithCulture"/>
-               </CreateItem>
-       </Target>
-
-       <!-- Copy non-resx resources to their manifest resource names, this is what the compiler expects -->
-       <Target Name = "CopyNonResxEmbeddedResources"
-               Condition = "'@(NonResxWithCulture)' != '' or '@(NonResxWithNoCulture)' != '' or '@(ManifestNonResxWithCulture)' != '' or '@(ManifestNonResxWithNoCulture)' != ''">
-
-               <MakeDir Directories="$(IntermediateOutputPath)%(ManifestNonResxWithCulture.Culture)"/>
-               <Copy SourceFiles = "@(NonResxWithCulture)"
-                       DestinationFiles = "@(ManifestNonResxWithCulture->'$(IntermediateOutputPath)%(Identity)')"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
-                       <Output TaskParameter = "DestinationFiles" ItemName = "ManifestNonResxWithCultureOnDisk"/>
-                       <Output TaskParameter = "DestinationFiles" ItemName = "FileWrites"/>
-               </Copy>
-
-               <Copy SourceFiles = "@(NonResxWithNoCulture)"
-                       DestinationFiles = "@(ManifestNonResxWithNoCulture->'$(IntermediateOutputPath)%(Identity)')"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
-                       <Output TaskParameter = "DestinationFiles" ItemName = "ManifestNonResxWithNoCultureOnDisk"/>
-                       <Output TaskParameter = "DestinationFiles" ItemName = "FileWrites"/>
-               </Copy>
-       </Target>
-
-       <Target Name = "GenerateResources">
-               <GenerateResource
-                       Sources = "@(ResxWithNoCulture)"
-                       UseSourcePath = "true"
-                       OutputResources = "@(ManifestResourceWithNoCultureName->'$(IntermediateOutputPath)%(Identity).resources')"
-                       Condition = "'@(ResxWithNoCulture)' != '' ">
-
-                       <Output TaskParameter = "OutputResources" ItemName = "ManifestResourceWithNoCulture"/>
-                       <Output TaskParameter = "FilesWritten" ItemName = "FileWrites"/>
-               </GenerateResource>
-
-               <GenerateResource
-                       Sources = "@(ResxWithCulture)"
-                       UseSourcePath = "true"
-                       OutputResources = "@(ManifestResourceWithCultureName->'$(IntermediateOutputPath)%(Identity).resources')"
-                       Condition = "'@(ResxWithCulture)' != '' ">
-
-                       <Output TaskParameter = "OutputResources" ItemName = "ManifestResourceWithCulture"/>
-                       <Output TaskParameter = "FilesWritten" ItemName = "FileWrites"/>
-               </GenerateResource>
-       </Target>
-
-       <Target Name="GenerateSatelliteAssemblies"
-               Inputs="@(ManifestResourceWithCulture);@(ManifestNonResxWithCultureOnDisk)"
-               Outputs="$(IntermediateOutputPath)%(Culture)\$(AssemblyName).resources.dll" >
-               <!-- @(NonResxWithCulture) - rename files to ManifestNon.. and then use for AL -->
-               <MakeDir Directories = "$(IntermediateOutputPath)%(ManifestResourceWithCulture.Culture)" Condition = "'@(ManifestResourceWithCulture)' != ''" />
-               <MakeDir Directories = "$(IntermediateOutputPath)%(ManifestNonResxWithCultureOnDisk.Culture)" Condition = "'@(ManifestNonResxWithCultureOnDisk)' != ''" />
-
-               <AL
-                       Culture = "%(Culture)"
-                       DelaySign="$(DelaySign)"
-                       EmbedResources = "@(ManifestResourceWithCulture);@(ManifestNonResxWithCultureOnDisk)"
-                       KeyFile="$(KeyOriginatorFile)"
-                       ToolExe="$(AlToolExe)"
-                       ToolPath="$(AlToolPath)"
-                       OutputAssembly = "$(IntermediateOutputPath)%(Culture)\$(AssemblyName).resources.dll" >
-                       <Output TaskParameter="OutputAssembly" ItemName="FileWrites"/>
-               </AL>
-
-
-               <CreateItem
-                       Include = "$(IntermediateOutputPath)%(Culture)\$(AssemblyName).resources.dll"
-                       AdditionalMetadata = "Culture=%(Culture)"
-                       Condition = "'@(ManifestResourceWithCulture)' != '' or '@(ManifestNonResxWithCultureOnDisk)' != ''">
-                       <Output TaskParameter = "Include" ItemName = "IntermediateSatelliteAssemblies" />
-               </CreateItem>
-       </Target>
-
-       <PropertyGroup>
-               <CompileLicxFilesDependsOn></CompileLicxFilesDependsOn>
-       </PropertyGroup>
-
-       <Target Name = "CompileLicxFiles"
-               Condition = "'@(LicxFiles)' != ''"
-               DependsOnTargets = "$(CompileLicxFilesDependsOn)"
-               Outputs = "$(IntermediateOutputPath)$(TargetFileName).licenses">
-               <LC
-                       Sources = "@(LicxFiles)"
-                       LicenseTarget = "$(TargetFileName)"
-                       OutputDirectory = "$(IntermediateOutputPath)"
-                       OutputLicense = "$(IntermediateOutputPath)$(TargetFileName).licenses"
-                       ReferencedAssemblies = "@(ReferencePath);@(_ResolvedDependencyFiles)"
-                       ToolPath = "$(LCToolPath)"
-                       ToolExe = "$(LCToolExe)">
-
-                       <Output TaskParameter="OutputLicense" ItemName="CompiledLicenseFile"/>
-                       <Output TaskParameter="OutputLicense" ItemName="FileWrites"/>
-               </LC>
-       </Target>
-
-       <!-- Assign target paths to files that will need to be copied along with the project -->
-       <Target Name = "AssignTargetPaths">
-               <AssignTargetPath Files="@(None)" RootFolder="$(MSBuildProjectDirectory)">
-                       <Output TaskParameter="AssignedFiles" ItemName="NoneWithTargetPath"/>
-               </AssignTargetPath>
-
-               <AssignTargetPath Files="@(Content)" RootFolder="$(MSBuildProjectDirectory)">
-                       <Output TaskParameter="AssignedFiles" ItemName="ContentWithTargetPath"/>
-               </AssignTargetPath>
-
-               <AssignTargetPath Files="@(EmbeddedResource)" RootFolder="$(MSBuildProjectDirectory)">
-                       <Output TaskParameter="AssignedFiles" ItemName="EmbeddedResourceWithTargetPath"/>
-               </AssignTargetPath>
-       </Target>
-
-       <Target Name="DeployOutputFiles"
-               DependsOnTargets="PrepareResources;CoreCompile;_CopyDeployFilesToOutputDirectory;_CopyAppConfigFile">
-
-               <Copy 
-                       SourceFiles="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb"
-                       Condition="'$(OutDir)' != '' and Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')"
-                       DestinationFolder="$(OutDir)"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)" >
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-
-               <Copy SourceFiles="@(IntermediateAssembly)" Condition="'$(OutDir)' != '' and Exists ('@(IntermediateAssembly)')" DestinationFolder="$(OutDir)" SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-
-               <Copy
-                       SourceFiles = "@(IntermediateSatelliteAssemblies)"
-                       DestinationFiles = "@(IntermediateSatelliteAssemblies->'$(OutDir)\%(Culture)\$(AssemblyName).resources.dll')"
-                       Condition = "'@(IntermediateSatelliteAssemblies)' != ''"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)">
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-       </Target>
-
-       <Target Name="_CopyDeployFilesToOutputDirectory"
-               DependsOnTargets="GetCopyToOutputDirectoryItems;
-                       _CopyDeployFilesToOutputDirectoryAlways;
-                       _CopyDeployFilesToOutputDirectoryPreserveNewest"/>
-
-       <Target Name="_CopyDeployFilesToOutputDirectoryPreserveNewest"
-               Condition="'@(ItemsToCopyToOutputDirectoryPreserveNewest)' != ''"
-               Inputs="@(ItemsToCopyToOutputDirectoryPreserveNewest)"
-               Outputs="@(ItemsToCopyToOutputDirectoryPreserveNewest->'$(OutDir)%(TargetPath)')">
-
-               <Copy SourceFiles="@(ItemsToCopyToOutputDirectoryPreserveNewest)"
-                       DestinationFiles="@(ItemsToCopyToOutputDirectoryPreserveNewest->'$(OutDir)%(TargetPath)')"
-                       SkipUnchangedFiles="$(SkipCopyUnchangedFiles)"> 
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-       </Target>
-
-       <!-- Copy if newer -->
-       <Target Name="_CopyDeployFilesToOutputDirectoryAlways"
-               Condition="'@(ItemsToCopyToOutputDirectoryAlways)' != ''">
-
-               <Copy SourceFiles="@(ItemsToCopyToOutputDirectoryAlways)"
-                       DestinationFiles="@(ItemsToCopyToOutputDirectoryAlways->'$(OutDir)%(TargetPath)')">
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-       </Target>
-
-
-       <Target Name="_CopyAppConfigFile" Condition="'@(AppConfigWithTargetPath)' != ''"
-               Inputs="@(AppConfigWithTargetPath)"
-               Outputs="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')">
-
-               <Copy SourceFiles="@(AppConfigWithTargetPath)"
-                       DestinationFiles="@(AppConfigWithTargetPath->'$(OutDir)%(TargetPath)')">
-                       <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
-               </Copy>
-       </Target>
-
-       <Target Name="GetTargetPath" Outputs="$(TargetPath)"/>
-
-       <Target Name="GetCopyToOutputDirectoryItems"
-               Outputs="@(AllItemsFullPathWithTargetPath)"
-               DependsOnTargets="AssignTargetPaths;SplitProjectReferencesByExistent">
-
-               <!-- FIXME: handle .vcproj
-                    FIXME: Private ProjectReferences are honored only in 3.5
-               -->
-               <MSBuild
-                       Projects="@(ProjectReferenceWithConfigurationExistent)"
-                       Targets="GetCopyToOutputDirectoryItems"
-                       Condition="'@(ProjectReferenceWithConfigurationExistent)' != '' and '%(ProjectReferenceWithConfigurationExistent.Private)' != 'false'">
-
-                       <Output TaskParameter="TargetOutputs" ItemName="AllChildProjectItemsWithTargetPath"/>
-               </MSBuild>
-
-               <!-- Process items from child project. The outputs need to have full path
-                    as they'll be used from other projects -->
-
-               <CreateItem
-                       Include="@(AllChildProjectItemsWithTargetPath->'%(FullPath)')"
-                       Condition="'%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
-
-                       <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
-                               Condition="'%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
-                               Condition="'%(AllChildProjectItemsWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
-
-               </CreateItem>
-
-               <!-- Process _this_ project's items -->
-
-               <CreateItem
-                       Include="@(NoneWithTargetPath->'%(FullPath)')"
-                       Condition="'%(NoneWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(NoneWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
-                       <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
-                               Condition="'%(NoneWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
-                               Condition="'%(NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
-               </CreateItem>
-
-               <CreateItem
-                       Include="@(ContentWithTargetPath->'%(FullPath)')"
-                       Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(ContentWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
-                       <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
-                               Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
-                               Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
-               </CreateItem>
-
-               <CreateItem
-                       Include="@(EmbeddedResourceWithTargetPath->'%(FullPath)')"
-                       Condition="'%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)' == 'Always' or '%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)' == 'PreserveNewest'">
-                       <Output TaskParameter="Include" ItemName="AllItemsFullPathWithTargetPath"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryAlways"
-                               Condition="'%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)'=='Always'"/>
-                       <Output TaskParameter="Include" ItemName="ItemsToCopyToOutputDirectoryPreserveNewest"
-                               Condition="'%(EmbeddedResourceWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest'"/>
-               </CreateItem>
-
-       </Target>
-
-       <!-- Pre/Post BuildEvents -->
-       <PropertyGroup>
-               <PreBuildEventDependsOn />
-       </PropertyGroup>
-
-       <Target Name="PreBuildEvent"
-               Condition="'$(PreBuildEvent)' != ''"
-               DependsOnTargets="$(PreBuildEventDependsOn)">
-
-               <Exec WorkingDirectory="$(OutDir)" Command="$(PreBuildEvent)" />
-       </Target>
-
-       <!-- PostBuildEvent depends on $(RunPostBuildEvent)
-
-               Default: OnBuildSuccess
-               OnBuildSuccess: Run after a successful build
-               OnOutputUpdated: Run only if the output assembly got updates
-               Always: Run always
-       -->
-       <PropertyGroup>
-               <PostBuildEventDependsOn />
-       </PropertyGroup>
-
-       <!-- this gets invoked in two cases, from CoreBuildDependsOn, if the build completes
-            successfully, OR from OnError in CoreBuild, if the build failed and $(RunPostBuildEvent)
-            is 'Always' or 'OnOutputUpdated'. Invoke $(PostBuildEvent) if its either Empty (== OnBuildSuccess)
-            or OnBuildSuccess or Always OR (OnOutputUpdated and output assembly got updated) -->
-       <Target Name="PostBuildEvent"
-               Condition="'$(PostBuildEvent)' != '' and
-                       ('$(RunPostBuildEvent)' != 'OnOutputUpdated' or
-                         '$(_AssemblyModifiedTimeBeforeCompile)' != '$(_AssemblyModifiedTimeAfterCompile)')"
-               DependsOnTargets="$(PostBuildEventDependsOn)">
-
-               <Exec WorkingDirectory="$(OutDir)" Command="$(PostBuildEvent)" />
-       </Target>
-
-       <!-- Timestamp the output assemblies, required for PostBuildEvent -->
-       <Target Name="_TimestampBeforeCompile" Condition="'$(RunPostBuildEvent)' == 'OnOutputUpdated'">
-               <CreateItem Include="%(IntermediateAssembly.ModifiedTime)">
-                       <Output TaskParameter="Include" PropertyName="_AssemblyModifiedTimeBeforeCompile" />
-               </CreateItem>
-       </Target>
-       <Target Name="_TimestampAfterCompile" Condition="'$(RunPostBuildEvent)' == 'OnOutputUpdated'">
-               <CreateItem Include="%(IntermediateAssembly.ModifiedTime)">
-                       <Output TaskParameter="Include" PropertyName="_AssemblyModifiedTimeAfterCompile" />
-               </CreateItem>
-       </Target>
-
-       <!-- Rebuild -->
-       <PropertyGroup>
-               <RebuildDependsOn>
-                       BeforeRebuild;
-                       Clean;
-                       $(MSBuildProjectDefaultTargets);
-                       AfterRebuild;
-               </RebuildDependsOn>
-
-               <RebuildDependsOn Condition="'$(MSBuildProjectDefaultTargets)' == 'Rebuild'">
-                       BeforeRebuild;
-                       Clean;
-                       Build;
-                       AfterRebuild;
-               </RebuildDependsOn>
-       </PropertyGroup>
-
-       <Target Name="BeforeRebuild" />
-       <Target Name="AfterRebuild" />
-
-       <Target Name="Rebuild"
-               DependsOnTargets="$(RebuildDependsOn)"
-               Outputs="$(TargetPath)"/>
-
-       <!-- Clean -->
-       <Target Name="_RecordCleanFile"
-               DependsOnTargets="_GetCompileOutputsForClean">
-
-               <!-- add to list of previous writes for this platform/config -->
-
-               <ReadLinesFromFile File="$(IntermediateOutputPath)$(CleanFile)">
-                       <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
-               </ReadLinesFromFile>
-
-               <RemoveDuplicates Inputs="@(PreviousFileWrites);@(FileWrites->'%(FullPath)')">
-                       <Output TaskParameter="Filtered" ItemName="CombinedFileWrites"/>
-               </RemoveDuplicates>
-
-               <!-- CopyLocal files: In case all the projects build to common output
-                    directory, then other projects might depend on some of these
-                    CopyLocal files, so delete only the ones under *this* project
-                    directory -->
-               <FindUnderPath Path="$(MSBuildProjectDirectory)" Files="@(FileWritesShareable)">
-                       <Output TaskParameter="InPath" ItemName="FileWrites"/>
-               </FindUnderPath>
-
-               <WriteLinesToFile
-                       File="$(IntermediateOutputPath)$(CleanFile)"
-                       Lines="@(CombinedFileWrites)"
-                       Overwrite="true"/>
-       </Target>
-
-       <PropertyGroup>
-               <CleanDependsOn>
-                       BeforeClean;
-                       CleanReferencedProjects;
-                       CoreClean;
-                       AfterClean
-               </CleanDependsOn>
-       </PropertyGroup>
-
-       <Target Name="_GetCompileOutputsForClean">
-               <!-- assembly and debug file in the *intermediate output path* -->
-               <CreateItem Include="@(IntermediateAssembly)" Condition="Exists('@(IntermediateAssembly)')">
-                       <Output TaskParameter="Include" ItemName="FileWrites"/>
-               </CreateItem>
-
-               <CreateItem Include="$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb"
-                       Condition="Exists('$(IntermediateOutputPath)$(AssemblyName)$(TargetExt).mdb')">
-                       <Output TaskParameter="Include" ItemName="FileWrites"/>
-               </CreateItem>
-       </Target>
-
-       <!-- Get the list of files written, for clean -->
-       <Target Name="_GetCleanFileWrites"
-               DependsOnTargets="_GetCompileOutputsForClean">
-               <ReadLinesFromFile File="$(IntermediateOutputPath)$(CleanFile)">
-                       <Output TaskParameter="Lines" ItemName="PreviousFileWrites"/>
-               </ReadLinesFromFile>
-       </Target>
-
-       <Target Name="CleanReferencedProjects"
-               DependsOnTargets="AssignProjectConfigurations">
-
-               <!-- If building from .sln.proj or from IDE, clean will get handled by them,
-                    else we are building a project directly, from the command line, so
-                    clean the referenced projects -->
-               <MSBuild Projects="@(ProjectReferenceWithConfigurationExistent)"
-                       Targets="Clean"
-                       Condition=" '$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true' and '@(ProjectReferenceWithConfigurationExistent)' != ''" />
-
-       </Target>
-
-       <Target Name="Clean" DependsOnTargets="$(CleanDependsOn)"/>
-
-       <!-- Override in project to run before/after clean tasks -->
-       <Target Name="BeforeClean" />
-       <Target Name="AfterClean" />
-
-       <Target Name="CoreClean" DependsOnTargets="_GetCleanFileWrites">
-               <Delete Files="@(PreviousFileWrites);@(FileWrites)" TreatErrorsAsWarnings="true"/>
-
-               <!-- all previous files written for this platform/config have been deleted,
-                    we can safely remove the file list now -->
-               <Delete Files="$(IntermediateOutputPath)$(CleanFile)" TreatErrorsAsWarnings="true" />
-       </Target>
-
-       <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter\*"
-               Condition="'$(ImportByWildcardAfterMicrosoftCommonTargets)' == 'true' and Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\$(MSBuildThisFile)\ImportAfter')"/>
-</Project>
diff --git a/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.tasks b/mcs/tools/xbuild/xbuild/4.5/Microsoft.Common.tasks
deleted file mode 100644 (file)
index d326aad..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" >
-       <UsingTask TaskName="Microsoft.Build.Tasks.AL"                  AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.AssignTargetPath"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.AssignCulture"       AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.AssignProjectConfiguration"  AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.CallTarget"          AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.CombinePath"         AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Copy"                AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.CreateCSharpManifestResourceName"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
-       <UsingTask TaskName="Microsoft.Build.Tasks.CreateItem"          AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.CreateProperty"      AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Csc"                 AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Delete"              AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Error"               AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Exec"                AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.FindAppConfigFile"   AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.FindUnderPath"       AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.GenerateResource"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.GetFrameworkPath"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.GetFrameworkSdkPath" AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.GetReferenceAssemblyPaths"   AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.LC"                  AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.MakeDir"             AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Message"             AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.MSBuild"             AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.ReadLinesFromFile"   AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.RemoveDir"           AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.RemoveDuplicates"            AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.ResolveAssemblyReference"            AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.SignFile"            AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Touch"               AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Vbc"                 AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.Warning"             AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-       <UsingTask TaskName="Microsoft.Build.Tasks.WriteLinesToFile"    AssemblyName="Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-</Project>
diff --git a/mcs/tools/xbuild/xbuild/4.5/Microsoft.Portable.CSharp.targets b/mcs/tools/xbuild/xbuild/4.5/Microsoft.Portable.CSharp.targets
new file mode 100644 (file)
index 0000000..d80a9f5
--- /dev/null
@@ -0,0 +1,3 @@
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+       <Import Project="$(MSBuildToolsPath)\Microsoft.Portable.CSharp.Targets" />    
+</Project>
index 1e0c4469852ca0f8c74c0f4c8d18454a2f394548..3c378252a4643ee0679223d29642996413307b4b 100644 (file)
                <CscToolExe Condition="'$(CscToolExe)' == '' and '$(TargetFrameworkVersion)' == 'v4.0' and '$(OS)' != 'Windows_NT'">dmcs</CscToolExe>
                <CscToolExe Condition="'$(CscToolExe)' == '' and '$(TargetFrameworkVersion)' == 'v4.0' and '$(OS)' == 'Windows_NT'">dmcs.bat</CscToolExe>
        </PropertyGroup>
+       
+       <PropertyGroup>
+               <TargetFrameworkMonikerAssemblyAttributeText Condition="'$(TargetFrameworkMoniker)' != '' and '$(TargetingClr2Framework)' != 'true'">
+// &lt;autogenerated /&gt;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(&quot;$(TargetFrameworkMoniker)&quot;, FrameworkDisplayName = &quot;$(TargetFrameworkMonikerDisplayName)&quot;)]
+               </TargetFrameworkMonikerAssemblyAttributeText>
+       </PropertyGroup>
 
 </Project>
index 3a6ca011ea2feb28bb6a7e9b524f987ca013dff2..72c20ef5c24637749fcc9d53bd9e7123391241ae 100644 (file)
@@ -1,35 +1,43 @@
-<!-- Note: This is a dummy CSharp.targets file that tries to map Portable Library Project targets to something available in Mono on Mac -->
-
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-       
+
        <PropertyGroup>
-               <TargetFrameworkIdentifier>.NETFramework</TargetFrameworkIdentifier>
-               <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
-               <TargetFrameworkProfile></TargetFrameworkProfile>
-       </PropertyGroup>
-       
-       <PropertyGroup Condition = "Exists ('/Developer/MonoTouch/License.rtf')">
-               <TargetFrameworkIdentifier>MonoTouch</TargetFrameworkIdentifier>
-               <TargetFrameworkVersion>v1.0</TargetFrameworkVersion>
-               <TargetFrameworkProfile></TargetFrameworkProfile>
-       </PropertyGroup>
-       
-       <PropertyGroup Condition = "Exists ('/Developer/MonoAndroid/License.rtf') And !Exists ('/Developer/MonoTouch/License.rtf')">
-               <TargetFrameworkIdentifier>MonoAndroid</TargetFrameworkIdentifier>
+               <AvailablePlatforms>Any CPU</AvailablePlatforms>
+
+               <TargetPlatformIdentifier>Portable</TargetPlatformIdentifier>
+               <TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
+               <TargetFrameworkMonikerDisplayName>.NET Portable Subset</TargetFrameworkMonikerDisplayName>
+
+               <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+               <NoStdLib>true</NoStdLib>
+
+               <ImplicitlyExpandTargetFramework Condition="'$(ImplicitlyExpandTargetFramework)' == '' ">true</ImplicitlyExpandTargetFramework> 
        </PropertyGroup>
-       
-       <Import Project="$(MSBuildExtensionsPath)\Novell\Novell.MonoDroid.CSharp.targets" Condition = "Exists ('/Developer/MonoAndroid/License.rtf') And !Exists ('/Developer/MonoTouch/License.rtf')"/>
-       <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.Targets" Condition = "Exists ('/Developer/MonoTouch/License.rtf') Or !Exists ('/Developer/MonoAndroid/License.rtf')"/>
+
+       <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.Targets" />
        
        <PropertyGroup>
-               <BuildDependsOn>
-                       PortableCompatWarning;
-                       $(BuildDependsOn);
-               </BuildDependsOn>
+               <ResolveReferencesDependsOn>
+                       $(ResolveReferencesDependsOn);
+                       ImplicitlyExpandTargetFramework;
+               </ResolveReferencesDependsOn>
+               
+               <ImplicitlyExpandTargetFrameworkDependsOn>
+                       $(ImplicitlyExpandTargetFrameworkDependsOn);
+                       GetReferenceAssemblyPaths
+               </ImplicitlyExpandTargetFrameworkDependsOn>
        </PropertyGroup>
        
-       <Target Name="PortableCompatWarning">
-               <Warning Text="This Portable Library Project has been built against the $(TargetFrameworkIdentifier) framework."/>
+       <Target Name="ImplicitlyExpandTargetFramework"
+               DependsOnTargets="$(ImplicitlyExpandTargetFrameworkDependsOn)">
+
+               <ItemGroup>
+                       <ReferenceAssemblyPaths Include="$(_TargetFrameworkDirectories)"/>
+                       <ReferencePath Include="%(ReferenceAssemblyPaths.Identity)\*.dll">
+                               <CopyLocal>false</CopyLocal>
+                               <ResolvedFrom>ImplicitlyExpandTargetFramework</ResolvedFrom>
+                               <IsSystemReference>True</IsSystemReference>
+                       </ReferencePath>
+               </ItemGroup>
        </Target>
-       
+
 </Project>
index ba61a124929bcd7aa2a037ffc7ff73699e1c9373..8c3c9981cc17b2461748c3415481add9403d94e2 100644 (file)
@@ -1,7 +1,7 @@
 test-local: copy-targets
 
 copy-targets:
-       for p in net_2_0 net_3_5 net_4_0 net_4_5; do \
+       for p in net_2_0 net_3_5 net_4_0; do \
                cp $(XBUILD_DIR)/xbuild/Microsoft.CSharp.targets $(topdir)/class/lib/$$p; \
                cp $(XBUILD_DIR)/xbuild/Microsoft.VisualBasic.targets $(topdir)/class/lib/$$p; \
                cp $(XBUILD_DIR)/xbuild/Microsoft.Silverlight*.targets $(topdir)/class/lib/$$p; \
@@ -9,12 +9,11 @@ copy-targets:
        cp $(XBUILD_DIR)/xbuild/2.0/Microsoft.Common.* $(topdir)/class/lib/net_2_0
        cp $(XBUILD_DIR)/xbuild/3.5/Microsoft.Common.* $(topdir)/class/lib/net_3_5
        cp $(XBUILD_DIR)/xbuild/4.0/Microsoft.Common.* $(topdir)/class/lib/net_4_0
-       cp $(XBUILD_DIR)/xbuild/4.5/Microsoft.Common.* $(topdir)/class/lib/net_4_5
 
 clean-local: clean-target-files
 
 clean-target-files:
-       for p in net_2_0 net_3_5 net_4_0 net_4_5; do \
+       for p in net_2_0 net_3_5 net_4_0; do \
                rm -f $(topdir)/class/lib/$$p/Microsoft.Common.targets; \
                rm -f $(topdir)/class/lib/$$p/Microsoft.CSharp.targets; \
                rm -f $(topdir)/class/lib/$$p/Microsoft.VisualBasic.targets; \
index ad615cb218d640b2f29f35071aec404fa35dc807..192a67fdc59490ecdd746caf9bfe2ca0807f9634 100644 (file)
@@ -139,7 +139,7 @@ rm -rf %buildroot
 
 %files -f mcs.lang
 %defattr(-, root, root)
-%doc AUTHORS COPYING.LIB ChangeLog NEWS README
+%doc AUTHORS COPYING.LIB ChangeLog NEWS README.md
 %config %_sysconfdir/mono/2.0/machine.config
 %config %_sysconfdir/mono/2.0/settings.map
 %config %_sysconfdir/mono/4.0/machine.config
@@ -174,6 +174,7 @@ rm -rf %buildroot
 %if %sgen == yes
 %_bindir/mono-sgen
 %endif
+%_bindir/mono-boehm
 %_bindir/mono-test-install
 %_bindir/mozroots
 %_bindir/peverify
@@ -297,6 +298,7 @@ rm -rf %buildroot
 %_prefix/lib/mono/4.5/System.Json.Microsoft.dll
 %_prefix/lib/mono/4.5/System.Net.dll
 %_prefix/lib/mono/4.5/System.Net.Http.dll
+%_prefix/lib/mono/4.5/System.Net.Http.WebRequest.dll
 %_prefix/lib/mono/4.5/System.Numerics.dll
 %_prefix/lib/mono/4.5/System.Security.dll
 %_prefix/lib/mono/4.5/System.Threading.Tasks.Dataflow.dll
@@ -305,8 +307,9 @@ rm -rf %buildroot
 %_prefix/lib/mono/4.5/System.dll
 %_prefix/lib/mono/4.5/cscompmgd.dll
 %_prefix/lib/mono/4.5/mscorlib.dll*
+%_prefix/lib/mono/4.5/System.Windows.dll
+%_prefix/lib/mono/4.5/System.Xml.Serialization.dll
 %_prefix/lib/mono/4.5/Facades/*.dll
-%_prefix/lib/mono/4.5/Facades/*.dll.mdb
 %_prefix/lib/mono/compat-2.0/ICSharpCode.SharpZipLib.dll
 %_prefix/lib/mono/gac/Commons.Xml.Relaxng
 %_prefix/lib/mono/gac/CustomMarshalers
@@ -337,6 +340,7 @@ rm -rf %buildroot
 %_prefix/lib/mono/gac/System.IO.Compression.FileSystem
 %_prefix/lib/mono/gac/System.Net
 %_prefix/lib/mono/gac/System.Net.Http
+%_prefix/lib/mono/gac/System.Net.Http.WebRequest
 %_prefix/lib/mono/gac/System.Numerics
 %_prefix/lib/mono/gac/System.Security
 %_prefix/lib/mono/gac/System.Threading.Tasks.Dataflow
@@ -344,6 +348,8 @@ rm -rf %buildroot
 %_prefix/lib/mono/gac/System.Xml.Linq
 %_prefix/lib/mono/gac/System.Json
 %_prefix/lib/mono/gac/System.Json.Microsoft
+%_prefix/lib/mono/gac/System.Windows
+%_prefix/lib/mono/gac/System.Xml.Serialization
 %_prefix/lib/mono/gac/cscompmgd
 %_prefix/lib/mono/mono-configuration-crypto
 
@@ -393,12 +399,12 @@ Development files for libmono.
 %_libdir/pkgconfig/mono-2.pc
 
 %if %sgen == yes
-%package -n libmonosgen-2_0-0
+%package -n libmonosgen-2_0-1
 License:        LGPL v2.1 only
 Summary:       A Library for embedding Mono in your Application (sgen version)
 Group:          Development/Libraries/C and C++
 
-%description -n libmonosgen-2_0-0
+%description -n libmonosgen-2_0-1
 The Mono Project is an open development initiative that is working to
 develop an open source, Unix version of the .NET development platform.
 Its objective is to enable Unix developers to build and deploy
@@ -407,13 +413,13 @@ technologies that have been submitted to the ECMA for standardization.
 
 A Library for embedding Mono in your Application (sgen version).
 
-%files -n libmonosgen-2_0-0
+%files -n libmonosgen-2_0-1
 %defattr(-, root, root)
-%_libdir/libmonosgen-2.0.so.0*
+%_libdir/libmonosgen-2.0.so.1*
 
-%post -n libmonosgen-2_0-0 -p /sbin/ldconfig
+%post -n libmonosgen-2_0-1 -p /sbin/ldconfig
 
-%postun -n libmonosgen-2_0-0 -p /sbin/ldconfig
+%postun -n libmonosgen-2_0-1 -p /sbin/ldconfig
 
 %package -n libmonosgen-2_0-devel
 License:        LGPL v2.1 only
@@ -439,6 +445,49 @@ Development files for libmonosgen.
 %_libdir/pkgconfig/monosgen-2.pc
 %endif
 
+%package -n libmonoboehm-2_0-1
+License:        LGPL v2.1 only
+Summary:       A Library for embedding Mono in your Application (boehm version)
+Group:          Development/Libraries/C and C++
+
+%description -n libmonoboehm-2_0-1
+The Mono Project is an open development initiative that is working to
+develop an open source, Unix version of the .NET development platform.
+Its objective is to enable Unix developers to build and deploy
+cross-platform .NET applications. The project will implement various
+technologies that have been submitted to the ECMA for standardization.
+
+A Library for embedding Mono in your Application (boehm version).
+
+%files -n libmonoboehm-2_0-1
+%defattr(-, root, root)
+%_libdir/libmonoboehm-2.0.so.1*
+
+%post -n libmonoboehm-2_0-1 -p /sbin/ldconfig
+
+%postun -n libmonoboehm-2_0-1 -p /sbin/ldconfig
+
+%package -n libmonoboehm-2_0-devel
+License:        LGPL v2.1 only
+Summary:       Development files for libmonosgen
+Group:          Development/Languages/Mono
+Requires:       mono-core == %version-%release
+Requires:       libmono-2_0-devel
+
+%description -n libmonoboehm-2_0-devel
+The Mono Project is an open development initiative that is working to
+develop an open source, Unix version of the .NET development platform.
+Its objective is to enable Unix developers to build and deploy
+cross-platform .NET applications. The project will implement various
+technologies that have been submitted to the ECMA for standardization.
+
+Development files for libmonoboehm.
+
+%files -n libmonoboehm-2_0-devel
+%defattr(-, root, root)
+%_libdir/libmonoboehm-2.0.a
+%_libdir/libmonoboehm-2.0.so
+
 %if %llvm == yes
 %package -n libmono-llvm0
 License:        LGPL v2.1 only
@@ -516,6 +565,7 @@ Provides:       mono(Mono.Data.Tds) = 1.0.5000.0
 Provides:       mono(Novell.Directory.Ldap) = 1.0.5000.0
 Provides:       mono(System.Data) = 1.0.5000.0
 Provides:       mono(System.DirectoryServices) = 1.0.5000.0
+Provides:       mono(System.DirectoryServices.Protocols) = 1.0.5000.0
 Provides:       mono(System.EnterpriseServices) = 1.0.5000.0
 
 %description -n mono-data
@@ -538,6 +588,7 @@ Database connectivity for Mono.
 %_prefix/lib/mono/2.0/System.Data.Linq.dll
 %_prefix/lib/mono/2.0/System.Data.dll
 %_prefix/lib/mono/2.0/System.DirectoryServices.dll
+%_prefix/lib/mono/2.0/System.DirectoryServices.Protocols.dll
 %_prefix/lib/mono/2.0/System.EnterpriseServices.dll
 %_prefix/lib/mono/2.0/System.Runtime.Serialization.dll
 %_prefix/lib/mono/2.0/System.Transactions.dll
@@ -547,6 +598,7 @@ Database connectivity for Mono.
 %_prefix/lib/mono/4.0/System.Data.Linq.dll
 %_prefix/lib/mono/4.0/System.Data.dll
 %_prefix/lib/mono/4.0/System.DirectoryServices.dll
+%_prefix/lib/mono/4.0/System.DirectoryServices.Protocols.dll
 %_prefix/lib/mono/4.0/System.EnterpriseServices.dll
 %_prefix/lib/mono/4.0/System.Runtime.Serialization.dll
 %_prefix/lib/mono/4.0/System.Transactions.dll
@@ -557,6 +609,7 @@ Database connectivity for Mono.
 %_prefix/lib/mono/4.5/System.Data.Linq.dll
 %_prefix/lib/mono/4.5/System.Data.dll
 %_prefix/lib/mono/4.5/System.DirectoryServices.dll
+%_prefix/lib/mono/4.5/System.DirectoryServices.Protocols.dll
 %_prefix/lib/mono/4.5/System.EnterpriseServices.dll
 %_prefix/lib/mono/4.5/System.Runtime.Serialization.dll
 %_prefix/lib/mono/4.5/System.Transactions.dll
@@ -571,6 +624,7 @@ Database connectivity for Mono.
 %_prefix/lib/mono/gac/System.Data.DataSetExtensions
 %_prefix/lib/mono/gac/System.Data.Linq
 %_prefix/lib/mono/gac/System.DirectoryServices
+%_prefix/lib/mono/gac/System.DirectoryServices.Protocols
 %_prefix/lib/mono/gac/System.EnterpriseServices
 %_prefix/lib/mono/gac/System.Runtime.Serialization
 %_prefix/lib/mono/gac/System.Transactions
@@ -772,6 +826,7 @@ Mono implementation of WCF, Windows Communication Foundation
 %_prefix/lib/mono/4.0/System.IdentityModel.Selectors.dll
 %_prefix/lib/mono/4.0/System.IdentityModel.dll
 %_prefix/lib/mono/4.0/System.Runtime.DurableInstancing.dll
+%_prefix/lib/mono/4.0/System.ServiceModel.Activation.dll
 %_prefix/lib/mono/4.0/System.ServiceModel.Discovery.dll
 %_prefix/lib/mono/4.0/System.ServiceModel.Routing.dll
 %_prefix/lib/mono/4.0/System.ServiceModel.Web.dll
@@ -780,6 +835,7 @@ Mono implementation of WCF, Windows Communication Foundation
 %_prefix/lib/mono/4.5/System.IdentityModel.Selectors.dll
 %_prefix/lib/mono/4.5/System.IdentityModel.dll
 %_prefix/lib/mono/4.5/System.Runtime.DurableInstancing.dll
+%_prefix/lib/mono/4.5/System.ServiceModel.Activation.dll
 %_prefix/lib/mono/4.5/System.ServiceModel.Discovery.dll
 %_prefix/lib/mono/4.5/System.ServiceModel.Routing.dll
 %_prefix/lib/mono/4.5/System.ServiceModel.Web.dll
@@ -790,6 +846,7 @@ Mono implementation of WCF, Windows Communication Foundation
 %_prefix/lib/mono/gac/System.IdentityModel.Selectors
 %_prefix/lib/mono/gac/System.Runtime.DurableInstancing
 %_prefix/lib/mono/gac/System.ServiceModel
+%_prefix/lib/mono/gac/System.ServiceModel.Activation
 %_prefix/lib/mono/gac/System.ServiceModel.Discovery
 %_prefix/lib/mono/gac/System.ServiceModel.Routing
 %_prefix/lib/mono/gac/System.ServiceModel.Web
@@ -851,8 +908,10 @@ Mono implementation of ASP.NET, Remoting and Web Services.
 %config %_sysconfdir/mono/2.0/Browsers
 %config %_sysconfdir/mono/2.0/DefaultWsdlHelpGenerator.aspx
 %config %_sysconfdir/mono/2.0/web.config
+%config %_sysconfdir/mono/4.0/Browsers
 %config %_sysconfdir/mono/4.0/DefaultWsdlHelpGenerator.aspx
 %config %_sysconfdir/mono/4.0/web.config
+%config %_sysconfdir/mono/4.5/Browsers
 %config %_sysconfdir/mono/4.5/DefaultWsdlHelpGenerator.aspx
 %config %_sysconfdir/mono/4.5/web.config
 %config %_sysconfdir/mono/browscap.ini
@@ -1298,6 +1357,7 @@ Mono development tools.
 %_prefix/lib/mono/4.0/Microsoft.Common.targets
 %_prefix/lib/mono/4.0/Microsoft.Common.tasks
 %_prefix/lib/mono/4.0/Microsoft.VisualBasic.targets
+%_prefix/lib/mono/4.0/Microsoft.Portable.CSharp.targets
 %_prefix/lib/mono/4.0/Mono.Debugger.Soft.dll
 %_prefix/lib/mono/4.0/PEAPI.dll
 %_prefix/lib/mono/4.5/Microsoft.Build.dll
@@ -1411,7 +1471,7 @@ Requires:       libmono-2_0-devel = %version-%release
 Requires:       libmono-llvm0 = %version-%release
 %endif
 %if %sgen == yes
-Requires:       libmonosgen-2_0-0 = %version-%release
+Requires:       libmonosgen-2_0-1 = %version-%release
 Requires:       libmonosgen-2_0-devel = %version-%release
 %endif
 Requires:       mono-data = %version-%release
index 0345c9ddd82d3832a9b3b0ca5dd5d7b5bca3e504..d74089a9c17441209c9a97188283a6596eb81dbb 100644 (file)
@@ -26,34 +26,7 @@ monotouch-do-clean:
          (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
     done;
 else
-if MOONLIGHT
-SUBDIRS = arch utils io-layer metadata mini
-
-moon-do-build:
-       @list='$(SUBDIRS)'; for subdir in $$list; do \
-         case "x$$subdir" in \
-               xmetadata ) target="moon-do-build" ;; \
-               xmini ) target="moon-do-build" ;; \
-               * ) target="all" ;; \
-         esac; \
-         echo "Making $$target in $$subdir"; \
-         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
-    done;
-
-moon-do-clean:
-       @list='$(SUBDIRS)'; for subdir in $$list; do \
-         case "x$$subdir" in \
-               xmetadata ) target="moon-do-clean" ;; \
-               xmini ) target="moon-do-clean" ;; \
-               * ) target="clean" ;; \
-         esac; \
-         echo "Making $$target in $$subdir"; \
-         (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$target); \
-    done;
-
-else
 SUBDIRS = arch utils io-layer cil metadata $(interpreter_dir) mini dis monograph tests benchmark profiler
 endif
 endif
-endif
 DIST_SUBDIRS = arch utils io-layer cil metadata interpreter mini dis monograph tests benchmark profiler
index 86784c0f8794b0d2b42a96bfc0c7526820573a80..593574c6b9cdd9216c8c3253c76334118d8dc795 100644 (file)
@@ -3,7 +3,7 @@ AM_CPPFLAGS = $(GLIB_CFLAGS) -I$(top_srcdir)
 
 noinst_LTLIBRARIES = libmonoarch-arm.la
 
-BUILT_SOURCES = arm_dpimacros.h arm_fpamacros.h arm_vfpmacros.h
+BUILT_SOURCES = arm_dpimacros.h arm_vfpmacros.h
 
 
 libmonoarch_arm_la_SOURCES = $(BUILT_SOURCES) \
@@ -16,10 +16,6 @@ arm_dpimacros.h: dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th
        (cd $(srcdir); bash ./dpiops.sh) > $@t
        mv $@t $@
 
-arm_fpamacros.h: fpaops.sh fpam_macros.th fpa_macros.th
-       (cd $(srcdir); bash ./fpaops.sh) > $@t
-       mv $@t $@
-
 arm_vfpmacros.h: vfpops.sh vfpm_macros.th vfp_macros.th
        (cd $(srcdir); bash ./vfpops.sh) > $@t
        mv $@t $@
@@ -27,6 +23,5 @@ arm_vfpmacros.h: vfpops.sh vfpm_macros.th vfp_macros.th
 CLEANFILES = $(BUILT_SOURCES)
 
 EXTRA_DIST = dpiops.sh mov_macros.th dpi_macros.th cmp_macros.th \
-       fpam_macros.th fpa_macros.th arm-fpa-codegen.h fpaops.sh \
        vfpm_macros.th vfp_macros.th arm-vfp-codegen.h vfpops.sh
 
index 31c457507550b27fa67ca79ba78ef9b0a6af8bdb..5a3dba02d4c70d30586a8787830b781c7d71eacf 100644 (file)
@@ -1031,12 +1031,17 @@ typedef struct {
        ARM_RORS_REG_COND(p, rd, rm, rs, ARMCOND_AL)
 #define ARM_RORS_REG_REG(p, rd, rm, rs) ARM_RORS_REG(p, rd, rm, rs)
 
+#ifdef __native_client_codegen__
+#define ARM_DBRK(p) ARM_EMIT(p, 0xE7FEDEF0)
+#else
 #define ARM_DBRK(p) ARM_EMIT(p, 0xE6000010)
+#endif
 #define ARM_IASM_DBRK() ARM_IASM_EMIT(0xE6000010)
 
 #define ARM_INC(p, reg) ARM_ADD_REG_IMM8(p, reg, reg, 1)
 #define ARM_DEC(p, reg) ARM_SUB_REG_IMM8(p, reg, reg, 1)
 
+#define ARM_MLS(p, rd, rn, rm, ra) ARM_EMIT((p), (ARMCOND_AL << 28) | (0x6 << 20) | ((rd) << 16) | ((ra) << 12) | ((rm) << 8) | (0x9 << 4) | ((rn) << 0))
 
 /* ARM V5 */
 
@@ -1095,6 +1100,13 @@ typedef union {
 #define ARM_MCR(p, coproc, opc1, rt, crn, crm, opc2) \
        ARM_MCR_COND ((p), (coproc), (opc1), (rt), (crn), (crm), (opc2), ARMCOND_AL)
 
+/* ARMv7VE */
+#define ARM_SDIV_COND(p, rd, rn, rm, cond) ARM_EMIT (p, (((cond) << 28) | (0xe << 23) | (0x1 << 20) | ((rd) << 16) | (0xf << 12) | ((rm) << 8) | (0x0 << 5) | (0x1 << 4) | ((rn) << 0)))
+#define ARM_SDIV(p, rd, rn, rm) ARM_SDIV_COND ((p), (rd), (rn), (rm), ARMCOND_AL)
+
+#define ARM_UDIV_COND(p, rd, rn, rm, cond) ARM_EMIT (p, (((cond) << 28) | (0xe << 23) | (0x3 << 20) | ((rd) << 16) | (0xf << 12) | ((rm) << 8) | (0x0 << 5) | (0x1 << 4) | ((rn) << 0)))
+#define ARM_UDIV(p, rd, rn, rm) ARM_UDIV_COND ((p), (rd), (rn), (rm), ARMCOND_AL)
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/mono/arch/arm/arm-fpa-codegen.h b/mono/arch/arm/arm-fpa-codegen.h
deleted file mode 100644 (file)
index 4389a5e..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright 2005 Novell Inc
- * Copyright 2011 Xamarin Inc
- */
-
-#ifndef __MONO_ARM_FPA_CODEGEN_H__
-#define __MONO_ARM_FPA_CODEGEN_H__
-
-#include "arm-codegen.h"
-
-enum {
-       /* FPA registers */
-       ARM_FPA_F0,
-       ARM_FPA_F1,
-       ARM_FPA_F2,
-       ARM_FPA_F3,
-       ARM_FPA_F4,
-       ARM_FPA_F5,
-       ARM_FPA_F6,
-       ARM_FPA_F7,
-
-       /* transfer length for LDF/STF (T0/T1), already shifted */
-       ARM_FPA_SINGLE = 0,
-       ARM_FPA_DOUBLE = 1 << 15,
-
-       ARM_FPA_ADF = 0 << 20,
-       ARM_FPA_MUF = 1 << 20,
-       ARM_FPA_SUF = 2 << 20,
-       ARM_FPA_RSF = 3 << 20,
-       ARM_FPA_DVF = 4 << 20,
-       ARM_FPA_RDF = 5 << 20,
-       ARM_FPA_POW = 6 << 20,
-       ARM_FPA_RPW = 7 << 20,
-       ARM_FPA_RMF = 8 << 20,
-       ARM_FPA_FML = 9 << 20,
-       ARM_FPA_FDV = 10 << 20,
-       ARM_FPA_FRD = 11 << 20,
-       ARM_FPA_POL = 12 << 20,
-
-       /* monadic */
-       ARM_FPA_MVF = (0 << 20) | (1 << 15),
-       ARM_FPA_MNF = (1 << 20) | (1 << 15),
-       ARM_FPA_ABS = (2 << 20) | (1 << 15),
-       ARM_FPA_RND = (3 << 20) | (1 << 15),
-       ARM_FPA_SQT = (4 << 20) | (1 << 15),
-       ARM_FPA_LOG = (5 << 20) | (1 << 15),
-       ARM_FPA_LGN = (6 << 20) | (1 << 15),
-       ARM_FPA_EXP = (7 << 20) | (1 << 15),
-       ARM_FPA_SIN = (8 << 20) | (1 << 15),
-       ARM_FPA_COS = (9 << 20) | (1 << 15),
-       ARM_FPA_TAN = (10 << 20) | (1 << 15),
-       ARM_FPA_ASN = (11 << 20) | (1 << 15),
-       ARM_FPA_ACS = (12 << 20) | (1 << 15),
-       ARM_FPA_ATN = (13 << 20) | (1 << 15),
-       ARM_FPA_URD = (14 << 20) | (1 << 15),
-       ARM_FPA_NRM = (15 << 20) | (1 << 15),
-
-       /* round modes */
-       ARM_FPA_ROUND_NEAREST = 0,
-       ARM_FPA_ROUND_PINF = 1,
-       ARM_FPA_ROUND_MINF = 2,
-       ARM_FPA_ROUND_ZERO = 3,
-
-       /* round precision */
-       ARM_FPA_ROUND_SINGLE = 0,
-       ARM_FPA_ROUND_DOUBLE = 1,
-
-       /* constants */
-       ARM_FPA_CONST_0 = 8,
-       ARM_FPA_CONST_1_0 = 9,
-       ARM_FPA_CONST_2_0 = 10,
-       ARM_FPA_CONST_3_0 = 11,
-       ARM_FPA_CONST_4_0 = 12,
-       ARM_FPA_CONST_5_0 = 13,
-       ARM_FPA_CONST_0_5 = 14,
-       ARM_FPA_CONST_10 = 15,
-       
-       /* compares */
-       ARM_FPA_CMF = 4,
-       ARM_FPA_CNF = 5,
-       ARM_FPA_CMFE = 6,
-       ARM_FPA_CNFE = 7,
-
-       /* CPRT ops */
-       ARM_FPA_FLT = 0,
-       ARM_FPA_FIX = 1,
-       ARM_FPA_WFS = 2,
-       ARM_FPA_RFS = 3,
-       ARM_FPA_WFC = 4,
-       ARM_FPA_RFC = 5
-};
-
-#define ARM_DEF_FPA_LDF_STF(cond,post,ls,fptype,wback,basereg,fdreg,offset)    \
-       ((offset) >= 0? (offset)>>2: -(offset)>>2)      |       \
-       ((1 << 8) | (fptype))                           |       \
-       ((fdreg) << 12)                                 |       \
-       ((basereg) << 16)                               |       \
-       ((ls) << 20)                                    |       \
-       ((wback) << 21)                                 |       \
-       (((offset) >= 0) << 23)                         |       \
-       ((wback) << 21)                                 |       \
-       ((post) << 24)                                  |       \
-       (6 << 25)                                       |       \
-       ARM_DEF_COND(cond)
-
-/* FP load and stores */
-#define ARM_FPA_LDFS_COND(p,freg,base,offset,cond)     \
-       ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_LDR,ARM_FPA_SINGLE,0,(base),(freg),(offset)))
-#define ARM_FPA_LDFS(p,freg,base,offset)       \
-       ARM_FPA_LDFS_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_FPA_LDFD_COND(p,freg,base,offset,cond)     \
-       ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_LDR,ARM_FPA_DOUBLE,0,(base),(freg),(offset)))
-#define ARM_FPA_LDFD(p,freg,base,offset)       \
-       ARM_FPA_LDFD_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_FPA_STFS_COND(p,freg,base,offset,cond)     \
-       ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_STR,ARM_FPA_SINGLE,0,(base),(freg),(offset)))
-#define ARM_FPA_STFS(p,freg,base,offset)       \
-       ARM_FPA_STFS_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_FPA_STFD_COND(p,freg,base,offset,cond)     \
-       ARM_EMIT((p), ARM_DEF_FPA_LDF_STF((cond),1,ARMOP_STR,ARM_FPA_DOUBLE,0,(base),(freg),(offset)))
-#define ARM_FPA_STFD(p,freg,base,offset)       \
-       ARM_FPA_STFD_COND(p,freg,base,offset,ARMCOND_AL)
-
-#define ARM_DEF_FPA_CPDO_MONADIC(cond,op,dreg,sreg,round,prec) \
-       (1 << 8) | (14 << 24)           |       \
-       (op)                            |       \
-       ((sreg) << 0)                   |       \
-       ((round) << 5)                  |       \
-       ((dreg) << 12)                  |       \
-       ((prec) << 7)                   |       \
-       ARM_DEF_COND(cond)
-
-#define ARM_DEF_FPA_CPDO_DYADIC(cond,op,dreg,sreg1,sreg2,round,prec)   \
-       (1 << 8) | (14 << 24)           |       \
-       (op)                            |       \
-       ((sreg1) << 16)                 |       \
-       ((sreg2) << 0)                  |       \
-       ((round) << 5)                  |       \
-       ((dreg) << 12)                  |       \
-       ((prec) << 7)                   |       \
-       ARM_DEF_COND(cond)
-
-#define ARM_DEF_FPA_CMP(cond,op,sreg1,sreg2)   \
-       (1 << 4) | (1 << 8) | (15 << 12)        |       \
-       (1 << 20) | (14 << 24)                  |       \
-       (op) << 21                              |       \
-       (sreg1) << 16                           |       \
-       (sreg2)                                 |       \
-       ARM_DEF_COND(cond)
-
-#define ARM_DEF_FPA_CPRT(cond,op,fn,fm,rd,ftype,round) \
-       (1 << 4) | (1 << 8) | (14 << 24)        |       \
-       (op) << 20                              |       \
-       (fm)                                    |       \
-       (fn) << 16                              |       \
-       (rd) << 12                              |       \
-       ((round) << 5)                          |       \
-       ((ftype) << 7)                          |       \
-       ARM_DEF_COND(cond)
-
-
-#include "arm_fpamacros.h"
-
-#define ARM_FPA_RNDDZ_COND(p,dreg,sreg,cond) \
-       ARM_EMIT((p), ARM_DEF_FPA_CPDO_MONADIC((cond),ARM_FPA_RND,(dreg),(sreg),ARM_FPA_ROUND_ZERO,ARM_FPA_ROUND_DOUBLE))
-#define ARM_FPA_RNDDZ(p,dreg,sreg)      ARM_FPA_RNDD_COND(p,dreg,sreg,ARMCOND_AL)
-
-/* compares */
-#define ARM_FPA_FCMP_COND(p,op,sreg1,sreg2,cond)       \
-       ARM_EMIT(p, ARM_DEF_FPA_CMP(cond,op,sreg1,sreg2))
-#define ARM_FPA_FCMP(p,op,sreg1,sreg2) ARM_FPA_FCMP_COND(p,op,sreg1,sreg2,ARMCOND_AL)
-
-/* coprocessor register transfer */
-#define ARM_FPA_FLTD(p,fn,rd)  \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_FLT,(fn),0,(rd),ARM_FPA_ROUND_DOUBLE,ARM_FPA_ROUND_NEAREST))
-#define ARM_FPA_FLTS(p,fn,rd)  \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_FLT,(fn),0,(rd),ARM_FPA_ROUND_SINGLE,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_FIXZ(p,rd,fm)  \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_FIX,0,(fm),(rd),0,ARM_FPA_ROUND_ZERO))
-
-#define ARM_FPA_WFS(p,rd)      \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_WFS,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_RFS(p,rd)      \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_RFS,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_WFC(p,rd)      \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_WFC,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#define ARM_FPA_RFC(p,rd)      \
-       ARM_EMIT(p, ARM_DEF_FPA_CPRT(ARMCOND_AL,ARM_FPA_RFC,0,0,(rd),0,ARM_FPA_ROUND_NEAREST))
-
-#endif /* __MONO_ARM_FPA_CODEGEN_H__ */
-
index c4c5e3e2252b21e5318e0d3ebf4c78bb7653228e..8b56b00dbbee462d56c19c9089a64aae9687403a 100644 (file)
@@ -8,7 +8,7 @@
 #include "arm-codegen.h"
 
 enum {
-       /* FPA registers */
+       /* VFP registers */
        ARM_VFP_F0,
        ARM_VFP_F1,
        ARM_VFP_F2,
diff --git a/mono/arch/arm/fpa_macros.th b/mono/arch/arm/fpa_macros.th
deleted file mode 100644 (file)
index 036b2a0..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/* -- <Op> -- */
-
-
-/* Fd := Rn <Op> Rm */
-#define ARM_FPA_<Op>D_COND(p, rd, rn, rm, cond) \
-       ARM_EMIT((p), ARM_DEF_FPA_CPDO_DYADIC(cond,ARM_FPA_<Op>,rd,rn,rm,ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_DOUBLE))
-#define ARM_FPA_<Op>D(p, rd, rn, rm) \
-       ARM_FPA_<Op>D_COND(p, rd, rn, rm, ARMCOND_AL)
-
-#define ARM_FPA_<Op>S_COND(p, rd, rn, rm, cond) \
-       ARM_EMIT((p), ARM_DEF_FPA_CPDO_DYADIC(cond,ARM_FPA_<Op>,rd,rn,rm,ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_SINGLE))
-#define ARM_FPA_<Op>S(p, rd, rn, rm) \
-       ARM_FPA_<Op>S_COND(p, rd, rn, rm, ARMCOND_AL)
-
-
diff --git a/mono/arch/arm/fpam_macros.th b/mono/arch/arm/fpam_macros.th
deleted file mode 100644 (file)
index 15183c3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/* -- <Op> -- */
-
-
-/* Fd := <Op> Rm */
-
-#define ARM_FPA_<Op>D_COND(p,dreg,sreg,cond) \
-        ARM_EMIT((p), ARM_DEF_FPA_CPDO_MONADIC((cond),ARM_FPA_<Op>,(dreg),(sreg),ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_DOUBLE))
-#define ARM_FPA_<Op>D(p,dreg,sreg)      ARM_FPA_<Op>D_COND(p,dreg,sreg,ARMCOND_AL)
-
-#define ARM_FPA_<Op>S_COND(p,dreg,sreg,cond) \
-        ARM_EMIT((p), ARM_DEF_FPA_CPDO_MONADIC((cond),ARM_FPA_<Op>,(dreg),(sreg),ARM_FPA_ROUND_NEAREST,ARM_FPA_ROUND_SINGLE))
-#define ARM_FPA_<Op>S(p,dreg,sreg)      ARM_FPA_<Op>S_COND(p,dreg,sreg,ARMCOND_AL)
-
-
diff --git a/mono/arch/arm/fpaops.sh b/mono/arch/arm/fpaops.sh
deleted file mode 100755 (executable)
index be19876..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/bin/sh
-
-DYADIC="ADF MUF SUF RSF DVF RDF POW RPW RMF FML FDV FRD POL"
-MONADIC="MVF MNF ABS RND SQT LOG EXP SIN COS TAN ASN ACS ATN URD NRM"
-
-# $1: opcode list
-# $2: template
-gen() {
-       for i in $1; do
-               sed "s/<Op>/$i/g" $2.th
-       done
-}
-
-echo -e "/* Macros for FPA ops, auto-generated from template */\n"
-
-echo -e "\n/* dyadic */\n"
-gen "$DYADIC" fpa_macros
-
-echo -e "\n/* monadic */\n"
-gen "$MONADIC" fpam_macros
-
-echo -e "\n\n"
-
-echo -e "\n/* end generated */\n"
index 5dd8204a9604e27df06b4795307832b54dfb1ed0..e9d998f1dd80489aae2c0df2fa62558ac8e277f2 100644 (file)
@@ -305,6 +305,7 @@ OPDEF(CEE_MONO_SAVE_LMF, "mono_save_lmf", Pop0, Push0, InlineNone, X, 2, 0xF0, 0
 OPDEF(CEE_MONO_RESTORE_LMF, "mono_restore_lmf", Pop0, Push0, InlineNone, X, 2, 0xF0, 0x0A, NEXT)
 OPDEF(CEE_MONO_CLASSCONST, "mono_classconst", Pop0, PushI, InlineI, X, 2, 0xF0, 0x0B, NEXT)
 OPDEF(CEE_MONO_NOT_TAKEN, "mono_not_taken", Pop0, Push0, InlineNone, X, 2, 0xF0, 0x0C, NEXT)
+/* The argument should be one of the TLS_KEY values defined in mono-tls.h */
 OPDEF(CEE_MONO_TLS, "mono_tls", Pop0, PushI, InlineI, X, 2, 0xF0, 0x0D, NEXT)
 OPDEF(CEE_MONO_ICALL_ADDR, "mono_icall_addr", Pop0, PushI, InlineI, X, 2, 0xF0, 0x0E, NEXT)
 OPDEF(CEE_MONO_DYN_CALL, "mono_dyn_call", Pop0, PushI, InlineI, X, 2, 0xF0, 0x0F, NEXT)
old mode 100644 (file)
new mode 100755 (executable)
index 93300c2..3d6cd25
@@ -17,6 +17,7 @@
 #include "mono/utils/mono-compiler.h"
 
 #include "declsec.h"
+#include "util.h"
 
 static char*
 declsec_20_get_classname (const char* p, const char **rptr)
@@ -113,12 +114,12 @@ declsec_20_write_value (GString *str, char type, const char *value)
                float val;
                int inf;
                readr4 (value, &val);
-               inf = isinf (val);
+               inf = dis_isinf (val);
                if (inf == -1) 
                        g_string_append_printf (str, "0xFF800000"); /* negative infinity */
                else if (inf == 1)
                        g_string_append_printf (str, "0x7F800000"); /* positive infinity */
-               else if (isnan (val))
+               else if (dis_isnan (val))
                        g_string_append_printf (str, "0xFFC00000"); /* NaN */
                else
                        g_string_append_printf (str, "%.8g", val);
@@ -128,7 +129,7 @@ declsec_20_write_value (GString *str, char type, const char *value)
                double val;
                int inf;
                readr8 (value, &val);
-               inf = isinf (val);
+               inf = dis_isinf (val);
                if (inf == -1) 
                        g_string_append_printf (str, "0xFFF00000000000000"); /* negative infinity */
                else if (inf == 1)
old mode 100644 (file)
new mode 100755 (executable)
index 52af86c..79f68fb
 #include "get.h"
 #include "dump.h"
 #include "dis-cil.h"
+#include "util.h"
 #include "mono/metadata/opcodes.h"
 #include "mono/metadata/class-internals.h"
 #include "mono/utils/mono-compiler.h"
 
-#ifndef HAVE_ISINF
-
-#ifdef HAVE_IEEEFP_H
-#include <ieeefp.h>
-int isinf (double);
-int
-isinf (double num)
-{
-       fpclass_t klass;
-
-       klass = fpclass (num);
-       if (klass == FP_NINF)
-               return -1;
-
-       if (klass == FP_PINF)
-               return 1;
-
-       return 0;
-}
-#else
-#error "Don't know how to implement isinf for this platform."
-#endif
-
-#endif
-
 #define CODE_INDENT g_assert (indent_level < 512); \
        indent[indent_level*2] = ' ';   \
        indent[indent_level*2+1] = ' '; \
@@ -191,12 +167,12 @@ disassemble_cil (MonoImage *m, MonoMethodHeader *mh, MonoGenericContainer *conta
                        double r;
                        int inf;
                        readr8 (ptr, &r);
-                       inf = isinf (r);
+                       inf = dis_isinf (r);
                        if (inf == -1) 
                                fprintf (output, "(00 00 00 00 00 00 f0 ff)"); /* negative infinity */
                        else if (inf == 1)
                                fprintf (output, "(00 00 00 00 00 00 f0 7f)"); /* positive infinity */
-                       else if (isnan (r))
+                       else if (dis_isnan (r))
                                fprintf (output, "(00 00 00 00 00 00 f8 ff)"); /* NaN */
                        else {
                                char *str = stringify_double (r);
@@ -300,12 +276,12 @@ disassemble_cil (MonoImage *m, MonoMethodHeader *mh, MonoGenericContainer *conta
                        
                        readr4 (ptr, &f);
 
-                       inf = isinf (f);
+                       inf = dis_isinf (f);
                        if (inf == -1) 
                                fprintf (output, "(00 00 80 ff)"); /* negative infinity */
                        else if (inf == 1)
                                fprintf (output, "(00 00 80 7f)"); /* positive infinity */
-                       else if (isnan (f))
+                       else if (dis_isnan (f))
                                fprintf (output, "(00 00 c0 ff)"); /* NaN */
                        else {
                                char *str = stringify_double ((double) f);
old mode 100644 (file)
new mode 100755 (executable)
index 72e528d..2b3a485
 #include "mono/metadata/class-internals.h"
 #include "mono/utils/mono-compiler.h"
 
-#ifndef HAVE_ISINF
-
-#ifdef HAVE_IEEEFP_H
-extern int isinf (double);
-#endif
-
-#endif
-
 #if defined(__native_client__) && defined(__GLIBC__)
 volatile int __nacl_thread_suspension_needed = 0;
 void __nacl_suspend_thread_if_needed() {}
@@ -870,12 +862,12 @@ handle_enum:
                        float val;
                        int inf;
                        readr4 (p, &val);
-                       inf = isinf (val);
+                       inf = dis_isinf (val);
                        if (inf == -1) 
                                g_string_append_printf (res, "(00 00 80 ff)"); /* negative infinity */
                        else if (inf == 1)
                                g_string_append_printf (res, "(00 00 80 7f)"); /* positive infinity */
-                       else if (isnan (val))
+                       else if (dis_isnan (val))
                                g_string_append_printf (res, "(00 00 c0 ff)"); /* NaN */
                        else
                                g_string_append_printf (res, "%g", val);
@@ -887,7 +879,7 @@ handle_enum:
                        int inf;
                        
                        readr8 (p, &val);
-                       inf = isinf (val);
+                       inf = dis_isinf (val);
                        if (inf == -1) 
                                g_string_append_printf (res, "(00 00 00 00 00 00 f0 ff)"); /* negative infinity */
                        else if (inf == 1)
old mode 100644 (file)
new mode 100755 (executable)
index 9c9ffaa..34f87b0
@@ -2310,7 +2310,7 @@ get_constant (MonoImage *m, MonoTypeEnum t, guint32 blob_index)
 #ifdef HAVE_ISFINITE
                normal = isfinite (r);
 #else
-               normal = isnormal (r);
+               normal = !dis_isinf (r) && !dis_isnan (r);
 #endif
                if (!normal) {
                        return g_strdup_printf ("float32(0x%08x)", read32 (ptr));
index d4719cac40c0592b98bbef8dcbf4c5dce0af19a1..42d735b0f751ed7780406a0b3448bb0ebac2048d 100644 (file)
@@ -30,6 +30,7 @@
 #include <mono/metadata/loader.h>
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/appdomain.h>
+#include <mono/utils/bsearch.h>
 
 static void     setup_filter          (MonoImage *image);
 static gboolean should_include_type   (int idx);
@@ -1109,7 +1110,7 @@ dis_interfaces (MonoImage *m, guint32 typedef_row, MonoGenericContainer *contain
        loc.col_idx = MONO_INTERFACEIMPL_CLASS;
        loc.idx = typedef_row;
 
-       if (!bsearch (&loc, table->base, table->rows, table->row_size, table_locator))
+       if (!mono_binary_search (&loc, table->base, table->rows, table->row_size, table_locator))
                return;
 
        start = loc.result;
@@ -1680,7 +1681,7 @@ table_includes (TableFilter *tf, int idx)
 {
        if (!tf->count)
                return FALSE;
-       return bsearch (&idx, tf->elems, tf->count, sizeof (int), int_cmp) != NULL;
+       return mono_binary_search (&idx, tf->elems, tf->count, sizeof (int), int_cmp) != NULL;
 }
 
 static gboolean 
old mode 100644 (file)
new mode 100755 (executable)
index 737f6fd..116824d
 #include <glib.h>
 #include <string.h>
 #include <stdio.h>
+#include <math.h>
 #include "util.h"
 
+#ifdef HAVE_IEEEFP_H
+#include <ieeefp.h>
+#endif
+
 /**
  * map:
  * @code: code to lookup in table
@@ -122,3 +127,36 @@ data_dump (const char *data, int len, const char* prefix) {
        return g_string_free (str, FALSE);
 }
 
+int
+dis_isinf (double num)
+{
+#ifdef HAVE_ISINF
+       return isinf (num);
+#elif defined(HAVE_IEEEFP_H)
+       fpclass_t klass;
+
+       klass = fpclass (num);
+       if (klass == FP_NINF)
+               return -1;
+
+       if (klass == FP_PINF)
+               return 1;
+
+       return 0;
+#elif defined(HAVE__FINITE)
+       return _finite (num) ? 0 : 1;
+#else
+#error "Don't know how to implement isinf for this platform."
+#endif
+}
+
+int
+dis_isnan (double num)
+{
+#ifdef __MINGW32_VERSION
+return _isnan (num);
+#else
+return isnan (num);
+#endif
+}
+
old mode 100644 (file)
new mode 100755 (executable)
index cbb9a4f..d8ff7bf
@@ -8,3 +8,5 @@ const char *flags     (guint32 code, dis_map_t *table);
 void        hex_dump  (const char *buffer, int base, int count);
 char*       data_dump (const char *data, int len, const char* prefix);
 
+extern int dis_isinf (double num);
+extern int dis_isnan (double num);
index 04ef0782b2c9f1e4c461ae06bfd04d4f6b964fdf..e45fff4bcdda3efa2f323e8b5f72240d22b18683 100644 (file)
@@ -180,6 +180,9 @@ errno_to_WSA (guint32 code, const gchar *function_name)
 #ifdef EHOSTDOWN
        case EHOSTDOWN: result = WSAEHOSTDOWN; break;
 #endif
+#ifdef ENETDOWN
+       case ENETDOWN: result = WSAENETDOWN; break;
+#endif 
        case ENODEV: result = WSAENETDOWN; break;
        default:
                sys_error = strerror (code);
index 61aa26d77364807a9ee427640a4d128f601a432c..2c046cff891d426a2bee5b1a5f2d1a6eb30496e7 100644 (file)
@@ -13,7 +13,6 @@
 #include <config.h>
 #include <glib.h>
 #include <errno.h>
-#include <signal.h>
 #include <string.h>
 #include <sys/types.h>
 
index 6b5cce5ce18046bda1c5b744c8d52daaeab696b0..e64a437be7f514ec96c001998e263e76322d574f 100644 (file)
@@ -13,6 +13,7 @@
 #include <pthread.h>
 #include <errno.h>
 #include <unistd.h>
+#include <signal.h>
 #include <string.h>
 #include <sys/types.h>
 #ifdef HAVE_SYS_SOCKET_H
@@ -1763,6 +1764,9 @@ gboolean _wapi_handle_get_or_set_share (dev_t device, ino_t inode,
  */
 static void _wapi_handle_check_share_by_pid (struct _WapiFileShare *share_info)
 {
+#if defined(__native_client__)
+       g_assert_not_reached ();
+#else
        if (kill (share_info->opened_by_pid, 0) == -1 &&
            (errno == ESRCH ||
             errno == EPERM)) {
@@ -1774,6 +1778,7 @@ static void _wapi_handle_check_share_by_pid (struct _WapiFileShare *share_info)
 
                _wapi_free_share_info (share_info);
        }
+#endif
 }
 
 #ifdef __linux__
old mode 100644 (file)
new mode 100755 (executable)
index 2c62d71..394799b
 #include <winsock2.h>
 #include <windows.h>
 #include <winbase.h>
+/*
+ * The mingw version says:
+ * /usr/i686-pc-mingw32/sys-root/mingw/include/ws2tcpip.h:38:2: error: #error "ws2tcpip.h is not compatible with winsock.h. Include winsock2.h instead."
+ */
+#ifdef _MSC_VER
 #include <ws2tcpip.h>
+#endif
 #include <psapi.h>
 #include <shlobj.h>
 #include <mswsock.h>
@@ -36,4 +42,8 @@
 #include "mono/io-layer/uglify.h"
 #endif /* HOST_WIN32 */
 
+#ifdef __native_client__
+#include "mono/metadata/nacl-stub.h"
+#endif
+
 #endif /* _MONO_IOLAYER_IOLAYER_H_ */
index b8e08b3d36f475d1a7e7be888629155979a8632f..f2fd8a422b90115200cee95bef33423e9231bffa 100644 (file)
 
 #include <glib.h>
 
+#if defined(__native_client__)
+#include <mono/metadata/nacl-stub.h>
+#endif
+
 #define MAKEWORD(low, high) ((guint16)(((guint8)(low)) | \
                                       ((guint16)((guint8)(high))) << 8))
 #define MAKELONG(low, high) ((guint32)(((guint16)(low)) | \
index 26a5d4292bddf2fe1dc7e87ba004f3f454cb67e8..1b052dbaca7762a9091872067680eabe8634faa0 100644 (file)
 #include <mono/io-layer/wapi-private.h>
 #include <mono/io-layer/misc-private.h>
 #include <mono/io-layer/messages.h>
+#include <mono/utils/bsearch.h>
 
 #undef DEBUG
 
 typedef struct {
        int id;
-       const char const *txt;
+       const char *txt;
 } ErrorDesc;
 
 static ErrorDesc common_messages [] = {
@@ -1830,7 +1831,7 @@ find_msg (guint32 id, ErrorDesc *base, int n)
        ErrorDesc d, *result;
        d.id = id;
        
-       result = bsearch (&d, base, n, sizeof (ErrorDesc), msg_compare);
+       result = mono_binary_search (&d, base, n, sizeof (ErrorDesc), msg_compare);
        if (result == NULL)
                return NULL;
        return result->txt;
index d29ea3c185cc4fd9bf9c24ec552492da97747d86..4d548329ddb4ebe5b988754435b19e69e2a401ff 100644 (file)
@@ -76,6 +76,7 @@
 #include <mono/utils/mono-time.h>
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/mono-mutex.h>
+#include <mono/utils/mono-signal-handler.h>
 
 /* The process' environment strings */
 #if defined(__APPLE__) && !defined (__arm__)
@@ -1714,10 +1715,11 @@ static GSList *load_modules (void)
 
                slide = _dyld_get_image_vmaddr_slide (i);
                name = _dyld_get_image_name (i);
-               hdr = _dyld_get_image_header (i);
 #if SIZEOF_VOID_P == 8
+               hdr = (const struct mach_header_64*)_dyld_get_image_header (i);
                sec = getsectbynamefromheader_64 (hdr, SEG_DATA, SECT_DATA);
 #else
+               hdr = _dyld_get_image_header (i);
                sec = getsectbynamefromheader (hdr, SEG_DATA, SECT_DATA);
 #endif
 
@@ -2118,9 +2120,11 @@ static gchar *get_process_name_from_proc (pid_t pid)
        size_t size;
        struct kinfo_proc2 *pi;
 #elif defined(PLATFORM_MACOSX)
+#if !(!defined (__mono_ppc__) && defined (TARGET_OSX))
        size_t size;
        struct kinfo_proc *pi;
        int mib[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid };
+#endif
 #else
        FILE *fp;
        gchar *filename = NULL;
@@ -2828,8 +2832,7 @@ process_close (gpointer handle, gpointer data)
 }
 
 #if HAVE_SIGACTION
-static void
-mono_sigchld_signal_handler (int _dummy, siginfo_t *info, void *context)
+MONO_SIGNAL_HANDLER_FUNC (static, mono_sigchld_signal_handler, (int _dummy, siginfo_t *info, void *context))
 {
        int status;
        int pid;
@@ -2870,6 +2873,7 @@ mono_sigchld_signal_handler (int _dummy, siginfo_t *info, void *context)
        fprintf (stdout, "SIG CHILD handler: done looping.");
 #endif
 }
+
 #endif
 
 static void process_add_sigchld_handler (void)
index 26e6bd81d19b339069fb7da8c97fca69d21f593e..1800f9b74a72d97c853ea0579d5c50e233cd61d1 100644 (file)
@@ -254,7 +254,8 @@ static gchar *
 _wapi_shm_file (_wapi_shm_t type)
 {
        static gchar file[_POSIX_PATH_MAX];
-       gchar *name = NULL, *filename, *wapi_dir;
+       gchar *name = NULL, *filename;
+       const gchar *wapi_dir;
 
        name = _wapi_shm_base_name (type);
 
@@ -262,7 +263,7 @@ _wapi_shm_file (_wapi_shm_t type)
         * nfs mounts breaks, then there should be an option to set
         * the directory.
         */
-       wapi_dir = getenv ("MONO_SHARED_DIR");
+       wapi_dir = g_getenv ("MONO_SHARED_DIR");
        if (wapi_dir == NULL) {
                filename = g_build_filename (g_get_home_dir (), ".wapi", name,
                                             NULL);
index db8eff27302779a276aa6d285de1d9929d29745a..a659d3763e80bdf39e8a7758d740738c36e937c1 100644 (file)
@@ -1294,13 +1294,13 @@ WSAIoctl (guint32 fd, gint32 command,
                        keepalivetime /= 1000;
                        if (keepalivetime == 0 || rem >= 500)
                                keepalivetime++;
-                       ret = setsockopt (fd, SOL_TCP, TCP_KEEPIDLE, &keepalivetime, sizeof (uint32_t));
+                       ret = setsockopt (fd, IPPROTO_TCP, TCP_KEEPIDLE, &keepalivetime, sizeof (uint32_t));
                        if (ret == 0) {
                                rem = keepaliveinterval % 1000;
                                keepaliveinterval /= 1000;
                                if (keepaliveinterval == 0 || rem >= 500)
                                        keepaliveinterval++;
-                               ret = setsockopt (fd, SOL_TCP, TCP_KEEPINTVL, &keepaliveinterval, sizeof (uint32_t));
+                               ret = setsockopt (fd, IPPROTO_TCP, TCP_KEEPINTVL, &keepaliveinterval, sizeof (uint32_t));
                        }
                        if (ret != 0) {
                                gint errnum = errno;
index 4ec4e00ae6e03ca40ece115df0b85e9256a48d87..e623d71ce3142f7d6b6136fab960c61802f45631 100644 (file)
@@ -198,8 +198,14 @@ void _wapi_thread_signal_self (guint32 exitstatus)
  * by ExitThread()
 */
 static void thread_exit (guint32 exitstatus, gpointer handle) G_GNUC_NORETURN;
+#if defined(__native_client__)
+void nacl_shutdown_gc_thread(void);
+#endif
 static void thread_exit (guint32 exitstatus, gpointer handle)
 {
+#if defined(__native_client__)
+       nacl_shutdown_gc_thread();
+#endif
        _wapi_thread_set_termination_details (handle, exitstatus);
        
        /* Call pthread_exit() to call destructors and really exit the
@@ -980,7 +986,7 @@ void wapi_interrupt_thread (gpointer thread_handle)
                /* Try again */
        }
 
-       WAIT_DEBUG (printf ("%p: state -> INTERRUPTED.\n", thread_handle->id););
+       WAIT_DEBUG (printf ("%p: state -> INTERRUPTED.\n", thread->id););
 
        if (!wait_handle)
                /* Not waiting */
@@ -1034,7 +1040,7 @@ gpointer wapi_prepare_interrupt_thread (gpointer thread_handle)
                /* Try again */
        }
 
-       WAIT_DEBUG (printf ("%p: state -> INTERRUPTED.\n", thread_handle->id););
+       WAIT_DEBUG (printf ("%p: state -> INTERRUPTED.\n", thread->id););
 
        return wait_handle;
 }
index fdf0a99143a8cd4191f1b8ccea8b084ae4dc1c2d..c4d7c9c562ae1edc59676aa1d4f0e89dd9a34c97 100644 (file)
@@ -60,18 +60,10 @@ endif
 boehm_libraries = $(shared_boehm_libraries) libmonoruntime-static.la
 endif
 
-if MOONLIGHT
-moonlight_libraries = libmonoruntimemoon.la
-moon-do-build: libmonoruntime-static.la libmonoruntimemoon.la
-moon-do-clean:
-       -test -z "libmonoruntime-static.la" || rm -f libmonoruntime-static.la
-       -test -z "libmonoruntimemoon.la" || rm -f libmonoruntimemoon.la
-endif
-
 if DISABLE_EXECUTABLES
 noinst_LTLIBRARIES = $(shared_sgen_libraries) $(shared_boehm_libraries)
 else
-noinst_LTLIBRARIES = $(boehm_libraries) $(sgen_libraries) $(moonlight_libraries)
+noinst_LTLIBRARIES = $(boehm_libraries) $(sgen_libraries)
 endif
 
 AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/mono $(LIBGC_CPPFLAGS) $(GLIB_CFLAGS) -DMONO_BINDIR=\"$(bindir)/\" -DMONO_ASSEMBLIES=\"$(assembliesdir)\" -DMONO_CFG_DIR=\"$(confdir)\"
@@ -266,15 +258,6 @@ sgen_sources = \
 libmonoruntime_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(boehm_sources)
 libmonoruntime_la_CFLAGS = $(BOEHM_DEFINES)
 
-if MOONLIGHT
-libmonoruntimemoon_la_SOURCES = $(libmonoruntime_la_SOURCES)
-if MOONLIGHT_BOEHM
-libmonoruntimemoon_la_CFLAGS = $(MOONLIGHT_DEFINES) $(BOEHM_DEFINES)
-else
-libmonoruntimemoon_la_CFLAGS = $(MOONLIGHT_DEFINES) $(SGEN_DEFINES)
-endif
-endif
-
 libmonoruntimesgen_la_SOURCES = $(common_sources) $(gc_dependent_sources) $(sgen_sources)
 libmonoruntimesgen_la_CFLAGS = $(SGEN_DEFINES)
 
@@ -343,3 +326,8 @@ endif
 EXTRA_DIST = make-bundle.pl sample-bundle $(win32_sources) $(unix_sources) $(null_sources) runtime.h \
                tpool-poll.c tpool-epoll.c tpool-kqueue.c Makefile.am.in
 
+if HAS_EXTENSION_MODULE
+else
+Makefile.am: Makefile.am.in
+       cp $< $@
+endif
index 31725457da0c1ad43f6c0ad254a263af5acef6d4..20ccd0c489885fa478f8f2204b174f68f11e47db 100644 (file)
@@ -61,6 +61,7 @@
 #include <mono/utils/mono-io-portability.h>
 #include <mono/utils/mono-error-internals.h>
 #include <mono/utils/atomic.h>
+#include <mono/utils/mono-memory-model.h>
 #ifdef HOST_WIN32
 #include <direct.h>
 #endif
@@ -93,8 +94,6 @@ CRITICAL_SECTION mono_strtod_mutex;
 static gunichar2 process_guid [36];
 static gboolean process_guid_set = FALSE;
 
-static gboolean shutting_down = FALSE;
-
 static gboolean no_exec = FALSE;
 
 static MonoAssembly *
@@ -348,8 +347,6 @@ mono_context_init (MonoDomain *domain)
 void
 mono_runtime_cleanup (MonoDomain *domain)
 {
-       shutting_down = TRUE;
-
        mono_attach_cleanup ();
 
        /* This ends up calling any pending pending (for at most 2 seconds) */
@@ -382,33 +379,6 @@ mono_runtime_quit ()
                quit_function (mono_get_root_domain (), NULL);
 }
 
-/** 
- * mono_runtime_set_shutting_down:
- *
- * Invoked by System.Environment.Exit to flag that the runtime
- * is shutting down.
- */
-void
-mono_runtime_set_shutting_down (void)
-{
-       shutting_down = TRUE;
-}
-
-/**
- * mono_runtime_is_shutting_down:
- *
- * Returns whether the runtime has been flagged for shutdown.
- *
- * This is consumed by the P:System.Environment.HasShutdownStarted
- * property.
- *
- */
-gboolean
-mono_runtime_is_shutting_down (void)
-{
-       return shutting_down;
-}
-
 /**
  * mono_domain_create_appdomain:
  * @friendly_name: The friendly name of the appdomain to create
@@ -1489,19 +1459,29 @@ static gboolean
 private_file_needs_copying (const char *src, struct stat *sbuf_src, char *dest)
 {
        struct stat sbuf_dest;
+       gchar *stat_src;
        gchar *real_src = mono_portability_find_file (src, TRUE);
 
        if (!real_src)
-               real_src = (gchar*)src;
-       
-       if (stat (real_src, sbuf_src) == -1) {
+               stat_src = (gchar*)src;
+       else
+               stat_src = real_src;
+
+       if (stat (stat_src, sbuf_src) == -1) {
                time_t tnow = time (NULL);
+
+               if (real_src)
+                       g_free (real_src);
+
                memset (sbuf_src, 0, sizeof (*sbuf_src));
                sbuf_src->st_mtime = tnow;
                sbuf_src->st_atime = tnow;
                return TRUE;
        }
 
+       if (real_src)
+               g_free (real_src);
+
        if (stat (dest, &sbuf_dest) == -1)
                return TRUE;
        
@@ -2200,10 +2180,26 @@ zero_static_data (MonoVTable *vtable)
 }
 
 typedef struct unload_data {
+       gboolean done;
        MonoDomain *domain;
        char *failure_reason;
+       gint32 refcount;
 } unload_data;
 
+static void
+unload_data_unref (unload_data *data)
+{
+       gint32 count;
+       do {
+               mono_atomic_load_acquire (count, gint32, &data->refcount);
+               g_assert (count >= 1 && count <= 2);
+               if (count == 1) {
+                       g_free (data);
+                       return;
+               }
+       } while (InterlockedCompareExchange (&data->refcount, count, count - 1) != count);
+}
+
 static void
 deregister_reflection_info_roots_nspace_table (gpointer key, gpointer value, gpointer image)
 {
@@ -2277,7 +2273,8 @@ unload_thread_main (void *arg)
        int i;
 
        /* Have to attach to the runtime so shutdown can wait for this thread */
-       thread = mono_thread_attach (mono_get_root_domain ());
+       /* Force it to be attached to avoid racing during shutdown. */
+       thread = mono_thread_attach_full (mono_get_root_domain (), TRUE);
 
        /* 
         * FIXME: Abort our parent thread last, so we can return a failure 
@@ -2285,18 +2282,18 @@ unload_thread_main (void *arg)
         */
        if (!mono_threads_abort_appdomain_threads (domain, -1)) {
                data->failure_reason = g_strdup_printf ("Aborting of threads in domain %s timed out.", domain->friendly_name);
-               return 1;
+               goto failure;
        }
 
        if (!mono_thread_pool_remove_domain_jobs (domain, -1)) {
                data->failure_reason = g_strdup_printf ("Cleanup of threadpool jobs of domain %s timed out.", domain->friendly_name);
-               return 1;
+               goto failure;
        }
 
        /* Finalize all finalizable objects in the doomed appdomain */
        if (!mono_domain_finalize (domain, -1)) {
                data->failure_reason = g_strdup_printf ("Finalization of domain %s timed out.", domain->friendly_name);
-               return 1;
+               goto failure;
        }
 
        /* Clear references to our vtables in class->runtime_info.
@@ -2342,9 +2339,16 @@ unload_thread_main (void *arg)
 
        mono_gc_collect (mono_gc_max_generation ());
 
+       mono_atomic_store_release (&data->done, TRUE);
+       unload_data_unref (data);
        mono_thread_detach (thread);
-
        return 0;
+
+failure:
+       mono_atomic_store_release (&data->done, TRUE);
+       unload_data_unref (data);
+       mono_thread_detach (thread);
+       return 1;
 }
 
 /*
@@ -2387,10 +2391,9 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
 {
        HANDLE thread_handle;
        gsize tid;
-       guint32 res;
        MonoAppDomainState prev_state;
        MonoMethod *method;
-       unload_data thread_data;
+       unload_data *thread_data;
        MonoDomain *caller_domain = mono_domain_get ();
 
        /* printf ("UNLOAD STARTING FOR %s (%p) IN THREAD 0x%x.\n", domain->friendly_name, domain, GetCurrentThreadId ()); */
@@ -2430,8 +2433,11 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
        }
        mono_domain_set (caller_domain, FALSE);
 
-       thread_data.domain = domain;
-       thread_data.failure_reason = NULL;
+       thread_data = g_new0 (unload_data, 1);
+       thread_data->domain = domain;
+       thread_data->failure_reason = NULL;
+       thread_data->done = FALSE;
+       thread_data->refcount = 2; /*Must be 2: unload thread + initiator */
 
        /*The managed callback finished successfully, now we start tearing down the appdomain*/
        domain->state = MONO_APPDOMAIN_UNLOADING;
@@ -2447,7 +2453,7 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
 #if 0
        thread_handle = mono_create_thread (NULL, 0, unload_thread_main, &thread_data, 0, &tid);
 #else
-       thread_handle = mono_create_thread (NULL, 0, (LPTHREAD_START_ROUTINE)unload_thread_main, &thread_data, CREATE_SUSPENDED, &tid);
+       thread_handle = mono_create_thread (NULL, 0, (LPTHREAD_START_ROUTINE)unload_thread_main, thread_data, CREATE_SUSPENDED, &tid);
        if (thread_handle == NULL) {
                return;
        }
@@ -2455,25 +2461,28 @@ mono_domain_try_unload (MonoDomain *domain, MonoObject **exc)
 #endif
 
        /* Wait for the thread */       
-       while ((res = WaitForSingleObjectEx (thread_handle, INFINITE, TRUE) == WAIT_IO_COMPLETION)) {
+       while (!thread_data->done && WaitForSingleObjectEx (thread_handle, INFINITE, TRUE) == WAIT_IO_COMPLETION) {
                if (mono_thread_internal_has_appdomain_ref (mono_thread_internal_current (), domain) && (mono_thread_interruption_requested ())) {
                        /* The unload thread tries to abort us */
                        /* The icall wrapper will execute the abort */
                        CloseHandle (thread_handle);
+                       unload_data_unref (thread_data);
                        return;
                }
        }
        CloseHandle (thread_handle);
 
-       if (thread_data.failure_reason) {
+       if (thread_data->failure_reason) {
                /* Roll back the state change */
                domain->state = MONO_APPDOMAIN_CREATED;
 
-               g_warning ("%s", thread_data.failure_reason);
+               g_warning ("%s", thread_data->failure_reason);
 
-               *exc = (MonoObject *) mono_get_exception_cannot_unload_appdomain (thread_data.failure_reason);
+               *exc = (MonoObject *) mono_get_exception_cannot_unload_appdomain (thread_data->failure_reason);
 
-               g_free (thread_data.failure_reason);
-               thread_data.failure_reason = NULL;
+               g_free (thread_data->failure_reason);
+               thread_data->failure_reason = NULL;
        }
+
+       unload_data_unref (thread_data);
 }
index 282d3e52d3bad084a161140ab2a78e9cb8b4bfdc..3b3884330f903df3a395e3275f7548dbdd9b98af 100644 (file)
@@ -26,190 +26,190 @@ typedef struct _MonoJitInfo MonoJitInfo;
 
 typedef void (*MonoDomainFunc) (MonoDomain *domain, void* user_data);
 
-MonoDomain*
+MONO_API MonoDomain*
 mono_init                  (const char *filename);
 
-MonoDomain *
+MONO_API MonoDomain *
 mono_init_from_assembly    (const char *domain_name, const char *filename);
 
-MonoDomain *
+MONO_API MonoDomain *
 mono_init_version          (const char *domain_name, const char *version);
 
-MonoDomain*
+MONO_API MonoDomain*
 mono_get_root_domain       (void);
 
-void
+MONO_API void
 mono_runtime_init          (MonoDomain *domain, MonoThreadStartCB start_cb,
                            MonoThreadAttachCB attach_cb);
 
-void
+MONO_API void
 mono_runtime_cleanup       (MonoDomain *domain);
 
-void
+MONO_API void
 mono_install_runtime_cleanup (MonoDomainFunc func);
 
-void
+MONO_API void
 mono_runtime_quit (void);
 
-void
+MONO_API void
 mono_runtime_set_shutting_down (void);
 
-mono_bool
+MONO_API mono_bool
 mono_runtime_is_shutting_down (void);
 
-const char*
+MONO_API const char*
 mono_check_corlib_version (void);
 
-MonoDomain *
+MONO_API MonoDomain *
 mono_domain_create         (void);
 
-MonoDomain *
+MONO_API MonoDomain *
 mono_domain_create_appdomain (char *friendly_name, char *configuration_file);
 
-MonoDomain *
+MONO_API MonoDomain *
 mono_domain_get            (void);
 
-MonoDomain *
+MONO_API MonoDomain *
 mono_domain_get_by_id      (int32_t domainid);
 
-int32_t
+MONO_API int32_t
 mono_domain_get_id         (MonoDomain *domain);
 
-mono_bool
+MONO_API mono_bool
 mono_domain_set            (MonoDomain *domain, mono_bool force);
 
-void
+MONO_API void
 mono_domain_set_internal   (MonoDomain *domain);
 
-void
+MONO_API void
 mono_domain_unload (MonoDomain *domain);
 
-void
+MONO_API void
 mono_domain_try_unload (MonoDomain *domain, MonoObject **exc);
 
-mono_bool
+MONO_API mono_bool
 mono_domain_is_unloading   (MonoDomain *domain);
 
-MonoDomain *
+MONO_API MonoDomain *
 mono_domain_from_appdomain (MonoAppDomain *appdomain);
 
-void
+MONO_API void
 mono_domain_foreach        (MonoDomainFunc func, void* user_data);
 
-MonoAssembly *
+MONO_API MonoAssembly *
 mono_domain_assembly_open  (MonoDomain *domain, const char *name);
 
-mono_bool
+MONO_API mono_bool
 mono_domain_finalize       (MonoDomain *domain, uint32_t timeout);
 
-void
+MONO_API void
 mono_domain_free           (MonoDomain *domain, mono_bool force);
 
-mono_bool
+MONO_API mono_bool
 mono_domain_has_type_resolve (MonoDomain *domain);
 
-MonoReflectionAssembly *
+MONO_API MonoReflectionAssembly *
 mono_domain_try_type_resolve (MonoDomain *domain, char *name, MonoObject *tb);
 
-mono_bool
+MONO_API mono_bool
 mono_domain_owns_vtable_slot (MonoDomain *domain, void* vtable_slot);
 
-void
+MONO_API void
 mono_context_init                                 (MonoDomain *domain);
 
-void 
+MONO_API void 
 mono_context_set                                  (MonoAppContext *new_context);
 
-MonoAppContext * 
+MONO_API MonoAppContext * 
 mono_context_get                                  (void);
 
-MonoJitInfo *
+MONO_API MonoJitInfo *
 mono_jit_info_table_find   (MonoDomain *domain, char *addr);
 
 /* MonoJitInfo accessors */
 
-void*
+MONO_API void*
 mono_jit_info_get_code_start (MonoJitInfo* ji);
 
-int
+MONO_API int
 mono_jit_info_get_code_size (MonoJitInfo* ji);
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_jit_info_get_method (MonoJitInfo* ji);
 
 
-MonoImage*
+MONO_API MonoImage*
 mono_get_corlib            (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_object_class      (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_byte_class        (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_void_class        (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_boolean_class     (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_sbyte_class       (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_int16_class       (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_uint16_class      (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_int32_class       (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_uint32_class      (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_intptr_class         (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_uintptr_class        (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_int64_class       (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_uint64_class      (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_single_class      (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_double_class      (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_char_class        (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_string_class      (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_enum_class        (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_array_class       (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_thread_class       (void);
 
-MonoClass*
+MONO_API MonoClass*
 mono_get_exception_class    (void);
 
-void
+MONO_API void
 mono_security_enable_core_clr (void);
 
 typedef mono_bool (*MonoCoreClrPlatformCB) (const char *image_name);
 
-void
+MONO_API void
 mono_security_set_core_clr_platform_callback (MonoCoreClrPlatformCB callback);
 
 MONO_END_DECLS
index 2d0557264401727357c41bfdc125a9068ad3d1e2..8ad1eda644d9188d137a3196d815c7d34f85219e 100644 (file)
@@ -33,6 +33,7 @@
 #include <mono/utils/mono-path.h>
 #include <mono/metadata/reflection.h>
 #include <mono/metadata/coree.h>
+#include <mono/metadata/cil-coff.h>
 #include <mono/utils/mono-io-portability.h>
 #include <mono/utils/atomic.h>
 
@@ -55,6 +56,7 @@ typedef struct  {
 /* the default search path is empty, the first slot is replaced with the computed value */
 static const char*
 default_path [] = {
+       NULL,
        NULL,
        NULL
 };
@@ -106,6 +108,8 @@ static const AssemblyVersionMap framework_assemblies [] = {
        {"System.Data", 0},
        {"System.Data.Linq", 2},
        {"System.Data.OracleClient", 0},
+       {"System.Data.Services", 2},
+       {"System.Data.Services.Client", 2},
        {"System.Data.SqlXml", 0},
        {"System.Design", 0},
        {"System.DirectoryServices", 0},
@@ -114,19 +118,25 @@ static const AssemblyVersionMap framework_assemblies [] = {
        {"System.EnterpriseServices", 0},
        {"System.Management", 0},
        {"System.Messaging", 0},
+       {"System.Net", 2},
        {"System.Runtime.Remoting", 0},
        {"System.Runtime.Serialization", 3},
        {"System.Runtime.Serialization.Formatters.Soap", 0},
        {"System.Security", 0},
+       {"System.ServiceModel.Web", 2},
        {"System.ServiceProcess", 0},
        {"System.Transactions", 0},
        {"System.Web", 0},
        {"System.Web.Abstractions", 2},
+       {"System.Web.DynamicData", 2},
+       {"System.Web.Extensions", 2},
        {"System.Web.Mobile", 0},
        {"System.Web.Routing", 2},
        {"System.Web.Services", 0},
        {"System.Windows.Forms", 0},
        {"System.Xml", 0},
+       {"System.Xml.Linq", 2},
+       {"WindowsBase", 3},
        {"mscorlib", 0}
 };
 #endif
@@ -644,6 +654,7 @@ mono_set_rootdir (void)
                gchar buf[4096];
                guint buf_size = sizeof (buf);
  
+               name = NULL;
                if (_NSGetExecutablePath (buf, &buf_size) == 0)
                        name = g_strdup (buf);
  
@@ -731,6 +742,7 @@ mono_assembly_fill_assembly_name (MonoImage *image, MonoAssemblyName *aname)
 {
        MonoTableInfo *t = &image->tables [MONO_TABLE_ASSEMBLY];
        guint32 cols [MONO_ASSEMBLY_SIZE];
+       gint32 machine;
 
        if (!t->rows)
                return FALSE;
@@ -775,6 +787,24 @@ mono_assembly_fill_assembly_name (MonoImage *image, MonoAssemblyName *aname)
        else
                aname->public_key = 0;
 
+       machine = ((MonoCLIImageInfo*)(image->image_info))->cli_header.coff.coff_machine;
+       switch (machine) {
+       case COFF_MACHINE_I386:
+               aname->arch = MONO_PROCESSOR_ARCHITECTURE_X86;
+               break;
+       case COFF_MACHINE_IA64:
+               aname->arch = MONO_PROCESSOR_ARCHITECTURE_IA64;
+               break;
+       case COFF_MACHINE_AMD64:
+               aname->arch = MONO_PROCESSOR_ARCHITECTURE_AMD64;
+               break;
+       case COFF_MACHINE_ARM:
+               aname->arch = MONO_PROCESSOR_ARCHITECTURE_ARM;
+               break;
+       default:
+               break;
+       }
+
        return TRUE;
 }
 
@@ -834,6 +864,11 @@ mono_assembly_addref (MonoAssembly *assembly)
        InterlockedIncrement (&assembly->ref_count);
 }
 
+/*
+ * CAUTION: This table must be kept in sync with
+ *          ivkm/reflect/Fusion.cs
+ */
+
 #define SILVERLIGHT_KEY "7cec85d7bea7798e"
 #define WINFX_KEY "31bf3856ad364e35"
 #define ECMA_KEY "b77a5c561934e089"
@@ -851,6 +886,8 @@ static KeyRemapEntry key_remap_table[] = {
        { "System.ComponentModel.Composition", WINFX_KEY, ECMA_KEY },
        { "System.ComponentModel.DataAnnotations", "ddd0da4d3e678217", WINFX_KEY },
        { "System.Core", SILVERLIGHT_KEY, ECMA_KEY },
+       // FIXME: MS uses MSFINAL_KEY for .NET 4.5
+       { "System.Net", SILVERLIGHT_KEY, MSFINAL_KEY },
        { "System.Numerics", WINFX_KEY, ECMA_KEY },
        { "System.Runtime.Serialization", SILVERLIGHT_KEY, ECMA_KEY },
        { "System.ServiceModel", WINFX_KEY, ECMA_KEY },
@@ -858,7 +895,7 @@ static KeyRemapEntry key_remap_table[] = {
        { "System.Windows", SILVERLIGHT_KEY, MSFINAL_KEY },
        { "System.Xml", SILVERLIGHT_KEY, ECMA_KEY },
        { "System.Xml.Linq", WINFX_KEY, ECMA_KEY },
-       { "System.Xml.Serialization", WINFX_KEY, MSFINAL_KEY }
+       { "System.Xml.Serialization", WINFX_KEY, ECMA_KEY }
 };
 
 static void
@@ -1016,6 +1053,7 @@ mono_assembly_load_reference (MonoImage *image, int index)
                MonoTableInfo *t = &image->tables [MONO_TABLE_ASSEMBLYREF];
        
                image->references = g_new0 (MonoAssembly *, t->rows + 1);
+               image->nreferences = t->rows;
        }
        reference = image->references [index];
        mono_assemblies_unlock ();
@@ -2782,7 +2820,10 @@ mono_assembly_load_corlib (const MonoRuntimeInfo *runtime, MonoImageOpenStatus *
        }
        corlib = load_in_path (corlib_file, default_path, status, FALSE);
        g_free (corlib_file);
-
+       
+       if (corlib && !strcmp (runtime->framework_version, "4.5"))
+               default_path [1] = g_strdup_printf ("%s/mono/4.5/Facades", default_path [0]);
+               
        return corlib;
 }
 
index be01cf975153a9d046a418f212505be3fa415d7b..50488658fa246c55abeefa31507ad5da390e64fc 100644 (file)
@@ -5,67 +5,67 @@
 
 MONO_BEGIN_DECLS
 
-void          mono_assemblies_init     (void);
-void          mono_assemblies_cleanup  (void);
-MonoAssembly *mono_assembly_open       (const char *filename,
+MONO_API void          mono_assemblies_init     (void);
+MONO_API void          mono_assemblies_cleanup  (void);
+MONO_API MonoAssembly *mono_assembly_open       (const char *filename,
                                        MonoImageOpenStatus *status);
-MonoAssembly *mono_assembly_open_full (const char *filename,
+MONO_API MonoAssembly *mono_assembly_open_full (const char *filename,
                                        MonoImageOpenStatus *status,
                                        mono_bool refonly);
-MonoAssembly* mono_assembly_load       (MonoAssemblyName *aname, 
+MONO_API MonoAssembly* mono_assembly_load       (MonoAssemblyName *aname, 
                                                const char       *basedir, 
                                        MonoImageOpenStatus *status);
-MonoAssembly* mono_assembly_load_full (MonoAssemblyName *aname, 
+MONO_API MonoAssembly* mono_assembly_load_full (MonoAssemblyName *aname, 
                                                const char       *basedir, 
                                        MonoImageOpenStatus *status,
                                        mono_bool refonly);
-MonoAssembly* mono_assembly_load_from  (MonoImage *image, const char *fname,
+MONO_API MonoAssembly* mono_assembly_load_from  (MonoImage *image, const char *fname,
                                        MonoImageOpenStatus *status);
-MonoAssembly* mono_assembly_load_from_full  (MonoImage *image, const char *fname,
+MONO_API MonoAssembly* mono_assembly_load_from_full  (MonoImage *image, const char *fname,
                                        MonoImageOpenStatus *status,
                                        mono_bool refonly);
 
-MonoAssembly* mono_assembly_load_with_partial_name (const char *name, MonoImageOpenStatus *status);
-
-MonoAssembly* mono_assembly_loaded     (MonoAssemblyName *aname);
-MonoAssembly* mono_assembly_loaded_full (MonoAssemblyName *aname, mono_bool refonly);
-void          mono_assembly_get_assemblyref (MonoImage *image, int index, MonoAssemblyName *aname);
-void          mono_assembly_load_reference (MonoImage *image, int index);
-void          mono_assembly_load_references (MonoImage *image, MonoImageOpenStatus *status);
-MonoImage*    mono_assembly_load_module (MonoAssembly *assembly, uint32_t idx);
-void          mono_assembly_close      (MonoAssembly *assembly);
-void          mono_assembly_setrootdir (const char *root_dir);
-MONO_CONST_RETURN char *mono_assembly_getrootdir (void);
-void         mono_assembly_foreach    (MonoFunc func, void* user_data);
-void          mono_assembly_set_main   (MonoAssembly *assembly);
-MonoAssembly *mono_assembly_get_main   (void);
-MonoImage    *mono_assembly_get_image  (MonoAssembly *assembly);
-mono_bool      mono_assembly_fill_assembly_name (MonoImage *image, MonoAssemblyName *aname);
-mono_bool      mono_assembly_names_equal (MonoAssemblyName *l, MonoAssemblyName *r);
-char*         mono_stringify_assembly_name (MonoAssemblyName *aname);
+MONO_API MonoAssembly* mono_assembly_load_with_partial_name (const char *name, MonoImageOpenStatus *status);
+
+MONO_API MonoAssembly* mono_assembly_loaded     (MonoAssemblyName *aname);
+MONO_API MonoAssembly* mono_assembly_loaded_full (MonoAssemblyName *aname, mono_bool refonly);
+MONO_API void          mono_assembly_get_assemblyref (MonoImage *image, int index, MonoAssemblyName *aname);
+MONO_API void          mono_assembly_load_reference (MonoImage *image, int index);
+MONO_API void          mono_assembly_load_references (MonoImage *image, MonoImageOpenStatus *status);
+MONO_API MonoImage*    mono_assembly_load_module (MonoAssembly *assembly, uint32_t idx);
+MONO_API void          mono_assembly_close      (MonoAssembly *assembly);
+MONO_API void          mono_assembly_setrootdir (const char *root_dir);
+MONO_API MONO_CONST_RETURN char *mono_assembly_getrootdir (void);
+MONO_API void        mono_assembly_foreach    (MonoFunc func, void* user_data);
+MONO_API void          mono_assembly_set_main   (MonoAssembly *assembly);
+MONO_API MonoAssembly *mono_assembly_get_main   (void);
+MONO_API MonoImage    *mono_assembly_get_image  (MonoAssembly *assembly);
+MONO_API mono_bool      mono_assembly_fill_assembly_name (MonoImage *image, MonoAssemblyName *aname);
+MONO_API mono_bool      mono_assembly_names_equal (MonoAssemblyName *l, MonoAssemblyName *r);
+MONO_API char*         mono_stringify_assembly_name (MonoAssemblyName *aname);
 
 /* Installs a function which is called each time a new assembly is loaded. */
 typedef void  (*MonoAssemblyLoadFunc)         (MonoAssembly *assembly, void* user_data);
-void          mono_install_assembly_load_hook (MonoAssemblyLoadFunc func, void* user_data);
+MONO_API void          mono_install_assembly_load_hook (MonoAssemblyLoadFunc func, void* user_data);
 
 /* 
  * Installs a new function which is used to search the list of loaded 
  * assemblies for a given assembly name.
  */
 typedef MonoAssembly *(*MonoAssemblySearchFunc)         (MonoAssemblyName *aname, void* user_data);
-void          mono_install_assembly_search_hook (MonoAssemblySearchFunc func, void* user_data);
-void         mono_install_assembly_refonly_search_hook (MonoAssemblySearchFunc func, void* user_data);
+MONO_API void          mono_install_assembly_search_hook (MonoAssemblySearchFunc func, void* user_data);
+MONO_API void        mono_install_assembly_refonly_search_hook (MonoAssemblySearchFunc func, void* user_data);
 
-MonoAssembly* mono_assembly_invoke_search_hook (MonoAssemblyName *aname);
+MONO_API MonoAssembly* mono_assembly_invoke_search_hook (MonoAssemblyName *aname);
 
 /*
  * Installs a new search function which is used as a last resort when loading 
  * an assembly fails. This could invoke AssemblyResolve events.
  */
-void          
+MONO_API void          
 mono_install_assembly_postload_search_hook (MonoAssemblySearchFunc func, void* user_data);
 
-void          
+MONO_API void          
 mono_install_assembly_postload_refonly_search_hook (MonoAssemblySearchFunc func, void* user_data);
 
 
@@ -76,20 +76,20 @@ typedef MonoAssembly * (*MonoAssemblyPreLoadFunc) (MonoAssemblyName *aname,
                                                   char **assemblies_path,
                                                   void* user_data);
 
-void          mono_install_assembly_preload_hook (MonoAssemblyPreLoadFunc func,
+MONO_API void          mono_install_assembly_preload_hook (MonoAssemblyPreLoadFunc func,
                                                  void* user_data);
-void          mono_install_assembly_refonly_preload_hook (MonoAssemblyPreLoadFunc func,
+MONO_API void          mono_install_assembly_refonly_preload_hook (MonoAssemblyPreLoadFunc func,
                                                  void* user_data);
 
-void          mono_assembly_invoke_load_hook (MonoAssembly *ass);
+MONO_API void          mono_assembly_invoke_load_hook (MonoAssembly *ass);
 
-MonoAssemblyName* mono_assembly_name_new             (const char *name);
-const char*       mono_assembly_name_get_name        (MonoAssemblyName *aname);
-const char*       mono_assembly_name_get_culture     (MonoAssemblyName *aname);
-uint16_t          mono_assembly_name_get_version     (MonoAssemblyName *aname,
+MONO_API MonoAssemblyName* mono_assembly_name_new             (const char *name);
+MONO_API const char*       mono_assembly_name_get_name        (MonoAssemblyName *aname);
+MONO_API const char*       mono_assembly_name_get_culture     (MonoAssemblyName *aname);
+MONO_API uint16_t          mono_assembly_name_get_version     (MonoAssemblyName *aname,
                                                      uint16_t *minor, uint16_t *build, uint16_t *revision);
-mono_byte*        mono_assembly_name_get_pubkeytoken (MonoAssemblyName *aname);
-void              mono_assembly_name_free            (MonoAssemblyName *aname);
+MONO_API mono_byte*        mono_assembly_name_get_pubkeytoken (MonoAssemblyName *aname);
+MONO_API void              mono_assembly_name_free            (MonoAssemblyName *aname);
 
 typedef struct {
        const char *name;
@@ -97,14 +97,14 @@ typedef struct {
        const unsigned int size;
 } MonoBundledAssembly;
 
-void          mono_register_bundled_assemblies (const MonoBundledAssembly **assemblies);
-void          mono_register_config_for_assembly (const char* assembly_name, const char* config_xml);
-void          mono_register_symfile_for_assembly (const char* assembly_name, const mono_byte *raw_contents, int size);
-void         mono_register_machine_config (const char *config_xml);
+MONO_API void          mono_register_bundled_assemblies (const MonoBundledAssembly **assemblies);
+MONO_API void          mono_register_config_for_assembly (const char* assembly_name, const char* config_xml);
+MONO_API void          mono_register_symfile_for_assembly (const char* assembly_name, const mono_byte *raw_contents, int size);
+MONO_API void        mono_register_machine_config (const char *config_xml);
 
-void          mono_set_rootdir (void);
-void          mono_set_dirs (const char *assembly_dir, const char *config_dir);
-void          mono_set_assemblies_path (const char* path);
+MONO_API void          mono_set_rootdir (void);
+MONO_API void          mono_set_dirs (const char *assembly_dir, const char *config_dir);
+MONO_API void          mono_set_assemblies_path (const char* path);
 MONO_END_DECLS
 
 #endif
index 0334d121736c198e0ab0e3931af3f4b44a10cb63..b858650c874c5b213684f311f8802926f9a93ca6 100644 (file)
@@ -13,7 +13,6 @@
 #define GC_I_HIDE_POINTERS
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/mono-gc.h>
-#include <mono/metadata/gc-internal.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/metadata/method-builder.h>
@@ -22,7 +21,9 @@
 #include <mono/metadata/metadata-internals.h>
 #include <mono/metadata/marshal.h>
 #include <mono/metadata/runtime.h>
+#include <mono/utils/atomic.h>
 #include <mono/utils/mono-logger-internal.h>
+#include <mono/utils/mono-memory-model.h>
 #include <mono/utils/mono-time.h>
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/dtrace.h>
@@ -61,7 +62,7 @@ void
 mono_gc_base_init (void)
 {
        MonoThreadInfoCallbacks cb;
-       char *env;
+       const char *env;
 
        if (gc_initialized)
                return;
@@ -147,7 +148,7 @@ mono_gc_base_init (void)
        GC_allow_register_threads();
 #endif
 
-       if ((env = getenv ("MONO_GC_PARAMS"))) {
+       if ((env = g_getenv ("MONO_GC_PARAMS"))) {
                char **ptr, **opts = g_strsplit (env, ",", -1);
                for (ptr = opts; *ptr; ++ptr) {
                        char *opt = *ptr;
@@ -564,9 +565,9 @@ mono_gc_alloc_fixed (size_t size, void *descr)
        /*
        static int count;
        count ++;
-       if (count == atoi (getenv ("COUNT2")))
+       if (count == atoi (g_getenv ("COUNT2")))
                printf ("HIT!\n");
-       if (count > atoi (getenv ("COUNT2")))
+       if (count > atoi (g_getenv ("COUNT2")))
                return GC_MALLOC (size);
        */
 
@@ -624,6 +625,12 @@ mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value)
        *(void**)ptr = value;
 }
 
+void
+mono_gc_wbarrier_generic_store_atomic (gpointer ptr, MonoObject *value)
+{
+       InterlockedWritePointer (ptr, value);
+}
+
 void
 mono_gc_wbarrier_generic_nostore (gpointer ptr)
 {
@@ -681,7 +688,7 @@ enum {
 };
 
 static MonoMethod*
-create_allocator (int atype, int offset)
+create_allocator (int atype, int tls_key)
 {
        int index_var, bytes_var, my_fl_var, my_entry_var;
        guint32 no_freelist_branch, not_small_enough_branch = 0;
@@ -760,7 +767,7 @@ create_allocator (int atype, int offset)
        /* my_fl = ((GC_thread)tsd) -> ptrfree_freelists + index; */
        mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
        mono_mb_emit_byte (mb, 0x0D); /* CEE_MONO_TLS */
-       mono_mb_emit_i4 (mb, offset);
+       mono_mb_emit_i4 (mb, tls_key);
        if (atype == ATYPE_FREEPTR || atype == ATYPE_FREEPTR_FOR_BOX || atype == ATYPE_STRING)
                mono_mb_emit_icon (mb, G_STRUCT_OFFSET (struct GC_Thread_Rep, ptrfree_freelists));
        else if (atype == ATYPE_NORMAL)
@@ -911,11 +918,10 @@ mono_gc_is_critical_method (MonoMethod *method)
  */
 
 MonoMethod*
-mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
+mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box)
 {
        int offset = -1;
        int atype;
-       MonoClass *klass = vtable->klass;
        MONO_THREAD_VAR_OFFSET (GC_thread_tls, offset);
 
        /*g_print ("thread tls: %d\n", offset);*/
@@ -927,6 +933,8 @@ mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
                return NULL;
        if (klass->rank)
                return NULL;
+       if (mono_class_is_open_constructed_type (&klass->byval_arg))
+               return NULL;
        if (klass->byval_arg.type == MONO_TYPE_STRING) {
                atype = ATYPE_STRING;
        } else if (!klass->has_references) {
@@ -966,10 +974,12 @@ mono_gc_get_managed_allocator_by_type (int atype)
        MonoMethod *res;
        MONO_THREAD_VAR_OFFSET (GC_thread_tls, offset);
 
+       mono_tls_key_set_offset (TLS_KEY_BOEHM_GC_THREAD, offset);
+
        mono_loader_lock ();
        res = alloc_method_cache [atype];
        if (!res)
-               res = alloc_method_cache [atype] = create_allocator (atype, offset);
+               res = alloc_method_cache [atype] = create_allocator (atype, TLS_KEY_BOEHM_GC_THREAD);
        mono_loader_unlock ();
        return res;
 }
@@ -996,7 +1006,7 @@ mono_gc_is_critical_method (MonoMethod *method)
 }
 
 MonoMethod*
-mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
+mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box)
 {
        return NULL;
 }
index 91ede875aad5d2380ae75c6a422ec7937b8b09eb..ab7f2c97f305c5dacd493a6dbb355b03a122fa9f 100644 (file)
@@ -37,6 +37,12 @@ typedef struct {
        char    msdos_header2 [64];
 } MonoMSDOSHeader;
 
+/* Possible values for coff_machine */
+#define COFF_MACHINE_I386 332
+#define COFF_MACHINE_IA64 512
+#define COFF_MACHINE_AMD64 34404
+#define COFF_MACHINE_ARM 452
+
 /* 20 bytes */
 typedef struct {
        guint16  coff_machine;
@@ -320,6 +326,6 @@ typedef struct {
        MonoCLIHeader     cli_cli_header;
 } MonoCLIImageInfo;
 
-guint32       mono_cli_rva_image_map (MonoImage *image, guint32 rva);
+MONO_API guint32       mono_cli_rva_image_map (MonoImage *image, guint32 rva);
 
 #endif /* __MONO_CIL_COFF_H__ */
index 2fd7709a37e098147453d2fcad0eda41203d3f1f..942b1f4d1029b4435a0470244fb8e7b3782d15a6 100644 (file)
@@ -439,7 +439,7 @@ int mono_class_interface_match (const uint8_t *bitmap, int id) MONO_INTERNAL;
 #endif
 
 
-int mono_class_interface_offset (MonoClass *klass, MonoClass *itf);
+MONO_API int mono_class_interface_offset (MonoClass *klass, MonoClass *itf);
 int mono_class_interface_offset_with_variance (MonoClass *klass, MonoClass *itf, gboolean *non_exact_match) MONO_INTERNAL;
 
 typedef gpointer MonoRuntimeGenericContext;
@@ -835,7 +835,7 @@ typedef struct {
 
 extern MonoPerfCounters *mono_perfcounters MONO_INTERNAL;
 
-void mono_perfcounters_init (void);
+MONO_API void mono_perfcounters_init (void);
 
 /*
  * The definition of the first field in SafeHandle,
@@ -1001,7 +1001,7 @@ MonoGenericContext*
 mono_method_get_context (MonoMethod *method) MONO_INTERNAL;
 
 /* Used by monodis, thus cannot be MONO_INTERNAL */
-MonoGenericContainer*
+MONO_API MonoGenericContainer*
 mono_method_get_generic_container (MonoMethod *method);
 
 MonoGenericContext*
@@ -1022,7 +1022,7 @@ mono_class_inflate_generic_method_full_checked (MonoMethod *method, MonoClass *k
 MonoMethodInflated*
 mono_method_inflated_lookup (MonoMethodInflated* method, gboolean cache) MONO_INTERNAL;
 
-MonoMethodSignature *
+MONO_API MonoMethodSignature *
 mono_metadata_get_inflated_signature (MonoMethodSignature *sig, MonoGenericContext *context);
 
 MonoType*
@@ -1034,7 +1034,7 @@ mono_class_inflate_generic_class (MonoClass *gklass, MonoGenericContext *context
 MonoType*
 mono_class_inflate_generic_type_checked (MonoType *type, MonoGenericContext *context, MonoError *error) MONO_INTERNAL;
 
-void
+MONO_API void
 mono_metadata_free_inflated_signature (MonoMethodSignature *sig);
 
 MonoMethodSignature*
@@ -1097,13 +1097,6 @@ typedef struct {
        MonoClass *internals_visible_class;
        MonoClass *generic_ilist_class;
        MonoClass *generic_nullable_class;
-#ifndef DISABLE_COM
-       MonoClass *variant_class;
-       MonoClass *com_object_class;
-       MonoClass *com_interop_proxy_class;
-       MonoClass *iunknown_class;
-       MonoClass *idispatch_class;
-#endif
        MonoClass *safehandle_class;
        MonoClass *handleref_class;
        MonoClass *attribute_class;
@@ -1128,6 +1121,39 @@ mono_install_remoting_trampoline (MonoRemotingTrampoline func) MONO_INTERNAL;
 #define mono_object_is_transparent_proxy(object) (((MonoObject*)object)->vtable->klass == mono_defaults.transparent_proxy_class)
 #endif
 
+
+#define GENERATE_GET_CLASS_WITH_CACHE_DECL(shortname) \
+MonoClass* mono_class_get_##shortname##_class (void);
+
+#define GENERATE_GET_CLASS_WITH_CACHE(shortname,namespace,name) \
+MonoClass*     \
+mono_class_get_##shortname##_class (void)      \
+{      \
+       static MonoClass *tmp_class;    \
+       MonoClass *class = tmp_class;   \
+       if (!class) {   \
+               class = mono_class_from_name (mono_defaults.corlib, #namespace, #name); \
+               g_assert (class);       \
+               mono_memory_barrier (); \
+               tmp_class = class;      \
+       }       \
+       return class;   \
+}
+
+#define GENERATE_STATIC_GET_CLASS_WITH_CACHE(shortname,namespace,name) \
+static GENERATE_GET_CLASS_WITH_CACHE (shortname,namespace,name)
+
+
+#ifndef DISABLE_COM
+
+GENERATE_GET_CLASS_WITH_CACHE_DECL (interop_proxy)
+GENERATE_GET_CLASS_WITH_CACHE_DECL (idispatch)
+GENERATE_GET_CLASS_WITH_CACHE_DECL (iunknown)
+GENERATE_GET_CLASS_WITH_CACHE_DECL (com_object)
+GENERATE_GET_CLASS_WITH_CACHE_DECL (variant)
+
+#endif
+
 extern MonoDefaults mono_defaults MONO_INTERNAL;
 
 void
@@ -1192,11 +1218,11 @@ mono_method_get_wrapper_data (MonoMethod *method, guint32 id) MONO_INTERNAL;
 gboolean
 mono_metadata_has_generic_params (MonoImage *image, guint32 token) MONO_INTERNAL;
 
-MonoGenericContainer *
+MONO_API MonoGenericContainer *
 mono_metadata_load_generic_params (MonoImage *image, guint32 token,
                                   MonoGenericContainer *parent_container);
 
-void
+MONO_API void
 mono_metadata_load_generic_param_constraints (MonoImage *image, guint32 token,
                                              MonoGenericContainer *container);
 
@@ -1246,23 +1272,23 @@ mono_type_get_full_name (MonoClass *class) MONO_INTERNAL;
 MonoArrayType *mono_dup_array_type (MonoImage *image, MonoArrayType *a) MONO_INTERNAL;
 MonoMethodSignature *mono_metadata_signature_deep_dup (MonoImage *image, MonoMethodSignature *sig) MONO_INTERNAL;
 
-void
+MONO_API void
 mono_image_init_name_cache (MonoImage *image);
 
 gboolean mono_class_is_nullable (MonoClass *klass) MONO_INTERNAL;
 MonoClass *mono_class_get_nullable_param (MonoClass *klass) MONO_INTERNAL;
 
 /* object debugging functions, for use inside gdb */
-void mono_object_describe        (MonoObject *obj);
-void mono_object_describe_fields (MonoObject *obj);
-void mono_value_describe_fields  (MonoClass* klass, const char* addr);
-void mono_class_describe_statics (MonoClass* klass);
+MONO_API void mono_object_describe        (MonoObject *obj);
+MONO_API void mono_object_describe_fields (MonoObject *obj);
+MONO_API void mono_value_describe_fields  (MonoClass* klass, const char* addr);
+MONO_API void mono_class_describe_statics (MonoClass* klass);
 
 /*Enum validation related functions*/
-gboolean
+MONO_API gboolean
 mono_type_is_valid_enum_basetype (MonoType * type);
 
-gboolean
+MONO_API gboolean
 mono_class_is_valid_enum (MonoClass *klass);
 
 MonoType *
index 831ffa49cb333849555dcde27c2ad58ba709fed4..d9db61bfd4ed7d577569fb8a359bddfbee2b0228 100644 (file)
@@ -42,6 +42,8 @@
 #include <mono/utils/mono-logger-internal.h>
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/atomic.h>
+#include <mono/utils/bsearch.h>
+
 MonoStats mono_stats;
 
 gboolean mono_print_vtable = FALSE;
@@ -53,7 +55,7 @@ guint32 classes_size, class_ext_size;
 /* Function supplied by the runtime to find classes by name using information from the AOT file */
 static MonoGetClassFromName get_class_from_name = NULL;
 
-static MonoClass * mono_class_create_from_typedef (MonoImage *image, guint32 type_token);
+static MonoClass * mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError *error);
 static gboolean mono_class_get_cached_class_info (MonoClass *klass, MonoCachedClassInfo *res);
 static gboolean can_access_type (MonoClass *access_klass, MonoClass *member_klass);
 static MonoMethod* find_method_in_metadata (MonoClass *klass, const char *name, int param_count, int flags);
@@ -217,8 +219,15 @@ mono_class_from_typeref (MonoImage *image, guint32 type_token)
                                guint32 string_offset = mono_metadata_decode_row_col (&enclosing->image->tables [MONO_TABLE_TYPEDEF], class_nested - 1, MONO_TYPEDEF_NAME);
                                const char *nname = mono_metadata_string_heap (enclosing->image, string_offset);
 
-                               if (strcmp (nname, name) == 0)
-                                       return mono_class_create_from_typedef (enclosing->image, MONO_TOKEN_TYPE_DEF | class_nested);
+                               if (strcmp (nname, name) == 0) {
+                                       MonoClass *res = mono_class_create_from_typedef (enclosing->image, MONO_TOKEN_TYPE_DEF | class_nested, &error);
+                                       if (!mono_error_ok (&error)) {
+                                               mono_loader_set_error_from_mono_error (&error);
+                                               mono_error_cleanup (&error); /*FIXME don't swallow error message.*/
+                                               return NULL;
+                                       }
+                                       return res;
+                               }
 
                                i = mono_metadata_nesting_typedef (enclosing->image, enclosing->type_token, i + 1);
                        }
@@ -1419,6 +1428,52 @@ mono_class_setup_fields (MonoClass *class)
        MonoGenericContainer *container = NULL;
        MonoClass *gtd = class->generic_class ? mono_class_get_generic_type_definition (class) : NULL;
 
+       /*
+        * FIXME: We have a race condition here.  It's possible that this function returns
+        * to its caller with `instance_size` set to `0` instead of the actual size.  This
+        * is not a problem when the function is called recursively on the same class,
+        * because the size will be initialized by the outer invocation.  What follows is a
+        * description of how it can occur in other cases, too.  There it is a problem,
+        * because it can lead to the GC being asked to allocate an object of size `0`,
+        * which SGen chokes on.  The race condition is triggered infrequently by
+        * `tests/sgen-suspend.cs`.
+        *
+        * This function is called for a class whenever one of its subclasses is inited.
+        * For example, it's called for every subclass of Object.  What it does is this:
+        *
+        *     if (class->setup_fields_called)
+        *         return;
+        *     ...
+        *     class->instance_size = 0;
+        *     ...
+        *     class->setup_fields_called = 1;
+        *     ... critical point
+        *     class->instance_size = actual_instance_size;
+        *
+        * The last two steps are sometimes reversed, but that only changes the way in which
+        * the race condition works.
+        *
+        * Assume thread A goes through this function and makes it to the critical point.
+        * Now thread B runs the function and, since `setup_fields_called` is set, returns
+        * immediately, but `instance_size` is incorrect.
+        *
+        * The other case looks like this:
+        *
+        *     if (class->setup_fields_called)
+        *         return;
+        *     ... critical point X
+        *     class->instance_size = 0;
+        *     ... critical point Y
+        *     class->instance_size = actual_instance_size;
+        *     ...
+        *     class->setup_fields_called = 1;
+        *
+        * Assume thread A goes through the function and makes it to critical point X.  Now
+        * thread B runs through the whole of the function, returning, assuming
+        * `instance_size` is set.  At that point thread A gets to run and makes it to
+        * critical point Y, at which time `instance_size` is `0` again, invalidating thread
+        * B's assumption.
+        */
        if (class->setup_fields_called)
                return;
 
@@ -1496,6 +1551,7 @@ mono_class_setup_fields (MonoClass *class)
                mono_memory_barrier ();
                class->size_inited = 1;
                class->fields_inited = 1;
+               class->setup_fields_called = 1;
                return;
        }
 
@@ -2638,7 +2694,7 @@ compare_interface_ids (const void *p_key, const void *p_element) {
 /*FIXME verify all callers if they should switch to mono_class_interface_offset_with_variance*/
 int
 mono_class_interface_offset (MonoClass *klass, MonoClass *itf) {
-       MonoClass **result = bsearch (
+       MonoClass **result = mono_binary_search (
                        itf,
                        klass->interfaces_packed,
                        klass->interface_offsets_count,
@@ -5304,7 +5360,7 @@ mono_class_setup_mono_type (MonoClass *class)
 
 #ifndef DISABLE_COM
 /*
- * COM initialization (using mono_init_com_types) is delayed until needed. 
+ * COM initialization is delayed until needed.
  * However when a [ComImport] attribute is present on a type it will trigger
  * the initialization. This is not a problem unless the BCL being executed 
  * lacks the types that COM depends on (e.g. Variant on Silverlight).
@@ -5325,7 +5381,6 @@ init_com_from_comimport (MonoClass *class)
        }
 
        /* FIXME : we should add an extra checks to ensure COM can be initialized properly before continuing */
-       mono_init_com_types ();
 }
 #endif /*DISABLE_COM*/
 
@@ -5358,7 +5413,7 @@ mono_class_setup_parent (MonoClass *class, MonoClass *parent)
                if (MONO_CLASS_IS_IMPORT (class)) {
                        init_com_from_comimport (class);
                        if (parent == mono_defaults.object_class)
-                               parent = mono_defaults.com_object_class;
+                               parent = mono_class_get_com_object_class ();
                }
 #endif
                if (!parent) {
@@ -5475,10 +5530,34 @@ fix_gclass_incomplete_instantiation (MonoClass *gclass, void *user_data)
        return TRUE;
 }
 
+static void
+mono_class_set_failure_and_error (MonoClass *class, MonoError *error, const char *msg)
+{
+       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup (msg));
+       mono_error_set_type_load_class (error, class, msg);
+}
+
+static void
+mono_class_set_failure_from_loader_error (MonoClass *class, MonoError *error, char *msg)
+{
+       MonoLoaderError *lerror = mono_loader_get_last_error ();
+
+       if (lerror) {
+               set_failure_from_loader_error (class, lerror);
+               mono_error_set_from_loader_error (error);
+               if (msg)
+                       g_free (msg);
+       } else {
+               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, msg);
+               mono_error_set_type_load_class (error, class, msg);
+       }
+}
+
 /**
  * mono_class_create_from_typedef:
  * @image: image where the token is valid
  * @type_token:  typedef token
+ * @error:  used to return any error found while creating the type
  *
  * Create the MonoClass* representing the specified type token.
  * @type_token must be a TypeDef token.
@@ -5486,7 +5565,7 @@ fix_gclass_incomplete_instantiation (MonoClass *gclass, void *user_data)
  * FIXME: don't return NULL on failure, just the the caller figure it out.
  */
 static MonoClass *
-mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
+mono_class_create_from_typedef (MonoImage *image, guint32 type_token, MonoError *error)
 {
        MonoTableInfo *tt = &image->tables [MONO_TABLE_TYPEDEF];
        MonoClass *class, *parent = NULL;
@@ -5500,13 +5579,19 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
        guint32 field_last, method_last;
        guint32 nesting_tokeen;
 
-       if (mono_metadata_token_table (type_token) != MONO_TABLE_TYPEDEF || tidx > tt->rows)
+       mono_error_init (error);
+
+       if (mono_metadata_token_table (type_token) != MONO_TABLE_TYPEDEF || tidx > tt->rows) {
+               mono_error_set_bad_image (error, image, "Invalid typedef token %x", type_token);
+               g_assert (!mono_loader_get_last_error ());
                return NULL;
+       }
 
        mono_loader_lock ();
 
        if ((class = mono_internal_hash_table_lookup (&image->class_cache, GUINT_TO_POINTER (type_token)))) {
                mono_loader_unlock ();
+               g_assert (!mono_loader_get_last_error ());
                return class;
        }
 
@@ -5557,19 +5642,18 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
                }
                parent = mono_class_get_full (image, parent_token, context);
 
-               if (parent == NULL){
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not load parent type"));
-                       mono_loader_clear_error ();
+               if (parent == NULL) {
+                       mono_class_set_failure_from_loader_error (class, error, g_strdup_printf ("Could not load parent, token is %x", parent_token));
                        goto parent_failure;
                }
 
                for (tmp = parent; tmp; tmp = tmp->parent) {
                        if (tmp == class) {
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Cycle found while resolving parent"));
+                               mono_class_set_failure_and_error (class, error, "Cycle found while resolving parent");
                                goto parent_failure;
                        }
                        if (class->generic_container && tmp->generic_class && tmp->generic_class->container_class == class) {
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Parent extends generic instance of this type"));
+                               mono_class_set_failure_and_error (class, error, "Parent extends generic instance of this type");
                                goto parent_failure;
                        }
                }
@@ -5588,11 +5672,13 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
         * so it has to come after setup_mono_type ().
         */
        if ((nesting_tokeen = mono_metadata_nested_in_typedef (image, type_token))) {
-               class->nested_in = mono_class_create_from_typedef (image, nesting_tokeen);
-               if (!class->nested_in) {
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not load nestedin type"));
+               class->nested_in = mono_class_create_from_typedef (image, nesting_tokeen, error);
+               if (!mono_error_ok (error)) {
+                       /*FIXME implement a mono_class_set_failure_from_mono_error */
+                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup (mono_error_get_message (error)));
                        mono_loader_unlock ();
                        mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+                       g_assert (!mono_loader_get_last_error ());
                        return NULL;
                }
        }
@@ -5610,7 +5696,7 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
        if (!class->enumtype) {
                if (!mono_metadata_interfaces_from_typedef_full (
                            image, type_token, &interfaces, &icount, FALSE, context)){
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, g_strdup ("Could not load interfaces"));
+                       mono_class_set_failure_from_loader_error (class, error, g_strdup ("Could not load interfaces"));
                        mono_loader_unlock ();
                        mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
                        return NULL;
@@ -5660,9 +5746,10 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
                if (!enum_basetype) {
                        /*set it to a default value as the whole runtime can't handle this to be null*/
                        class->cast_class = class->element_class = mono_defaults.int32_class;
-                       mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
+                       mono_class_set_failure_and_error (class, error, "Could not enum basetype");
                        mono_loader_unlock ();
                        mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+                       g_assert (!mono_loader_get_last_error ());
                        return NULL;
                }
                class->cast_class = class->element_class = mono_class_from_mono_type (enum_basetype);
@@ -5674,12 +5761,10 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
         * work.
         */
        if (class->generic_container && !mono_metadata_load_generic_param_constraints_full (image, type_token, class->generic_container)){
-               char *class_name = g_strdup_printf("%s.%s", class->name_space, class->name);
-               char *error = concat_two_strings_with_zero (class->image, class_name, class->image->assembly_name);
-               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, error);
-               g_free (class_name);
+               mono_class_set_failure_from_loader_error (class, error, g_strdup ("Could not load generic parameter constraints"));
                mono_loader_unlock ();
                mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+               g_assert (!mono_loader_get_last_error ());
                return NULL;
        }
 
@@ -5691,6 +5776,7 @@ mono_class_create_from_typedef (MonoImage *image, guint32 type_token)
        mono_loader_unlock ();
 
        mono_profiler_class_loaded (class, MONO_PROFILE_OK);
+       g_assert (!mono_loader_get_last_error ());
 
        return class;
 
@@ -5698,8 +5784,8 @@ parent_failure:
        mono_class_setup_mono_type (class);
        mono_loader_unlock ();
        mono_profiler_class_loaded (class, MONO_PROFILE_FAILED);
+       g_assert (!mono_loader_get_last_error ());
        return NULL;
-
 }
 
 /** is klass Nullable<T>? */
@@ -7003,7 +7089,13 @@ mono_class_get_full (MonoImage *image, guint32 type_token, MonoGenericContext *c
 
        switch (type_token & 0xff000000){
        case MONO_TOKEN_TYPE_DEF:
-               class = mono_class_create_from_typedef (image, type_token);
+               class = mono_class_create_from_typedef (image, type_token, &error);
+               if (!mono_error_ok (&error)) {
+                       mono_loader_set_error_from_mono_error (&error);
+                       /*FIXME don't swallow the error message*/
+                       mono_error_cleanup (&error);
+                       return NULL;
+               }
                break;          
        case MONO_TOKEN_TYPE_REF:
                class = mono_class_from_typeref (image, type_token);
@@ -7354,7 +7446,11 @@ search_modules (MonoImage *image, const char *name_space, const char *name)
  * @name: the type short name.
  *
  * Obtains a MonoClass with a given namespace and a given name which
- * is located in the given MonoImage.   
+ * is located in the given MonoImage.
+ *
+ * To reference nested classes, use the "/" character as a separator.
+ * For example use "Foo/Bar" to reference the class Bar that is nested
+ * inside Foo, like this: "class Foo { class Bar {} }".
  */
 MonoClass *
 mono_class_from_name (MonoImage *image, const char* name_space, const char *name)
@@ -7466,11 +7562,31 @@ mono_class_from_name (MonoImage *image, const char* name_space, const char *name
        return class;
 }
 
-/*FIXME test for interfaces with variant generic arguments*/
+/**
+ * mono_class_is_subclass_of:
+ * @klass: class to probe if it is a subclass of another one
+ * @klassc: the class we suspect is the base class
+ * @check_interfaces: whether we should perform interface checks
+ *
+ * This method determines whether @klass is a subclass of @klassc.
+ *
+ * If the @check_interfaces flag is set, then if @klassc is an interface
+ * this method return true if the @klass implements the interface or
+ * if @klass is an interface, if one of its base classes is @klass.
+ *
+ * If @check_interfaces is false then, then if @klass is not an interface
+ * then it returns true if the @klass is a subclass of @klassc.
+ *
+ * if @klass is an interface and @klassc is System.Object, then this function
+ * return true.
+ *
+ */
 gboolean
 mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc, 
                           gboolean check_interfaces)
 {
+/*FIXME test for interfaces with variant generic arguments*/
+       
        if (check_interfaces && MONO_CLASS_IS_INTERFACE (klassc) && !MONO_CLASS_IS_INTERFACE (klass)) {
                if (MONO_CLASS_IMPLEMENTS_INTERFACE (klass, klassc->interface_id))
                        return TRUE;
@@ -8731,6 +8847,7 @@ mono_class_get_interfaces (MonoClass* klass, gpointer *iter)
 MonoClass*
 mono_class_get_nested_types (MonoClass* klass, gpointer *iter)
 {
+       MonoError error;
        GList *item;
        int i;
 
@@ -8746,9 +8863,11 @@ mono_class_get_nested_types (MonoClass* klass, gpointer *iter)
                                MonoClass* nclass;
                                guint32 cols [MONO_NESTED_CLASS_SIZE];
                                mono_metadata_decode_row (&klass->image->tables [MONO_TABLE_NESTEDCLASS], i - 1, cols, MONO_NESTED_CLASS_SIZE);
-                               nclass = mono_class_create_from_typedef (klass->image, MONO_TOKEN_TYPE_DEF | cols [MONO_NESTED_CLASS_NESTED]);
-                               if (!nclass) {
-                                       mono_loader_clear_error ();
+                               nclass = mono_class_create_from_typedef (klass->image, MONO_TOKEN_TYPE_DEF | cols [MONO_NESTED_CLASS_NESTED], &error);
+                               if (!mono_error_ok (&error)) {
+                                       /*FIXME don't swallow the error message*/
+                                       mono_error_cleanup (&error);
+
                                        i = mono_metadata_nesting_typedef (klass->image, klass->type_token, i + 1);
                                        continue;
                                }
@@ -8782,6 +8901,32 @@ mono_class_get_nested_types (MonoClass* klass, gpointer *iter)
        return NULL;
 }
 
+
+/**
+ * mono_class_is_delegate
+ * @klass: the MonoClass to act on
+ *
+ * Returns: true if the MonoClass represents a System.Delegate.
+ */
+mono_bool
+mono_class_is_delegate (MonoClass *klass)
+{
+       return klass->delegate;
+}
+
+/**
+ * mono_class_implements_interface
+ * @klass: The MonoClass to act on
+ * @interface: The interface to check if @klass implements.
+ *
+ * Returns: true if @klass implements @interface.
+ */
+mono_bool
+mono_class_implements_interface (MonoClass* klass, MonoClass* iface)
+{
+       return mono_class_is_assignable_from (iface, klass);
+}
+
 /**
  * mono_field_get_name:
  * @field: the MonoClassField to act on
@@ -9958,16 +10103,8 @@ mono_field_resolve_type (MonoClassField *field, MonoError *error)
                /* FIELD signature == 0x06 */
                g_assert (*sig == 0x06);
                field->type = mono_metadata_parse_type_full (image, container, MONO_PARSE_FIELD, cols [MONO_FIELD_FLAGS], sig + 1, &sig);
-               if (!field->type) {
-                       MonoLoaderError *lerror = mono_loader_get_last_error ();
-
-                       mono_error_set_type_load_class (error, class, "Could not load field %s type", field->name);
-                       if (lerror)
-                               set_failure_from_loader_error (class, lerror);
-                       else
-                               mono_class_set_failure (class, MONO_EXCEPTION_TYPE_LOAD, NULL);
-                       mono_loader_clear_error ();
-               }
+               if (!field->type)
+                       mono_class_set_failure_from_loader_error (class, error, g_strdup_printf ("Could not load field %s type", field->name));
        }
 }
 
index 1142dca5bdf308c2c70d46f0632167d8fb429a67..a65bd4565e971ce19b879bae32f45030759f535d 100644 (file)
@@ -13,249 +13,255 @@ typedef struct _MonoClassField MonoClassField;
 typedef struct _MonoProperty MonoProperty;
 typedef struct _MonoEvent MonoEvent;
 
-MonoClass *
+MONO_API MonoClass *
 mono_class_get             (MonoImage *image, uint32_t type_token);
 
-MonoClass *
+MONO_API MonoClass *
 mono_class_get_full        (MonoImage *image, uint32_t type_token, MonoGenericContext *context);
 
-mono_bool
+MONO_API mono_bool
 mono_class_init            (MonoClass *klass);
 
-MonoVTable *
+MONO_API MonoVTable *
 mono_class_vtable          (MonoDomain *domain, MonoClass *klass);
 
-MonoClass *
+MONO_API MonoClass *
 mono_class_from_name       (MonoImage *image, const char* name_space, const char *name);
 
-MonoClass *
+MONO_API MonoClass *
 mono_class_from_name_case  (MonoImage *image, const char* name_space, const char *name);
 
-MonoMethod *
+MONO_API MonoMethod *
 mono_class_get_method_from_name_flags (MonoClass *klass, const char *name, int param_count, int flags);
 
-MonoClass * 
+MONO_API MonoClass * 
 mono_class_from_typeref    (MonoImage *image, uint32_t type_token);
 
-MonoClass *
+MONO_API MonoClass *
 mono_class_from_generic_parameter (MonoGenericParam *param, MonoImage *image, mono_bool is_mvar);
 
-MonoType*
+MONO_API MonoType*
 mono_class_inflate_generic_type (MonoType *type, MonoGenericContext *context) /* MONO_DEPRECATED */;
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_class_inflate_generic_method (MonoMethod *method, MonoGenericContext *context);
 
-MonoMethod *
+MONO_API MonoMethod *
 mono_get_inflated_method (MonoMethod *method);
 
-MonoClassField*
+MONO_API MonoClassField*
 mono_field_from_token      (MonoImage *image, uint32_t token, MonoClass **retklass, MonoGenericContext *context);
 
-MonoClass *
+MONO_API MonoClass *
 mono_bounded_array_class_get (MonoClass *element_class, uint32_t rank, mono_bool bounded);
 
-MonoClass *
+MONO_API MonoClass *
 mono_array_class_get       (MonoClass *element_class, uint32_t rank);
 
-MonoClass *
+MONO_API MonoClass *
 mono_ptr_class_get         (MonoType *type);
 
-MonoClassField *
+MONO_API MonoClassField *
 mono_class_get_field       (MonoClass *klass, uint32_t field_token);
 
-MonoClassField *
+MONO_API MonoClassField *
 mono_class_get_field_from_name (MonoClass *klass, const char *name);
 
-uint32_t
+MONO_API uint32_t
 mono_class_get_field_token (MonoClassField *field);
 
-uint32_t
+MONO_API uint32_t
 mono_class_get_event_token (MonoEvent *event);
 
-MonoProperty*
+MONO_API MonoProperty*
 mono_class_get_property_from_name (MonoClass *klass, const char *name);
 
-uint32_t
+MONO_API uint32_t
 mono_class_get_property_token (MonoProperty *prop);
 
-int32_t
+MONO_API int32_t
 mono_array_element_size    (MonoClass *ac);
 
-int32_t
+MONO_API int32_t
 mono_class_instance_size   (MonoClass *klass);
 
-int32_t
+MONO_API int32_t
 mono_class_array_element_size (MonoClass *klass);
 
-int32_t
+MONO_API int32_t
 mono_class_data_size       (MonoClass *klass);
 
-int32_t
+MONO_API int32_t
 mono_class_value_size      (MonoClass *klass, uint32_t *align);
 
-int32_t
+MONO_API int32_t
 mono_class_min_align       (MonoClass *klass);
 
-MonoClass *
+MONO_API MonoClass *
 mono_class_from_mono_type  (MonoType *type);
 
-mono_bool
+MONO_API mono_bool
 mono_class_is_subclass_of (MonoClass *klass, MonoClass *klassc, 
                                                   mono_bool check_interfaces);
 
-mono_bool
+MONO_API mono_bool
 mono_class_is_assignable_from (MonoClass *klass, MonoClass *oklass);
 
-void*
+MONO_API void*
 mono_ldtoken               (MonoImage *image, uint32_t token, MonoClass **retclass, MonoGenericContext *context);
 
-char*         
+MONO_API char*         
 mono_type_get_name         (MonoType *type);
 
-MonoType*
+MONO_API MonoType*
 mono_type_get_underlying_type (MonoType *type);
 
 /* MonoClass accessors */
-MonoImage*
+MONO_API MonoImage*
 mono_class_get_image         (MonoClass *klass);
 
-MonoClass*
+MONO_API MonoClass*
 mono_class_get_element_class (MonoClass *klass);
 
-mono_bool
+MONO_API mono_bool
 mono_class_is_valuetype      (MonoClass *klass);
 
-mono_bool
+MONO_API mono_bool
 mono_class_is_enum          (MonoClass *klass);
 
-MonoType*
+MONO_API MonoType*
 mono_class_enum_basetype    (MonoClass *klass);
 
-MonoClass*
+MONO_API MonoClass*
 mono_class_get_parent        (MonoClass *klass);
 
-MonoClass*
+MONO_API MonoClass*
 mono_class_get_nesting_type  (MonoClass *klass);
 
-int
+MONO_API int
 mono_class_get_rank          (MonoClass *klass);
 
-uint32_t
+MONO_API uint32_t
 mono_class_get_flags         (MonoClass *klass);
 
-const char*
+MONO_API const char*
 mono_class_get_name          (MonoClass *klass);
 
-const char*
+MONO_API const char*
 mono_class_get_namespace     (MonoClass *klass);
 
-MonoType*
+MONO_API MonoType*
 mono_class_get_type          (MonoClass *klass);
 
-uint32_t
+MONO_API uint32_t
 mono_class_get_type_token    (MonoClass *klass);
 
-MonoType*
+MONO_API MonoType*
 mono_class_get_byref_type    (MonoClass *klass);
 
-int
+MONO_API int
 mono_class_num_fields        (MonoClass *klass);
 
-int
+MONO_API int
 mono_class_num_methods       (MonoClass *klass);
 
-int
+MONO_API int
 mono_class_num_properties    (MonoClass *klass);
 
-int
+MONO_API int
 mono_class_num_events        (MonoClass *klass);
 
-MonoClassField*
+MONO_API MonoClassField*
 mono_class_get_fields        (MonoClass* klass, void **iter);
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_class_get_methods       (MonoClass* klass, void **iter);
 
-MonoProperty*
+MONO_API MonoProperty*
 mono_class_get_properties    (MonoClass* klass, void **iter);
 
-MonoEvent*
+MONO_API MonoEvent*
 mono_class_get_events        (MonoClass* klass, void **iter);
 
-MonoClass*
+MONO_API MonoClass*
 mono_class_get_interfaces    (MonoClass* klass, void **iter);
 
-MonoClass*
+MONO_API MonoClass*
 mono_class_get_nested_types  (MonoClass* klass, void **iter);
 
+MONO_API mono_bool
+mono_class_is_delegate       (MonoClass* klass);
+
+MONO_API mono_bool
+mono_class_implements_interface (MonoClass* klass, MonoClass* iface);
+
 /* MonoClassField accessors */
-const char*
+MONO_API const char*
 mono_field_get_name   (MonoClassField *field);
 
-MonoType*
+MONO_API MonoType*
 mono_field_get_type   (MonoClassField *field);
 
-MonoClass*
+MONO_API MonoClass*
 mono_field_get_parent (MonoClassField *field);
 
-uint32_t
+MONO_API uint32_t
 mono_field_get_flags  (MonoClassField *field);
 
-uint32_t
+MONO_API uint32_t
 mono_field_get_offset  (MonoClassField *field);
 
-const char *
+MONO_API const char *
 mono_field_get_data  (MonoClassField *field);
 
 /* MonoProperty acessors */
-const char*
+MONO_API const char*
 mono_property_get_name       (MonoProperty *prop);
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_property_get_set_method (MonoProperty *prop);
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_property_get_get_method (MonoProperty *prop);
 
-MonoClass*
+MONO_API MonoClass*
 mono_property_get_parent     (MonoProperty *prop);
 
-uint32_t
+MONO_API uint32_t
 mono_property_get_flags      (MonoProperty *prop);
 
 /* MonoEvent accessors */
-const char*
+MONO_API const char*
 mono_event_get_name          (MonoEvent *event);
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_event_get_add_method    (MonoEvent *event);
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_event_get_remove_method (MonoEvent *event);
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_event_get_remove_method (MonoEvent *event);
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_event_get_raise_method  (MonoEvent *event);
 
-MonoClass*
+MONO_API MonoClass*
 mono_event_get_parent        (MonoEvent *event);
 
-uint32_t
+MONO_API uint32_t
 mono_event_get_flags         (MonoEvent *event);
 
-MonoMethod *
+MONO_API MonoMethod *
 mono_class_get_method_from_name (MonoClass *klass, const char *name, int param_count);
 
-char *
+MONO_API char *
 mono_class_name_from_token (MonoImage *image, uint32_t type_token);
 
-mono_bool
+MONO_API mono_bool
 mono_method_can_access_field (MonoMethod *method, MonoClassField *field);
 
-mono_bool
+MONO_API mono_bool
 mono_method_can_access_method (MonoMethod *method, MonoMethod *called);
 
 MONO_END_DECLS
index 3ff6c5ee45f1780dc824f22a799de5d4d27d5802..42601954129da0eba7f350451ca9ba0c4a11a13f 100644 (file)
@@ -32,6 +32,7 @@
 #include "mono/metadata/attrdefs.h"
 #include "mono/metadata/gc-internal.h"
 #include "mono/utils/mono-counters.h"
+#include "mono/utils/strenc.h"
 #include "mono/utils/atomic.h"
 #include <string.h>
 #include <errno.h>
@@ -84,6 +85,13 @@ static CRITICAL_SECTION cominterop_mutex;
 #define STDCALL
 #endif
 
+GENERATE_GET_CLASS_WITH_CACHE (interop_proxy, Mono.Interop, ComInteropProxy)
+GENERATE_GET_CLASS_WITH_CACHE (idispatch,     Mono.Interop, IDispatch)
+GENERATE_GET_CLASS_WITH_CACHE (iunknown,      Mono.Interop, IUnknown)
+
+GENERATE_GET_CLASS_WITH_CACHE (com_object, System, __ComObject)
+GENERATE_GET_CLASS_WITH_CACHE (variant,    System, Variant)
+
 /* Upon creation of a CCW, only allocate a weak handle and set the
  * reference count to 0. If the unmanaged client code decides to addref and
  * hold onto the CCW, I then allocate a strong handle. Once the reference count
@@ -263,7 +271,7 @@ cominterop_object_is_rcw (MonoObject *obj)
                return FALSE;
 
        klass = mono_object_class (real_proxy);
-       return (klass && klass == mono_defaults.com_interop_proxy_class);
+       return (klass && klass == mono_class_get_interop_proxy_class ());
 }
 
 static int
@@ -517,11 +525,11 @@ cominterop_type_from_handle (MonoType *handle)
 void
 mono_cominterop_init (void)
 {
-       char* com_provider_env = NULL;
+       const char* com_provider_env;
 
        InitializeCriticalSection (&cominterop_mutex);
 
-       com_provider_env = getenv ("MONO_COM");
+       com_provider_env = g_getenv ("MONO_COM");
        if (com_provider_env && !strcmp(com_provider_env, "MS"))
                com_provider = MONO_COM_MS;
 
@@ -582,9 +590,6 @@ mono_cominterop_emit_ptr_to_object_conv (MonoMethodBuilder *mb, MonoType *type,
                int real_proxy;
                guint32 pos_null = 0, pos_ccw = 0, pos_end = 0;
                MonoClass *klass = NULL; 
-               
-               /* COM types are initialized lazily */
-               mono_init_com_types ();
 
                klass = mono_class_from_mono_type (type);
 
@@ -618,7 +623,7 @@ mono_cominterop_emit_ptr_to_object_conv (MonoMethodBuilder *mb, MonoType *type,
 
                mono_mb_emit_ldloc (mb, 0);
                mono_mb_emit_byte (mb, CEE_LDIND_I);
-               mono_mb_emit_ptr (mb, &mono_defaults.com_object_class->byval_arg);
+               mono_mb_emit_ptr (mb, &mono_class_get_com_object_class ()->byval_arg);
                mono_mb_emit_icall (mb, cominterop_type_from_handle);
                mono_mb_emit_managed_call (mb, com_interop_proxy_get_proxy, NULL);
                mono_mb_emit_managed_call (mb, get_transparent_proxy, NULL);
@@ -660,10 +665,6 @@ mono_cominterop_emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type,
        case MONO_MARSHAL_CONV_OBJECT_IDISPATCH:
        case MONO_MARSHAL_CONV_OBJECT_IUNKNOWN: {
                guint32 pos_null = 0, pos_rcw = 0, pos_end = 0;
-               /* COM types are initialized lazily */
-               mono_init_com_types ();
-
 
                mono_mb_emit_ldloc (mb, 1);
                mono_mb_emit_icon (mb, 0);
@@ -704,14 +705,14 @@ mono_cominterop_emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type,
                        static MonoProperty* iunknown = NULL;
                        
                        if (!iunknown)
-                               iunknown = mono_class_get_property_from_name (mono_defaults.com_object_class, "IUnknown");
+                               iunknown = mono_class_get_property_from_name (mono_class_get_com_object_class (), "IUnknown");
                        mono_mb_emit_managed_call (mb, iunknown->get, NULL);
                }
                else if (conv == MONO_MARSHAL_CONV_OBJECT_IDISPATCH) {
                        static MonoProperty* idispatch = NULL;
                        
                        if (!idispatch)
-                               idispatch = mono_class_get_property_from_name (mono_defaults.com_object_class, "IDispatch");
+                               idispatch = mono_class_get_property_from_name (mono_class_get_com_object_class (), "IDispatch");
                        mono_mb_emit_managed_call (mb, idispatch->get, NULL);
                }
                else {
@@ -731,9 +732,9 @@ mono_cominterop_emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type,
                if (conv == MONO_MARSHAL_CONV_OBJECT_INTERFACE)
                        mono_mb_emit_ptr (mb, mono_type_get_class (type));
                else if (conv == MONO_MARSHAL_CONV_OBJECT_IUNKNOWN)
-                       mono_mb_emit_ptr (mb, mono_defaults.iunknown_class);
+                       mono_mb_emit_ptr (mb, mono_class_get_iunknown_class ());
                else if (conv == MONO_MARSHAL_CONV_OBJECT_IDISPATCH)
-                       mono_mb_emit_ptr (mb, mono_defaults.idispatch_class);
+                       mono_mb_emit_ptr (mb, mono_class_get_idispatch_class ());
                else
                        g_assert_not_reached ();
                mono_mb_emit_icall (mb, cominterop_get_ccw);
@@ -871,8 +872,6 @@ mono_cominterop_get_native_wrapper (MonoMethod *method)
        if ((res = mono_marshal_find_in_cache (cache, method)))
                return res;
 
-       mono_init_com_types ();
-
        if (!method->klass->vtable)
                mono_class_setup_vtable (method->klass);
        
@@ -894,7 +893,7 @@ mono_cominterop_get_native_wrapper (MonoMethod *method)
                        static MonoMethod *ctor = NULL;
 
                        if (!ctor)
-                               ctor = mono_class_get_method_from_name (mono_defaults.com_object_class, ".ctor", 0);
+                               ctor = mono_class_get_method_from_name (mono_class_get_com_object_class (), ".ctor", 0);
                        mono_mb_emit_ldarg (mb, 0);
                        mono_mb_emit_managed_call (mb, ctor, NULL);
                        mono_mb_emit_byte (mb, CEE_RET);
@@ -1090,9 +1089,6 @@ mono_cominterop_emit_marshal_com_interface (EmitMarshalContext *m, int argnum,
        if (!marshal_release)
                marshal_release = mono_class_get_method_from_name (mono_defaults.marshal_class, "Release", 1);
 
-       /* COM types are initialized lazily */
-       mono_init_com_types ();
-
        switch (action) {
        case MARSHAL_ACTION_CONV_IN: {
                guint32 pos_null = 0;
@@ -1393,6 +1389,9 @@ typedef struct
 #define MONO_S_OK 0x00000000L
 #define MONO_E_NOINTERFACE 0x80004002L
 #define MONO_E_NOTIMPL 0x80004001L
+#define MONO_E_INVALIDARG          0x80070057L
+#define MONO_E_DISP_E_UNKNOWNNAME  0x80020006L
+#define MONO_E_DISPID_UNKNOWN      (gint32)-1
 
 int
 ves_icall_System_Runtime_InteropServices_Marshal_AddRefInternal (gpointer pUnk)
@@ -1434,13 +1433,13 @@ cominterop_get_idispatch_for_object (MonoObject* object)
 
        if (cominterop_object_is_rcw (object)) {
                return cominterop_get_interface (((MonoComInteropProxy*)((MonoTransparentProxy*)object)->rp)->com_object, 
-                       mono_defaults.idispatch_class, TRUE);
+                       mono_class_get_idispatch_class (), TRUE);
        }
        else {
                MonoClass* klass = mono_object_class (object);
                if (!cominterop_can_support_dispatch (klass) )
                        cominterop_raise_hr_exception (MONO_E_NOINTERFACE);
-               return cominterop_get_ccw (object, mono_defaults.idispatch_class);
+               return cominterop_get_ccw (object, mono_class_get_idispatch_class ());
        }
 }
 
@@ -1451,8 +1450,6 @@ ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal (M
        if (!object)
                return NULL;
 
-       mono_init_com_types ();
-
        if (cominterop_object_is_rcw (object)) {
                MonoClass *klass = NULL;
                MonoRealProxy* real_proxy = NULL;
@@ -1471,7 +1468,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal (M
                }
 
                klass = mono_object_class (real_proxy);
-               if (klass != mono_defaults.com_interop_proxy_class) {
+               if (klass != mono_class_get_interop_proxy_class ()) {
                        g_assert_not_reached ();
                        return NULL;
                }
@@ -1484,7 +1481,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_GetIUnknownForObjectInternal (M
                return ((MonoComInteropProxy*)real_proxy)->com_object->iunknown;
        }
        else {
-               return cominterop_get_ccw (object, mono_defaults.iunknown_class);
+               return cominterop_get_ccw (object, mono_class_get_iunknown_class ());
        }
 #else
        g_assert_not_reached ();
@@ -1513,8 +1510,6 @@ void*
 ves_icall_System_Runtime_InteropServices_Marshal_GetIDispatchForObjectInternal (MonoObject* object)
 {
 #ifndef DISABLE_COM
-       mono_init_com_types ();
-
        return cominterop_get_idispatch_for_object (object);
 #else
        g_assert_not_reached ();
@@ -1899,10 +1894,10 @@ cominterop_get_ccw (MonoObject* object, MonoClass* itf)
        }
 
        iface = itf;
-       if (iface == mono_defaults.iunknown_class) {
+       if (iface == mono_class_get_iunknown_class ()) {
                start_slot = 3;
        }
-       else if (iface == mono_defaults.idispatch_class) {
+       else if (iface == mono_class_get_idispatch_class ()) {
                start_slot = 7;
        }
        else {
@@ -2304,7 +2299,7 @@ cominterop_ccw_getfreethreadedmarshaler (MonoCCW* ccw, MonoObject* object, gpoin
        if (!ccw->free_marshaler) {
                int ret = 0;
                gpointer tunk;
-               tunk = cominterop_get_ccw (object, mono_defaults.iunknown_class);
+               tunk = cominterop_get_ccw (object, mono_class_get_iunknown_class ());
                ret = CoCreateFreeThreadedMarshaler (tunk, (LPUNKNOWN*)&ccw->free_marshaler);
        }
                
@@ -2340,19 +2335,19 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
                mono_thread_attach (mono_get_root_domain ());
 
        /* handle IUnknown special */
-       if (cominterop_class_guid_equal (riid, mono_defaults.iunknown_class)) {
-               *ppv = cominterop_get_ccw (object, mono_defaults.iunknown_class);
+       if (cominterop_class_guid_equal (riid, mono_class_get_iunknown_class ())) {
+               *ppv = cominterop_get_ccw (object, mono_class_get_iunknown_class ());
                /* remember to addref on QI */
                cominterop_ccw_addref (*ppv);
                return MONO_S_OK;
        }
 
        /* handle IDispatch special */
-       if (cominterop_class_guid_equal (riid, mono_defaults.idispatch_class)) {
+       if (cominterop_class_guid_equal (riid, mono_class_get_idispatch_class ())) {
                if (!cominterop_can_support_dispatch (klass))
                        return MONO_E_NOINTERFACE;
                
-               *ppv = cominterop_get_ccw (object, mono_defaults.idispatch_class);
+               *ppv = cominterop_get_ccw (object, mono_class_get_idispatch_class ());
                /* remember to addref on QI */
                cominterop_ccw_addref (*ppv);
                return MONO_S_OK;
@@ -2398,7 +2393,12 @@ cominterop_ccw_queryinterface (MonoCCWInterface* ccwe, guint8* riid, gpointer* p
 static int STDCALL 
 cominterop_ccw_get_type_info_count (MonoCCWInterface* ccwe, guint32 *pctinfo)
 {
-       return MONO_E_NOTIMPL;
+       if(!pctinfo)
+               return MONO_E_INVALIDARG;
+
+       *pctinfo = 1;
+
+       return MONO_S_OK;
 }
 
 static int STDCALL 
@@ -2412,7 +2412,32 @@ cominterop_ccw_get_ids_of_names (MonoCCWInterface* ccwe, gpointer riid,
                                                                                         gunichar2** rgszNames, guint32 cNames,
                                                                                         guint32 lcid, gint32 *rgDispId)
 {
-       return MONO_E_NOTIMPL;
+       int i,ret = MONO_S_OK;
+       MonoMethod* method;
+       gchar* methodname;
+       MonoClass *klass = NULL;
+       MonoCCW* ccw = ccwe->ccw;
+       MonoObject* object = mono_gchandle_get_target (ccw->gc_handle);
+
+       g_assert (object);
+       klass = mono_object_class (object);
+
+       if (!mono_domain_get ())
+               mono_thread_attach (mono_get_root_domain ());
+
+       for (i=0; i < cNames; i++) {
+               methodname = mono_unicode_to_external (rgszNames[i]);
+
+               method = mono_class_get_method_from_name(klass, methodname, -1);
+               if (method)
+                       rgDispId[i] = (gint32)method->token;
+               else {
+                       rgDispId[i] = MONO_E_DISPID_UNKNOWN;
+                       ret = MONO_E_DISP_E_UNKNOWNNAME;
+               }
+       }
+
+       return ret;
 }
 
 static int STDCALL 
@@ -2641,8 +2666,6 @@ mono_cominterop_emit_marshal_safearray (EmitMarshalContext *m, int argnum, MonoT
 {
        MonoMethodBuilder *mb = m->mb;
 
-       mono_init_com_types ();
-       
        switch (action) {
 
        case MARSHAL_ACTION_CONV_IN: {
@@ -2719,7 +2742,7 @@ mono_cominterop_emit_marshal_safearray (EmitMarshalContext *m, int argnum, MonoT
                                get_native_variant_for_object = mono_class_get_method_from_name (mono_defaults.marshal_class, "GetNativeVariantForObject", 2);
                        g_assert (get_native_variant_for_object);
 
-                       elem_var =  mono_mb_add_local (mb, &mono_defaults.variant_class->byval_arg);
+                       elem_var =  mono_mb_add_local (mb, &mono_class_get_variant_class ()->byval_arg);
                        mono_mb_emit_ldloc_addr (mb, elem_var);
 
                        mono_mb_emit_managed_call (mb, get_native_variant_for_object, NULL);
@@ -2730,7 +2753,7 @@ mono_cominterop_emit_marshal_safearray (EmitMarshalContext *m, int argnum, MonoT
                        mono_mb_emit_icall (mb, mono_marshal_safearray_set_value);
 
                        if (!variant_clear)
-                               variant_clear = mono_class_get_method_from_name (mono_defaults.variant_class, "Clear", 0);
+                               variant_clear = mono_class_get_method_from_name (mono_class_get_variant_class (), "Clear", 0);
 
                        mono_mb_emit_ldloc_addr (mb, elem_var);
                        mono_mb_emit_managed_call (mb, variant_clear, NULL);
index d3da2d93f4675af84daaa1843246e117fe898994..f65aae2fb03e101f137b26d3ed4a4a0d6d41678b 100644 (file)
@@ -47,10 +47,10 @@ mono_cominterop_emit_marshal_safearray (EmitMarshalContext *m, int argnum,
                                                                                int conv_arg, MonoType **conv_arg_type,
                                                                                MarshalAction action) MONO_INTERNAL;
 
-MonoString * 
+MONO_API MonoString * 
 mono_string_from_bstr (gpointer bstr);
 
-void 
+MONO_API void 
 mono_free_bstr (gpointer bstr);
 
 #endif /* __MONO_COMINTEROP_H__ */
index aae513f1a021197c25473d61f3a080ae64396577..b8987c9ec3ae396bcd5851ff549a83944f1e8a33 100644 (file)
@@ -31,6 +31,7 @@
 #include <mono/metadata/gc-internal.h>
 #include <mono/metadata/metadata.h>
 #include <mono/metadata/threadpool.h>
+#include <mono/utils/mono-signal-handler.h>
 
 /* On solaris, curses.h must come before both termios.h and term.h */
 #ifdef HAVE_CURSES_H
@@ -272,8 +273,8 @@ mono_console_handle_async_ops (void)
 }
 
 static gboolean in_sigint;
-static void
-sigint_handler (int signo)
+
+MONO_SIGNAL_HANDLER_FUNC (static, sigint_handler, (int signo))
 {
        int save_errno;
        MONO_ARCH_SAVE_REGS;
@@ -291,8 +292,7 @@ sigint_handler (int signo)
 
 static struct sigaction save_sigcont, save_sigint, save_sigwinch;
 
-static void
-sigcont_handler (int signo, void *the_siginfo, void *data)
+MONO_SIGNAL_HANDLER_FUNC (static, sigcont_handler, (int signo, void *the_siginfo, void *data))
 {
        int unused;
        // Ignore error, there is not much we can do in the sigcont handler.
@@ -308,8 +308,7 @@ sigcont_handler (int signo, void *the_siginfo, void *data)
                (*save_sigcont.sa_sigaction) (signo, the_siginfo, data);
 }
 
-static void
-sigwinch_handler (int signo, void *the_siginfo, void *data)
+MONO_SIGNAL_HANDLER_FUNC (static, sigwinch_handler, (int signo, void *the_siginfo, void *data))
 {
        int dims = terminal_get_dimensions ();
        if (dims != -1)
@@ -358,7 +357,7 @@ console_set_signal_handlers ()
        sigaction (SIGCONT, &sigcont, &save_sigcont);
        
        // Interrupt handler
-       sigint.sa_handler = sigint_handler;
+       sigint.sa_handler = (void *) sigint_handler;
        sigint.sa_flags = 0;
        sigemptyset (&sigint.sa_mask);
        sigaction (SIGINT, &sigint, &save_sigint);
@@ -452,10 +451,10 @@ ves_icall_System_ConsoleDriver_TtySetup (MonoString *keypad, MonoString *teardow
        if (dims == -1){
                int cols = 0, rows = 0;
                                      
-               char *str = getenv ("COLUMNS");
+               const char *str = g_getenv ("COLUMNS");
                if (str != NULL)
                        cols = atoi (str);
-               str = getenv ("LINES");
+               str = g_getenv ("LINES");
                if (str != NULL)
                        rows = atoi (str);
 
index 6b940f3edfb4e85920a526d0cc56a6fa868e273f..15efa5a30507b51b903a5a20d60c16cbb1aea864 100644 (file)
@@ -44,9 +44,11 @@ mono_console_handle_async_ops (void)
 MonoBoolean
 ves_icall_System_ConsoleDriver_Isatty (HANDLE handle)
 {
+       DWORD mode;
+
        MONO_ARCH_SAVE_REGS;
 
-       return (GetFileType (handle) == FILE_TYPE_CHAR);
+       return GetConsoleMode (handle, &mode) != 0;
 }
 
 MonoBoolean
index f8cc9249a17318b93c37eeabe2a8b5afd3e94cc5..c331662aec7b5b91e4997bea0240df554d5dcae6 100644 (file)
@@ -311,92 +311,92 @@ static const NumberFormatEntry number_format_entries [] = {
        {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35632, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35636, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35639, 35477, 35644, 35449, 35656, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 0, 35477, 35588, 35660, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35502, 35471, 35670, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35686, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35690, 35700, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35639, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 0, 35477, 35588, 35644, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35502, 35471, 35654, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35670, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35674, 35684, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35709, 35471, 35473, 35477, 35713, 35732, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35751, 35471, 35473, 35477, 35588, 35660, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35754, 763, 35754, 763, 35754, 0, 35471, 35473, 35477, 35758, 35769, 35656, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35693, 35471, 35473, 35477, 35697, 35716, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35735, 35471, 35473, 35477, 35588, 35644, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35738, 763, 35738, 763, 35738, 0, 35471, 35473, 35477, 35742, 35751, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35778, 35471, 35786, 35477, 35802, 35830, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35857, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 2, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35760, 35471, 35768, 35477, 35784, 35812, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35839, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 2, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 0, 35477, 35510, 35522, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35860, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35871, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35875, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35878, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 3, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35883, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35886, 35471, 35890, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35842, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35846, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35853, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35857, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35860, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 3, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35865, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35868, 35471, 35872, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35906, 35920, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35888, 35902, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35933, 35471, 35936, 35477, 35950, 35964, 35656, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35975, 35471, 35864, 35477, 35978, 35991, 35656, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35915, 35471, 35918, 35477, 35932, 35944, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35955, 35471, 35846, 35477, 35958, 35969, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35460, 35460, 35460, 35460, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36001, 35419, 0, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36005, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36009, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 35979, 35419, 0, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35983, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35987, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 36015, 36025, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35993, 36003, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35846, 35477, 35439, 35449, 2601, 35458, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36012, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
        {763, 35460, 763, 35460, 763, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35846, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36038, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36016, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 36041, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36048, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36019, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36026, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36052, 35471, 36059, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36030, 35471, 36037, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
        {35460, 35460, 35460, 35460, 35460, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36085, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 36117, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36143, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 1, 1, 1, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36174, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 36063, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36012, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36012, 35471, 36095, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 36121, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36012, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 1, 1, 1, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 36152, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
        {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36184, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36189, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36192, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 2, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36196, 35471, 0, 35477, 35439, 35449, 2601, 35458, 4, 1, 0, 0, 0, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {763, 35460, 763, 35460, 763, 35460, 36162, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36167, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36170, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 2, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36174, 35471, 0, 35477, 35439, 35449, 2601, 35458, 4, 1, 0, 0, 0, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36200, 35471, 0, 35477, 35439, 35449, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36208, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 1, 1, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36178, 35471, 0, 35477, 35439, 35449, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36186, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 1, 1, {3, 0}, {3, 0}, {3, 0}},
        {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36215, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36228, 35419, 0, 35477, 35439, 35449, 2601, 35458, 3, 0, 4, 2, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36231, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36193, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36206, 35419, 0, 35477, 35439, 35449, 2601, 35458, 3, 0, 4, 2, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36209, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36213, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36184, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35846, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36213, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36162, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35460, 35460, 35460, 35460, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35754, 763, 35754, 763, 35754, 0, 35471, 35473, 35477, 35644, 35449, 35656, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35738, 763, 35738, 763, 35738, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35460, 35460, 35460, 35460, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36239, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36189, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36217, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36167, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35403, 35406, 35403, 35406, 35403, 35406, 35409, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35465, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35485, 35494, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36242, 35471, 36246, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36220, 35471, 36224, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35506, 35471, 35473, 35477, 35510, 35522, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
@@ -406,1001 +406,1001 @@ static const NumberFormatEntry number_format_entries [] = {
        {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35632, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35636, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35639, 35477, 35644, 35449, 35656, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 0, 35477, 35588, 35660, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35502, 35471, 35670, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35686, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35690, 35700, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35639, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 0, 35477, 35588, 35644, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35502, 35471, 35654, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35670, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35674, 35684, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35709, 35471, 35473, 35477, 35713, 35732, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35751, 35471, 35473, 35477, 35588, 35660, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35754, 763, 35754, 763, 35754, 0, 35471, 35473, 35477, 35758, 35769, 35656, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35693, 35471, 35473, 35477, 35697, 35716, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35735, 35471, 35473, 35477, 35588, 35644, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35738, 763, 35738, 763, 35738, 0, 35471, 35473, 35477, 35742, 35751, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35778, 35471, 35786, 35477, 35802, 35830, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35857, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 2, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35760, 35471, 35768, 35477, 35784, 35812, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35839, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 2, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 0, 35477, 35510, 35522, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35860, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35871, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35875, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35878, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 3, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35883, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35886, 35471, 35890, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35842, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35846, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35853, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35857, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35860, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 3, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35865, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35868, 35471, 35872, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35906, 35920, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35888, 35902, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35933, 35471, 35936, 35477, 35950, 35964, 35656, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35975, 35471, 35864, 35477, 35978, 35991, 35656, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36041, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36001, 35419, 0, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36005, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36009, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36256, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 36015, 36025, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35915, 35471, 35918, 35477, 35932, 35944, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35955, 35471, 35846, 35477, 35958, 35969, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36019, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 35979, 35419, 0, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35983, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35987, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36234, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35993, 36003, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 0, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35846, 35477, 35439, 35449, 2601, 35458, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36012, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
        {763, 35460, 763, 35460, 763, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36038, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 36041, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36048, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 36261, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36059, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36085, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 36117, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36143, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 1, 1, 1, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 36174, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {763, 35460, 763, 35460, 763, 35460, 36184, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36189, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36192, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 2, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36196, 35471, 0, 35477, 35439, 35449, 2601, 35458, 4, 1, 0, 0, 0, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 35846, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36016, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36019, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36026, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36239, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 36037, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 36063, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36012, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36012, 35471, 36095, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 36121, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36012, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 1, 1, 1, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 36152, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {763, 35460, 763, 35460, 763, 35460, 36162, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36167, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36170, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 2, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36174, 35471, 0, 35477, 35439, 35449, 2601, 35458, 4, 1, 0, 0, 0, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36034, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36200, 35471, 0, 35477, 35439, 35449, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36208, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 1, 1, {3, 0}, {3, 0}, {3, 0}},
-       {763, 35460, 763, 35460, 763, 35460, 36215, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36228, 35419, 0, 35477, 35439, 35449, 2601, 35458, 3, 0, 4, 2, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36231, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36012, 35471, 0, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36178, 35471, 0, 35477, 35439, 35449, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36186, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 1, 1, {3, 0}, {3, 0}, {3, 0}},
+       {763, 35460, 763, 35460, 763, 35460, 36193, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 2}, {3, 2}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36206, 35419, 0, 35477, 35439, 35449, 2601, 35458, 3, 0, 4, 2, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36209, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36213, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36213, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 2, 2, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36184, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
+       {35460, 763, 35460, 763, 35460, 763, 35534, 35471, 35846, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36213, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36162, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35460, 35460, 35460, 35460, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35460, 35460, 35460, 35460, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36239, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36189, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36267, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36217, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36167, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36245, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35502, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 36277, 763, 36277, 763, 36277, 0, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36189, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 36255, 763, 36255, 763, 36255, 0, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36167, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 36277, 763, 36277, 763, 36277, 0, 35471, 0, 35477, 35588, 35660, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35690, 35700, 2601, 35458, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35473, 35477, 35644, 35449, 35656, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35588, 35660, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36279, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 36255, 763, 36255, 763, 36255, 0, 35471, 0, 35477, 35588, 35644, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35674, 35684, 2601, 35458, 12, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35588, 35644, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35846, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36257, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35481, 35471, 0, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 36287, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36294, 35471, 36059, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 36184, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36298, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 36246, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36265, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36272, 35471, 36037, 35477, 35439, 35449, 2601, 35458, 12, 2, 2, 2, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36162, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36276, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 36224, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 9, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35586, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 15, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35864, 35477, 35644, 35449, 35656, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36308, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 0, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35846, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36286, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 0, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 7774, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 36277, 763, 36277, 763, 36277, 0, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36318, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 0, 35471, 36246, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 36277, 763, 36277, 763, 36277, 0, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 36255, 763, 36255, 763, 36255, 0, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36296, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 0, 35471, 36224, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 36255, 763, 36255, 763, 36255, 0, 35471, 35473, 35477, 35537, 35548, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36328, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36306, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36332, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36310, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35481, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36342, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36320, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35481, 35471, 35473, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36346, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36349, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36324, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36327, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 10511, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 2, 2, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36359, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36365, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36337, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36343, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 1, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36375, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36381, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36353, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36359, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36391, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36396, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36369, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36374, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36406, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36410, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36418, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36384, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36388, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36396, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36428, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36406, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35481, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36438, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36231, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36416, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36209, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 9, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36448, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36426, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36458, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36468, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35403, 35406, 35403, 35406, 35403, 35406, 36472, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36034, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
-       {35460, 763, 35460, 763, 35460, 763, 36482, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36485, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36436, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36446, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35403, 35406, 35403, 35406, 35403, 35406, 36450, 35419, 35422, 35436, 35439, 35449, 2601, 35458, 3, 2, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36012, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, 2}, {3, 2}, {3, 2}},
+       {35460, 763, 35460, 763, 35460, 763, 36460, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36463, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 2471, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36489, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36467, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 14, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {763, 35460, 763, 35460, 763, 35460, 35586, 35471, 35473, 35477, 35588, 35598, 2601, 35458, 0, 0, 0, 0, 1, 2, 2, 2, {3, -1}, {3, 0}, {3, 0}},
-       {35460, 763, 35460, 763, 35460, 763, 36492, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36500, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36279, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36505, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35473, 35477, 35644, 35449, 35656, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36470, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36478, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36257, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36483, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 763, 35460, 763, 35460, 763, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36256, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 36287, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 763, 35460, 763, 35460, 763, 36234, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36265, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35439, 35449, 2601, 35458, 5, 1, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36508, 35471, 36246, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36508, 35471, 36246, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36486, 35471, 36224, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {763, 35460, 763, 35460, 763, 35460, 36486, 35471, 36224, 35477, 35439, 35449, 2601, 35458, 0, 0, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
        {35460, 35462, 35460, 35462, 35460, 35462, 35534, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 12, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 763, 35460, 763, 35460, 763, 36500, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35460, 35460, 35460, 35460, 35460, 36041, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 36261, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {35460, 35462, 35460, 35462, 35460, 35462, 36184, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 763, 35460, 763, 35460, 763, 36478, 35471, 35473, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35460, 35460, 35460, 35460, 35460, 36019, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36239, 35471, 0, 35477, 35439, 35449, 2601, 35458, 8, 3, 1, 1, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
+       {35460, 35462, 35460, 35462, 35460, 35462, 36162, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 0, 1, 1, 1, 2, 2, 2, {3, 0}, {3, 0}, {3, 0}},
        {35460, 35462, 35460, 35462, 35460, 35462, 0, 35471, 0, 35477, 35616, 35624, 2601, 35458, 8, 3, 0, 0, 3, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}},
-       {763, 35460, 763, 35460, 763, 35460, 36235, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}}
+       {763, 35460, 763, 35460, 763, 35460, 36213, 35471, 0, 35477, 35439, 35449, 2601, 35458, 2, 2, 0, 0, 1, 2, 2, 2, {3, -1}, {3, -1}, {3, -1}}
 };
 
 
 static const CultureInfoEntry culture_entries [] = {
-       {0x0001, 0x007F, 768, -1, 36512, 36515, 36522, 36537, 36541, 36512, 0, {0, 0, 36545, 0}, 0, 0, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0002, 0x007F, 257, -1, 36573, 36576, 36586, 36605, 36609, 36573, 0, {36613, 0, 0, 0}, 1, 1, { 1251, 21025, 10007, 866, 0, ';' }},
-       {0x0003, 0x007F, 257, -1, 36655, 36658, 36666, 36674, 36678, 36655, 0, {36682, 0, 0, 0}, 2, 2, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0004, 0x0004, 257, -1, 36702, 36709, 36737, 36744, 36748, 36752, 0, {36755, 0, 0, 0}, 3, 3, { 936, 500, 10008, 936, 0, ',' }},
-       {0x0004, 0x7804, 257, -1, 36762, 36770, 36737, 36744, 36748, 36752, 0, {36755, 0, 0, 0}, 4, 4, { 936, 500, 10008, 936, 0, ',' }},
-       {0x0005, 0x007F, 257, -1, 36791, 36794, 36800, 36810, 36814, 36791, 0, {36818, 0, 0, 0}, 5, 5, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x0006, 0x007F, 257, -1, 36844, 36847, 36854, 36860, 36864, 36844, 0, {36868, 0, 0, 0}, 6, 6, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0007, 0x007F, 257, -1, 36889, 36892, 36899, 36907, 36911, 36889, 0, {36915, 0, 0, 0}, 7, 7, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0008, 0x007F, 257, -1, 36940, 36943, 36949, 36966, 36970, 36940, 0, {36974, 0, 0, 0}, 8, 8, { 1253, 20273, 10006, 737, 0, ';' }},
-       {0x0009, 0x007F, 257, -1, 37016, 37019, 37019, 37027, 37031, 37016, 0, {37035, 0, 0, 0}, 9, 9, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x000A, 0x007F, 257, -1, 37054, 37057, 37065, 37074, 37078, 37054, 0, {37082, 0, 0, 0}, 10, 10, { 1252, 20284, 10000, 850, 0, ';' }},
-       {0x000B, 0x007F, 257, -1, 37104, 37107, 37115, 37121, 37125, 37104, 0, {37129, 0, 0, 0}, 11, 11, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x000C, 0x007F, 257, -1, 37154, 37157, 37164, 37174, 37178, 37154, 0, {37182, 0, 0, 0}, 12, 12, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x000D, 0x007F, 257, -1, 37204, 37207, 37214, 37225, 37229, 37204, 0, {37233, 0, 0, 0}, 13, 13, { 1255, 500, 10005, 862, 1, ',' }},
-       {0x000E, 0x007F, 257, -1, 37266, 37269, 37279, 37286, 37290, 37266, 0, {37294, 0, 0, 0}, 14, 14, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x000F, 0x007F, 257, -1, 37310, 37313, 37323, 37333, 37337, 37310, 0, {37341, 0, 0, 0}, 15, 15, { 1252, 20871, 10079, 850, 0, ';' }},
-       {0x0010, 0x007F, 257, -1, 37361, 37364, 37372, 37381, 37385, 37361, 0, {37082, 0, 0, 0}, 16, 16, { 1252, 20280, 10000, 850, 0, ';' }},
-       {0x0011, 0x007F, 257, -1, 37389, 37392, 37401, 37411, 37415, 37389, 0, {37419, 0, 0, 0}, 17, 17, { 932, 20290, 10001, 932, 0, ',' }},
-       {0x0012, 0x007F, 257, -1, 37446, 37449, 37456, 37466, 37470, 37446, 0, {37474, 0, 0, 0}, 18, 18, { 949, 20833, 10003, 949, 0, ',' }},
-       {0x0013, 0x007F, 257, -1, 37484, 37487, 37493, 37504, 37508, 37484, 0, {37512, 0, 0, 0}, 19, 19, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0014, 0x007F, 257, -1, 37534, 37537, 37547, 37553, 37557, 37561, 0, {36868, 0, 0, 0}, 20, 20, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0015, 0x007F, 257, -1, 37564, 37567, 37574, 37581, 37585, 37564, 0, {37589, 0, 0, 0}, 21, 21, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0016, 0x007F, 257, -1, 37613, 37616, 37627, 37638, 37642, 37613, 0, {37646, 0, 0, 0}, 22, 22, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0017, 0x007F, 257, -1, 37669, 37672, 37680, 37690, 37694, 37669, 0, {37698, 0, 0, 0}, 23, 23, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0018, 0x007F, 257, -1, 37718, 37721, 37730, 37739, 37743, 37718, 0, {37747, 0, 0, 0}, 24, 24, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0019, 0x007F, 257, -1, 37766, 37769, 37777, 37792, 37796, 37766, 0, {37800, 0, 0, 0}, 25, 25, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x001A, 0x007F, 257, -1, 37846, 37849, 37858, 37867, 37871, 37846, 0, {37875, 0, 0, 0}, 26, 26, { 1250, 500, 10082, 852, 0, ';' }},
-       {0x001B, 0x007F, 257, -1, 37898, 37901, 37908, 37920, 37924, 37898, 0, {37928, 0, 0, 0}, 27, 27, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x001C, 0x007F, 257, -1, 37952, 37955, 37964, 37970, 37974, 37952, 0, {0, 0, 0, 0}, 28, 28, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x001D, 0x007F, 257, -1, 37978, 37981, 37989, 37997, 38001, 37978, 0, {36868, 0, 0, 0}, 29, 29, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x001E, 0x007F, 512, -1, 38005, 38008, 38013, 38023, 38027, 38005, 0, {0, 38031, 0, 0}, 30, 30, { 874, 20838, 10021, 874, 0, ',' }},
-       {0x001F, 0x007F, 257, -1, 38062, 38065, 38073, 38082, 38086, 38062, 0, {38090, 0, 0, 0}, 31, 31, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x0020, 0x007F, 257, -1, 38104, 38107, 38112, 38121, 38125, 38104, 0, {38129, 0, 0, 0}, 32, 32, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0021, 0x007F, 257, -1, 38159, 38162, 38173, 38190, 38194, 38159, 0, {38198, 0, 0, 0}, 33, 33, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0022, 0x007F, 257, -1, 38217, 38220, 38230, 38251, 38255, 38217, 0, {38259, 0, 0, 0}, 34, 34, { 1251, 500, 10017, 866, 0, ';' }},
-       {0x0023, 0x007F, 257, -1, 38305, 38308, 38319, 38340, 38344, 38305, 0, {38348, 0, 0, 0}, 35, 35, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0024, 0x007F, 257, -1, 38390, 38393, 38403, 38417, 38421, 38390, 0, {38425, 0, 0, 0}, 36, 36, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0025, 0x007F, 257, -1, 38447, 38450, 38459, 38465, 38469, 38447, 0, {38473, 0, 0, 0}, 37, 37, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0026, 0x007F, 257, -1, 38493, 38496, 38504, 38514, 38518, 38493, 0, {38522, 0, 0, 0}, 38, 38, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0027, 0x007F, 257, -1, 38541, 38544, 38555, 38565, 38569, 38541, 0, {38573, 0, 0, 0}, 39, 39, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0028, 0x007F, 257, -1, 38596, 38599, 0, 38605, 38609, 38596, 0, {0, 0, 0, 0}, 40, 40, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0029, 0x007F, 257, -1, 38613, 38616, 38624, 38635, 38639, 38613, 0, {38643, 0, 0, 0}, 41, 41, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x002A, 0x007F, 257, -1, 38667, 38670, 38681, 38696, 4121, 38667, 0, {38700, 0, 0, 0}, 42, 42, { 1258, 500, 10000, 1258, 0, ',' }},
-       {0x002B, 0x007F, 257, -1, 38715, 38718, 38727, 38742, 38746, 38715, 0, {0, 0, 0, 0}, 43, 43, { 0, 500, 2, 1, 0, ',' }},
-       {0x002C, 0x007F, 257, -1, 14519, 38750, 38762, 38776, 38780, 14519, 0, {38784, 0, 0, 0}, 44, 44, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x002D, 0x007F, 257, -1, 38802, 38805, 38812, 38820, 38824, 38802, 0, {38828, 0, 0, 0}, 45, 45, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x002F, 0x007F, 257, -1, 38848, 38851, 38862, 38883, 38887, 38848, 0, {38891, 0, 0, 0}, 46, 46, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0032, 0x007F, 257, -1, 38935, 38938, 38945, 38954, 38958, 38935, 0, {0, 0, 0, 0}, 47, 47, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0034, 0x007F, 257, -1, 38962, 38965, 38971, 38980, 38984, 38962, 0, {0, 0, 0, 0}, 48, 48, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0035, 0x007F, 257, -1, 38988, 38991, 38996, 39004, 39008, 38988, 0, {39012, 0, 0, 0}, 49, 49, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0036, 0x007F, 257, -1, 39033, 39036, 39036, 39046, 39050, 39033, 0, {39054, 0, 0, 0}, 50, 50, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0037, 0x007F, 257, -1, 39074, 39077, 39086, 39108, 39112, 39074, 0, {39116, 0, 0, 0}, 51, 51, { 0, 500, 2, 1, 0, ';' }},
-       {0x0038, 0x007F, 257, -1, 39181, 39184, 39192, 39202, 39206, 39181, 0, {0, 0, 0, 0}, 52, 52, { 1252, 20277, 10079, 850, 0, ';' }},
-       {0x0039, 0x007F, 257, -1, 39210, 39213, 39219, 39238, 39242, 39210, 0, {39246, 0, 0, 0}, 53, 53, { 0, 500, 2, 1, 0, ',' }},
-       {0x003A, 0x007F, 257, -1, 39287, 39290, 39298, 39304, 39308, 39287, 0, {39312, 0, 0, 0}, 54, 54, { 0, 500, 2, 1, 0, ',' }},
-       {0x003B, 0x007F, 257, -1, 39333, 39336, 39350, 39367, 39371, 39333, 0, {0, 0, 0, 0}, 55, 55, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x003C, 0x007F, 257, -1, 39375, 39378, 39384, 39392, 39396, 39375, 0, {39400, 0, 0, 0}, 56, 56, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x003E, 0x007F, 257, -1, 39421, 39424, 39430, 39444, 39448, 39421, 0, {39452, 0, 0, 0}, 57, 57, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x003F, 0x007F, 257, -1, 39469, 39472, 39479, 39499, 39503, 39469, 0, {39507, 0, 0, 0}, 58, 58, { 0, 500, 2, 1, 0, ';' }},
-       {0x0040, 0x007F, 257, -1, 39549, 39552, 39560, 39573, 39577, 39549, 0, {0, 0, 0, 0}, 59, 59, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0041, 0x007F, 257, -1, 39581, 39584, 39592, 39602, 39606, 39581, 0, {39610, 0, 0, 0}, 60, 60, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0043, 0x007F, 257, -1, 39631, 39634, 39640, 39651, 39655, 39631, 0, {0, 0, 0, 0}, 61, 61, { 1254, 500, 10029, 857, 0, ';' }},
-       {0x0045, 0x007F, 257, -1, 39659, 39662, 39670, 39686, 39690, 39659, 0, {39694, 0, 0, 0}, 62, 62, { 0, 500, 2, 1, 0, ',' }},
-       {0x0046, 0x007F, 257, -1, 39759, 39762, 39770, 39789, 39793, 39759, 0, {0, 0, 0, 0}, 63, 63, { 0, 500, 2, 1, 0, ',' }},
-       {0x0047, 0x007F, 257, -1, 39797, 39800, 39809, 39831, 39835, 39797, 0, {39839, 0, 0, 0}, 64, 64, { 0, 500, 2, 1, 0, ',' }},
-       {0x0048, 0x007F, 257, -1, 14525, 39895, 39901, 39917, 39921, 14525, 0, {0, 0, 0, 0}, 65, 65, { 0, 500, 2, 1, 0, ',' }},
-       {0x0049, 0x007F, 257, -1, 39925, 39928, 39934, 39950, 39954, 39925, 0, {39958, 0, 0, 0}, 66, 66, { 0, 500, 2, 1, 0, ',' }},
-       {0x004A, 0x007F, 257, -1, 40023, 40026, 40033, 40052, 40056, 40023, 0, {40060, 0, 0, 0}, 67, 67, { 0, 500, 2, 1, 0, ',' }},
-       {0x004B, 0x007F, 257, -1, 35857, 40125, 40133, 40149, 40153, 35857, 0, {40157, 0, 0, 0}, 68, 68, { 0, 500, 2, 1, 0, ',' }},
-       {0x004C, 0x007F, 257, -1, 40228, 40231, 40241, 40260, 40264, 40228, 0, {40268, 0, 0, 0}, 69, 69, { 0, 500, 2, 1, 0, ',' }},
-       {0x004D, 0x007F, 257, -1, 14516, 40318, 40327, 40349, 40353, 14516, 0, {40357, 0, 0, 0}, 70, 70, { 0, 500, 2, 1, 0, ',' }},
-       {0x004E, 0x007F, 257, -1, 40410, 40413, 40421, 40437, 2565, 40410, 0, {40441, 0, 0, 0}, 71, 71, { 0, 500, 2, 1, 0, ',' }},
-       {0x0050, 0x007F, 257, -1, 40503, 40506, 40516, 40529, 40533, 40503, 0, {0, 0, 0, 0}, 72, 72, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0051, 0x007F, 257, -1, 40537, 40540, 40548, 40573, 40577, 40537, 0, {0, 0, 0, 0}, 73, 73, { 0, 500, 2, 1, 0, ',' }},
-       {0x0052, 0x007F, 257, -1, 40581, 40584, 40590, 40598, 40602, 40581, 0, {0, 0, 0, 0}, 74, 74, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0053, 0x007F, 257, -1, 40606, 40609, 40615, 40643, 40647, 40606, 0, {0, 0, 0, 0}, 75, 75, { 0, 500, 2, 1, 0, ',' }},
-       {0x0054, 0x007F, 257, -1, 40651, 40654, 40658, 40668, 40672, 40651, 0, {0, 0, 0, 0}, 76, 76, { 0, 500, 2, 1, 0, ',' }},
-       {0x0056, 0x007F, 257, -1, 40676, 40679, 40688, 40695, 40699, 40676, 0, {37082, 0, 0, 0}, 77, 77, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0057, 0x007F, 257, -1, 40703, 40707, 40715, 40734, 40703, 40703, 0, {0, 0, 0, 0}, 78, 78, { 0, 500, 2, 1, 0, ',' }},
-       {0x005B, 0x007F, 257, -1, 40738, 40741, 40749, 40765, 40769, 40738, 0, {40773, 0, 0, 0}, 79, 79, { 0, 500, 2, 1, 0, ',' }},
-       {0x005E, 0x007F, 257, -1, 7865, 40795, 40803, 40816, 40820, 7865, 0, {40824, 0, 0, 0}, 80, 80, { 0, 500, 2, 1, 0, ';' }},
-       {0x005F, 0x007F, 257, -1, 40869, 40873, 40899, 40909, 40869, 40869, 0, {0, 0, 0, 0}, 81, 81, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0061, 0x007F, 257, -1, 2059, 40913, 40920, 40939, 40943, 2059, 0, {40947, 0, 0, 0}, 82, 82, { 0, 500, 2, 1, 0, ',' }},
-       {0x0063, 0x007F, 1024, -1, 40997, 41000, 41007, 41016, 41020, 40997, 0, {0, 0, 0, 0}, 83, 83, { 0, 500, 2, 1, 1, ';' }},
-       {0x0064, 0x007F, 257, -1, 41024, 41028, 41028, 41037, 41024, 41024, 0, {41041, 0, 0, 0}, 84, 84, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0068, 0x007F, 257, -1, 41064, 41067, 41067, 41073, 41077, 41064, 0, {0, 0, 0, 0}, 85, 85, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x006A, 0x007F, 257, -1, 41081, 41084, 41091, 41106, 41110, 41081, 0, {0, 0, 0, 0}, 86, 86, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x006C, 0x007F, 257, -1, 41114, 41118, 41133, 41150, 41114, 41114, 0, {0, 0, 0, 0}, 87, 87, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x006F, 0x007F, 257, -1, 41154, 41157, 41169, 41181, 41185, 41154, 0, {0, 0, 0, 0}, 88, 88, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0070, 0x007F, 257, -1, 14510, 41189, 41189, 41194, 41198, 14510, 0, {0, 0, 0, 0}, 89, 89, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x0078, 0x007F, 257, -1, 41202, 41205, 41216, 41226, 41230, 41202, 0, {41234, 0, 0, 0}, 90, 90, { 0, 500, 2, 1, 0, ',' }},
-       {0x007E, 0x007F, 257, -1, 41247, 41250, 41257, 41267, 41271, 41247, 0, {41275, 0, 0, 0}, 91, 91, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0082, 0x007F, 257, -1, 41295, 41298, 41306, 41314, 41318, 41295, 0, {0, 0, 0, 0}, 92, 92, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0084, 0x007F, 257, -1, 41322, 41326, 41339, 41358, 41322, 41322, 0, {41362, 0, 0, 0}, 93, 93, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0085, 0x007F, 257, -1, 41387, 41391, 41397, 41415, 41387, 41387, 0, {0, 0, 0, 0}, 94, 94, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0087, 0x007F, 257, -1, 41419, 41422, 41422, 41434, 41438, 41419, 0, {0, 0, 0, 0}, 95, 95, { 1252, 37, 10000, 437, 0, ';' }},
-       {0x0091, 0x007F, 257, -1, 41442, 41445, 41461, 41471, 41475, 41442, 0, {41479, 0, 0, 0}, 96, 96, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0401, 0x0001, 768, 98, 41504, 41510, 41532, 36537, 36541, 36512, 13258, {0, 0, 36545, 0}, 97, 97, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0402, 0x0002, 257, 11, 41596, 41602, 41623, 36605, 36609, 36573, 41661, {36613, 0, 0, 0}, 98, 98, { 1251, 21025, 10007, 866, 0, ';' }},
-       {0x0403, 0x0003, 257, 32, 41664, 41670, 41686, 36674, 36678, 36655, 41704, {36682, 0, 0, 0}, 99, 99, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0404, 0x7C04, 257, 110, 41707, 41713, 41735, 41751, 36748, 36752, 41755, {41758, 0, 0, 0}, 100, 100, { 950, 500, 10002, 950, 0, ',' }},
-       {0x0405, 0x0005, 257, 24, 41765, 41771, 41794, 36810, 36814, 36791, 41824, {36818, 0, 0, 0}, 101, 101, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x0406, 0x0006, 257, 26, 41827, 41833, 41850, 36860, 36864, 36844, 41866, {36868, 0, 0, 0}, 102, 102, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0407, 0x0007, 257, 25, 41869, 41875, 41892, 36907, 36911, 36889, 41914, {36915, 0, 0, 0}, 103, 103, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0408, 0x0008, 257, 40, 41917, 41923, 41938, 36966, 36970, 36940, 41970, {36974, 0, 0, 0}, 104, 104, { 1253, 20273, 10006, 737, 0, ';' }},
-       {0x0409, 0x0009, 257, 112, 41973, 41979, 41979, 37027, 37031, 37016, 42003, {37035, 0, 0, 0}, 105, 105, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x040B, 0x000B, 257, 34, 42006, 42012, 42030, 37121, 37125, 37104, 42044, {37129, 0, 0, 0}, 106, 106, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x040C, 0x000C, 257, 36, 42047, 42053, 42069, 37174, 37178, 37154, 42088, {37182, 0, 0, 0}, 107, 107, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x040D, 0x000D, 257, 48, 42091, 42097, 42113, 37225, 37229, 37204, 42137, {37233, 0, 0, 0}, 108, 108, { 1255, 500, 10005, 862, 1, ',' }},
-       {0x040E, 0x000E, 257, 45, 42140, 42146, 42166, 37286, 37290, 37266, 42189, {37294, 0, 0, 0}, 109, 109, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x040F, 0x000F, 257, 52, 42192, 42198, 42218, 37333, 37337, 37310, 42238, {37341, 0, 0, 0}, 110, 110, { 1252, 20871, 10079, 850, 0, ';' }},
-       {0x0410, 0x0010, 257, 53, 42241, 42247, 42263, 37381, 37385, 37361, 42281, {37082, 0, 0, 0}, 111, 111, { 1252, 20280, 10000, 850, 0, ';' }},
-       {0x0411, 0x0011, 257, 56, 42284, 42290, 42307, 37411, 37415, 37389, 42326, {37419, 0, 0, 0}, 112, 112, { 932, 20290, 10001, 932, 0, ',' }},
-       {0x0412, 0x0012, 257, 60, 42329, 42335, 42356, 37466, 37470, 37446, 42381, {37474, 0, 0, 0}, 113, 113, { 949, 20833, 10003, 949, 0, ',' }},
-       {0x0413, 0x0013, 257, 80, 42384, 42390, 42410, 37504, 37508, 37484, 42433, {37512, 0, 0, 0}, 114, 114, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0414, 0x7C14, 257, 81, 42436, 42442, 42469, 37553, 37557, 37561, 42491, {36868, 0, 0, 0}, 115, 115, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0415, 0x0015, 257, 89, 42494, 42500, 42516, 37581, 37585, 37564, 42532, {37589, 0, 0, 0}, 116, 116, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0416, 0x0016, 257, 15, 42535, 42541, 42561, 37638, 37642, 37613, 42581, {37646, 0, 0, 0}, 117, 117, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0417, 0x0017, 257, 19, 42584, 42590, 42612, 37690, 37694, 37669, 13261, {37698, 0, 0, 0}, 118, 118, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0418, 0x0018, 257, 94, 42631, 42637, 42656, 37739, 37743, 37718, 42676, {37747, 0, 0, 0}, 119, 119, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0419, 0x0019, 257, 96, 42679, 42685, 42702, 37792, 37796, 37766, 42732, {37800, 0, 0, 0}, 120, 120, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x041A, 0x001A, 257, 44, 42735, 42741, 42760, 37867, 37871, 37846, 42780, {37875, 0, 0, 0}, 121, 121, { 1250, 500, 10082, 852, 0, ';' }},
-       {0x041B, 0x001B, 257, 102, 42783, 42789, 42807, 37920, 37924, 37898, 42842, {37928, 0, 0, 0}, 122, 122, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x041C, 0x001C, 257, 2, 42845, 42851, 42870, 37970, 37974, 37952, 42889, {0, 0, 0, 0}, 123, 123, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x041D, 0x001D, 257, 99, 42892, 42898, 42915, 37997, 38001, 37978, 42933, {36868, 0, 0, 0}, 124, 124, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x041E, 0x001E, 512, 105, 42936, 42942, 42958, 38023, 38027, 38005, 42980, {0, 38031, 0, 0}, 125, 125, { 874, 20838, 10021, 874, 0, ',' }},
-       {0x041F, 0x001F, 257, 108, 42983, 42989, 43006, 38082, 38086, 38062, 43026, {38090, 0, 0, 0}, 126, 126, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x0420, 0x0020, 257, 88, 43029, 43035, 43051, 38121, 38125, 38104, 43077, {38129, 0, 0, 0}, 127, 127, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0421, 0x0021, 257, 46, 43080, 43086, 43109, 38190, 38194, 38159, 43138, {38198, 0, 0, 0}, 128, 128, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0422, 0x0022, 257, 111, 43141, 43147, 43167, 38251, 38255, 38217, 43205, {38259, 0, 0, 0}, 129, 129, { 1251, 500, 10017, 866, 0, ';' }},
-       {0x0423, 0x0023, 257, 16, 43208, 43214, 43235, 38340, 38344, 38305, 43275, {38348, 0, 0, 0}, 130, 130, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0424, 0x0024, 257, 101, 43278, 43284, 43305, 38417, 38421, 38390, 43331, {38425, 0, 0, 0}, 131, 131, { 1250, 20880, 10029, 852, 0, ';' }},
-       {0x0425, 0x0025, 257, 30, 43334, 43340, 43359, 38465, 38469, 38447, 43373, {38473, 0, 0, 0}, 132, 132, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0426, 0x0026, 257, 68, 43376, 43382, 43399, 38514, 38518, 38493, 43419, {38522, 0, 0, 0}, 133, 133, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0427, 0x0027, 257, 66, 43422, 43428, 43451, 38565, 38569, 38541, 43471, {38573, 0, 0, 0}, 134, 134, { 1257, 500, 10029, 775, 0, ';' }},
-       {0x0428, 0x7C28, 257, 106, 43474, 43485, 0, 38605, 38609, 38596, 43514, {0, 0, 0, 0}, 135, 135, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0429, 0x0029, 257, 51, 43517, 43523, 43538, 38635, 38639, 38613, 43562, {38643, 0, 0, 0}, 136, 136, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x042A, 0x002A, 257, 116, 43565, 43571, 43592, 38696, 4121, 38667, 43620, {38700, 0, 0, 0}, 137, 137, { 1258, 500, 10000, 1258, 0, ',' }},
-       {0x042B, 0x002B, 257, 3, 43623, 43629, 43648, 38742, 38746, 38715, 3781, {0, 0, 0, 0}, 138, 138, { 0, 500, 2, 1, 0, ',' }},
-       {0x042C, 0x782C, 257, 7, 43713, 43724, 43756, 38776, 38780, 14519, 43784, {38784, 0, 0, 0}, 139, 139, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x042D, 0x002D, 257, 32, 43787, 43793, 43808, 38820, 38824, 38802, 41704, {38828, 0, 0, 0}, 140, 140, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x042F, 0x002F, 257, 73, 43827, 43833, 43856, 38883, 38887, 38848, 43900, {38891, 0, 0, 0}, 141, 141, { 1251, 500, 10007, 866, 0, ';' }},
-       {0x0432, 0x0032, 257, 118, 43903, 43909, 38945, 38954, 38958, 38935, 43931, {0, 0, 0, 0}, 142, 142, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0434, 0x0034, 257, 118, 43934, 43940, 38971, 38980, 38984, 38962, 43931, {0, 0, 0, 0}, 143, 143, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0435, 0x0035, 257, 118, 43961, 43967, 43987, 39004, 39008, 38988, 43931, {39012, 0, 0, 0}, 144, 144, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0436, 0x0036, 257, 118, 44015, 44021, 44046, 39046, 39050, 39033, 43931, {39054, 0, 0, 0}, 145, 145, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0437, 0x0037, 257, 38, 44070, 44076, 44095, 39108, 39112, 39074, 44150, {39116, 0, 0, 0}, 146, 146, { 0, 500, 2, 1, 0, ';' }},
-       {0x0438, 0x0038, 257, 35, 44153, 44159, 44183, 39202, 39206, 39181, 44204, {0, 0, 0, 0}, 147, 147, { 1252, 20277, 10079, 850, 0, ';' }},
-       {0x0439, 0x0039, 257, 49, 44207, 44213, 44227, 39238, 39242, 39210, 44261, {39246, 0, 0, 0}, 148, 148, { 0, 500, 2, 1, 0, ',' }},
-       {0x043A, 0x003A, 257, 75, 44264, 44270, 44286, 39304, 39308, 39287, 44300, {39312, 0, 0, 0}, 149, 149, { 0, 500, 2, 1, 0, ',' }},
-       {0x043B, 0x003B, 257, 81, 44303, 44309, 44332, 39367, 39371, 39333, 42491, {0, 0, 0, 0}, 150, 150, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x043E, 0x003E, 257, 77, 44357, 44363, 44380, 39444, 39448, 39421, 44405, {39452, 0, 0, 0}, 151, 151, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0440, 0x0040, 257, 58, 44408, 44414, 44435, 39573, 39577, 39549, 44471, {0, 0, 0, 0}, 152, 152, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0441, 0x0041, 257, 57, 44474, 44480, 44496, 39602, 39606, 39581, 44514, {39610, 0, 0, 0}, 153, 153, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0443, 0x7C43, 257, 114, 44517, 44528, 44554, 39651, 39655, 39631, 44588, {0, 0, 0, 0}, 154, 154, { 1254, 500, 10029, 857, 0, ';' }},
-       {0x0445, 0x0045, 257, 49, 44591, 44597, 44613, 39686, 39690, 39659, 44261, {39694, 0, 0, 0}, 155, 155, { 0, 500, 2, 1, 0, ',' }},
-       {0x0447, 0x0047, 257, 49, 44644, 44650, 44667, 39831, 39835, 39797, 44261, {39839, 0, 0, 0}, 156, 156, { 0, 500, 2, 1, 0, ',' }},
-       {0x0448, 0x0048, 257, 49, 44704, 44710, 44724, 39917, 39921, 14525, 44261, {0, 0, 0, 0}, 157, 157, { 0, 500, 2, 1, 0, ',' }},
-       {0x0449, 0x0049, 257, 49, 44755, 44761, 44775, 39950, 39954, 39925, 44261, {39958, 0, 0, 0}, 158, 158, { 0, 500, 2, 1, 0, ',' }},
-       {0x044A, 0x004A, 257, 49, 44815, 44821, 44836, 40052, 40056, 40023, 44261, {40060, 0, 0, 0}, 159, 159, { 0, 500, 2, 1, 0, ',' }},
-       {0x044B, 0x004B, 257, 49, 44883, 44889, 44905, 40149, 40153, 35857, 44261, {40157, 0, 0, 0}, 160, 160, { 0, 500, 2, 1, 0, ',' }},
-       {0x044C, 0x004C, 257, 49, 44936, 44942, 44960, 40260, 40264, 40228, 44261, {40268, 0, 0, 0}, 161, 161, { 0, 500, 2, 1, 0, ',' }},
-       {0x044D, 0x004D, 257, 49, 45000, 45006, 45023, 40349, 40353, 14516, 44261, {40357, 0, 0, 0}, 162, 162, { 0, 500, 2, 1, 0, ',' }},
-       {0x044E, 0x004E, 257, 49, 45060, 45066, 45082, 40437, 2565, 40410, 44261, {40441, 0, 0, 0}, 163, 163, { 0, 500, 2, 1, 0, ',' }},
-       {0x0451, 0x0051, 257, 21, 45113, 45119, 45135, 40573, 40577, 40537, 13340, {0, 0, 0, 0}, 164, 164, { 0, 500, 2, 1, 0, ',' }},
-       {0x0452, 0x0052, 257, 37, 45181, 45187, 45210, 40598, 40602, 40581, 45233, {0, 0, 0, 0}, 165, 165, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0453, 0x0053, 257, 59, 45236, 45242, 45259, 40643, 40647, 40606, 45311, {0, 0, 0, 0}, 166, 166, { 0, 500, 2, 1, 0, ',' }},
-       {0x0454, 0x0054, 257, 62, 45314, 45320, 45331, 40668, 40672, 40651, 45353, {0, 0, 0, 0}, 167, 167, { 0, 500, 2, 1, 0, ',' }},
-       {0x0456, 0x0056, 257, 32, 45356, 45362, 45379, 40695, 40699, 40676, 41704, {37082, 0, 0, 0}, 168, 168, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0457, 0x0057, 257, 49, 45396, 45403, 45419, 40734, 40703, 40703, 44261, {0, 0, 0, 0}, 169, 169, { 0, 500, 2, 1, 0, ',' }},
-       {0x045B, 0x005B, 257, 65, 45453, 45459, 45479, 40765, 40769, 40738, 45529, {40773, 0, 0, 0}, 170, 170, { 0, 500, 2, 1, 0, ',' }},
-       {0x045E, 0x005E, 257, 33, 45532, 45538, 45557, 40816, 40820, 7865, 45588, {40824, 0, 0, 0}, 171, 171, { 0, 500, 2, 1, 0, ';' }},
-       {0x0461, 0x0061, 257, 82, 45591, 45597, 45612, 40939, 40943, 2059, 45649, {40947, 0, 0, 0}, 172, 172, { 0, 500, 2, 1, 0, ',' }},
-       {0x0463, 0x0063, 1024, 1, 45652, 45658, 45679, 41016, 41020, 40997, 45709, {0, 0, 0, 0}, 173, 173, { 0, 500, 2, 1, 1, ';' }},
-       {0x0464, 0x0064, 257, 87, 45712, 45719, 45742, 41037, 41024, 41024, 45763, {41041, 0, 0, 0}, 174, 174, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x0468, 0x7C68, 257, 78, 45766, 45777, 45800, 41073, 41077, 41064, 45817, {0, 0, 0, 0}, 175, 175, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x046A, 0x006A, 257, 78, 45820, 45826, 45843, 41106, 41110, 41081, 45817, {0, 0, 0, 0}, 176, 176, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x046C, 0x006C, 257, 118, 45889, 45896, 41133, 41150, 41114, 41114, 43931, {0, 0, 0, 0}, 177, 177, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x046F, 0x006F, 257, 39, 45926, 45932, 45956, 41181, 41185, 41154, 45987, {0, 0, 0, 0}, 178, 178, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0470, 0x0070, 257, 78, 45990, 45996, 45996, 41194, 41198, 14510, 45817, {0, 0, 0, 0}, 179, 179, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x0478, 0x0078, 257, 21, 46011, 46017, 46036, 41226, 41230, 41202, 13340, {41234, 0, 0, 0}, 180, 180, { 0, 500, 2, 1, 0, ',' }},
-       {0x047E, 0x007E, 257, 36, 46055, 46061, 46077, 41267, 41271, 41247, 42088, {41275, 0, 0, 0}, 181, 181, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0482, 0x0082, 257, 36, 46096, 46102, 46119, 41314, 41318, 41295, 42088, {0, 0, 0, 0}, 182, 182, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0485, 0x0085, 257, 96, 46137, 46144, 41397, 41415, 41387, 41387, 42732, {0, 0, 0, 0}, 183, 183, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0487, 0x0087, 257, 97, 46159, 46165, 46165, 41434, 41438, 41419, 46186, {0, 0, 0, 0}, 184, 184, { 1252, 37, 10000, 437, 0, ';' }},
-       {0x0491, 0x0091, 257, 37, 46189, 46195, 46228, 41471, 41475, 41442, 45233, {41479, 0, 0, 0}, 185, 185, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x0801, 0x0001, 257, 50, 46264, 46270, 46284, 46314, 36541, 36512, 46318, {36545, 0, 0, 0}, 186, 186, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0804, 0x0004, 257, 21, 46321, 36770, 46327, 36744, 36748, 36752, 13340, {36755, 0, 0, 0}, 187, 187, { 936, 500, 10008, 936, 0, ',' }},
-       {0x0807, 0x0007, 257, 19, 46343, 46349, 46370, 46388, 36911, 36889, 13261, {36915, 0, 0, 0}, 188, 188, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0809, 0x0009, 257, 37, 46392, 46398, 46398, 46423, 37031, 37016, 45233, {37035, 0, 0, 0}, 189, 189, { 1252, 20285, 10000, 850, 0, ',' }},
-       {0x080A, 0x000A, 257, 76, 46427, 46433, 46450, 46469, 37078, 37054, 46473, {37082, 0, 0, 0}, 190, 190, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x080C, 0x000C, 257, 10, 46476, 46482, 46499, 46520, 37178, 37154, 46524, {37182, 0, 0, 0}, 191, 191, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0810, 0x0010, 257, 19, 46527, 46533, 46555, 46575, 37385, 37361, 13261, {37082, 0, 0, 0}, 192, 192, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0813, 0x0013, 257, 10, 46579, 46585, 46601, 46622, 37508, 37484, 46524, {37512, 0, 0, 0}, 193, 193, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0814, 0x7814, 257, 81, 46626, 46632, 46659, 46675, 46679, 46683, 42491, {36868, 0, 0, 0}, 194, 194, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x0816, 0x0016, 257, 91, 46686, 46692, 46714, 46736, 37642, 37613, 46740, {37646, 0, 0, 0}, 195, 195, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x081D, 0x001D, 257, 34, 46743, 46749, 46767, 46785, 38001, 37978, 42044, {36868, 0, 0, 0}, 196, 196, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x082C, 0x742C, 257, 7, 46789, 46800, 43756, 46835, 38780, 14519, 43784, {38784, 0, 0, 0}, 197, 197, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x083C, 0x003C, 257, 47, 46839, 46845, 46861, 39392, 39396, 39375, 46877, {39400, 0, 0, 0}, 198, 198, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x083E, 0x003E, 257, 13, 46880, 46886, 46901, 46924, 39448, 39421, 46928, {39452, 0, 0, 0}, 199, 199, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x0843, 0x7843, 257, 114, 46931, 46942, 44554, 39651, 39655, 39631, 44588, {0, 0, 0, 0}, 200, 200, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x0845, 0x0045, 257, 9, 46971, 46977, 46998, 47041, 39690, 39659, 47045, {39694, 0, 0, 0}, 201, 201, { 0, 500, 2, 1, 0, ',' }},
-       {0x0850, 0x7C50, 257, 21, 47048, 47059, 40516, 47088, 40533, 40503, 13340, {0, 0, 0, 0}, 202, 202, { 0, 500, 2, 1, 0, ',' }},
-       {0x0C01, 0x0001, 257, 31, 47092, 47098, 47113, 47137, 36541, 36512, 47141, {36545, 0, 0, 0}, 203, 203, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x0C04, 0x7C04, 257, 42, 47144, 47150, 47193, 47230, 36748, 36752, 47234, {41758, 0, 0, 0}, 204, 204, { 950, 500, 10002, 950, 0, ',' }},
-       {0x0C07, 0x0007, 257, 5, 47237, 47243, 47260, 47282, 36911, 36889, 47286, {36915, 0, 0, 0}, 205, 205, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x0C09, 0x0009, 257, 6, 47289, 47295, 47295, 47315, 37031, 37016, 47319, {37035, 0, 0, 0}, 206, 206, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x0C0A, 0x000A, 257, 32, 47322, 47328, 47344, 47363, 37078, 37054, 41704, {37082, 0, 0, 0}, 207, 207, { 1252, 20284, 10000, 850, 0, ';' }},
-       {0x0C0C, 0x000C, 257, 18, 47367, 47373, 47389, 47408, 37178, 37154, 47412, {37182, 0, 0, 0}, 208, 208, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x0C3B, 0x003B, 257, 34, 47415, 47421, 47445, 47471, 47475, 39333, 42044, {0, 0, 0, 0}, 209, 209, { 1252, 20278, 10000, 850, 0, ';' }},
-       {0x1001, 0x0001, 257, 69, 47479, 47485, 47500, 47528, 36541, 36512, 47532, {36545, 0, 0, 0}, 210, 210, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1004, 0x0004, 257, 100, 47535, 47541, 47573, 47592, 36748, 36752, 47596, {36755, 0, 0, 0}, 211, 211, { 936, 500, 10008, 936, 0, ',' }},
-       {0x1007, 0x0007, 257, 67, 47599, 47605, 47625, 47645, 36911, 36889, 47649, {36915, 0, 0, 0}, 212, 212, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x1009, 0x0009, 257, 18, 47652, 47658, 47658, 47675, 37031, 37016, 47412, {37035, 0, 0, 0}, 213, 213, { 1252, 37, 10000, 850, 0, ',' }},
-       {0x100A, 0x000A, 257, 41, 47679, 47685, 47705, 47726, 37078, 37054, 47730, {37082, 0, 0, 0}, 214, 214, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x100C, 0x000C, 257, 19, 47733, 47739, 47760, 47779, 37178, 37154, 13261, {37182, 0, 0, 0}, 215, 215, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x1401, 0x0001, 257, 28, 47783, 47789, 47806, 47838, 36541, 36512, 47842, {36545, 0, 0, 0}, 216, 216, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1404, 0x7C04, 257, 74, 47845, 47851, 47890, 47927, 36748, 36752, 47931, {41758, 0, 0, 0}, 217, 217, { 950, 500, 10002, 950, 0, ',' }},
-       {0x1407, 0x0007, 257, 64, 47934, 47940, 47963, 47987, 36911, 36889, 47991, {36915, 0, 0, 0}, 218, 218, { 1252, 20273, 10000, 850, 0, ';' }},
-       {0x1409, 0x0009, 257, 83, 47994, 48000, 48000, 48022, 37031, 37016, 48026, {37035, 0, 0, 0}, 219, 219, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x140A, 0x000A, 257, 23, 48029, 48035, 48056, 48078, 37078, 37054, 48082, {37082, 0, 0, 0}, 220, 220, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x140C, 0x000C, 257, 67, 48085, 48091, 48111, 48134, 37178, 37154, 47649, {37182, 0, 0, 0}, 221, 221, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x1801, 0x0001, 257, 70, 48138, 48144, 48161, 48191, 36541, 36512, 48195, {36545, 0, 0, 0}, 222, 222, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1809, 0x0009, 257, 47, 48198, 48204, 48204, 48222, 37031, 37016, 46877, {37035, 0, 0, 0}, 223, 223, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x180A, 0x000A, 257, 85, 48226, 48232, 48249, 48268, 37078, 37054, 48272, {37082, 0, 0, 0}, 224, 224, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x180C, 0x000C, 257, 71, 48275, 48281, 48297, 48316, 37178, 37154, 48320, {37182, 0, 0, 0}, 225, 225, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x181A, 0x701A, 257, 8, 48323, 48334, 48374, 48426, 48430, 48434, 48437, {48440, 0, 0, 0}, 226, 226, { 1250, 870, 10082, 852, 0, ';' }},
-       {0x1C01, 0x0001, 257, 107, 48463, 48469, 48486, 48512, 36541, 36512, 48516, {36545, 0, 0, 0}, 227, 227, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x1C09, 0x0009, 257, 118, 48519, 48525, 48525, 48548, 37031, 37016, 43931, {37035, 0, 0, 0}, 228, 228, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x1C0A, 0x000A, 257, 27, 48552, 48558, 48587, 48620, 37078, 37054, 48624, {37082, 0, 0, 0}, 229, 229, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x1C1A, 0x6C1A, 257, 8, 48627, 48638, 48374, 48681, 48685, 48434, 48437, {38891, 0, 0, 0}, 230, 230, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x2001, 0x0001, 257, 84, 48689, 48695, 48709, 48737, 36541, 36512, 48741, {36545, 0, 0, 0}, 231, 231, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x2009, 0x0009, 257, 54, 48744, 48750, 48750, 48768, 37031, 37016, 48772, {37035, 0, 0, 0}, 232, 232, { 1252, 500, 10000, 850, 0, ',' }},
-       {0x200A, 0x000A, 257, 115, 48775, 48781, 48801, 48822, 37078, 37054, 48826, {37082, 0, 0, 0}, 233, 233, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x2401, 0x0001, 257, 117, 48829, 48835, 48850, 48878, 36541, 36512, 48882, {36545, 0, 0, 0}, 234, 234, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x240A, 0x000A, 257, 22, 48885, 48891, 48910, 48930, 37078, 37054, 48934, {37082, 0, 0, 0}, 235, 235, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x241A, 0x701A, 257, 95, 48937, 48948, 48972, 49000, 9243, 48434, 49004, {48440, 0, 0, 0}, 236, 236, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x2801, 0x0001, 257, 104, 49007, 49013, 49028, 49056, 36541, 36512, 49060, {36545, 0, 0, 0}, 237, 237, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x2809, 0x0009, 257, 17, 49063, 49069, 49069, 49086, 37031, 37016, 49090, {37035, 0, 0, 0}, 238, 238, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x280A, 0x000A, 257, 86, 49093, 49099, 49114, 49131, 37078, 37054, 49135, {37082, 0, 0, 0}, 239, 239, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x281A, 0x6C1A, 257, 95, 49138, 49149, 48972, 49176, 9243, 48434, 49004, {38891, 0, 0, 0}, 240, 240, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x2C01, 0x0001, 257, 55, 49180, 49186, 49202, 49232, 36541, 36512, 49236, {36545, 0, 0, 0}, 241, 241, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x2C09, 0x0009, 257, 109, 49239, 49245, 49245, 49275, 37031, 37016, 49279, {37035, 0, 0, 0}, 242, 242, { 1252, 500, 10000, 850, 0, ';' }},
-       {0x2C0A, 0x000A, 257, 4, 49282, 49288, 49308, 49329, 37078, 37054, 49333, {37082, 0, 0, 0}, 243, 243, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x2C1A, 0x701A, 257, 72, 49336, 49347, 49375, 49408, 9243, 48434, 49412, {48440, 0, 0, 0}, 244, 244, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x3001, 0x0001, 257, 63, 49415, 49421, 49438, 49466, 36541, 36512, 49470, {36545, 0, 0, 0}, 245, 245, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x3009, 0x0009, 257, 119, 49473, 49479, 49479, 49498, 37031, 37016, 49502, {37035, 0, 0, 0}, 246, 246, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x300A, 0x000A, 257, 29, 49505, 49511, 49529, 49548, 37078, 37054, 49552, {37082, 0, 0, 0}, 247, 247, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x301A, 0x6C1A, 257, 72, 49555, 49566, 49375, 49597, 9243, 48434, 49412, {38891, 0, 0, 0}, 248, 248, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x3401, 0x0001, 257, 61, 49601, 49607, 49623, 49653, 36541, 36512, 49657, {36545, 0, 0, 0}, 249, 249, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x3409, 0x0009, 257, 87, 49660, 49666, 49666, 49688, 37031, 37016, 45763, {37035, 0, 0, 0}, 250, 250, { 1252, 500, 10000, 437, 0, ',' }},
-       {0x340A, 0x000A, 257, 20, 49692, 49698, 49714, 49731, 37078, 37054, 49735, {37082, 0, 0, 0}, 251, 251, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x3801, 0x0001, 257, 0, 49738, 49744, 49774, 49838, 36541, 36512, 49842, {36545, 0, 0, 0}, 252, 252, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x380A, 0x000A, 257, 113, 49845, 49851, 49869, 49888, 37078, 37054, 49892, {37082, 0, 0, 0}, 253, 253, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x3C01, 0x0001, 257, 12, 49895, 49901, 49918, 49950, 36541, 36512, 49954, {36545, 0, 0, 0}, 254, 254, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x3C0A, 0x000A, 257, 92, 49957, 49963, 49982, 50002, 37078, 37054, 50006, {37082, 0, 0, 0}, 255, 255, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x4001, 0x0001, 257, 93, 50009, 50015, 50030, 50054, 36541, 36512, 50058, {36545, 0, 0, 0}, 256, 256, { 1256, 20420, 10004, 720, 1, ';' }},
-       {0x4009, 0x0009, 257, 49, 50061, 50067, 50067, 50083, 37031, 37016, 44261, {37035, 0, 0, 0}, 257, 257, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x400A, 0x000A, 257, 14, 50087, 50093, 50111, 50130, 37078, 37054, 50134, {37082, 0, 0, 0}, 258, 258, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x440A, 0x000A, 257, 103, 50137, 50143, 50165, 50188, 37078, 37054, 50192, {37082, 0, 0, 0}, 259, 259, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x4809, 0x0009, 257, 100, 50195, 50201, 50201, 50221, 37031, 37016, 47596, {37035, 0, 0, 0}, 260, 260, { 1252, 37, 10000, 437, 0, ',' }},
-       {0x480A, 0x000A, 257, 43, 50225, 50231, 50250, 50270, 37078, 37054, 50274, {37082, 0, 0, 0}, 261, 261, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x4C0A, 0x000A, 257, 79, 50277, 50283, 50303, 50324, 37078, 37054, 50328, {37082, 0, 0, 0}, 262, 262, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x500A, 0x000A, 257, 90, 50331, 50337, 50359, 50382, 37078, 37054, 50386, {37082, 0, 0, 0}, 263, 263, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x540A, 0x000A, 257, 112, 50389, 50395, 50419, 50445, 37078, 37054, 42003, {37082, 0, 0, 0}, 264, 264, { 1252, 20284, 10000, 850, 0, ',' }},
-       {0x6C1A, 0x7C1A, 257, -1, 50449, 50457, 50476, 49176, 9243, 48434, 0, {38891, 0, 0, 0}, 265, 265, { 1251, 21025, 10007, 855, 0, ';' }},
-       {0x701A, 0x7C1A, 257, -1, 50489, 50497, 50476, 49000, 9243, 48434, 0, {48440, 0, 0, 0}, 266, 266, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x742C, 0x002C, 257, -1, 50513, 50521, 38762, 46835, 38780, 14519, 0, {38784, 0, 0, 0}, 267, 267, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7804, 0x007F, 257, -1, 36752, 36770, 36737, 36744, 36748, 36752, 0, {36755, 0, 0, 0}, 268, 268, { 936, 500, 10008, 936, 0, ',' }},
-       {0x7814, 0x0014, 257, -1, 46683, 50544, 50562, 46675, 46679, 46683, 0, {36868, 0, 0, 0}, 269, 269, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x781A, 0x007F, 257, -1, 50570, 50573, 50581, 50590, 50594, 50570, 0, {48440, 0, 0, 0}, 270, 270, { 1250, 870, 10082, 852, 0, ';' }},
-       {0x782C, 0x002C, 257, -1, 50598, 50606, 38762, 38776, 38780, 14519, 0, {38784, 0, 0, 0}, 271, 271, { 1254, 20905, 10081, 857, 0, ';' }},
-       {0x7843, 0x0043, 257, -1, 50626, 50634, 39640, 39651, 39655, 39631, 0, {0, 0, 0, 0}, 272, 272, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7850, 0x0050, 257, -1, 50651, 50659, 40516, 50680, 40533, 40503, 0, {0, 0, 0, 0}, 273, 273, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7C04, 0x7804, 257, -1, 50684, 41713, 36737, 41751, 36748, 36752, 0, {41758, 0, 0, 0}, 274, 274, { 950, 500, 10002, 950, 0, ',' }},
-       {0x7C04, 0x7C04, 257, -1, 50692, 50699, 36737, 41751, 36748, 36752, 0, {41758, 0, 0, 0}, 275, 275, { 950, 500, 10002, 950, 0, ',' }},
-       {0x7C14, 0x0014, 257, -1, 37561, 50728, 50746, 37553, 37557, 37561, 0, {36868, 0, 0, 0}, 276, 276, { 1252, 20277, 10000, 850, 0, ';' }},
-       {0x7C1A, 0x007F, 257, -1, 48434, 50760, 50476, 50768, 9243, 48434, 0, {38891, 0, 0, 0}, 277, 277, { 1250, 500, 10029, 852, 0, ';' }},
-       {0x7C28, 0x0028, 257, -1, 50772, 50780, 0, 38605, 38609, 38596, 0, {0, 0, 0, 0}, 278, 278, { 1251, 20880, 10007, 866, 0, ';' }},
-       {0x7C43, 0x0043, 257, -1, 50797, 50805, 39640, 39651, 39655, 39631, 0, {0, 0, 0, 0}, 279, 279, { 1254, 500, 10029, 857, 0, ';' }},
-       {0x7C50, 0x0050, 257, -1, 50819, 50827, 40516, 47088, 40533, 40503, 0, {0, 0, 0, 0}, 280, 280, { 0, 500, 2, 1, 0, ',' }},
-       {0x7C5F, 0x005F, 257, -1, 50849, 50858, 40899, 40909, 40869, 40869, 0, {0, 0, 0, 0}, 281, 281, { 1252, 20297, 10000, 850, 0, ';' }},
-       {0x7C68, 0x0068, 257, -1, 50892, 50900, 41067, 41073, 41077, 41064, 0, {0, 0, 0, 0}, 282, 282, { 1252, 37, 10000, 437, 0, ',' }}
+       {0x0001, 0x007F, 768, -1, 36490, 36493, 36500, 36515, 36519, 36490, 0, {0, 0, 36523, 0}, 0, 0, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0002, 0x007F, 257, -1, 36551, 36554, 36564, 36583, 36587, 36551, 0, {36591, 0, 0, 0}, 1, 1, { 1251, 21025, 10007, 866, 0, ';' }},
+       {0x0003, 0x007F, 257, -1, 36633, 36636, 36644, 36652, 36656, 36633, 0, {36660, 0, 0, 0}, 2, 2, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0004, 0x0004, 257, -1, 36680, 36687, 36715, 36722, 36726, 36730, 0, {36733, 0, 0, 0}, 3, 3, { 936, 500, 10008, 936, 0, ',' }},
+       {0x0004, 0x7804, 257, -1, 36740, 36748, 36715, 36722, 36726, 36730, 0, {36733, 0, 0, 0}, 4, 4, { 936, 500, 10008, 936, 0, ',' }},
+       {0x0005, 0x007F, 257, -1, 36769, 36772, 36778, 36788, 36792, 36769, 0, {36796, 0, 0, 0}, 5, 5, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x0006, 0x007F, 257, -1, 36822, 36825, 36832, 36838, 36842, 36822, 0, {36846, 0, 0, 0}, 6, 6, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0007, 0x007F, 257, -1, 36867, 36870, 36877, 36885, 36889, 36867, 0, {36893, 0, 0, 0}, 7, 7, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0008, 0x007F, 257, -1, 36918, 36921, 36927, 36944, 36948, 36918, 0, {36952, 0, 0, 0}, 8, 8, { 1253, 20273, 10006, 737, 0, ';' }},
+       {0x0009, 0x007F, 257, -1, 36994, 36997, 36997, 37005, 37009, 36994, 0, {37013, 0, 0, 0}, 9, 9, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x000A, 0x007F, 257, -1, 37032, 37035, 37043, 37052, 37056, 37032, 0, {37060, 0, 0, 0}, 10, 10, { 1252, 20284, 10000, 850, 0, ';' }},
+       {0x000B, 0x007F, 257, -1, 37082, 37085, 37093, 37099, 37103, 37082, 0, {37107, 0, 0, 0}, 11, 11, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x000C, 0x007F, 257, -1, 37132, 37135, 37142, 37152, 37156, 37132, 0, {37160, 0, 0, 0}, 12, 12, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x000D, 0x007F, 257, -1, 37182, 37185, 37192, 37203, 37207, 37182, 0, {37211, 0, 0, 0}, 13, 13, { 1255, 500, 10005, 862, 1, ',' }},
+       {0x000E, 0x007F, 257, -1, 37244, 37247, 37257, 37264, 37268, 37244, 0, {37272, 0, 0, 0}, 14, 14, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x000F, 0x007F, 257, -1, 37288, 37291, 37301, 37311, 37315, 37288, 0, {37319, 0, 0, 0}, 15, 15, { 1252, 20871, 10079, 850, 0, ';' }},
+       {0x0010, 0x007F, 257, -1, 37339, 37342, 37350, 37359, 37363, 37339, 0, {37060, 0, 0, 0}, 16, 16, { 1252, 20280, 10000, 850, 0, ';' }},
+       {0x0011, 0x007F, 257, -1, 37367, 37370, 37379, 37389, 37393, 37367, 0, {37397, 0, 0, 0}, 17, 17, { 932, 20290, 10001, 932, 0, ',' }},
+       {0x0012, 0x007F, 257, -1, 37424, 37427, 37434, 37444, 37448, 37424, 0, {37452, 0, 0, 0}, 18, 18, { 949, 20833, 10003, 949, 0, ',' }},
+       {0x0013, 0x007F, 257, -1, 37462, 37465, 37471, 37482, 37486, 37462, 0, {37490, 0, 0, 0}, 19, 19, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0014, 0x007F, 257, -1, 37512, 37515, 37525, 37531, 37535, 37539, 0, {36846, 0, 0, 0}, 20, 20, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0015, 0x007F, 257, -1, 37542, 37545, 37552, 37559, 37563, 37542, 0, {37567, 0, 0, 0}, 21, 21, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0016, 0x007F, 257, -1, 37591, 37594, 37605, 37616, 37620, 37591, 0, {37624, 0, 0, 0}, 22, 22, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0017, 0x007F, 257, -1, 37647, 37650, 37658, 37668, 37672, 37647, 0, {37676, 0, 0, 0}, 23, 23, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0018, 0x007F, 257, -1, 37696, 37699, 37708, 37717, 37721, 37696, 0, {37725, 0, 0, 0}, 24, 24, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0019, 0x007F, 257, -1, 37744, 37747, 37755, 37770, 37774, 37744, 0, {37778, 0, 0, 0}, 25, 25, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x001A, 0x007F, 257, -1, 37824, 37827, 37836, 37845, 37849, 37824, 0, {37853, 0, 0, 0}, 26, 26, { 1250, 500, 10082, 852, 0, ';' }},
+       {0x001B, 0x007F, 257, -1, 37876, 37879, 37886, 37898, 37902, 37876, 0, {37906, 0, 0, 0}, 27, 27, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x001C, 0x007F, 257, -1, 37930, 37933, 37942, 37948, 37952, 37930, 0, {0, 0, 0, 0}, 28, 28, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x001D, 0x007F, 257, -1, 37956, 37959, 37967, 37975, 37979, 37956, 0, {36846, 0, 0, 0}, 29, 29, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x001E, 0x007F, 512, -1, 37983, 37986, 37991, 38001, 38005, 37983, 0, {0, 38009, 0, 0}, 30, 30, { 874, 20838, 10021, 874, 0, ',' }},
+       {0x001F, 0x007F, 257, -1, 38040, 38043, 38051, 38060, 38064, 38040, 0, {38068, 0, 0, 0}, 31, 31, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x0020, 0x007F, 257, -1, 38082, 38085, 38090, 38099, 38103, 38082, 0, {38107, 0, 0, 0}, 32, 32, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0021, 0x007F, 257, -1, 38137, 38140, 38151, 38168, 38172, 38137, 0, {38176, 0, 0, 0}, 33, 33, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0022, 0x007F, 257, -1, 38195, 38198, 38208, 38229, 38233, 38195, 0, {38237, 0, 0, 0}, 34, 34, { 1251, 500, 10017, 866, 0, ';' }},
+       {0x0023, 0x007F, 257, -1, 38283, 38286, 38297, 38318, 38322, 38283, 0, {38326, 0, 0, 0}, 35, 35, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0024, 0x007F, 257, -1, 38368, 38371, 38381, 38395, 38399, 38368, 0, {38403, 0, 0, 0}, 36, 36, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0025, 0x007F, 257, -1, 38425, 38428, 38437, 38443, 38447, 38425, 0, {38451, 0, 0, 0}, 37, 37, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0026, 0x007F, 257, -1, 38471, 38474, 38482, 38492, 38496, 38471, 0, {38500, 0, 0, 0}, 38, 38, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0027, 0x007F, 257, -1, 38519, 38522, 38533, 38543, 38547, 38519, 0, {38551, 0, 0, 0}, 39, 39, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0028, 0x007F, 257, -1, 38574, 38577, 0, 38583, 38587, 38574, 0, {0, 0, 0, 0}, 40, 40, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0029, 0x007F, 257, -1, 38591, 38594, 38602, 38613, 38617, 38591, 0, {38621, 0, 0, 0}, 41, 41, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x002A, 0x007F, 257, -1, 38645, 38648, 38659, 38674, 4121, 38645, 0, {38678, 0, 0, 0}, 42, 42, { 1258, 500, 10000, 1258, 0, ',' }},
+       {0x002B, 0x007F, 257, -1, 38693, 38696, 38705, 38720, 38724, 38693, 0, {0, 0, 0, 0}, 43, 43, { 0, 500, 2, 1, 0, ',' }},
+       {0x002C, 0x007F, 257, -1, 14519, 38728, 38740, 38754, 38758, 14519, 0, {38762, 0, 0, 0}, 44, 44, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x002D, 0x007F, 257, -1, 38780, 38783, 38790, 38798, 38802, 38780, 0, {38806, 0, 0, 0}, 45, 45, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x002F, 0x007F, 257, -1, 38826, 38829, 38840, 38861, 38865, 38826, 0, {38869, 0, 0, 0}, 46, 46, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0032, 0x007F, 257, -1, 38913, 38916, 38923, 38932, 38936, 38913, 0, {0, 0, 0, 0}, 47, 47, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0034, 0x007F, 257, -1, 38940, 38943, 38949, 38958, 38962, 38940, 0, {0, 0, 0, 0}, 48, 48, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0035, 0x007F, 257, -1, 38966, 38969, 38974, 38982, 38986, 38966, 0, {38990, 0, 0, 0}, 49, 49, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0036, 0x007F, 257, -1, 39011, 39014, 39014, 39024, 39028, 39011, 0, {39032, 0, 0, 0}, 50, 50, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0037, 0x007F, 257, -1, 39052, 39055, 39064, 39086, 39090, 39052, 0, {39094, 0, 0, 0}, 51, 51, { 0, 500, 2, 1, 0, ';' }},
+       {0x0038, 0x007F, 257, -1, 39159, 39162, 39170, 39180, 39184, 39159, 0, {0, 0, 0, 0}, 52, 52, { 1252, 20277, 10079, 850, 0, ';' }},
+       {0x0039, 0x007F, 257, -1, 39188, 39191, 39197, 39216, 39220, 39188, 0, {39224, 0, 0, 0}, 53, 53, { 0, 500, 2, 1, 0, ',' }},
+       {0x003A, 0x007F, 257, -1, 39265, 39268, 39276, 39282, 39286, 39265, 0, {39290, 0, 0, 0}, 54, 54, { 0, 500, 2, 1, 0, ',' }},
+       {0x003B, 0x007F, 257, -1, 39311, 39314, 39328, 39345, 39349, 39311, 0, {0, 0, 0, 0}, 55, 55, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x003C, 0x007F, 257, -1, 39353, 39356, 39362, 39370, 39374, 39353, 0, {39378, 0, 0, 0}, 56, 56, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x003E, 0x007F, 257, -1, 39399, 39402, 39408, 39422, 39426, 39399, 0, {39430, 0, 0, 0}, 57, 57, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x003F, 0x007F, 257, -1, 39447, 39450, 39457, 39477, 39481, 39447, 0, {39485, 0, 0, 0}, 58, 58, { 0, 500, 2, 1, 0, ';' }},
+       {0x0040, 0x007F, 257, -1, 39527, 39530, 39538, 39551, 39555, 39527, 0, {0, 0, 0, 0}, 59, 59, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0041, 0x007F, 257, -1, 39559, 39562, 39570, 39580, 39584, 39559, 0, {39588, 0, 0, 0}, 60, 60, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0043, 0x007F, 257, -1, 39609, 39612, 39618, 39629, 39633, 39609, 0, {0, 0, 0, 0}, 61, 61, { 1254, 500, 10029, 857, 0, ';' }},
+       {0x0045, 0x007F, 257, -1, 39637, 39640, 39648, 39664, 39668, 39637, 0, {39672, 0, 0, 0}, 62, 62, { 0, 500, 2, 1, 0, ',' }},
+       {0x0046, 0x007F, 257, -1, 39737, 39740, 39748, 39767, 39771, 39737, 0, {0, 0, 0, 0}, 63, 63, { 0, 500, 2, 1, 0, ',' }},
+       {0x0047, 0x007F, 257, -1, 39775, 39778, 39787, 39809, 39813, 39775, 0, {39817, 0, 0, 0}, 64, 64, { 0, 500, 2, 1, 0, ',' }},
+       {0x0048, 0x007F, 257, -1, 14525, 39873, 39879, 39895, 39899, 14525, 0, {0, 0, 0, 0}, 65, 65, { 0, 500, 2, 1, 0, ',' }},
+       {0x0049, 0x007F, 257, -1, 39903, 39906, 39912, 39928, 39932, 39903, 0, {39936, 0, 0, 0}, 66, 66, { 0, 500, 2, 1, 0, ',' }},
+       {0x004A, 0x007F, 257, -1, 40001, 40004, 40011, 40030, 40034, 40001, 0, {40038, 0, 0, 0}, 67, 67, { 0, 500, 2, 1, 0, ',' }},
+       {0x004B, 0x007F, 257, -1, 35839, 40103, 40111, 40127, 40131, 35839, 0, {40135, 0, 0, 0}, 68, 68, { 0, 500, 2, 1, 0, ',' }},
+       {0x004C, 0x007F, 257, -1, 40206, 40209, 40219, 40238, 40242, 40206, 0, {40246, 0, 0, 0}, 69, 69, { 0, 500, 2, 1, 0, ',' }},
+       {0x004D, 0x007F, 257, -1, 14516, 40296, 40305, 40327, 40331, 14516, 0, {40335, 0, 0, 0}, 70, 70, { 0, 500, 2, 1, 0, ',' }},
+       {0x004E, 0x007F, 257, -1, 40388, 40391, 40399, 40415, 2565, 40388, 0, {40419, 0, 0, 0}, 71, 71, { 0, 500, 2, 1, 0, ',' }},
+       {0x0050, 0x007F, 257, -1, 40481, 40484, 40494, 40507, 40511, 40481, 0, {0, 0, 0, 0}, 72, 72, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0051, 0x007F, 257, -1, 40515, 40518, 40526, 40551, 40555, 40515, 0, {0, 0, 0, 0}, 73, 73, { 0, 500, 2, 1, 0, ',' }},
+       {0x0052, 0x007F, 257, -1, 40559, 40562, 40568, 40576, 40580, 40559, 0, {0, 0, 0, 0}, 74, 74, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0053, 0x007F, 257, -1, 40584, 40587, 40593, 40621, 40625, 40584, 0, {0, 0, 0, 0}, 75, 75, { 0, 500, 2, 1, 0, ',' }},
+       {0x0054, 0x007F, 257, -1, 40629, 40632, 40636, 40646, 40650, 40629, 0, {0, 0, 0, 0}, 76, 76, { 0, 500, 2, 1, 0, ',' }},
+       {0x0056, 0x007F, 257, -1, 40654, 40657, 40666, 40673, 40677, 40654, 0, {37060, 0, 0, 0}, 77, 77, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0057, 0x007F, 257, -1, 40681, 40685, 40693, 40712, 40681, 40681, 0, {0, 0, 0, 0}, 78, 78, { 0, 500, 2, 1, 0, ',' }},
+       {0x005B, 0x007F, 257, -1, 40716, 40719, 40727, 40743, 40747, 40716, 0, {40751, 0, 0, 0}, 79, 79, { 0, 500, 2, 1, 0, ',' }},
+       {0x005E, 0x007F, 257, -1, 7865, 40773, 40781, 40794, 40798, 7865, 0, {40802, 0, 0, 0}, 80, 80, { 0, 500, 2, 1, 0, ';' }},
+       {0x005F, 0x007F, 257, -1, 40847, 40851, 40877, 40887, 40847, 40847, 0, {0, 0, 0, 0}, 81, 81, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0061, 0x007F, 257, -1, 2059, 40891, 40898, 40917, 40921, 2059, 0, {40925, 0, 0, 0}, 82, 82, { 0, 500, 2, 1, 0, ',' }},
+       {0x0063, 0x007F, 1024, -1, 40975, 40978, 40985, 40994, 40998, 40975, 0, {0, 0, 0, 0}, 83, 83, { 0, 500, 2, 1, 1, ';' }},
+       {0x0064, 0x007F, 257, -1, 41002, 41006, 41006, 41015, 41002, 41002, 0, {41019, 0, 0, 0}, 84, 84, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0068, 0x007F, 257, -1, 41042, 41045, 41045, 41051, 41055, 41042, 0, {0, 0, 0, 0}, 85, 85, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x006A, 0x007F, 257, -1, 41059, 41062, 41069, 41084, 41088, 41059, 0, {0, 0, 0, 0}, 86, 86, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x006C, 0x007F, 257, -1, 41092, 41096, 41111, 41128, 41092, 41092, 0, {0, 0, 0, 0}, 87, 87, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x006F, 0x007F, 257, -1, 41132, 41135, 41147, 41159, 41163, 41132, 0, {0, 0, 0, 0}, 88, 88, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0070, 0x007F, 257, -1, 14510, 41167, 41167, 41172, 41176, 14510, 0, {0, 0, 0, 0}, 89, 89, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x0078, 0x007F, 257, -1, 41180, 41183, 41194, 41204, 41208, 41180, 0, {41212, 0, 0, 0}, 90, 90, { 0, 500, 2, 1, 0, ',' }},
+       {0x007E, 0x007F, 257, -1, 41225, 41228, 41235, 41245, 41249, 41225, 0, {41253, 0, 0, 0}, 91, 91, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0082, 0x007F, 257, -1, 41273, 41276, 41284, 41292, 41296, 41273, 0, {0, 0, 0, 0}, 92, 92, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0084, 0x007F, 257, -1, 41300, 41304, 41317, 41336, 41300, 41300, 0, {41340, 0, 0, 0}, 93, 93, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0085, 0x007F, 257, -1, 41365, 41369, 41375, 41393, 41365, 41365, 0, {0, 0, 0, 0}, 94, 94, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0087, 0x007F, 257, -1, 41397, 41400, 41400, 41412, 41416, 41397, 0, {0, 0, 0, 0}, 95, 95, { 1252, 37, 10000, 437, 0, ';' }},
+       {0x0091, 0x007F, 257, -1, 41420, 41423, 41439, 41449, 41453, 41420, 0, {41457, 0, 0, 0}, 96, 96, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0401, 0x0001, 768, 98, 41482, 41488, 41510, 36515, 36519, 36490, 13258, {0, 0, 36523, 0}, 97, 97, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0402, 0x0002, 257, 11, 41574, 41580, 41601, 36583, 36587, 36551, 41639, {36591, 0, 0, 0}, 98, 98, { 1251, 21025, 10007, 866, 0, ';' }},
+       {0x0403, 0x0003, 257, 32, 41642, 41648, 41664, 36652, 36656, 36633, 41682, {36660, 0, 0, 0}, 99, 99, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0404, 0x7C04, 257, 110, 41685, 41691, 41713, 41729, 36726, 36730, 41733, {41736, 0, 0, 0}, 100, 100, { 950, 500, 10002, 950, 0, ',' }},
+       {0x0405, 0x0005, 257, 24, 41743, 41749, 41772, 36788, 36792, 36769, 41802, {36796, 0, 0, 0}, 101, 101, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x0406, 0x0006, 257, 26, 41805, 41811, 41828, 36838, 36842, 36822, 41844, {36846, 0, 0, 0}, 102, 102, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0407, 0x0007, 257, 25, 41847, 41853, 41870, 36885, 36889, 36867, 41892, {36893, 0, 0, 0}, 103, 103, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0408, 0x0008, 257, 40, 41895, 41901, 41916, 36944, 36948, 36918, 41948, {36952, 0, 0, 0}, 104, 104, { 1253, 20273, 10006, 737, 0, ';' }},
+       {0x0409, 0x0009, 257, 112, 41951, 41957, 41957, 37005, 37009, 36994, 41981, {37013, 0, 0, 0}, 105, 105, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x040B, 0x000B, 257, 34, 41984, 41990, 42008, 37099, 37103, 37082, 42022, {37107, 0, 0, 0}, 106, 106, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x040C, 0x000C, 257, 36, 42025, 42031, 42047, 37152, 37156, 37132, 42066, {37160, 0, 0, 0}, 107, 107, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x040D, 0x000D, 257, 48, 42069, 42075, 42091, 37203, 37207, 37182, 42115, {37211, 0, 0, 0}, 108, 108, { 1255, 500, 10005, 862, 1, ',' }},
+       {0x040E, 0x000E, 257, 45, 42118, 42124, 42144, 37264, 37268, 37244, 42167, {37272, 0, 0, 0}, 109, 109, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x040F, 0x000F, 257, 52, 42170, 42176, 42196, 37311, 37315, 37288, 42216, {37319, 0, 0, 0}, 110, 110, { 1252, 20871, 10079, 850, 0, ';' }},
+       {0x0410, 0x0010, 257, 53, 42219, 42225, 42241, 37359, 37363, 37339, 42259, {37060, 0, 0, 0}, 111, 111, { 1252, 20280, 10000, 850, 0, ';' }},
+       {0x0411, 0x0011, 257, 56, 42262, 42268, 42285, 37389, 37393, 37367, 42304, {37397, 0, 0, 0}, 112, 112, { 932, 20290, 10001, 932, 0, ',' }},
+       {0x0412, 0x0012, 257, 60, 42307, 42313, 42334, 37444, 37448, 37424, 42359, {37452, 0, 0, 0}, 113, 113, { 949, 20833, 10003, 949, 0, ',' }},
+       {0x0413, 0x0013, 257, 80, 42362, 42368, 42388, 37482, 37486, 37462, 42411, {37490, 0, 0, 0}, 114, 114, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0414, 0x7C14, 257, 81, 42414, 42420, 42447, 37531, 37535, 37539, 42469, {36846, 0, 0, 0}, 115, 115, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0415, 0x0015, 257, 89, 42472, 42478, 42494, 37559, 37563, 37542, 42510, {37567, 0, 0, 0}, 116, 116, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0416, 0x0016, 257, 15, 42513, 42519, 42539, 37616, 37620, 37591, 42559, {37624, 0, 0, 0}, 117, 117, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0417, 0x0017, 257, 19, 42562, 42568, 42590, 37668, 37672, 37647, 13261, {37676, 0, 0, 0}, 118, 118, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0418, 0x0018, 257, 94, 42609, 42615, 42634, 37717, 37721, 37696, 42654, {37725, 0, 0, 0}, 119, 119, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0419, 0x0019, 257, 96, 42657, 42663, 42680, 37770, 37774, 37744, 42710, {37778, 0, 0, 0}, 120, 120, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x041A, 0x001A, 257, 44, 42713, 42719, 42738, 37845, 37849, 37824, 42758, {37853, 0, 0, 0}, 121, 121, { 1250, 500, 10082, 852, 0, ';' }},
+       {0x041B, 0x001B, 257, 102, 42761, 42767, 42785, 37898, 37902, 37876, 42820, {37906, 0, 0, 0}, 122, 122, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x041C, 0x001C, 257, 2, 42823, 42829, 42848, 37948, 37952, 37930, 42867, {0, 0, 0, 0}, 123, 123, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x041D, 0x001D, 257, 99, 42870, 42876, 42893, 37975, 37979, 37956, 42911, {36846, 0, 0, 0}, 124, 124, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x041E, 0x001E, 512, 105, 42914, 42920, 42936, 38001, 38005, 37983, 42958, {0, 38009, 0, 0}, 125, 125, { 874, 20838, 10021, 874, 0, ',' }},
+       {0x041F, 0x001F, 257, 108, 42961, 42967, 42984, 38060, 38064, 38040, 43004, {38068, 0, 0, 0}, 126, 126, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x0420, 0x0020, 257, 88, 43007, 43013, 43029, 38099, 38103, 38082, 43055, {38107, 0, 0, 0}, 127, 127, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0421, 0x0021, 257, 46, 43058, 43064, 43087, 38168, 38172, 38137, 43116, {38176, 0, 0, 0}, 128, 128, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0422, 0x0022, 257, 111, 43119, 43125, 43145, 38229, 38233, 38195, 43183, {38237, 0, 0, 0}, 129, 129, { 1251, 500, 10017, 866, 0, ';' }},
+       {0x0423, 0x0023, 257, 16, 43186, 43192, 43213, 38318, 38322, 38283, 43253, {38326, 0, 0, 0}, 130, 130, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0424, 0x0024, 257, 101, 43256, 43262, 43283, 38395, 38399, 38368, 43309, {38403, 0, 0, 0}, 131, 131, { 1250, 20880, 10029, 852, 0, ';' }},
+       {0x0425, 0x0025, 257, 30, 43312, 43318, 43337, 38443, 38447, 38425, 43351, {38451, 0, 0, 0}, 132, 132, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0426, 0x0026, 257, 68, 43354, 43360, 43377, 38492, 38496, 38471, 43397, {38500, 0, 0, 0}, 133, 133, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0427, 0x0027, 257, 66, 43400, 43406, 43429, 38543, 38547, 38519, 43449, {38551, 0, 0, 0}, 134, 134, { 1257, 500, 10029, 775, 0, ';' }},
+       {0x0428, 0x7C28, 257, 106, 43452, 43463, 0, 38583, 38587, 38574, 43492, {0, 0, 0, 0}, 135, 135, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0429, 0x0029, 257, 51, 43495, 43501, 43516, 38613, 38617, 38591, 43540, {38621, 0, 0, 0}, 136, 136, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x042A, 0x002A, 257, 116, 43543, 43549, 43570, 38674, 4121, 38645, 43598, {38678, 0, 0, 0}, 137, 137, { 1258, 500, 10000, 1258, 0, ',' }},
+       {0x042B, 0x002B, 257, 3, 43601, 43607, 43626, 38720, 38724, 38693, 3781, {0, 0, 0, 0}, 138, 138, { 0, 500, 2, 1, 0, ',' }},
+       {0x042C, 0x782C, 257, 7, 43691, 43702, 43734, 38754, 38758, 14519, 43762, {38762, 0, 0, 0}, 139, 139, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x042D, 0x002D, 257, 32, 43765, 43771, 43786, 38798, 38802, 38780, 41682, {38806, 0, 0, 0}, 140, 140, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x042F, 0x002F, 257, 73, 43805, 43811, 43834, 38861, 38865, 38826, 43878, {38869, 0, 0, 0}, 141, 141, { 1251, 500, 10007, 866, 0, ';' }},
+       {0x0432, 0x0032, 257, 118, 43881, 43887, 38923, 38932, 38936, 38913, 43909, {0, 0, 0, 0}, 142, 142, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0434, 0x0034, 257, 118, 43912, 43918, 38949, 38958, 38962, 38940, 43909, {0, 0, 0, 0}, 143, 143, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0435, 0x0035, 257, 118, 43939, 43945, 43965, 38982, 38986, 38966, 43909, {38990, 0, 0, 0}, 144, 144, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0436, 0x0036, 257, 118, 43993, 43999, 44024, 39024, 39028, 39011, 43909, {39032, 0, 0, 0}, 145, 145, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0437, 0x0037, 257, 38, 44048, 44054, 44073, 39086, 39090, 39052, 44128, {39094, 0, 0, 0}, 146, 146, { 0, 500, 2, 1, 0, ';' }},
+       {0x0438, 0x0038, 257, 35, 44131, 44137, 44161, 39180, 39184, 39159, 44182, {0, 0, 0, 0}, 147, 147, { 1252, 20277, 10079, 850, 0, ';' }},
+       {0x0439, 0x0039, 257, 49, 44185, 44191, 44205, 39216, 39220, 39188, 44239, {39224, 0, 0, 0}, 148, 148, { 0, 500, 2, 1, 0, ',' }},
+       {0x043A, 0x003A, 257, 75, 44242, 44248, 44264, 39282, 39286, 39265, 44278, {39290, 0, 0, 0}, 149, 149, { 0, 500, 2, 1, 0, ',' }},
+       {0x043B, 0x003B, 257, 81, 44281, 44287, 44310, 39345, 39349, 39311, 42469, {0, 0, 0, 0}, 150, 150, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x043E, 0x003E, 257, 77, 44335, 44341, 44358, 39422, 39426, 39399, 44383, {39430, 0, 0, 0}, 151, 151, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0440, 0x0040, 257, 58, 44386, 44392, 44413, 39551, 39555, 39527, 44449, {0, 0, 0, 0}, 152, 152, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0441, 0x0041, 257, 57, 44452, 44458, 44474, 39580, 39584, 39559, 44492, {39588, 0, 0, 0}, 153, 153, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0443, 0x7C43, 257, 114, 44495, 44506, 44532, 39629, 39633, 39609, 44566, {0, 0, 0, 0}, 154, 154, { 1254, 500, 10029, 857, 0, ';' }},
+       {0x0445, 0x0045, 257, 49, 44569, 44575, 44591, 39664, 39668, 39637, 44239, {39672, 0, 0, 0}, 155, 155, { 0, 500, 2, 1, 0, ',' }},
+       {0x0447, 0x0047, 257, 49, 44622, 44628, 44645, 39809, 39813, 39775, 44239, {39817, 0, 0, 0}, 156, 156, { 0, 500, 2, 1, 0, ',' }},
+       {0x0448, 0x0048, 257, 49, 44682, 44688, 44702, 39895, 39899, 14525, 44239, {0, 0, 0, 0}, 157, 157, { 0, 500, 2, 1, 0, ',' }},
+       {0x0449, 0x0049, 257, 49, 44733, 44739, 44753, 39928, 39932, 39903, 44239, {39936, 0, 0, 0}, 158, 158, { 0, 500, 2, 1, 0, ',' }},
+       {0x044A, 0x004A, 257, 49, 44793, 44799, 44814, 40030, 40034, 40001, 44239, {40038, 0, 0, 0}, 159, 159, { 0, 500, 2, 1, 0, ',' }},
+       {0x044B, 0x004B, 257, 49, 44861, 44867, 44883, 40127, 40131, 35839, 44239, {40135, 0, 0, 0}, 160, 160, { 0, 500, 2, 1, 0, ',' }},
+       {0x044C, 0x004C, 257, 49, 44914, 44920, 44938, 40238, 40242, 40206, 44239, {40246, 0, 0, 0}, 161, 161, { 0, 500, 2, 1, 0, ',' }},
+       {0x044D, 0x004D, 257, 49, 44978, 44984, 45001, 40327, 40331, 14516, 44239, {40335, 0, 0, 0}, 162, 162, { 0, 500, 2, 1, 0, ',' }},
+       {0x044E, 0x004E, 257, 49, 45038, 45044, 45060, 40415, 2565, 40388, 44239, {40419, 0, 0, 0}, 163, 163, { 0, 500, 2, 1, 0, ',' }},
+       {0x0451, 0x0051, 257, 21, 45091, 45097, 45113, 40551, 40555, 40515, 13340, {0, 0, 0, 0}, 164, 164, { 0, 500, 2, 1, 0, ',' }},
+       {0x0452, 0x0052, 257, 37, 45159, 45165, 45188, 40576, 40580, 40559, 45211, {0, 0, 0, 0}, 165, 165, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0453, 0x0053, 257, 59, 45214, 45220, 45237, 40621, 40625, 40584, 45289, {0, 0, 0, 0}, 166, 166, { 0, 500, 2, 1, 0, ',' }},
+       {0x0454, 0x0054, 257, 62, 45292, 45298, 45309, 40646, 40650, 40629, 45331, {0, 0, 0, 0}, 167, 167, { 0, 500, 2, 1, 0, ',' }},
+       {0x0456, 0x0056, 257, 32, 45334, 45340, 45357, 40673, 40677, 40654, 41682, {37060, 0, 0, 0}, 168, 168, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0457, 0x0057, 257, 49, 45374, 45381, 45397, 40712, 40681, 40681, 44239, {0, 0, 0, 0}, 169, 169, { 0, 500, 2, 1, 0, ',' }},
+       {0x045B, 0x005B, 257, 65, 45431, 45437, 45457, 40743, 40747, 40716, 45507, {40751, 0, 0, 0}, 170, 170, { 0, 500, 2, 1, 0, ',' }},
+       {0x045E, 0x005E, 257, 33, 45510, 45516, 45535, 40794, 40798, 7865, 45566, {40802, 0, 0, 0}, 171, 171, { 0, 500, 2, 1, 0, ';' }},
+       {0x0461, 0x0061, 257, 82, 45569, 45575, 45590, 40917, 40921, 2059, 45627, {40925, 0, 0, 0}, 172, 172, { 0, 500, 2, 1, 0, ',' }},
+       {0x0463, 0x0063, 1024, 1, 45630, 45636, 45657, 40994, 40998, 40975, 45687, {0, 0, 0, 0}, 173, 173, { 0, 500, 2, 1, 1, ';' }},
+       {0x0464, 0x0064, 257, 87, 45690, 45697, 45720, 41015, 41002, 41002, 45741, {41019, 0, 0, 0}, 174, 174, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x0468, 0x7C68, 257, 78, 45744, 45755, 45778, 41051, 41055, 41042, 45795, {0, 0, 0, 0}, 175, 175, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x046A, 0x006A, 257, 78, 45798, 45804, 45821, 41084, 41088, 41059, 45795, {0, 0, 0, 0}, 176, 176, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x046C, 0x006C, 257, 118, 45867, 45874, 41111, 41128, 41092, 41092, 43909, {0, 0, 0, 0}, 177, 177, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x046F, 0x006F, 257, 39, 45904, 45910, 45934, 41159, 41163, 41132, 45965, {0, 0, 0, 0}, 178, 178, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0470, 0x0070, 257, 78, 45968, 45974, 45974, 41172, 41176, 14510, 45795, {0, 0, 0, 0}, 179, 179, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x0478, 0x0078, 257, 21, 45989, 45995, 46014, 41204, 41208, 41180, 13340, {41212, 0, 0, 0}, 180, 180, { 0, 500, 2, 1, 0, ',' }},
+       {0x047E, 0x007E, 257, 36, 46033, 46039, 46055, 41245, 41249, 41225, 42066, {41253, 0, 0, 0}, 181, 181, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0482, 0x0082, 257, 36, 46074, 46080, 46097, 41292, 41296, 41273, 42066, {0, 0, 0, 0}, 182, 182, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0485, 0x0085, 257, 96, 46115, 46122, 41375, 41393, 41365, 41365, 42710, {0, 0, 0, 0}, 183, 183, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0487, 0x0087, 257, 97, 46137, 46143, 46143, 41412, 41416, 41397, 46164, {0, 0, 0, 0}, 184, 184, { 1252, 37, 10000, 437, 0, ';' }},
+       {0x0491, 0x0091, 257, 37, 46167, 46173, 46206, 41449, 41453, 41420, 45211, {41457, 0, 0, 0}, 185, 185, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x0801, 0x0001, 257, 50, 46242, 46248, 46262, 46292, 36519, 36490, 46296, {36523, 0, 0, 0}, 186, 186, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0804, 0x0004, 257, 21, 46299, 36748, 46305, 36722, 36726, 36730, 13340, {36733, 0, 0, 0}, 187, 187, { 936, 500, 10008, 936, 0, ',' }},
+       {0x0807, 0x0007, 257, 19, 46321, 46327, 46348, 46366, 36889, 36867, 13261, {36893, 0, 0, 0}, 188, 188, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0809, 0x0009, 257, 37, 46370, 46376, 46376, 46401, 37009, 36994, 45211, {37013, 0, 0, 0}, 189, 189, { 1252, 20285, 10000, 850, 0, ',' }},
+       {0x080A, 0x000A, 257, 76, 46405, 46411, 46428, 46447, 37056, 37032, 46451, {37060, 0, 0, 0}, 190, 190, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x080C, 0x000C, 257, 10, 46454, 46460, 46477, 46498, 37156, 37132, 46502, {37160, 0, 0, 0}, 191, 191, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0810, 0x0010, 257, 19, 46505, 46511, 46533, 46553, 37363, 37339, 13261, {37060, 0, 0, 0}, 192, 192, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0813, 0x0013, 257, 10, 46557, 46563, 46579, 46600, 37486, 37462, 46502, {37490, 0, 0, 0}, 193, 193, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0814, 0x7814, 257, 81, 46604, 46610, 46637, 46653, 46657, 46661, 42469, {36846, 0, 0, 0}, 194, 194, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x0816, 0x0016, 257, 91, 46664, 46670, 46692, 46714, 37620, 37591, 46718, {37624, 0, 0, 0}, 195, 195, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x081D, 0x001D, 257, 34, 46721, 46727, 46745, 46763, 37979, 37956, 42022, {36846, 0, 0, 0}, 196, 196, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x082C, 0x742C, 257, 7, 46767, 46778, 43734, 46813, 38758, 14519, 43762, {38762, 0, 0, 0}, 197, 197, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x083C, 0x003C, 257, 47, 46817, 46823, 46839, 39370, 39374, 39353, 46855, {39378, 0, 0, 0}, 198, 198, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x083E, 0x003E, 257, 13, 46858, 46864, 46879, 46902, 39426, 39399, 46906, {39430, 0, 0, 0}, 199, 199, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x0843, 0x7843, 257, 114, 46909, 46920, 44532, 39629, 39633, 39609, 44566, {0, 0, 0, 0}, 200, 200, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x0845, 0x0045, 257, 9, 46949, 46955, 46976, 47019, 39668, 39637, 47023, {39672, 0, 0, 0}, 201, 201, { 0, 500, 2, 1, 0, ',' }},
+       {0x0850, 0x7C50, 257, 21, 47026, 47037, 40494, 47066, 40511, 40481, 13340, {0, 0, 0, 0}, 202, 202, { 0, 500, 2, 1, 0, ',' }},
+       {0x0C01, 0x0001, 257, 31, 47070, 47076, 47091, 47115, 36519, 36490, 47119, {36523, 0, 0, 0}, 203, 203, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x0C04, 0x7C04, 257, 42, 47122, 47128, 47171, 47208, 36726, 36730, 47212, {41736, 0, 0, 0}, 204, 204, { 950, 500, 10002, 950, 0, ',' }},
+       {0x0C07, 0x0007, 257, 5, 47215, 47221, 47238, 47260, 36889, 36867, 47264, {36893, 0, 0, 0}, 205, 205, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x0C09, 0x0009, 257, 6, 47267, 47273, 47273, 47293, 37009, 36994, 47297, {37013, 0, 0, 0}, 206, 206, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x0C0A, 0x000A, 257, 32, 47300, 47306, 47322, 47341, 37056, 37032, 41682, {37060, 0, 0, 0}, 207, 207, { 1252, 20284, 10000, 850, 0, ';' }},
+       {0x0C0C, 0x000C, 257, 18, 47345, 47351, 47367, 47386, 37156, 37132, 47390, {37160, 0, 0, 0}, 208, 208, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x0C3B, 0x003B, 257, 34, 47393, 47399, 47423, 47449, 47453, 39311, 42022, {0, 0, 0, 0}, 209, 209, { 1252, 20278, 10000, 850, 0, ';' }},
+       {0x1001, 0x0001, 257, 69, 47457, 47463, 47478, 47506, 36519, 36490, 47510, {36523, 0, 0, 0}, 210, 210, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1004, 0x0004, 257, 100, 47513, 47519, 47551, 47570, 36726, 36730, 47574, {36733, 0, 0, 0}, 211, 211, { 936, 500, 10008, 936, 0, ',' }},
+       {0x1007, 0x0007, 257, 67, 47577, 47583, 47603, 47623, 36889, 36867, 47627, {36893, 0, 0, 0}, 212, 212, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x1009, 0x0009, 257, 18, 47630, 47636, 47636, 47653, 37009, 36994, 47390, {37013, 0, 0, 0}, 213, 213, { 1252, 37, 10000, 850, 0, ',' }},
+       {0x100A, 0x000A, 257, 41, 47657, 47663, 47683, 47704, 37056, 37032, 47708, {37060, 0, 0, 0}, 214, 214, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x100C, 0x000C, 257, 19, 47711, 47717, 47738, 47757, 37156, 37132, 13261, {37160, 0, 0, 0}, 215, 215, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x1401, 0x0001, 257, 28, 47761, 47767, 47784, 47816, 36519, 36490, 47820, {36523, 0, 0, 0}, 216, 216, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1404, 0x7C04, 257, 74, 47823, 47829, 47868, 47905, 36726, 36730, 47909, {41736, 0, 0, 0}, 217, 217, { 950, 500, 10002, 950, 0, ',' }},
+       {0x1407, 0x0007, 257, 64, 47912, 47918, 47941, 47965, 36889, 36867, 47969, {36893, 0, 0, 0}, 218, 218, { 1252, 20273, 10000, 850, 0, ';' }},
+       {0x1409, 0x0009, 257, 83, 47972, 47978, 47978, 48000, 37009, 36994, 48004, {37013, 0, 0, 0}, 219, 219, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x140A, 0x000A, 257, 23, 48007, 48013, 48034, 48056, 37056, 37032, 48060, {37060, 0, 0, 0}, 220, 220, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x140C, 0x000C, 257, 67, 48063, 48069, 48089, 48112, 37156, 37132, 47627, {37160, 0, 0, 0}, 221, 221, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x1801, 0x0001, 257, 70, 48116, 48122, 48139, 48169, 36519, 36490, 48173, {36523, 0, 0, 0}, 222, 222, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1809, 0x0009, 257, 47, 48176, 48182, 48182, 48200, 37009, 36994, 46855, {37013, 0, 0, 0}, 223, 223, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x180A, 0x000A, 257, 85, 48204, 48210, 48227, 48246, 37056, 37032, 48250, {37060, 0, 0, 0}, 224, 224, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x180C, 0x000C, 257, 71, 48253, 48259, 48275, 48294, 37156, 37132, 48298, {37160, 0, 0, 0}, 225, 225, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x181A, 0x701A, 257, 8, 48301, 48312, 48352, 48404, 48408, 48412, 48415, {48418, 0, 0, 0}, 226, 226, { 1250, 870, 10082, 852, 0, ';' }},
+       {0x1C01, 0x0001, 257, 107, 48441, 48447, 48464, 48490, 36519, 36490, 48494, {36523, 0, 0, 0}, 227, 227, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x1C09, 0x0009, 257, 118, 48497, 48503, 48503, 48526, 37009, 36994, 43909, {37013, 0, 0, 0}, 228, 228, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x1C0A, 0x000A, 257, 27, 48530, 48536, 48565, 48598, 37056, 37032, 48602, {37060, 0, 0, 0}, 229, 229, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x1C1A, 0x6C1A, 257, 8, 48605, 48616, 48352, 48659, 48663, 48412, 48415, {38869, 0, 0, 0}, 230, 230, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x2001, 0x0001, 257, 84, 48667, 48673, 48687, 48715, 36519, 36490, 48719, {36523, 0, 0, 0}, 231, 231, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x2009, 0x0009, 257, 54, 48722, 48728, 48728, 48746, 37009, 36994, 48750, {37013, 0, 0, 0}, 232, 232, { 1252, 500, 10000, 850, 0, ',' }},
+       {0x200A, 0x000A, 257, 115, 48753, 48759, 48779, 48800, 37056, 37032, 48804, {37060, 0, 0, 0}, 233, 233, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x2401, 0x0001, 257, 117, 48807, 48813, 48828, 48856, 36519, 36490, 48860, {36523, 0, 0, 0}, 234, 234, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x240A, 0x000A, 257, 22, 48863, 48869, 48888, 48908, 37056, 37032, 48912, {37060, 0, 0, 0}, 235, 235, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x241A, 0x701A, 257, 95, 48915, 48926, 48950, 48978, 9243, 48412, 48982, {48418, 0, 0, 0}, 236, 236, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x2801, 0x0001, 257, 104, 48985, 48991, 49006, 49034, 36519, 36490, 49038, {36523, 0, 0, 0}, 237, 237, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x2809, 0x0009, 257, 17, 49041, 49047, 49047, 49064, 37009, 36994, 49068, {37013, 0, 0, 0}, 238, 238, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x280A, 0x000A, 257, 86, 49071, 49077, 49092, 49109, 37056, 37032, 49113, {37060, 0, 0, 0}, 239, 239, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x281A, 0x6C1A, 257, 95, 49116, 49127, 48950, 49154, 9243, 48412, 48982, {38869, 0, 0, 0}, 240, 240, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x2C01, 0x0001, 257, 55, 49158, 49164, 49180, 49210, 36519, 36490, 49214, {36523, 0, 0, 0}, 241, 241, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x2C09, 0x0009, 257, 109, 49217, 49223, 49223, 49253, 37009, 36994, 49257, {37013, 0, 0, 0}, 242, 242, { 1252, 500, 10000, 850, 0, ';' }},
+       {0x2C0A, 0x000A, 257, 4, 49260, 49266, 49286, 49307, 37056, 37032, 49311, {37060, 0, 0, 0}, 243, 243, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x2C1A, 0x701A, 257, 72, 49314, 49325, 49353, 49386, 9243, 48412, 49390, {48418, 0, 0, 0}, 244, 244, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x3001, 0x0001, 257, 63, 49393, 49399, 49416, 49444, 36519, 36490, 49448, {36523, 0, 0, 0}, 245, 245, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x3009, 0x0009, 257, 119, 49451, 49457, 49457, 49476, 37009, 36994, 49480, {37013, 0, 0, 0}, 246, 246, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x300A, 0x000A, 257, 29, 49483, 49489, 49507, 49526, 37056, 37032, 49530, {37060, 0, 0, 0}, 247, 247, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x301A, 0x6C1A, 257, 72, 49533, 49544, 49353, 49575, 9243, 48412, 49390, {38869, 0, 0, 0}, 248, 248, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x3401, 0x0001, 257, 61, 49579, 49585, 49601, 49631, 36519, 36490, 49635, {36523, 0, 0, 0}, 249, 249, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x3409, 0x0009, 257, 87, 49638, 49644, 49644, 49666, 37009, 36994, 45741, {37013, 0, 0, 0}, 250, 250, { 1252, 500, 10000, 437, 0, ',' }},
+       {0x340A, 0x000A, 257, 20, 49670, 49676, 49692, 49709, 37056, 37032, 49713, {37060, 0, 0, 0}, 251, 251, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x3801, 0x0001, 257, 0, 49716, 49722, 49752, 49816, 36519, 36490, 49820, {36523, 0, 0, 0}, 252, 252, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x380A, 0x000A, 257, 113, 49823, 49829, 49847, 49866, 37056, 37032, 49870, {37060, 0, 0, 0}, 253, 253, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x3C01, 0x0001, 257, 12, 49873, 49879, 49896, 49928, 36519, 36490, 49932, {36523, 0, 0, 0}, 254, 254, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x3C0A, 0x000A, 257, 92, 49935, 49941, 49960, 49980, 37056, 37032, 49984, {37060, 0, 0, 0}, 255, 255, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x4001, 0x0001, 257, 93, 49987, 49993, 50008, 50032, 36519, 36490, 50036, {36523, 0, 0, 0}, 256, 256, { 1256, 20420, 10004, 720, 1, ';' }},
+       {0x4009, 0x0009, 257, 49, 50039, 50045, 50045, 50061, 37009, 36994, 44239, {37013, 0, 0, 0}, 257, 257, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x400A, 0x000A, 257, 14, 50065, 50071, 50089, 50108, 37056, 37032, 50112, {37060, 0, 0, 0}, 258, 258, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x440A, 0x000A, 257, 103, 50115, 50121, 50143, 50166, 37056, 37032, 50170, {37060, 0, 0, 0}, 259, 259, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x4809, 0x0009, 257, 100, 50173, 50179, 50179, 50199, 37009, 36994, 47574, {37013, 0, 0, 0}, 260, 260, { 1252, 37, 10000, 437, 0, ',' }},
+       {0x480A, 0x000A, 257, 43, 50203, 50209, 50228, 50248, 37056, 37032, 50252, {37060, 0, 0, 0}, 261, 261, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x4C0A, 0x000A, 257, 79, 50255, 50261, 50281, 50302, 37056, 37032, 50306, {37060, 0, 0, 0}, 262, 262, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x500A, 0x000A, 257, 90, 50309, 50315, 50337, 50360, 37056, 37032, 50364, {37060, 0, 0, 0}, 263, 263, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x540A, 0x000A, 257, 112, 50367, 50373, 50397, 50423, 37056, 37032, 41981, {37060, 0, 0, 0}, 264, 264, { 1252, 20284, 10000, 850, 0, ',' }},
+       {0x6C1A, 0x7C1A, 257, -1, 50427, 50435, 50454, 49154, 9243, 48412, 0, {38869, 0, 0, 0}, 265, 265, { 1251, 21025, 10007, 855, 0, ';' }},
+       {0x701A, 0x7C1A, 257, -1, 50467, 50475, 50454, 48978, 9243, 48412, 0, {48418, 0, 0, 0}, 266, 266, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x742C, 0x002C, 257, -1, 50491, 50499, 38740, 46813, 38758, 14519, 0, {38762, 0, 0, 0}, 267, 267, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7804, 0x007F, 257, -1, 36730, 36748, 36715, 36722, 36726, 36730, 0, {36733, 0, 0, 0}, 268, 268, { 936, 500, 10008, 936, 0, ',' }},
+       {0x7814, 0x0014, 257, -1, 46661, 50522, 50540, 46653, 46657, 46661, 0, {36846, 0, 0, 0}, 269, 269, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x781A, 0x007F, 257, -1, 50548, 50551, 50559, 50568, 50572, 50548, 0, {48418, 0, 0, 0}, 270, 270, { 1250, 870, 10082, 852, 0, ';' }},
+       {0x782C, 0x002C, 257, -1, 50576, 50584, 38740, 38754, 38758, 14519, 0, {38762, 0, 0, 0}, 271, 271, { 1254, 20905, 10081, 857, 0, ';' }},
+       {0x7843, 0x0043, 257, -1, 50604, 50612, 39618, 39629, 39633, 39609, 0, {0, 0, 0, 0}, 272, 272, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7850, 0x0050, 257, -1, 50629, 50637, 40494, 50658, 40511, 40481, 0, {0, 0, 0, 0}, 273, 273, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7C04, 0x7804, 257, -1, 50662, 41691, 36715, 41729, 36726, 36730, 0, {41736, 0, 0, 0}, 274, 274, { 950, 500, 10002, 950, 0, ',' }},
+       {0x7C04, 0x7C04, 257, -1, 50670, 50677, 36715, 41729, 36726, 36730, 0, {41736, 0, 0, 0}, 275, 275, { 950, 500, 10002, 950, 0, ',' }},
+       {0x7C14, 0x0014, 257, -1, 37539, 50706, 50724, 37531, 37535, 37539, 0, {36846, 0, 0, 0}, 276, 276, { 1252, 20277, 10000, 850, 0, ';' }},
+       {0x7C1A, 0x007F, 257, -1, 48412, 50738, 50454, 50746, 9243, 48412, 0, {38869, 0, 0, 0}, 277, 277, { 1250, 500, 10029, 852, 0, ';' }},
+       {0x7C28, 0x0028, 257, -1, 50750, 50758, 0, 38583, 38587, 38574, 0, {0, 0, 0, 0}, 278, 278, { 1251, 20880, 10007, 866, 0, ';' }},
+       {0x7C43, 0x0043, 257, -1, 50775, 50783, 39618, 39629, 39633, 39609, 0, {0, 0, 0, 0}, 279, 279, { 1254, 500, 10029, 857, 0, ';' }},
+       {0x7C50, 0x0050, 257, -1, 50797, 50805, 40494, 47066, 40511, 40481, 0, {0, 0, 0, 0}, 280, 280, { 0, 500, 2, 1, 0, ',' }},
+       {0x7C5F, 0x005F, 257, -1, 50827, 50836, 40877, 40887, 40847, 40847, 0, {0, 0, 0, 0}, 281, 281, { 1252, 20297, 10000, 850, 0, ';' }},
+       {0x7C68, 0x0068, 257, -1, 50870, 50878, 41045, 41051, 41055, 41042, 0, {0, 0, 0, 0}, 282, 282, { 1252, 37, 10000, 437, 0, ',' }}
 };
 
 
 static const CultureInfoNameEntry culture_name_entries [] = {
-       {39033, 50},     /* af */
-       {50914, 145},    /* af-za */
+       {39011, 50},     /* af */
+       {50892, 145},    /* af-za */
        {7865, 80},      /* am */
-       {50920, 171},    /* am-et */
-       {36512, 0},      /* ar */
-       {50926, 252},    /* ar-ae */
-       {50932, 254},    /* ar-bh */
-       {50938, 216},    /* ar-dz */
-       {50944, 203},    /* ar-eg */
-       {50950, 186},    /* ar-iq */
-       {50956, 241},    /* ar-jo */
-       {50962, 249},    /* ar-kw */
-       {50968, 245},    /* ar-lb */
-       {50974, 210},    /* ar-ly */
-       {50980, 222},    /* ar-ma */
-       {50986, 231},    /* ar-om */
-       {50992, 256},    /* ar-qa */
-       {50998, 97},     /* ar-sa */
-       {51004, 237},    /* ar-sy */
-       {51010, 227},    /* ar-tn */
-       {51016, 234},    /* ar-ye */
+       {50898, 171},    /* am-et */
+       {36490, 0},      /* ar */
+       {50904, 252},    /* ar-ae */
+       {50910, 254},    /* ar-bh */
+       {50916, 216},    /* ar-dz */
+       {50922, 203},    /* ar-eg */
+       {50928, 186},    /* ar-iq */
+       {50934, 241},    /* ar-jo */
+       {50940, 249},    /* ar-kw */
+       {50946, 245},    /* ar-lb */
+       {50952, 210},    /* ar-ly */
+       {50958, 222},    /* ar-ma */
+       {50964, 231},    /* ar-om */
+       {50970, 256},    /* ar-qa */
+       {50976, 97},     /* ar-sa */
+       {50982, 237},    /* ar-sy */
+       {50988, 227},    /* ar-tn */
+       {50994, 234},    /* ar-ye */
        {14516, 70},     /* as */
-       {51022, 162},    /* as-in */
+       {51000, 162},    /* as-in */
        {14519, 44},     /* az */
-       {51028, 267},    /* az-cyrl */
-       {51036, 197},    /* az-cyrl-az */
-       {51047, 271},    /* az-latn */
-       {51055, 139},    /* az-latn-az */
-       {38305, 35},     /* be */
-       {51066, 130},    /* be-by */
-       {36573, 1},      /* bg */
-       {51072, 98},     /* bg-bg */
-       {39659, 62},     /* bn */
-       {51078, 201},    /* bn-bd */
-       {51084, 155},    /* bn-in */
-       {40537, 73},     /* bo */
-       {51090, 164},    /* bo-cn */
-       {41247, 91},     /* br */
-       {51096, 181},    /* br-fr */
-       {50570, 270},    /* bs */
-       {36655, 2},      /* ca */
-       {51102, 99},     /* ca-es */
-       {36791, 5},      /* cs */
-       {51108, 101},    /* cs-cz */
-       {40581, 74},     /* cy */
-       {51114, 165},    /* cy-gb */
-       {36844, 6},      /* da */
-       {51120, 102},    /* da-dk */
-       {36889, 7},      /* de */
-       {51126, 205},    /* de-at */
-       {51132, 188},    /* de-ch */
-       {51138, 103},    /* de-de */
-       {51144, 218},    /* de-li */
-       {51150, 212},    /* de-lu */
-       {36940, 8},      /* el */
-       {51156, 104},    /* el-gr */
-       {37016, 9},      /* en */
-       {51162, 206},    /* en-au */
-       {51168, 238},    /* en-bz */
-       {51174, 213},    /* en-ca */
-       {51180, 189},    /* en-gb */
-       {51186, 223},    /* en-ie */
-       {51192, 257},    /* en-in */
-       {51198, 232},    /* en-jm */
-       {51204, 219},    /* en-nz */
-       {51210, 250},    /* en-ph */
-       {51216, 260},    /* en-sg */
-       {51222, 242},    /* en-tt */
-       {51228, 105},    /* en-us */
-       {51234, 228},    /* en-za */
-       {51240, 246},    /* en-zw */
-       {37054, 10},     /* es */
-       {51246, 243},    /* es-ar */
-       {51252, 258},    /* es-bo */
-       {51258, 251},    /* es-cl */
-       {51264, 235},    /* es-co */
-       {51270, 220},    /* es-cr */
-       {51276, 229},    /* es-do */
-       {51282, 247},    /* es-ec */
-       {51288, 207},    /* es-es */
-       {51294, 214},    /* es-gt */
-       {51300, 261},    /* es-hn */
-       {51306, 190},    /* es-mx */
-       {51312, 262},    /* es-ni */
-       {51318, 224},    /* es-pa */
-       {51324, 239},    /* es-pe */
-       {51330, 263},    /* es-pr */
-       {51336, 255},    /* es-py */
-       {51342, 259},    /* es-sv */
-       {51348, 264},    /* es-us */
-       {51354, 253},    /* es-uy */
-       {51360, 233},    /* es-ve */
-       {38447, 37},     /* et */
-       {51366, 132},    /* et-ee */
-       {38802, 45},     /* eu */
-       {51372, 140},    /* eu-es */
-       {38613, 41},     /* fa */
-       {51378, 136},    /* fa-ir */
-       {37104, 11},     /* fi */
-       {51384, 106},    /* fi-fi */
-       {41024, 84},     /* fil */
-       {51390, 174},    /* fil-ph */
-       {39181, 52},     /* fo */
-       {51397, 147},    /* fo-fo */
-       {37154, 12},     /* fr */
-       {51403, 191},    /* fr-be */
-       {51409, 208},    /* fr-ca */
-       {51415, 215},    /* fr-ch */
-       {51421, 107},    /* fr-fr */
-       {51427, 221},    /* fr-lu */
-       {51433, 225},    /* fr-mc */
-       {39375, 56},     /* ga */
-       {51439, 198},    /* ga-ie */
-       {41442, 96},     /* gd */
-       {51445, 185},    /* gd-gb */
-       {40676, 77},     /* gl */
-       {51451, 168},    /* gl-es */
-       {41322, 93},     /* gsw */
-       {39797, 64},     /* gu */
-       {51457, 156},    /* gu-in */
-       {41064, 85},     /* ha */
-       {51463, 282},    /* ha-latn */
-       {51471, 175},    /* ha-latn-ng */
-       {37204, 13},     /* he */
-       {51482, 108},    /* he-il */
-       {39210, 53},     /* hi */
-       {51488, 148},    /* hi-in */
-       {37846, 26},     /* hr */
-       {51494, 121},    /* hr-hr */
-       {37266, 14},     /* hu */
-       {51500, 109},    /* hu-hu */
-       {38715, 43},     /* hy */
-       {51506, 138},    /* hy-am */
-       {38159, 33},     /* id */
-       {51512, 128},    /* id-id */
+       {51006, 267},    /* az-cyrl */
+       {51014, 197},    /* az-cyrl-az */
+       {51025, 271},    /* az-latn */
+       {51033, 139},    /* az-latn-az */
+       {38283, 35},     /* be */
+       {51044, 130},    /* be-by */
+       {36551, 1},      /* bg */
+       {51050, 98},     /* bg-bg */
+       {39637, 62},     /* bn */
+       {51056, 201},    /* bn-bd */
+       {51062, 155},    /* bn-in */
+       {40515, 73},     /* bo */
+       {51068, 164},    /* bo-cn */
+       {41225, 91},     /* br */
+       {51074, 181},    /* br-fr */
+       {50548, 270},    /* bs */
+       {36633, 2},      /* ca */
+       {51080, 99},     /* ca-es */
+       {36769, 5},      /* cs */
+       {51086, 101},    /* cs-cz */
+       {40559, 74},     /* cy */
+       {51092, 165},    /* cy-gb */
+       {36822, 6},      /* da */
+       {51098, 102},    /* da-dk */
+       {36867, 7},      /* de */
+       {51104, 205},    /* de-at */
+       {51110, 188},    /* de-ch */
+       {51116, 103},    /* de-de */
+       {51122, 218},    /* de-li */
+       {51128, 212},    /* de-lu */
+       {36918, 8},      /* el */
+       {51134, 104},    /* el-gr */
+       {36994, 9},      /* en */
+       {51140, 206},    /* en-au */
+       {51146, 238},    /* en-bz */
+       {51152, 213},    /* en-ca */
+       {51158, 189},    /* en-gb */
+       {51164, 223},    /* en-ie */
+       {51170, 257},    /* en-in */
+       {51176, 232},    /* en-jm */
+       {51182, 219},    /* en-nz */
+       {51188, 250},    /* en-ph */
+       {51194, 260},    /* en-sg */
+       {51200, 242},    /* en-tt */
+       {51206, 105},    /* en-us */
+       {51212, 228},    /* en-za */
+       {51218, 246},    /* en-zw */
+       {37032, 10},     /* es */
+       {51224, 243},    /* es-ar */
+       {51230, 258},    /* es-bo */
+       {51236, 251},    /* es-cl */
+       {51242, 235},    /* es-co */
+       {51248, 220},    /* es-cr */
+       {51254, 229},    /* es-do */
+       {51260, 247},    /* es-ec */
+       {51266, 207},    /* es-es */
+       {51272, 214},    /* es-gt */
+       {51278, 261},    /* es-hn */
+       {51284, 190},    /* es-mx */
+       {51290, 262},    /* es-ni */
+       {51296, 224},    /* es-pa */
+       {51302, 239},    /* es-pe */
+       {51308, 263},    /* es-pr */
+       {51314, 255},    /* es-py */
+       {51320, 259},    /* es-sv */
+       {51326, 264},    /* es-us */
+       {51332, 253},    /* es-uy */
+       {51338, 233},    /* es-ve */
+       {38425, 37},     /* et */
+       {51344, 132},    /* et-ee */
+       {38780, 45},     /* eu */
+       {51350, 140},    /* eu-es */
+       {38591, 41},     /* fa */
+       {51356, 136},    /* fa-ir */
+       {37082, 11},     /* fi */
+       {51362, 106},    /* fi-fi */
+       {41002, 84},     /* fil */
+       {51368, 174},    /* fil-ph */
+       {39159, 52},     /* fo */
+       {51375, 147},    /* fo-fo */
+       {37132, 12},     /* fr */
+       {51381, 191},    /* fr-be */
+       {51387, 208},    /* fr-ca */
+       {51393, 215},    /* fr-ch */
+       {51399, 107},    /* fr-fr */
+       {51405, 221},    /* fr-lu */
+       {51411, 225},    /* fr-mc */
+       {39353, 56},     /* ga */
+       {51417, 198},    /* ga-ie */
+       {41420, 96},     /* gd */
+       {51423, 185},    /* gd-gb */
+       {40654, 77},     /* gl */
+       {51429, 168},    /* gl-es */
+       {41300, 93},     /* gsw */
+       {39775, 64},     /* gu */
+       {51435, 156},    /* gu-in */
+       {41042, 85},     /* ha */
+       {51441, 282},    /* ha-latn */
+       {51449, 175},    /* ha-latn-ng */
+       {37182, 13},     /* he */
+       {51460, 108},    /* he-il */
+       {39188, 53},     /* hi */
+       {51466, 148},    /* hi-in */
+       {37824, 26},     /* hr */
+       {51472, 121},    /* hr-hr */
+       {37244, 14},     /* hu */
+       {51478, 109},    /* hu-hu */
+       {38693, 43},     /* hy */
+       {51484, 138},    /* hy-am */
+       {38137, 33},     /* id */
+       {51490, 128},    /* id-id */
        {14510, 89},     /* ig */
-       {51518, 179},    /* ig-ng */
-       {41202, 90},     /* ii */
-       {51524, 180},    /* ii-cn */
-       {37310, 15},     /* is */
-       {51530, 110},    /* is-is */
-       {37361, 16},     /* it */
-       {51536, 192},    /* it-ch */
-       {51542, 111},    /* it-it */
-       {37389, 17},     /* ja */
-       {51548, 112},    /* ja-jp */
-       {39074, 51},     /* ka */
-       {51554, 146},    /* ka-ge */
-       {39469, 58},     /* kk */
-       {41154, 88},     /* kl */
-       {51560, 178},    /* kl-gl */
-       {40606, 75},     /* km */
-       {51566, 166},    /* km-kh */
-       {35857, 68},     /* kn */
-       {51572, 160},    /* kn-in */
-       {37446, 18},     /* ko */
-       {51578, 113},    /* ko-kr */
-       {40703, 78},     /* kok */
-       {51584, 169},    /* kok-in */
-       {39549, 59},     /* ky */
-       {51591, 152},    /* ky-kg */
-       {40651, 76},     /* lo */
-       {51597, 167},    /* lo-la */
-       {38541, 39},     /* lt */
-       {51603, 134},    /* lt-lt */
-       {38493, 38},     /* lv */
-       {51609, 133},    /* lv-lv */
-       {38848, 46},     /* mk */
-       {51615, 141},    /* mk-mk */
-       {40228, 69},     /* ml */
-       {51621, 161},    /* ml-in */
-       {40503, 72},     /* mn */
-       {51627, 273},    /* mn-cyrl */
-       {51635, 280},    /* mn-mong */
-       {51643, 202},    /* mn-mong-cn */
-       {40410, 71},     /* mr */
-       {51654, 163},    /* mr-in */
-       {39421, 57},     /* ms */
-       {51660, 199},    /* ms-bn */
-       {51666, 151},    /* ms-my */
-       {39287, 54},     /* mt */
-       {51672, 149},    /* mt-mt */
-       {37561, 276},    /* nb */
-       {51678, 115},    /* nb-no */
+       {51496, 179},    /* ig-ng */
+       {41180, 90},     /* ii */
+       {51502, 180},    /* ii-cn */
+       {37288, 15},     /* is */
+       {51508, 110},    /* is-is */
+       {37339, 16},     /* it */
+       {51514, 192},    /* it-ch */
+       {51520, 111},    /* it-it */
+       {37367, 17},     /* ja */
+       {51526, 112},    /* ja-jp */
+       {39052, 51},     /* ka */
+       {51532, 146},    /* ka-ge */
+       {39447, 58},     /* kk */
+       {41132, 88},     /* kl */
+       {51538, 178},    /* kl-gl */
+       {40584, 75},     /* km */
+       {51544, 166},    /* km-kh */
+       {35839, 68},     /* kn */
+       {51550, 160},    /* kn-in */
+       {37424, 18},     /* ko */
+       {51556, 113},    /* ko-kr */
+       {40681, 78},     /* kok */
+       {51562, 169},    /* kok-in */
+       {39527, 59},     /* ky */
+       {51569, 152},    /* ky-kg */
+       {40629, 76},     /* lo */
+       {51575, 167},    /* lo-la */
+       {38519, 39},     /* lt */
+       {51581, 134},    /* lt-lt */
+       {38471, 38},     /* lv */
+       {51587, 133},    /* lv-lv */
+       {38826, 46},     /* mk */
+       {51593, 141},    /* mk-mk */
+       {40206, 69},     /* ml */
+       {51599, 161},    /* ml-in */
+       {40481, 72},     /* mn */
+       {51605, 273},    /* mn-cyrl */
+       {51613, 280},    /* mn-mong */
+       {51621, 202},    /* mn-mong-cn */
+       {40388, 71},     /* mr */
+       {51632, 163},    /* mr-in */
+       {39399, 57},     /* ms */
+       {51638, 199},    /* ms-bn */
+       {51644, 151},    /* ms-my */
+       {39265, 54},     /* mt */
+       {51650, 149},    /* mt-mt */
+       {37539, 276},    /* nb */
+       {51656, 115},    /* nb-no */
        {2059, 82},      /* ne */
-       {51684, 172},    /* ne-np */
-       {37484, 19},     /* nl */
-       {51690, 193},    /* nl-be */
-       {51696, 114},    /* nl-nl */
-       {46683, 269},    /* nn */
-       {51702, 194},    /* nn-no */
-       {37534, 20},     /* no */
-       {41114, 87},     /* nso */
-       {51708, 177},    /* nso-za */
-       {41295, 92},     /* oc */
-       {51715, 182},    /* oc-fr */
+       {51662, 172},    /* ne-np */
+       {37462, 19},     /* nl */
+       {51668, 193},    /* nl-be */
+       {51674, 114},    /* nl-nl */
+       {46661, 269},    /* nn */
+       {51680, 194},    /* nn-no */
+       {37512, 20},     /* no */
+       {41092, 87},     /* nso */
+       {51686, 177},    /* nso-za */
+       {41273, 92},     /* oc */
+       {51693, 182},    /* oc-fr */
        {14525, 65},     /* or */
-       {51721, 157},    /* or-in */
-       {39759, 63},     /* pa */
-       {37564, 21},     /* pl */
-       {51727, 116},    /* pl-pl */
-       {40997, 83},     /* ps */
-       {51733, 173},    /* ps-af */
-       {37613, 22},     /* pt */
-       {51739, 117},    /* pt-br */
-       {51745, 195},    /* pt-pt */
-       {37669, 23},     /* rm */
-       {51751, 118},    /* rm-ch */
-       {37718, 24},     /* ro */
-       {51757, 119},    /* ro-ro */
-       {37766, 25},     /* ru */
-       {51763, 120},    /* ru-ru */
-       {41419, 95},     /* rw */
-       {51769, 184},    /* rw-rw */
-       {41387, 94},     /* sah */
-       {51775, 183},    /* sah-ru */
-       {39333, 55},     /* se */
-       {51782, 209},    /* se-fi */
-       {51788, 150},    /* se-no */
-       {40738, 79},     /* si */
-       {51794, 170},    /* si-lk */
-       {37898, 27},     /* sk */
-       {51800, 122},    /* sk-sk */
-       {38390, 36},     /* sl */
-       {51806, 131},    /* sl-si */
-       {37952, 28},     /* sq */
-       {51812, 123},    /* sq-al */
-       {48434, 277},    /* sr */
-       {51818, 265},    /* sr-cyrl */
-       {51826, 230},    /* sr-cyrl-ba */
-       {51837, 248},    /* sr-cyrl-me */
-       {51848, 240},    /* sr-cyrl-rs */
-       {51859, 266},    /* sr-latn */
-       {51867, 226},    /* sr-latn-ba */
-       {51878, 244},    /* sr-latn-me */
-       {51889, 236},    /* sr-latn-rs */
-       {37978, 29},     /* sv */
-       {51900, 196},    /* sv-fi */
-       {51906, 124},    /* sv-se */
-       {39581, 60},     /* sw */
-       {51912, 153},    /* sw-ke */
-       {39925, 66},     /* ta */
-       {51918, 158},    /* ta-in */
-       {40023, 67},     /* te */
-       {51924, 159},    /* te-in */
-       {38596, 40},     /* tg */
-       {51930, 278},    /* tg-cyrl */
-       {51938, 135},    /* tg-cyrl-tj */
-       {38005, 30},     /* th */
-       {51949, 125},    /* th-th */
-       {38935, 47},     /* tn */
-       {51955, 142},    /* tn-za */
-       {38062, 31},     /* tr */
-       {51961, 126},    /* tr-tr */
-       {40869, 81},     /* tzm */
-       {51967, 281},    /* tzm-latn */
-       {38217, 34},     /* uk */
-       {51976, 129},    /* uk-ua */
-       {38104, 32},     /* ur */
-       {51982, 127},    /* ur-pk */
-       {39631, 61},     /* uz */
-       {51988, 272},    /* uz-cyrl */
-       {51996, 200},    /* uz-cyrl-uz */
-       {52007, 279},    /* uz-latn */
-       {52015, 154},    /* uz-latn-uz */
-       {38667, 42},     /* vi */
-       {52026, 137},    /* vi-vn */
-       {38962, 48},     /* xh */
-       {52032, 143},    /* xh-za */
-       {41081, 86},     /* yo */
-       {52038, 176},    /* yo-ng */
-       {36752, 268},    /* zh */
-       {52044, 3},      /* zh-chs */
-       {52051, 275},    /* zh-cht */
-       {52058, 187},    /* zh-cn */
-       {52064, 4},      /* zh-hans */
-       {52072, 274},    /* zh-hant */
-       {52080, 204},    /* zh-hk */
-       {52086, 217},    /* zh-mo */
-       {52092, 211},    /* zh-sg */
-       {52098, 100},    /* zh-tw */
-       {38988, 49},     /* zu */
-       {52104, 144}     /* zu-za */
+       {51699, 157},    /* or-in */
+       {39737, 63},     /* pa */
+       {37542, 21},     /* pl */
+       {51705, 116},    /* pl-pl */
+       {40975, 83},     /* ps */
+       {51711, 173},    /* ps-af */
+       {37591, 22},     /* pt */
+       {51717, 117},    /* pt-br */
+       {51723, 195},    /* pt-pt */
+       {37647, 23},     /* rm */
+       {51729, 118},    /* rm-ch */
+       {37696, 24},     /* ro */
+       {51735, 119},    /* ro-ro */
+       {37744, 25},     /* ru */
+       {51741, 120},    /* ru-ru */
+       {41397, 95},     /* rw */
+       {51747, 184},    /* rw-rw */
+       {41365, 94},     /* sah */
+       {51753, 183},    /* sah-ru */
+       {39311, 55},     /* se */
+       {51760, 209},    /* se-fi */
+       {51766, 150},    /* se-no */
+       {40716, 79},     /* si */
+       {51772, 170},    /* si-lk */
+       {37876, 27},     /* sk */
+       {51778, 122},    /* sk-sk */
+       {38368, 36},     /* sl */
+       {51784, 131},    /* sl-si */
+       {37930, 28},     /* sq */
+       {51790, 123},    /* sq-al */
+       {48412, 277},    /* sr */
+       {51796, 265},    /* sr-cyrl */
+       {51804, 230},    /* sr-cyrl-ba */
+       {51815, 248},    /* sr-cyrl-me */
+       {51826, 240},    /* sr-cyrl-rs */
+       {51837, 266},    /* sr-latn */
+       {51845, 226},    /* sr-latn-ba */
+       {51856, 244},    /* sr-latn-me */
+       {51867, 236},    /* sr-latn-rs */
+       {37956, 29},     /* sv */
+       {51878, 196},    /* sv-fi */
+       {51884, 124},    /* sv-se */
+       {39559, 60},     /* sw */
+       {51890, 153},    /* sw-ke */
+       {39903, 66},     /* ta */
+       {51896, 158},    /* ta-in */
+       {40001, 67},     /* te */
+       {51902, 159},    /* te-in */
+       {38574, 40},     /* tg */
+       {51908, 278},    /* tg-cyrl */
+       {51916, 135},    /* tg-cyrl-tj */
+       {37983, 30},     /* th */
+       {51927, 125},    /* th-th */
+       {38913, 47},     /* tn */
+       {51933, 142},    /* tn-za */
+       {38040, 31},     /* tr */
+       {51939, 126},    /* tr-tr */
+       {40847, 81},     /* tzm */
+       {51945, 281},    /* tzm-latn */
+       {38195, 34},     /* uk */
+       {51954, 129},    /* uk-ua */
+       {38082, 32},     /* ur */
+       {51960, 127},    /* ur-pk */
+       {39609, 61},     /* uz */
+       {51966, 272},    /* uz-cyrl */
+       {51974, 200},    /* uz-cyrl-uz */
+       {51985, 279},    /* uz-latn */
+       {51993, 154},    /* uz-latn-uz */
+       {38645, 42},     /* vi */
+       {52004, 137},    /* vi-vn */
+       {38940, 48},     /* xh */
+       {52010, 143},    /* xh-za */
+       {41059, 86},     /* yo */
+       {52016, 176},    /* yo-ng */
+       {36730, 268},    /* zh */
+       {52022, 3},      /* zh-chs */
+       {52029, 275},    /* zh-cht */
+       {52036, 187},    /* zh-cn */
+       {52042, 4},      /* zh-hans */
+       {52050, 274},    /* zh-hant */
+       {52058, 204},    /* zh-hk */
+       {52064, 217},    /* zh-mo */
+       {52070, 211},    /* zh-sg */
+       {52076, 100},    /* zh-tw */
+       {38966, 49},     /* zu */
+       {52082, 144}     /* zu-za */
 };
 
 
 static const RegionInfoEntry region_entries [] = {
-       { 224,49842,47137,47137,52110,52131,36448,52178,52182,52210},
-       { 3,45709,52234,52234,52238,52250,36228,52269,52273,52288},
-       { 6,42889,52301,52301,52305,52313,35860,52324,52328,0},
-       { 7,3781,48191,48191,52341,52349,36009,52397,52401,0},
-       { 11,49333,47838,47838,52415,52415,35586,49056,52425,52440},
-       { 14,47286,52455,52455,52459,52467,35481,52479,52483,52483},
-       { 12,47319,52488,52488,52492,52492,35586,52502,52506,52506},
-       { 5,43784,38776,38776,52524,52535,36256,52547,52551,52569},
-       { 25,48437,52589,52589,52593,52616,36346,52653,52657,52693},
-       { 23,47045,52736,52736,52740,52751,36294,52776,52780,52797},
-       { 21,46524,38340,38340,52838,52846,35481,52479,52483,52855},
-       { 35,41661,36605,36605,52860,52869,35465,52886,52890,52904},
-       { 17,49954,52930,52930,52934,52942,36458,52957,52961,52976},
-       { 37,46928,53000,53000,53004,53004,35586,53011,53015,53029},
-       { 26,50134,53042,53042,53046,53046,36482,40573,53054,53073},
-       { 32,42581,53083,53083,53087,53094,35751,53101,53105,53120},
-       { 29,43275,53136,53136,53140,53148,0,53165,53169,53186},
-       { 24,49090,53218,53218,53222,53222,35586,53229,53233,53233},
-       { 39,47412,53247,53247,53251,53251,35586,53258,53262,53278},
-       { 223,13261,53294,53294,53298,53310,0,53317,53321,53333},
-       { 46,49735,53347,53347,53351,53351,35586,53357,53361,53374},
-       { 45,13340,53387,53387,53391,53397,36184,53416,53420,53433},
-       { 51,48934,53452,53452,53456,53456,35586,53465,53469,53484},
-       { 54,48082,53500,53500,53504,53504,36328,53515,53519,53538},
-       { 75,41824,53559,53559,53563,53578,35506,53596,53600,53622},
-       { 94,41914,36907,36907,53637,53645,35481,52479,52483,52483},
-       { 61,41866,53657,53657,53661,53669,35534,53677,53681,53694},
-       { 65,48624,53706,53706,53710,53729,35586,53751,53755,53770},
-       { 4,47842,53786,53786,53790,53798,36318,53813,53817,53832},
-       { 66,49552,53856,53856,53860,53860,35586,53868,53872,53882},
-       { 70,43373,50445,50445,53904,53912,35481,52479,52483,52855},
-       { 67,47141,53918,53918,53922,53928,36298,53935,53939,53954},
-       { 217,41704,37074,37074,53972,53978,35481,52479,52483,52855},
-       { 73,45588,53986,53986,53990,53999,36208,54015,54019,54034},
-       { 77,42044,37121,37121,54060,54068,35481,52479,52483,52855},
-       { 81,44204,54074,54074,54078,54092,35534,53677,53681,54101},
-       { 84,42088,37174,37174,54114,54114,35481,52479,52483,52855},
-       { 242,45233,54121,54121,54125,54140,36189,54153,54157,54180},
-       { 88,44150,54202,54202,54206,54214,0,54245,54249,54263},
-       { 93,45987,54298,54298,54302,54312,35534,53677,53681,54329},
-       { 98,41970,54347,54347,54351,54358,35481,52479,52483,54371},
-       { 99,47730,54380,54380,54384,54384,7774,54394,54398,54417},
-       { 104,47234,54438,54438,54442,54462,35586,54490,54494,54511},
-       { 106,50274,54518,54518,54522,54522,2471,54531,54535,54552},
-       { 108,42780,37867,37867,54571,54579,35857,54588,54592,54606},
-       { 109,42189,37286,37286,54611,54619,35636,54633,54637,54654},
-       { 111,43138,54668,54668,54672,54672,35883,54682,54686,54704},
-       { 68,46877,54721,54721,54725,54733,35481,52479,52483,52483},
-       { 117,42137,54739,54739,54743,54750,35632,54761,54765,54784},
-       { 113,44261,38190,38190,54791,54797,36034,54810,54814,54827},
-       { 121,46318,54862,54862,54866,54871,36267,54884,54888,54900},
-       { 116,43562,54922,54922,54926,54931,36001,54942,54946,54959},
-       { 110,42238,37333,37333,54979,54987,35534,54995,54999,55016},
-       { 118,42281,37381,37381,55032,55038,35481,52479,52483,52483},
-       { 124,48772,55045,55045,55049,55049,35586,55057,55061,55061},
-       { 126,49236,55077,55077,55081,55088,36418,55101,55105,55121},
-       { 122,42326,37411,37411,55143,55149,35502,55156,55160,55173},
-       { 129,44514,55183,55183,55187,55187,36048,55193,55197,55213},
-       { 130,44471,55231,55231,55235,55246,36041,55267,55271,0},
-       { 40,45311,40643,40643,55286,55295,36192,55317,55321,55336},
-       { 134,42381,37466,37466,55341,55353,35686,55366,55370,55387},
-       { 136,49657,55404,55404,55408,55415,36438,55428,55432,55446},
-       { 138,45353,40668,40668,55468,40658,36196,55473,55477,55489},
-       { 139,49470,55499,55499,55503,55511,36428,55522,55526,55541},
-       { 145,47991,55563,55563,55567,55567,0,53317,53321,55581},
-       { 42,45529,55599,55599,55603,55613,36200,55645,55649,55666},
-       { 141,43471,55701,55701,55705,55715,35975,55723,55727,55744},
-       { 147,47649,55750,55750,55754,55765,35481,52479,52483,52483},
-       { 140,43419,55775,55775,55779,55786,35933,55794,55798,55811},
-       { 148,47532,55825,55825,55829,55835,36308,55846,55850,55863},
-       { 159,48195,40437,40437,55883,55891,36332,55904,55908,55924},
-       { 158,48320,55944,55944,55948,55948,35481,52479,52483,52855},
-       { 270,49412,55955,55955,55959,55970,35481,52479,52483,55988},
-       { 19618,43900,55993,55993,55997,56007,0,55993,56028,56045},
-       { 151,47931,56077,56077,56081,56097,0,56125,56129,56145},
-       { 163,44300,39304,39304,56155,56155,35481,52479,52483,56161},
-       { 166,46473,56166,56166,56170,56177,35586,56185,56189,56202},
-       { 167,44405,56216,56216,56220,56220,36038,56229,56233,56251},
-       { 175,45817,56268,56268,56272,56280,36235,56289,56293,56308},
-       { 182,50328,56314,56314,56318,56318,36489,56328,56332,56352},
-       { 176,42433,37504,37504,56375,56387,35481,52479,52483,52483},
-       { 177,42491,37553,37553,56397,56404,35534,56410,56414,56430},
-       { 178,45649,56444,56444,56448,56454,36215,56470,56474,0},
-       { 183,48026,56489,56489,56493,56493,35586,56505,56509,56509},
-       { 164,48741,56528,56528,56532,56537,36365,56548,56552,56563},
-       { 192,48272,39789,39789,56583,56590,36342,56598,56602,56620},
-       { 187,49135,56637,56637,56641,56646,36406,56652,56656,56675},
-       { 201,45763,56693,56693,56697,56709,36231,56719,56723,56723},
-       { 190,43077,56739,56739,56743,56752,35878,56767,56771,56787},
-       { 191,42532,56815,56815,56819,56826,35709,56833,56837,56850},
-       { 202,50386,56864,56864,56868,56868,35586,53868,53872,53882},
-       { 193,46740,56880,56880,56884,56884,35481,52479,52483,52483},
-       { 185,50006,56893,56893,56897,56897,36468,56906,56910,56929},
-       { 197,50058,56948,56948,56952,56958,36472,56965,56969,56981},
-       { 200,42676,56999,56999,57003,57011,0,57020,57024,57037},
-       { 271,49004,50768,50768,57051,57058,36391,57071,57075,57089},
-       { 203,42732,37792,37792,57102,57109,35778,57122,57126,57140},
-       { 204,46186,57172,57172,57176,57176,36239,57183,57187,0},
-       { 205,13258,57201,57201,57205,57218,35409,57265,57269,57281},
-       { 221,42933,57301,57301,57305,57312,35534,57320,57324,57338},
-       { 215,47596,57351,57351,57355,57365,0,57375,57379,57396},
-       { 212,43331,57409,57409,57413,57422,35481,52479,52483,57432},
-       { 143,42842,57437,57437,57441,57450,35481,52479,52483,52483},
-       { 72,50192,38417,38417,57471,57471,36485,53868,53872,53882},
-       { 222,49060,57483,57483,57487,57493,36396,57504,57508,57521},
-       { 227,42980,38023,38023,57541,38013,35871,57550,57554,57564},
-       { 228,43514,57583,57583,57587,0,36041,57598,57602,57621},
-       { 234,48516,57634,57634,57638,57646,36349,57655,57659,57674},
-       { 235,43026,57695,57695,57699,57706,35875,57715,57719,57732},
-       { 225,49279,57746,57746,57750,57750,35586,57770,57774,57774},
-       { 237,41755,57801,57801,57805,57812,36242,57819,57823,57841},
-       { 241,43205,38251,38251,57851,57859,35886,57874,57878,57896},
-       { 244,42003,57930,57930,57934,57934,35586,53868,53872,53872},
-       { 246,49892,57948,57948,57952,57952,35586,57960,57964,57979},
-       { 247,44588,39651,39651,57993,58004,36261,58025,58029,58044},
-       { 249,48826,58063,58063,58067,58067,36375,58077,58081,58101},
-       { 251,43620,58121,58121,58125,58133,36005,58144,58148,58164},
-       { 261,48882,58172,58172,58176,58182,36381,58193,58197,58209},
-       { 209,43931,58227,58227,58231,0,10511,58244,58248,0},
-       { 264,49502,58267,58267,58271,58271,35586,53868,53872,53872}
+       { 224,49820,47115,47115,52088,52109,36426,52156,52160,52188},
+       { 3,45687,52212,52212,52216,52228,36206,52247,52251,52266},
+       { 6,42867,52279,52279,52283,52291,35842,52302,52306,0},
+       { 7,3781,48169,48169,52319,52327,35987,52375,52379,0},
+       { 11,49311,47816,47816,52393,52393,35586,49034,52403,52418},
+       { 14,47264,52433,52433,52437,52445,35481,52457,52461,52461},
+       { 12,47297,52466,52466,52470,52470,35586,52480,52484,52484},
+       { 5,43762,38754,38754,52502,52513,36234,52525,52529,52547},
+       { 25,48415,52567,52567,52571,52594,36324,52631,52635,52671},
+       { 23,47023,52714,52714,52718,52729,36272,52754,52758,52775},
+       { 21,46502,38318,38318,52816,52824,35481,52457,52461,52833},
+       { 35,41639,36583,36583,52838,52847,35465,52864,52868,52882},
+       { 17,49932,52908,52908,52912,52920,36436,52935,52939,52954},
+       { 37,46906,52978,52978,52982,52982,35586,52989,52993,53007},
+       { 26,50112,53020,53020,53024,53024,36460,40551,53032,53051},
+       { 32,42559,53061,53061,53065,53072,35735,53079,53083,53098},
+       { 29,43253,53114,53114,53118,53126,0,53143,53147,53164},
+       { 24,49068,53196,53196,53200,53200,35586,53207,53211,53211},
+       { 39,47390,53225,53225,53229,53229,35586,53236,53240,53256},
+       { 223,13261,53272,53272,53276,53288,0,53295,53299,53311},
+       { 46,49713,53325,53325,53329,53329,35586,53335,53339,53352},
+       { 45,13340,53365,53365,53369,53375,36162,53394,53398,53411},
+       { 51,48912,53430,53430,53434,53434,35586,53443,53447,53462},
+       { 54,48060,53478,53478,53482,53482,36306,53493,53497,53516},
+       { 75,41802,53537,53537,53541,53556,35506,53574,53578,53600},
+       { 94,41892,36885,36885,53615,53623,35481,52457,52461,52461},
+       { 61,41844,53635,53635,53639,53647,35534,53655,53659,53672},
+       { 65,48602,53684,53684,53688,53707,35586,53729,53733,53748},
+       { 4,47820,53764,53764,53768,53776,36296,53791,53795,53810},
+       { 66,49530,53834,53834,53838,53838,35586,53846,53850,53860},
+       { 70,43351,50423,50423,53882,53890,35481,52457,52461,52833},
+       { 67,47119,53896,53896,53900,53906,36276,53913,53917,53932},
+       { 217,41682,37052,37052,53950,53956,35481,52457,52461,52833},
+       { 73,45566,53964,53964,53968,53977,36186,53993,53997,54012},
+       { 77,42022,37099,37099,54038,54046,35481,52457,52461,52833},
+       { 81,44182,54052,54052,54056,54070,35534,53655,53659,54079},
+       { 84,42066,37152,37152,54092,54092,35481,52457,52461,52833},
+       { 242,45211,54099,54099,54103,54118,36167,54131,54135,54158},
+       { 88,44128,54180,54180,54184,54192,0,54223,54227,54241},
+       { 93,45965,54276,54276,54280,54290,35534,53655,53659,54307},
+       { 98,41948,54325,54325,54329,54336,35481,52457,52461,54349},
+       { 99,47708,54358,54358,54362,54362,7774,54372,54376,54395},
+       { 104,47212,54416,54416,54420,54440,35586,54468,54472,54489},
+       { 106,50252,54496,54496,54500,54500,2471,54509,54513,54530},
+       { 108,42758,37845,37845,54549,54557,35839,54566,54570,54584},
+       { 109,42167,37264,37264,54589,54597,35636,54611,54615,54632},
+       { 111,43116,54646,54646,54650,54650,35865,54660,54664,54682},
+       { 68,46855,54699,54699,54703,54711,35481,52457,52461,52461},
+       { 117,42115,54717,54717,54721,54728,35632,54739,54743,54762},
+       { 113,44239,38168,38168,54769,54775,36012,54788,54792,54805},
+       { 121,46296,54840,54840,54844,54849,36245,54862,54866,54878},
+       { 116,43540,54900,54900,54904,54909,35979,54920,54924,54937},
+       { 110,42216,37311,37311,54957,54965,35534,54973,54977,54994},
+       { 118,42259,37359,37359,55010,55016,35481,52457,52461,52461},
+       { 124,48750,55023,55023,55027,55027,35586,55035,55039,55039},
+       { 126,49214,55055,55055,55059,55066,36396,55079,55083,55099},
+       { 122,42304,37389,37389,55121,55127,35502,55134,55138,55151},
+       { 129,44492,55161,55161,55165,55165,36026,55171,55175,55191},
+       { 130,44449,55209,55209,55213,55224,36019,55245,55249,0},
+       { 40,45289,40621,40621,55264,55273,36170,55295,55299,55314},
+       { 134,42359,37444,37444,55319,55331,35670,55344,55348,55365},
+       { 136,49635,55382,55382,55386,55393,36416,55406,55410,55424},
+       { 138,45331,40646,40646,55446,40636,36174,55451,55455,55467},
+       { 139,49448,55477,55477,55481,55489,36406,55500,55504,55519},
+       { 145,47969,55541,55541,55545,55545,0,53295,53299,55559},
+       { 42,45507,55577,55577,55581,55591,36178,55623,55627,55644},
+       { 141,43449,55679,55679,55683,55693,35955,55701,55705,55722},
+       { 147,47627,55728,55728,55732,55743,35481,52457,52461,52461},
+       { 140,43397,55753,55753,55757,55764,35915,55772,55776,55789},
+       { 148,47510,55803,55803,55807,55813,36286,55824,55828,55841},
+       { 159,48173,40415,40415,55861,55869,36310,55882,55886,55902},
+       { 158,48298,55922,55922,55926,55926,35481,52457,52461,52833},
+       { 270,49390,55933,55933,55937,55948,35481,52457,52461,55966},
+       { 19618,43878,55971,55971,55975,55985,0,55971,56006,56023},
+       { 151,47909,56055,56055,56059,56075,0,56103,56107,56123},
+       { 163,44278,39282,39282,56133,56133,35481,52457,52461,56139},
+       { 166,46451,56144,56144,56148,56155,35586,56163,56167,56180},
+       { 167,44383,56194,56194,56198,56198,36016,56207,56211,56229},
+       { 175,45795,56246,56246,56250,56258,36213,56267,56271,56286},
+       { 182,50306,56292,56292,56296,56296,36467,56306,56310,56330},
+       { 176,42411,37482,37482,56353,56365,35481,52457,52461,52461},
+       { 177,42469,37531,37531,56375,56382,35534,56388,56392,56408},
+       { 178,45627,56422,56422,56426,56432,36193,56448,56452,0},
+       { 183,48004,56467,56467,56471,56471,35586,56483,56487,56487},
+       { 164,48719,56506,56506,56510,56515,36343,56526,56530,56541},
+       { 192,48250,39767,39767,56561,56568,36320,56576,56580,56598},
+       { 187,49113,56615,56615,56619,56624,36384,56630,56634,56653},
+       { 201,45741,56671,56671,56675,56687,36209,56697,56701,56701},
+       { 190,43055,56717,56717,56721,56730,35860,56745,56749,56765},
+       { 191,42510,56793,56793,56797,56804,35693,56811,56815,56828},
+       { 202,50364,56842,56842,56846,56846,35586,53846,53850,53860},
+       { 193,46718,56858,56858,56862,56862,35481,52457,52461,52461},
+       { 185,49984,56871,56871,56875,56875,36446,56884,56888,56907},
+       { 197,50036,56926,56926,56930,56936,36450,56943,56947,56959},
+       { 200,42654,56977,56977,56981,56989,0,56998,57002,57015},
+       { 271,48982,50746,50746,57029,57036,36369,57049,57053,57067},
+       { 203,42710,37770,37770,57080,57087,35760,57100,57104,57118},
+       { 204,46164,57150,57150,57154,57154,36217,57161,57165,0},
+       { 205,13258,57179,57179,57183,57196,35409,57243,57247,57259},
+       { 221,42911,57279,57279,57283,57290,35534,57298,57302,57316},
+       { 215,47574,57329,57329,57333,57343,0,57353,57357,57374},
+       { 212,43309,57387,57387,57391,57400,35481,52457,52461,57410},
+       { 143,42820,57415,57415,57419,57428,35481,52457,52461,52461},
+       { 72,50170,38395,38395,57449,57449,36463,53846,53850,53860},
+       { 222,49038,57461,57461,57465,57471,36374,57482,57486,57499},
+       { 227,42958,38001,38001,57519,37991,35853,57528,57532,57542},
+       { 228,43492,57561,57561,57565,0,36019,57576,57580,57599},
+       { 234,48494,57612,57612,57616,57624,36327,57633,57637,57652},
+       { 235,43004,57673,57673,57677,57684,35857,57693,57697,57710},
+       { 225,49257,57724,57724,57728,57728,35586,57748,57752,57752},
+       { 237,41733,57779,57779,57783,57790,36220,57797,57801,57819},
+       { 241,43183,38229,38229,57829,57837,35868,57852,57856,57874},
+       { 244,41981,57908,57908,57912,57912,35586,53846,53850,53850},
+       { 246,49870,57926,57926,57930,57930,35586,57938,57942,57957},
+       { 247,44566,39629,39629,57971,57982,36239,58003,58007,58022},
+       { 249,48804,58041,58041,58045,58045,36353,58055,58059,58079},
+       { 251,43598,58099,58099,58103,58111,35983,58122,58126,58142},
+       { 261,48860,58150,58150,58154,58160,36359,58171,58175,58187},
+       { 209,43909,58205,58205,58209,0,10511,58222,58226,0},
+       { 264,49480,58245,58245,58249,58249,35586,53846,53850,53850}
 };
 
 
 static const RegionInfoNameEntry region_name_entries [] = {
-       {49842, 0},      /* AE */
-       {45709, 1},      /* AF */
-       {42889, 2},      /* AL */
+       {49820, 0},      /* AE */
+       {45687, 1},      /* AF */
+       {42867, 2},      /* AL */
        {3781, 3},       /* AM */
-       {49333, 4},      /* AR */
-       {47286, 5},      /* AT */
-       {47319, 6},      /* AU */
-       {43784, 7},      /* AZ */
-       {48437, 8},      /* BA */
-       {47045, 9},      /* BD */
-       {46524, 10},     /* BE */
-       {41661, 11},     /* BG */
-       {49954, 12},     /* BH */
-       {46928, 13},     /* BN */
-       {50134, 14},     /* BO */
-       {42581, 15},     /* BR */
-       {43275, 16},     /* BY */
-       {49090, 17},     /* BZ */
-       {47412, 18},     /* CA */
+       {49311, 4},      /* AR */
+       {47264, 5},      /* AT */
+       {47297, 6},      /* AU */
+       {43762, 7},      /* AZ */
+       {48415, 8},      /* BA */
+       {47023, 9},      /* BD */
+       {46502, 10},     /* BE */
+       {41639, 11},     /* BG */
+       {49932, 12},     /* BH */
+       {46906, 13},     /* BN */
+       {50112, 14},     /* BO */
+       {42559, 15},     /* BR */
+       {43253, 16},     /* BY */
+       {49068, 17},     /* BZ */
+       {47390, 18},     /* CA */
        {13261, 19},     /* CH */
-       {49735, 20},     /* CL */
+       {49713, 20},     /* CL */
        {13340, 21},     /* CN */
-       {48934, 22},     /* CO */
-       {48082, 23},     /* CR */
-       {41824, 24},     /* CZ */
-       {41914, 25},     /* DE */
-       {41866, 26},     /* DK */
-       {48624, 27},     /* DO */
-       {47842, 28},     /* DZ */
-       {49552, 29},     /* EC */
-       {43373, 30},     /* EE */
-       {47141, 31},     /* EG */
-       {41704, 32},     /* ES */
-       {45588, 33},     /* ET */
-       {42044, 34},     /* FI */
-       {44204, 35},     /* FO */
-       {42088, 36},     /* FR */
-       {45233, 37},     /* GB */
-       {44150, 38},     /* GE */
-       {45987, 39},     /* GL */
-       {41970, 40},     /* GR */
-       {47730, 41},     /* GT */
-       {47234, 42},     /* HK */
-       {50274, 43},     /* HN */
-       {42780, 44},     /* HR */
-       {42189, 45},     /* HU */
-       {43138, 46},     /* ID */
-       {46877, 47},     /* IE */
-       {42137, 48},     /* IL */
-       {44261, 49},     /* IN */
-       {46318, 50},     /* IQ */
-       {43562, 51},     /* IR */
-       {42238, 52},     /* IS */
-       {42281, 53},     /* IT */
-       {48772, 54},     /* JM */
-       {49236, 55},     /* JO */
-       {42326, 56},     /* JP */
-       {44514, 57},     /* KE */
-       {44471, 58},     /* KG */
-       {45311, 59},     /* KH */
-       {42381, 60},     /* KR */
-       {49657, 61},     /* KW */
-       {45353, 62},     /* LA */
-       {49470, 63},     /* LB */
-       {47991, 64},     /* LI */
-       {45529, 65},     /* LK */
-       {43471, 66},     /* LT */
-       {47649, 67},     /* LU */
-       {43419, 68},     /* LV */
-       {47532, 69},     /* LY */
-       {48195, 70},     /* MA */
-       {48320, 71},     /* MC */
-       {49412, 72},     /* ME */
-       {43900, 73},     /* MK */
-       {47931, 74},     /* MO */
-       {44300, 75},     /* MT */
-       {46473, 76},     /* MX */
-       {44405, 77},     /* MY */
-       {45817, 78},     /* NG */
-       {50328, 79},     /* NI */
-       {42433, 80},     /* NL */
-       {42491, 81},     /* NO */
-       {45649, 82},     /* NP */
-       {48026, 83},     /* NZ */
-       {48741, 84},     /* OM */
-       {48272, 85},     /* PA */
-       {49135, 86},     /* PE */
-       {45763, 87},     /* PH */
-       {43077, 88},     /* PK */
-       {42532, 89},     /* PL */
-       {50386, 90},     /* PR */
-       {46740, 91},     /* PT */
-       {50006, 92},     /* PY */
-       {50058, 93},     /* QA */
-       {42676, 94},     /* RO */
-       {49004, 95},     /* RS */
-       {42732, 96},     /* RU */
-       {46186, 97},     /* RW */
+       {48912, 22},     /* CO */
+       {48060, 23},     /* CR */
+       {41802, 24},     /* CZ */
+       {41892, 25},     /* DE */
+       {41844, 26},     /* DK */
+       {48602, 27},     /* DO */
+       {47820, 28},     /* DZ */
+       {49530, 29},     /* EC */
+       {43351, 30},     /* EE */
+       {47119, 31},     /* EG */
+       {41682, 32},     /* ES */
+       {45566, 33},     /* ET */
+       {42022, 34},     /* FI */
+       {44182, 35},     /* FO */
+       {42066, 36},     /* FR */
+       {45211, 37},     /* GB */
+       {44128, 38},     /* GE */
+       {45965, 39},     /* GL */
+       {41948, 40},     /* GR */
+       {47708, 41},     /* GT */
+       {47212, 42},     /* HK */
+       {50252, 43},     /* HN */
+       {42758, 44},     /* HR */
+       {42167, 45},     /* HU */
+       {43116, 46},     /* ID */
+       {46855, 47},     /* IE */
+       {42115, 48},     /* IL */
+       {44239, 49},     /* IN */
+       {46296, 50},     /* IQ */
+       {43540, 51},     /* IR */
+       {42216, 52},     /* IS */
+       {42259, 53},     /* IT */
+       {48750, 54},     /* JM */
+       {49214, 55},     /* JO */
+       {42304, 56},     /* JP */
+       {44492, 57},     /* KE */
+       {44449, 58},     /* KG */
+       {45289, 59},     /* KH */
+       {42359, 60},     /* KR */
+       {49635, 61},     /* KW */
+       {45331, 62},     /* LA */
+       {49448, 63},     /* LB */
+       {47969, 64},     /* LI */
+       {45507, 65},     /* LK */
+       {43449, 66},     /* LT */
+       {47627, 67},     /* LU */
+       {43397, 68},     /* LV */
+       {47510, 69},     /* LY */
+       {48173, 70},     /* MA */
+       {48298, 71},     /* MC */
+       {49390, 72},     /* ME */
+       {43878, 73},     /* MK */
+       {47909, 74},     /* MO */
+       {44278, 75},     /* MT */
+       {46451, 76},     /* MX */
+       {44383, 77},     /* MY */
+       {45795, 78},     /* NG */
+       {50306, 79},     /* NI */
+       {42411, 80},     /* NL */
+       {42469, 81},     /* NO */
+       {45627, 82},     /* NP */
+       {48004, 83},     /* NZ */
+       {48719, 84},     /* OM */
+       {48250, 85},     /* PA */
+       {49113, 86},     /* PE */
+       {45741, 87},     /* PH */
+       {43055, 88},     /* PK */
+       {42510, 89},     /* PL */
+       {50364, 90},     /* PR */
+       {46718, 91},     /* PT */
+       {49984, 92},     /* PY */
+       {50036, 93},     /* QA */
+       {42654, 94},     /* RO */
+       {48982, 95},     /* RS */
+       {42710, 96},     /* RU */
+       {46164, 97},     /* RW */
        {13258, 98},     /* SA */
-       {42933, 99},     /* SE */
-       {47596, 100},    /* SG */
-       {43331, 101},    /* SI */
-       {42842, 102},    /* SK */
-       {50192, 103},    /* SV */
-       {49060, 104},    /* SY */
-       {42980, 105},    /* TH */
-       {43514, 106},    /* TJ */
-       {48516, 107},    /* TN */
-       {43026, 108},    /* TR */
-       {49279, 109},    /* TT */
-       {41755, 110},    /* TW */
-       {43205, 111},    /* UA */
-       {42003, 112},    /* US */
-       {49892, 113},    /* UY */
-       {44588, 114},    /* UZ */
-       {48826, 115},    /* VE */
-       {43620, 116},    /* VN */
-       {48882, 117},    /* YE */
-       {43931, 118},    /* ZA */
-       {49502, 119}     /* ZW */
+       {42911, 99},     /* SE */
+       {47574, 100},    /* SG */
+       {43309, 101},    /* SI */
+       {42820, 102},    /* SK */
+       {50170, 103},    /* SV */
+       {49038, 104},    /* SY */
+       {42958, 105},    /* TH */
+       {43492, 106},    /* TJ */
+       {48494, 107},    /* TN */
+       {43004, 108},    /* TR */
+       {49257, 109},    /* TT */
+       {41733, 110},    /* TW */
+       {43183, 111},    /* UA */
+       {41981, 112},    /* US */
+       {49870, 113},    /* UY */
+       {44566, 114},    /* UZ */
+       {48804, 115},    /* VE */
+       {43598, 116},    /* VN */
+       {48860, 117},    /* YE */
+       {43909, 118},    /* ZA */
+       {49480, 119}     /* ZW */
 };
 
 
@@ -4947,8 +4947,6 @@ static const char locale_strings [] = {
        "\xe2\x82\xaa\0"
        "Ft\0"
        "EiTa\0"
-       "\xe2\x88\x92Infinity\0"
-       "\xe2\x88\x92\0"
        "+Infinito\0"
        "NaN\xef\xbc\x88\xe9\x9d\x9e\xe6\x95\xb0\xef\xbc\x89\0"
        "\xe2\x82\xa9\0"
@@ -4959,7 +4957,7 @@ static const char locale_strings [] = {
        "+niesko\xc5\x84\x63zono\xc5\x9b\xc4\x87\0"
        "R$\0"
        "\xe2\x80\x99\0"
-       "\xe2\x88\x92infinit\0"
+       "-infinit\0"
        "+infinit\0"
        "\xd1\x80\xd1\x83\xd0\xb1.\0"
        "\xd0\xbd\xd0\xb5 \xd1\x87\xd0\xb8\xd1\x81\xd0\xbb\xd0\xbe\0"
@@ -4978,10 +4976,10 @@ static const char locale_strings [] = {
        "neskon\xc4\x8dnost\0"
        "Ls\0"
        "nav\xc2\xa0skaitlis\0"
-       "\xe2\x88\x92\x62\x65zgal\xc4\xab\x62\x61\0"
+       "-bezgal\xc4\xab\x62\x61\0"
        "bezgal\xc4\xab\x62\x61\0"
        "Lt\0"
-       "\xe2\x88\x92\x62\x65galyb\xc4\x97\0"
+       "-begalyb\xc4\x97\0"
        "begalyb\xc4\x97\0"
        "\xef\xb7\xbc\0"
        "\xe2\x82\xab\0"
index f868aa37864f4b6a29a22da3d790a4fcf17c4db7..f38a054125710fab5281f9e0facb68b7aa1e5e4f 100644 (file)
@@ -326,10 +326,10 @@ mono_method_desc_new (const char *name, gboolean include_namespace)
                g_free (class_nspace);
                return NULL;
        }
-       *method_name++ = 0;
        /* allow two :: to separate the method name */
-       if (*method_name == ':')
-               method_name++;
+       if (method_name != class_nspace && method_name [-1] == ':')
+               method_name [-1] = 0;
+       *method_name++ = 0;
        class_name = strrchr (class_nspace, '.');
        if (class_name) {
                *class_name++ = 0;
index 8743dced04a955f59866fbd3b0065111a168e46c..09092f9e380b3c69807c4a0c83d15a12d4c556dc 100644 (file)
@@ -19,28 +19,28 @@ struct MonoDisHelper {
        void* user_data;
 };
 
-char* mono_disasm_code_one (MonoDisHelper *dh, MonoMethod *method, const mono_byte *ip, const mono_byte** endp);
-char* mono_disasm_code     (MonoDisHelper *dh, MonoMethod *method, const mono_byte *ip, const mono_byte* end);
+MONO_API char* mono_disasm_code_one (MonoDisHelper *dh, MonoMethod *method, const mono_byte *ip, const mono_byte** endp);
+MONO_API char* mono_disasm_code     (MonoDisHelper *dh, MonoMethod *method, const mono_byte *ip, const mono_byte* end);
 
 typedef struct MonoMethodDesc MonoMethodDesc;
 
-char*           mono_type_full_name (MonoType *type);
+MONO_API char*           mono_type_full_name (MonoType *type);
 
-char*           mono_signature_get_desc (MonoMethodSignature *sig, mono_bool include_namespace);
+MONO_API char*           mono_signature_get_desc (MonoMethodSignature *sig, mono_bool include_namespace);
 
-char*           mono_context_get_desc (MonoGenericContext *context);
+MONO_API char*           mono_context_get_desc (MonoGenericContext *context);
 
-MonoMethodDesc* mono_method_desc_new (const char *name, mono_bool include_namespace);
-MonoMethodDesc* mono_method_desc_from_method (MonoMethod *method);
-void            mono_method_desc_free (MonoMethodDesc *desc);
-mono_bool       mono_method_desc_match (MonoMethodDesc *desc, MonoMethod *method);
-mono_bool       mono_method_desc_full_match (MonoMethodDesc *desc, MonoMethod *method);
-MonoMethod*     mono_method_desc_search_in_class (MonoMethodDesc *desc, MonoClass *klass);
-MonoMethod*     mono_method_desc_search_in_image (MonoMethodDesc *desc, MonoImage *image);
+MONO_API MonoMethodDesc* mono_method_desc_new (const char *name, mono_bool include_namespace);
+MONO_API MonoMethodDesc* mono_method_desc_from_method (MonoMethod *method);
+MONO_API void            mono_method_desc_free (MonoMethodDesc *desc);
+MONO_API mono_bool       mono_method_desc_match (MonoMethodDesc *desc, MonoMethod *method);
+MONO_API mono_bool       mono_method_desc_full_match (MonoMethodDesc *desc, MonoMethod *method);
+MONO_API MonoMethod*     mono_method_desc_search_in_class (MonoMethodDesc *desc, MonoClass *klass);
+MONO_API MonoMethod*     mono_method_desc_search_in_image (MonoMethodDesc *desc, MonoImage *image);
 
-char*           mono_method_full_name (MonoMethod *method, mono_bool signature);
+MONO_API char*           mono_method_full_name (MonoMethod *method, mono_bool signature);
 
-char*           mono_field_full_name (MonoClassField *field);
+MONO_API char*           mono_field_full_name (MonoClassField *field);
 
 MONO_END_DECLS
 
index d4c1241478fd78613d559e6ded90896ecd3017e9..9832418bec12990296a243288a4958fdba0f801b 100644 (file)
@@ -30,6 +30,7 @@
 #include <mono/metadata/metadata-internals.h>
 #include <mono/metadata/class-internals.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/bsearch.h>
 
 #include <fcntl.h>
 #ifdef HAVE_UNISTD_H
@@ -731,7 +732,7 @@ mono_debug_symfile_lookup_method (MonoDebugHandle *handle, MonoMethod *method)
        first_ie = (MonoSymbolFileMethodEntry *)
                (symfile->raw_contents + read32(&(symfile->offset_table->_method_table_offset)));
 
-       ie = bsearch (GUINT_TO_POINTER (mono_method_get_token (method)), first_ie,
+       ie = mono_binary_search (GUINT_TO_POINTER (mono_method_get_token (method)), first_ie,
                                   read32(&(symfile->offset_table->_method_count)),
                                   sizeof (MonoSymbolFileMethodEntry), compare_method);
 
index 36805ea3b6ff938193df8d4936332e7f266587e8..6ea3bccfc6edff1c6a01caaec81ee281751550f0 100644 (file)
@@ -122,43 +122,43 @@ typedef struct {
 
 MONO_BEGIN_DECLS
 
-MonoSymbolFile *
+MONO_API MonoSymbolFile *
 mono_debug_open_mono_symbols       (MonoDebugHandle          *handle,
                                    const uint8_t            *raw_contents,
                                    int                       size,
                                    mono_bool                 in_the_debugger);
 
-void
+MONO_API void
 mono_debug_close_mono_symbol_file  (MonoSymbolFile           *symfile);
 
-mono_bool
+MONO_API mono_bool
 mono_debug_symfile_is_loaded       (MonoSymbolFile           *symfile);
 
-MonoDebugSourceLocation *
+MONO_API MonoDebugSourceLocation *
 mono_debug_symfile_lookup_location (MonoDebugMethodInfo      *minfo,
                                    uint32_t                  offset);
 
-void
+MONO_API void
 mono_debug_symfile_free_location   (MonoDebugSourceLocation  *location);
 
 int32_t
 _mono_debug_address_from_il_offset (MonoDebugMethodJitInfo   *jit,
                                    uint32_t                  il_offset);
 
-MonoDebugMethodInfo *
+MONO_API MonoDebugMethodInfo *
 mono_debug_symfile_lookup_method   (MonoDebugHandle          *handle,
                                    MonoMethod               *method);
 
-MonoDebugLocalsInfo*
+MONO_API MonoDebugLocalsInfo*
 mono_debug_symfile_lookup_locals (MonoDebugMethodInfo *minfo);
 
-void
+MONO_API void
 mono_debug_symfile_free_locals (MonoDebugLocalsInfo *info);
 
-void
+MONO_API void
 mono_debug_symfile_get_line_numbers (MonoDebugMethodInfo *minfo, char **source_file, int *n_il_offsets, int **il_offsets, int **line_numbers);
 
-void
+MONO_API void
 mono_debug_symfile_get_line_numbers_full (MonoDebugMethodInfo *minfo, char **source_file, GPtrArray **source_file_list, int *n_il_offsets, int **il_offsets, int **line_numbers, int **column_numbers, int **source_files);
 
 MONO_END_DECLS
index 0e6a7b3df1cacdbbbefbd369506d49a3295dde22..39d226d3b25038728185704b3d0d6d70a5f8363a 100644 (file)
@@ -1481,17 +1481,6 @@ DECINLINE static void buildIEEE754Double(double* pd, int sign, int texp, guint64
 
     PRECONDITION(sign == 0 || sign == 1);
     *p = (((guint64)sign) << 63) | (((guint64)((1023+texp)&0x7ff)) << 52) | mantisse;
-#ifdef ARM_FPU_FPA
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-    {
-           guint32 temp;
-           guint32 *t = (guint32*)p;
-           temp = t [0];
-           t [0] = t [1];
-           t [1] = temp;
-    }
-#endif
-#endif
 }
 
 double mono_decimal2double(/*[In]*/decimal_repr* pA)
index b9fad3052974c39851d4a0b365742be582a41ce5..8ffe885532fd84f833320445a4b00331c0e62452 100644 (file)
@@ -190,7 +190,11 @@ struct _MonoJitInfo {
           next_jit_code_hash) must be in the same order and at the
           same offset as in RuntimeMethod, because of the jit_code_hash
           internal hash table in MonoDomain. */
-       MonoMethod *method;
+       union {
+               MonoMethod *method;
+               MonoImage *image;
+               gpointer aot_info;
+       } d;
        struct _MonoJitInfo *next_jit_code_hash;
        gpointer    code_start;
        /* This might contain an id for the unwind info instead of a register mask */
@@ -207,6 +211,10 @@ struct _MonoJitInfo {
        gboolean    from_llvm:1;
        gboolean    dbg_hidden_inited:1;
        gboolean    dbg_hidden:1;
+       /* Whenever this jit info was loaded in async context */
+       gboolean    async:1;
+       gboolean    dbg_step_through_inited:1;
+       gboolean    dbg_step_through:1;
 
        /* FIXME: Embed this after the structure later*/
        gpointer    gc_info; /* Currently only used by SGen */
@@ -226,6 +234,17 @@ struct _MonoAppContext {
        gpointer *static_data;
 };
 
+/* Lock-free allocator */
+typedef struct {
+       guint8 *mem;
+       gpointer prev;
+       int size, pos;
+} LockFreeMempoolChunk;
+
+typedef struct {
+       LockFreeMempoolChunk *current, *chunks;
+} LockFreeMempool;
+
 /*
  * We have two unloading states because the domain
  * must remain fully functional while AppDomain::DomainUnload is
@@ -315,10 +334,17 @@ struct _MonoDomain {
        int                 num_jit_info_tables;
        MonoJitInfoTable * 
          volatile          jit_info_table;
+       /*
+        * Contains information about AOT loaded code.
+        * Only used in the root domain.
+        */
+       MonoJitInfoTable *
+         volatile          aot_modules;
        GSList             *jit_info_free_queue;
        /* Used when loading assemblies */
        gchar **search_path;
        gchar *private_bin_path;
+       LockFreeMempool *lock_free_mp;
        
        /* Used by remoting proxies */
        MonoMethod         *create_proxy_for_type_method;
@@ -420,9 +446,6 @@ typedef void (*MonoFreeDomainFunc) (MonoDomain *domain);
 void
 mono_install_free_domain_hook (MonoFreeDomainFunc func) MONO_INTERNAL;
 
-void 
-mono_init_com_types (void) MONO_INTERNAL;
-
 void 
 mono_cleanup (void) MONO_INTERNAL;
 
@@ -462,6 +485,9 @@ mono_domain_alloc  (MonoDomain *domain, guint size) MONO_INTERNAL;
 gpointer
 mono_domain_alloc0 (MonoDomain *domain, guint size) MONO_INTERNAL;
 
+gpointer
+mono_domain_alloc0_lock_free (MonoDomain *domain, guint size) MONO_INTERNAL;
+
 void*
 mono_domain_code_reserve (MonoDomain *domain, int size) MONO_LLVM_INTERNAL;
 
@@ -611,7 +637,7 @@ MonoImage *mono_assembly_open_from_bundle (const char *filename,
                                           MonoImageOpenStatus *status,
                                           gboolean refonly) MONO_INTERNAL;
 
-void
+MONO_API void
 mono_domain_add_class_static_data (MonoDomain *domain, MonoClass *klass, gpointer data, guint32 *bitmap);
 
 MonoReflectionAssembly *
@@ -628,6 +654,8 @@ int mono_framework_version (void) MONO_INTERNAL;
 
 void mono_reflection_cleanup_domain (MonoDomain *domain) MONO_INTERNAL;
 
-void mono_assembly_cleanup_domain_bindings (guint32 domain_id) MONO_INTERNAL;;
+void mono_assembly_cleanup_domain_bindings (guint32 domain_id) MONO_INTERNAL;
+
+MonoJitInfo* mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_aot) MONO_INTERNAL;
 
 #endif /* __MONO_METADATA_DOMAIN_INTERNALS_H__ */
index 56c0e02806d93900dda095156ecc4e0a9c509f1f..7f52929f50419c007e7417554fe1073ebdfb9c43 100644 (file)
 
 #include <mono/metadata/gc-internal.h>
 
+#include <mono/utils/atomic.h>
 #include <mono/utils/mono-compiler.h>
 #include <mono/utils/mono-logger-internal.h>
 #include <mono/utils/mono-membar.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/hazard-pointer.h>
 #include <mono/utils/mono-tls.h>
+#include <mono/utils/mono-mmap.h>
 #include <mono/metadata/object.h>
 #include <mono/metadata/object-internals.h>
 #include <mono/metadata/domain-internals.h>
@@ -35,6 +37,7 @@
 #include <mono/metadata/mono-debug-debugger.h>
 #include <mono/metadata/mono-config.h>
 #include <mono/metadata/threads-types.h>
+#include <mono/metadata/runtime.h>
 #include <metadata/threads.h>
 #include <metadata/profiler-private.h>
 #include <mono/metadata/coree.h>
@@ -101,23 +104,10 @@ typedef struct {
        int startup_count;
 } AppConfigInfo;
 
-/*
- * AotModuleInfo: Contains information about AOT modules.
- */
-typedef struct {
-       MonoImage *image;
-       gpointer start, end;
-} AotModuleInfo;
-
 static const MonoRuntimeInfo *current_runtime = NULL;
 
 static MonoJitInfoFindInAot jit_info_find_in_aot_func = NULL;
 
-/*
- * Contains information about AOT loaded code.
- */
-static MonoAotModuleInfoTable *aot_modules = NULL;
-
 /* This is the list of runtime versions supported by this JIT.
  */
 static const MonoRuntimeInfo supported_runtimes[] = {
@@ -146,9 +136,6 @@ get_runtimes_from_exe (const char *exe_file, MonoImage **exe_image, const MonoRu
 static const MonoRuntimeInfo*
 get_runtime_by_version (const char *version);
 
-static MonoImage*
-mono_jit_info_find_aot_module (guint8* addr);
-
 MonoNativeTlsKey
 mono_domain_get_tls_key (void)
 {
@@ -173,7 +160,7 @@ mono_domain_get_tls_offset (void)
 #define JIT_INFO_TABLE_HIGH_WATERMARK(n)       ((n) * 5 / 6)
 
 #define JIT_INFO_TOMBSTONE_MARKER      ((MonoMethod*)NULL)
-#define IS_JIT_INFO_TOMBSTONE(ji)      ((ji)->method == JIT_INFO_TOMBSTONE_MARKER)
+#define IS_JIT_INFO_TOMBSTONE(ji)      ((ji)->d.method == JIT_INFO_TOMBSTONE_MARKER)
 
 #define JIT_INFO_TABLE_HAZARD_INDEX            0
 #define JIT_INFO_HAZARD_INDEX                  1
@@ -330,26 +317,11 @@ jit_info_table_chunk_index (MonoJitInfoTableChunk *chunk, MonoThreadHazardPointe
        return left;
 }
 
-MonoJitInfo*
-mono_jit_info_table_find (MonoDomain *domain, char *addr)
+static MonoJitInfo*
+jit_info_table_find (MonoJitInfoTable *table, MonoThreadHazardPointers *hp, gint8 *addr)
 {
-       MonoJitInfoTable *table;
        MonoJitInfo *ji;
        int chunk_pos, pos;
-       MonoThreadHazardPointers *hp = mono_hazard_pointer_get ();
-       MonoImage *image;
-
-       ++mono_stats.jit_info_table_lookup_count;
-
-       /* First we have to get the domain's jit_info_table.  This is
-          complicated by the fact that a writer might substitute a
-          new table and free the old one.  What the writer guarantees
-          us is that it looks at the hazard pointers after it has
-          changed the jit_info_table pointer.  So, if we guard the
-          table by a hazard pointer and make sure that the pointer is
-          still there after we've made it hazardous, we don't have to
-          worry about the writer freeing the table. */
-       table = get_hazardous_pointer ((gpointer volatile*)&domain->jit_info_table, hp, JIT_INFO_TABLE_HAZARD_INDEX);
 
        chunk_pos = jit_info_table_index (table, (gint8*)addr);
        g_assert (chunk_pos < table->num_chunks);
@@ -375,7 +347,6 @@ mono_jit_info_table_find (MonoDomain *domain, char *addr)
                        }
                        if ((gint8*)addr >= (gint8*)ji->code_start
                                        && (gint8*)addr < (gint8*)ji->code_start + ji->code_size) {
-                               mono_hazard_pointer_clear (hp, JIT_INFO_TABLE_HAZARD_INDEX);
                                mono_hazard_pointer_clear (hp, JIT_INFO_HAZARD_INDEX);
                                return ji;
                        }
@@ -392,22 +363,64 @@ mono_jit_info_table_find (MonoDomain *domain, char *addr)
        } while (chunk_pos < table->num_chunks);
 
  not_found:
-       if (!hp)
-               return NULL;
+       if (hp)
+               mono_hazard_pointer_clear (hp, JIT_INFO_HAZARD_INDEX);
+       return NULL;
+}
 
-       mono_hazard_pointer_clear (hp, JIT_INFO_TABLE_HAZARD_INDEX);
-       mono_hazard_pointer_clear (hp, JIT_INFO_HAZARD_INDEX);
+/*
+ * mono_jit_info_table_find_internal:
+ *
+ * If TRY_AOT is FALSE, avoid loading information for missing methods from AOT images, which is currently not async safe.
+ * In this case, only those AOT methods will be found whose jit info is already loaded.
+ * ASYNC SAFETY: When called in an async context (mono_thread_info_is_async_context ()), this is async safe.
+ * In this case, the returned MonoJitInfo might not have metadata information, in particular,
+ * mono_jit_info_get_method () could fail.
+ */
+MonoJitInfo*
+mono_jit_info_table_find_internal (MonoDomain *domain, char *addr, gboolean try_aot)
+{
+       MonoJitInfoTable *table;
+       MonoJitInfo *ji, *module_ji;
+       MonoThreadHazardPointers *hp = mono_hazard_pointer_get ();
 
-       ji = NULL;
+       ++mono_stats.jit_info_table_lookup_count;
+
+       /* First we have to get the domain's jit_info_table.  This is
+          complicated by the fact that a writer might substitute a
+          new table and free the old one.  What the writer guarantees
+          us is that it looks at the hazard pointers after it has
+          changed the jit_info_table pointer.  So, if we guard the
+          table by a hazard pointer and make sure that the pointer is
+          still there after we've made it hazardous, we don't have to
+          worry about the writer freeing the table. */
+       table = get_hazardous_pointer ((gpointer volatile*)&domain->jit_info_table, hp, JIT_INFO_TABLE_HAZARD_INDEX);
+
+       ji = jit_info_table_find (table, hp, (gint8*)addr);
+       if (hp)
+               mono_hazard_pointer_clear (hp, JIT_INFO_TABLE_HAZARD_INDEX);
+       if (ji)
+               return ji;
 
        /* Maybe its an AOT module */
-       image = mono_jit_info_find_aot_module ((guint8*)addr);
-       if (image)
-               ji = jit_info_find_in_aot_func (domain, image, addr);
+       if (try_aot && mono_root_domain && mono_root_domain->aot_modules) {
+               table = get_hazardous_pointer ((gpointer volatile*)&mono_root_domain->aot_modules, hp, JIT_INFO_TABLE_HAZARD_INDEX);
+               module_ji = jit_info_table_find (table, hp, (gint8*)addr);
+               if (module_ji)
+                       ji = jit_info_find_in_aot_func (domain, module_ji->d.image, addr);
+               if (hp)
+                       mono_hazard_pointer_clear (hp, JIT_INFO_TABLE_HAZARD_INDEX);
+       }
        
        return ji;
 }
 
+MonoJitInfo*
+mono_jit_info_table_find (MonoDomain *domain, char *addr)
+{
+       return mono_jit_info_table_find_internal (domain, addr, TRUE);
+}
+
 static G_GNUC_UNUSED void
 jit_info_table_check (MonoJitInfoTable *table)
 {
@@ -664,22 +677,16 @@ jit_info_table_chunk_overflow (MonoJitInfoTable *table, MonoJitInfoTableChunk *c
  * the one we're looking for (i.e. we either find the element directly
  * or we end up to the left of it).
  */
-void
-mono_jit_info_table_add (MonoDomain *domain, MonoJitInfo *ji)
+static void
+jit_info_table_add (MonoDomain *domain, MonoJitInfoTable *volatile *table_ptr, MonoJitInfo *ji)
 {
        MonoJitInfoTable *table;
-       int chunk_pos, pos;
        MonoJitInfoTableChunk *chunk;
+       int chunk_pos, pos;
        int num_elements;
        int i;
 
-       g_assert (ji->method != NULL);
-
-       mono_domain_lock (domain);
-
-       ++mono_stats.jit_info_table_insert_count;
-
-       table = domain->jit_info_table;
+       table = *table_ptr;
 
  restart:
        chunk_pos = jit_info_table_index (table, (gint8*)ji->code_start + ji->code_size);
@@ -692,7 +699,7 @@ mono_jit_info_table_add (MonoDomain *domain, MonoJitInfo *ji)
                /* Debugging code, should be removed. */
                //jit_info_table_check (new_table);
 
-               domain->jit_info_table = new_table;
+               *table_ptr = new_table;
                mono_memory_barrier ();
                domain->num_jit_info_tables++;
                mono_thread_hazardous_free_or_queue (table, (MonoHazardousFreeFunc)jit_info_table_free, TRUE, FALSE);
@@ -734,6 +741,18 @@ mono_jit_info_table_add (MonoDomain *domain, MonoJitInfo *ji)
 
        /* Debugging code, should be removed. */
        //jit_info_table_check (table);
+}
+
+void
+mono_jit_info_table_add (MonoDomain *domain, MonoJitInfo *ji)
+{
+       g_assert (ji->d.method != NULL);
+
+       mono_domain_lock (domain);
+
+       ++mono_stats.jit_info_table_insert_count;
+
+       jit_info_table_add (domain, &domain->jit_info_table, ji);
 
        mono_domain_unlock (domain);
 }
@@ -745,7 +764,7 @@ mono_jit_info_make_tombstone (MonoJitInfo *ji)
 
        tombstone->code_start = ji->code_start;
        tombstone->code_size = ji->code_size;
-       tombstone->method = JIT_INFO_TOMBSTONE_MARKER;
+       tombstone->d.method = JIT_INFO_TOMBSTONE_MARKER;
 
        return tombstone;
 }
@@ -765,19 +784,13 @@ mono_jit_info_free_or_queue (MonoDomain *domain, MonoJitInfo *ji)
        }
 }
 
-void
-mono_jit_info_table_remove (MonoDomain *domain, MonoJitInfo *ji)
+static void
+jit_info_table_remove (MonoJitInfoTable *table, MonoJitInfo *ji)
 {
-       MonoJitInfoTable *table;
        MonoJitInfoTableChunk *chunk;
        gpointer start = ji->code_start;
        int chunk_pos, pos;
 
-       mono_domain_lock (domain);
-       table = domain->jit_info_table;
-
-       ++mono_stats.jit_info_table_remove_count;
-
        chunk_pos = jit_info_table_index (table, start);
        g_assert (chunk_pos < table->num_chunks);
 
@@ -808,90 +821,49 @@ mono_jit_info_table_remove (MonoDomain *domain, MonoJitInfo *ji)
 
        /* Debugging code, should be removed. */
        //jit_info_table_check (table);
-
-       mono_jit_info_free_or_queue (domain, ji);
-
-       mono_domain_unlock (domain);
-}
-
-static MonoAotModuleInfoTable*
-mono_aot_module_info_table_new (void)
-{
-       return g_array_new (FALSE, FALSE, sizeof (gpointer));
-}
-
-static int
-aot_info_table_index (MonoAotModuleInfoTable *table, char *addr)
-{
-       int left = 0, right = table->len;
-
-       while (left < right) {
-               int pos = (left + right) / 2;
-               AotModuleInfo *ainfo = g_array_index (table, gpointer, pos);
-               char *start = ainfo->start;
-               char *end = ainfo->end;
-
-               if (addr < start)
-                       right = pos;
-               else if (addr >= end) 
-                       left = pos + 1;
-               else
-                       return pos;
-       }
-
-       return left;
 }
 
 void
-mono_jit_info_add_aot_module (MonoImage *image, gpointer start, gpointer end)
+mono_jit_info_table_remove (MonoDomain *domain, MonoJitInfo *ji)
 {
-       AotModuleInfo *ainfo = g_new0 (AotModuleInfo, 1);
-       int pos;
-
-       ainfo->image = image;
-       ainfo->start = start;
-       ainfo->end = end;
+       MonoJitInfoTable *table;
 
-       mono_appdomains_lock ();
+       mono_domain_lock (domain);
+       table = domain->jit_info_table;
 
-       if (!aot_modules)
-               aot_modules = mono_aot_module_info_table_new ();
+       ++mono_stats.jit_info_table_remove_count;
 
-       pos = aot_info_table_index (aot_modules, start);
+       jit_info_table_remove (table, ji);
 
-       g_array_insert_val (aot_modules, pos, ainfo);
+       mono_jit_info_free_or_queue (domain, ji);
 
-       mono_appdomains_unlock ();
+       mono_domain_unlock (domain);
 }
 
-static MonoImage*
-mono_jit_info_find_aot_module (guint8* addr)
+void
+mono_jit_info_add_aot_module (MonoImage *image, gpointer start, gpointer end)
 {
-       guint left = 0, right;
-
-       if (!aot_modules)
-               return NULL;
+       MonoJitInfo *ji;
 
        mono_appdomains_lock ();
 
-       right = aot_modules->len;
-       while (left < right) {
-               guint pos = (left + right) / 2;
-               AotModuleInfo *ai = g_array_index (aot_modules, gpointer, pos);
-
-               if (addr < (guint8*)ai->start)
-                       right = pos;
-               else if (addr >= (guint8*)ai->end)
-                       left = pos + 1;
-               else {
-                       mono_appdomains_unlock ();
-                       return ai->image;
-               }
+       /*
+        * We reuse MonoJitInfoTable to store AOT module info,
+        * this gives us async-safe lookup.
+        */
+       g_assert (mono_root_domain);
+       if (!mono_root_domain->aot_modules) {
+               mono_root_domain->num_jit_info_tables ++;
+               mono_root_domain->aot_modules = jit_info_table_new (mono_root_domain);
        }
 
-       mono_appdomains_unlock ();
+       ji = g_new0 (MonoJitInfo, 1);
+       ji->d.image = image;
+       ji->code_start = start;
+       ji->code_size = (guint8*)end - (guint8*)start;
+       jit_info_table_add (mono_root_domain, &mono_root_domain->aot_modules, ji);
 
-       return NULL;
+       mono_appdomains_unlock ();
 }
 
 void
@@ -915,7 +887,8 @@ mono_jit_info_get_code_size (MonoJitInfo* ji)
 MonoMethod*
 mono_jit_info_get_method (MonoJitInfo* ji)
 {
-       return ji->method;
+       g_assert (!ji->async);
+       return ji->d.method;
 }
 
 static gpointer
@@ -923,7 +896,7 @@ jit_info_key_extract (gpointer value)
 {
        MonoJitInfo *info = (MonoJitInfo*)value;
 
-       return info->method;
+       return info->d.method;
 }
 
 static gpointer*
@@ -1033,6 +1006,94 @@ mono_jit_info_get_cas_info (MonoJitInfo *ji)
        }
 }
 
+#define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
+#define ALIGN_PTR_TO(ptr,align) (gpointer)((((gssize)(ptr)) + (align - 1)) & (~(align - 1)))
+
+static LockFreeMempool*
+lock_free_mempool_new (void)
+{
+       return g_new0 (LockFreeMempool, 1);
+}
+
+static void
+lock_free_mempool_free (LockFreeMempool *mp)
+{
+       LockFreeMempoolChunk *chunk, *next;
+
+       chunk = mp->chunks;
+       while (chunk) {
+               next = chunk->prev;
+               mono_vfree (chunk, mono_pagesize ());
+               chunk = next;
+       }
+}
+
+/*
+ * This is async safe
+ */
+static LockFreeMempoolChunk*
+lock_free_mempool_chunk_new (LockFreeMempool *mp, int len)
+{
+       LockFreeMempoolChunk *chunk, *prev;
+       int size;
+
+       size = mono_pagesize ();
+       while (size - sizeof (LockFreeMempoolChunk) < len)
+               size += mono_pagesize ();
+       chunk = mono_valloc (0, size, MONO_MMAP_READ|MONO_MMAP_WRITE);
+       g_assert (chunk);
+       chunk->mem = ALIGN_PTR_TO ((char*)chunk + sizeof (LockFreeMempoolChunk), 16);
+       chunk->size = ((char*)chunk + size) - (char*)chunk->mem;
+       chunk->pos = 0;
+
+       /* Add to list of chunks lock-free */
+       while (TRUE) {
+               prev = mp->chunks;
+               if (InterlockedCompareExchangePointer ((volatile gpointer*)&mp->chunks, chunk, prev) == prev)
+                       break;
+       }
+       chunk->prev = prev;
+
+       return chunk;
+}
+
+/*
+ * This is async safe
+ */
+static gpointer
+lock_free_mempool_alloc0 (LockFreeMempool *mp, guint size)
+{
+       LockFreeMempoolChunk *chunk;
+       gpointer res;
+       int oldpos;
+
+       // FIXME: Free the allocator
+
+       size = ALIGN_TO (size, 8);
+       chunk = mp->current;
+       if (!chunk) {
+               chunk = lock_free_mempool_chunk_new (mp, size);
+               mono_memory_barrier ();
+               /* Publish */
+               mp->current = chunk;
+       }
+
+       /* The code below is lock-free, 'chunk' is shared state */
+       oldpos = InterlockedExchangeAdd (&chunk->pos, size);
+       if (oldpos + size > chunk->size) {
+               chunk = lock_free_mempool_chunk_new (mp, size);
+               g_assert (chunk->pos + size <= chunk->size);
+               res = chunk->mem;
+               chunk->pos += size;
+               mono_memory_barrier ();
+               mp->current = chunk;
+       } else {
+               res = (char*)chunk->mem + oldpos;
+       }
+
+       return res;
+}
+
 void
 mono_install_create_domain_hook (MonoCreateDomainFunc func)
 {
@@ -1205,6 +1266,7 @@ mono_domain_create (void)
 
        domain->mp = mono_mempool_new ();
        domain->code_mp = mono_code_manager_new ();
+       domain->lock_free_mp = lock_free_mempool_new ();
        domain->env = mono_g_hash_table_new_type ((GHashFunc)mono_string_hash, (GCompareFunc)mono_string_equal, MONO_HASH_KEY_VALUE_GC);
        domain->domain_assemblies = NULL;
        domain->assembly_bindings = NULL;
@@ -1301,6 +1363,7 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
        mono_classes_init ();
        mono_loader_init ();
        mono_reflection_init ();
+       mono_runtime_init_tls ();
 
        /* FIXME: When should we release this memory? */
        MONO_GC_REGISTER_ROOT_FIXED (appdomains_list);
@@ -1606,13 +1669,6 @@ mono_init_internal (const char *filename, const char *exe_filename, const char *
                mono_defaults.corlib, "System.Reflection", "CustomAttributeData");
 
        /* these are initialized lazily when COM features are used */
-#ifndef DISABLE_COM
-       mono_defaults.variant_class = NULL;
-       mono_defaults.com_object_class = NULL;
-       mono_defaults.com_interop_proxy_class = NULL;
-       mono_defaults.iunknown_class = NULL;
-       mono_defaults.idispatch_class = NULL;
-#endif
 
        mono_class_init (mono_defaults.array_class);
        mono_defaults.generic_nullable_class = mono_class_from_name (
@@ -1686,48 +1742,6 @@ mono_init_version (const char *domain_name, const char *version)
        return mono_init_internal (domain_name, NULL, version);
 }
 
-#ifndef DISABLE_COM
-/**
- * mono_init_com_types:
- *
- * Initializes all types needed for COM Interop in mono_defaults structure. 
- */
-void 
-mono_init_com_types (void)
-{
-       static gboolean initialized = FALSE;
-
-       if (initialized)
-               return;
-       
-       /* FIXME: do I need some threading protection here */
-
-       g_assert (mono_defaults.corlib);
-
-       mono_defaults.variant_class = mono_class_from_name (
-               mono_defaults.corlib, "System", "Variant");
-       g_assert (mono_defaults.variant_class != 0);
-
-       mono_defaults.com_object_class = mono_class_from_name (
-               mono_defaults.corlib, "System", "__ComObject");
-       g_assert (mono_defaults.com_object_class != 0);
-
-       mono_defaults.com_interop_proxy_class = mono_class_from_name (
-               mono_defaults.corlib, "Mono.Interop", "ComInteropProxy");
-       g_assert (mono_defaults.com_interop_proxy_class != 0);
-
-       mono_defaults.iunknown_class = mono_class_from_name (
-               mono_defaults.corlib, "Mono.Interop", "IUnknown");
-       g_assert (mono_defaults.iunknown_class != 0);
-
-       mono_defaults.idispatch_class = mono_class_from_name (
-               mono_defaults.corlib, "Mono.Interop", "IDispatch");
-       g_assert (mono_defaults.idispatch_class != 0);
-
-       initialized = TRUE;
-}
-#endif /*DISABLE_COM*/
-
 /**
  * mono_cleanup:
  *
@@ -1907,6 +1921,8 @@ mono_domain_free (MonoDomain *domain, gboolean force)
 {
        int code_size, code_alloc;
        GSList *tmp;
+       gpointer *p;
+
        if ((domain == mono_root_domain) && !force) {
                g_warning ("cant unload root domain");
                return;
@@ -1970,11 +1986,29 @@ mono_domain_free (MonoDomain *domain, gboolean force)
                mono_assembly_release_gc_roots (ass);
        }
 
+       /* Have to zero out reference fields since they will be invalidated by the clear_domain () call below */
+       for (p = (gpointer*)&domain->MONO_DOMAIN_FIRST_OBJECT; p < (gpointer*)&domain->MONO_DOMAIN_FIRST_GC_TRACKED; ++p)
+               *p = NULL;
+
        /* This needs to be done before closing assemblies */
        mono_gc_clear_domain (domain);
 
+       /* Close dynamic assemblies first, since they have no ref count */
        for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
                MonoAssembly *ass = tmp->data;
+               if (!ass->image || !ass->image->dynamic)
+                       continue;
+               mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Unloading domain %s[%p], assembly %s[%p], ref_count=%d", domain->friendly_name, domain, ass->aname.name, ass, ass->ref_count);
+               if (!mono_assembly_close_except_image_pools (ass))
+                       tmp->data = NULL;
+       }
+
+       for (tmp = domain->domain_assemblies; tmp; tmp = tmp->next) {
+               MonoAssembly *ass = tmp->data;
+               if (!ass)
+                       continue;
+               if (!ass->image || ass->image->dynamic)
+                       continue;
                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_ASSEMBLY, "Unloading domain %s[%p], assembly %s[%p], ref_count=%d", domain->friendly_name, domain, ass->aname.name, ass, ass->ref_count);
                if (!mono_assembly_close_except_image_pools (ass))
                        tmp->data = NULL;
@@ -2029,6 +2063,8 @@ mono_domain_free (MonoDomain *domain, gboolean force)
         * this will free them.
         */
        mono_thread_hazardous_try_free_all ();
+       if (domain->aot_modules)
+               jit_info_table_free (domain->aot_modules);
        g_assert (domain->num_jit_info_tables == 1);
        jit_info_table_free (domain->jit_info_table);
        domain->jit_info_table = NULL;
@@ -2052,6 +2088,8 @@ mono_domain_free (MonoDomain *domain, gboolean force)
        mono_code_manager_destroy (domain->code_mp);
        domain->code_mp = NULL;
 #endif 
+       lock_free_mempool_free (domain->lock_free_mp);
+       domain->lock_free_mp = NULL;
 
        g_hash_table_destroy (domain->finalizable_objects_hash);
        domain->finalizable_objects_hash = NULL;
@@ -2159,6 +2197,12 @@ mono_domain_alloc0 (MonoDomain *domain, guint size)
        return res;
 }
 
+gpointer
+mono_domain_alloc0_lock_free (MonoDomain *domain, guint size)
+{
+       return lock_free_mempool_alloc0 (domain->lock_free_mp, size);
+}
+
 /*
  * mono_domain_code_reserve:
  *
index 619249a4715592e877bf72947066e7c394c3e82c..360ba3baa8ad9454daf22d513a3a4d1fb39928cc 100644 (file)
@@ -14,8 +14,8 @@
 
 MONO_BEGIN_DECLS
 
-extern int32_t mono_environment_exitcode_get (void);
-extern void mono_environment_exitcode_set (int32_t value);
+MONO_API extern int32_t mono_environment_exitcode_get (void);
+MONO_API extern void mono_environment_exitcode_set (int32_t value);
 
 MONO_END_DECLS
 
index 67b592c1ca57b6117791f4db79f5a3136b4d67f0..24bfd6ed5ba7d2c345817463d28dbfe07bb61125 100644 (file)
@@ -779,6 +779,36 @@ mono_get_exception_runtime_wrapped (MonoObject *wrapped_exception)
    return (MonoException*)ex;
 }      
 
+static gboolean
+append_frame_and_continue (MonoMethod *method, gpointer ip, size_t native_offset, gboolean managed, gpointer user_data)
+{
+       MonoDomain *domain = mono_domain_get ();
+       GString *text = (GString*)user_data;
+
+       if (method) {
+               char *msg = mono_debug_print_stack_frame (method, native_offset, domain);
+               g_string_append_printf (text, "%s\n", msg);
+               g_free (msg);
+       } else {
+               g_string_append_printf (text, "<unknown native frame 0x%x>\n", ip);
+       }
+
+       return FALSE;
+}
+
+char *
+mono_exception_get_managed_backtrace (MonoException *exc)
+{
+       GString *text;
+
+       text = g_string_new_len (NULL, 20);
+
+       if (!mono_get_eh_callbacks ()->mono_exception_walk_trace (exc, append_frame_and_continue, text))
+               g_string_append (text, "managed backtrace not available\n");
+
+       return g_string_free (text, FALSE);
+}
+
 char *
 mono_exception_get_native_backtrace (MonoException *exc)
 {
@@ -801,7 +831,7 @@ mono_exception_get_native_backtrace (MonoException *exc)
                gpointer ip = mono_array_get (arr, gpointer, i);
                MonoJitInfo *ji = mono_jit_info_table_find (mono_domain_get (), ip);
                if (ji) {
-                       char *msg = mono_debug_print_stack_frame (ji->method, (char*)ip - (char*)ji->code_start, domain);
+                       char *msg = mono_debug_print_stack_frame (mono_jit_info_get_method (ji), (char*)ip - (char*)ji->code_start, domain);
                        g_string_append_printf (text, "%s\n", msg);
                        g_free (msg);
                } else {
index fa17fa29e241a8ba920b2ea10c198c0ec2ae50e8..17279507a010c68d2fa2c5bfd151fe4e7197eb16 100644 (file)
 
 MONO_BEGIN_DECLS
 
-extern MonoException *
+extern MONO_API MonoException *
 mono_exception_from_name               (MonoImage *image, 
                                        const char* name_space, 
                                        const char *name);
 
-MonoException *
+MONO_API MonoException *
 mono_exception_from_token              (MonoImage *image, uint32_t token);
 
-MonoException *
+MONO_API MonoException *
 mono_exception_from_name_two_strings (MonoImage *image, const char *name_space,
                                      const char *name, MonoString *a1, MonoString *a2);
 
-MonoException *
+MONO_API MonoException *
 mono_exception_from_name_msg          (MonoImage *image, const char *name_space,
                                        const char *name, const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_exception_from_token_two_strings (MonoImage *image, uint32_t token,
                                                   MonoString *a1, MonoString *a2);
 
-extern MonoException *
+extern MONO_API MonoException *
 mono_exception_from_name_domain        (MonoDomain *domain, MonoImage *image, 
                                        const char* name_space, 
                                        const char *name);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_divide_by_zero      (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_security            (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_arithmetic          (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_overflow            (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_null_reference      (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_execution_engine    (const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_thread_abort        (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_thread_state        (const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_thread_interrupted  (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_serialization       (const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_invalid_cast        (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_invalid_operation (const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_index_out_of_range  (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_array_type_mismatch (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_type_load           (MonoString *class_name, char *assembly_name);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_missing_method      (const char *class_name, const char *member_name);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_missing_field       (const char *class_name, const char *member_name);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_not_implemented     (const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_not_supported       (const char *msg);
 
-MonoException*
+MONO_API MonoException*
 mono_get_exception_argument_null       (const char *arg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_argument            (const char *arg, const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_argument_out_of_range (const char *arg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_io                    (const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_file_not_found        (MonoString *fname);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_file_not_found2       (const char *msg, MonoString *fname);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_type_initialization (const char *type_name, MonoException *inner);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_synchronization_lock (const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_cannot_unload_appdomain (const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_appdomain_unloaded (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_bad_image_format (const char *msg);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_bad_image_format2 (const char *msg, MonoString *fname);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_stack_overflow (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_out_of_memory (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_field_access (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_method_access (void);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_reflection_type_load (MonoArray *types, MonoArray *exceptions);
 
-MonoException *
+MONO_API MonoException *
 mono_get_exception_runtime_wrapped (MonoObject *wrapped_exception);
 
 MONO_END_DECLS
index ac7b0c41cc3f4bac4f2aa4e50c6bf68ef12d9c7b..097da28a8c73806199a74aaed65c4010fa6dfcd4 100644 (file)
@@ -482,7 +482,7 @@ ves_icall_System_IO_MonoIO_FindNext (gpointer handle, gint32 *result_attr, gint3
        WIN32_FIND_DATA data;
        MonoString *result;
 
-       error = ERROR_SUCCESS;
+       *error = ERROR_SUCCESS;
        do {
                if (FindNextFile (ifh->find_handle, &data) == FALSE){
                        int e = GetLastError ();
@@ -607,6 +607,7 @@ ves_icall_System_IO_MonoIO_ReplaceFile (MonoString *sourceFileName, MonoString *
        if (ignoreMetadataErrors)
                replaceFlags |= REPLACEFILE_IGNORE_MERGE_ERRORS;
 
+       /* FIXME: source and destination file names must not be NULL, but apparently they might be! */
        ret = ReplaceFile (utf16_destinationFileName, utf16_sourceFileName, utf16_destinationBackupFileName,
                         replaceFlags, NULL, NULL);
        if (ret == FALSE)
@@ -824,9 +825,9 @@ ves_icall_System_IO_MonoIO_Read (HANDLE handle, MonoArray *dest,
        *error=ERROR_SUCCESS;
 
        MONO_CHECK_ARG_NULL (dest);
-       
-       if (dest_offset + count > mono_array_length (dest))
-               return 0;
+
+       if (dest_offset > mono_array_length (dest) - count)
+               mono_raise_exception (mono_get_exception_argument ("array", "array too small. numBytes/offset wrong."));
 
        buffer = mono_array_addr (dest, guchar, dest_offset);
        result = ReadFile (handle, buffer, count, &n, NULL);
@@ -854,8 +855,8 @@ ves_icall_System_IO_MonoIO_Write (HANDLE handle, MonoArray *src,
 
        MONO_CHECK_ARG_NULL (src);
        
-       if (src_offset + count > mono_array_length (src))
-               return 0;
+       if (src_offset > mono_array_length (src) - count)
+               mono_raise_exception (mono_get_exception_argument ("array", "array too small. numBytes/offset wrong."));
        
        buffer = mono_array_addr (src, guchar, src_offset);
        result = WriteFile (handle, buffer, count, &n, NULL);
index 4cd959a1933268700cde589640e1339c9880837a..2930ed3444c81ae217d8f5eb55253f8d8f67d46f 100644 (file)
@@ -112,10 +112,10 @@ extern void mono_gc_set_stack_end (void *stack_end) MONO_INTERNAL;
 /* only valid after the RECLAIM_START GC event and before RECLAIM_END
  * Not exported in public headers, but can be linked to (unsupported).
  */
-extern gboolean mono_object_is_alive (MonoObject* obj);
-extern gboolean mono_gc_is_finalizer_thread (MonoThread *thread);
-extern gpointer mono_gc_out_of_memory (size_t size);
-extern void     mono_gc_enable_events (void);
+extern MONO_API gboolean mono_object_is_alive (MonoObject* obj);
+extern MONO_API gboolean mono_gc_is_finalizer_thread (MonoThread *thread);
+extern MONO_API gpointer mono_gc_out_of_memory (size_t size);
+extern MONO_API void     mono_gc_enable_events (void);
 
 /* disappearing link functionality */
 void        mono_gc_weak_link_add    (void **link_addr, MonoObject *obj, gboolean track) MONO_INTERNAL;
@@ -146,7 +146,7 @@ typedef void (*MonoGCMarkFunc)     (void **addr);
 typedef void (*MonoGCRootMarkFunc) (void *addr, MonoGCMarkFunc mark_func);
 
 /* Create a descriptor with a user defined marking function */
-void *mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker);
+MONO_API void *mono_gc_make_root_descr_user (MonoGCRootMarkFunc marker);
 
 /* Return whenever user defined marking functions are supported */
 gboolean mono_gc_user_markers_supported (void) MONO_INTERNAL;
@@ -219,7 +219,7 @@ typedef struct {
        int alloc_type;
 } AllocatorWrapperInfo;
 
-MonoMethod* mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box) MONO_INTERNAL;
+MonoMethod* mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box) MONO_INTERNAL;
 MonoMethod* mono_gc_get_managed_array_allocator (MonoClass *klass) MONO_INTERNAL;
 MonoMethod *mono_gc_get_managed_allocator_by_type (int atype) MONO_INTERNAL;
 
@@ -335,14 +335,12 @@ gboolean mono_gc_precise_stack_mark_enabled (void) MONO_INTERNAL;
 
 FILE *mono_gc_get_logfile (void) MONO_INTERNAL;
 
-typedef void (*mono_reference_queue_callback) (void *user_data);
-
-typedef struct _MonoReferenceQueue MonoReferenceQueue;
 typedef struct _RefQueueEntry RefQueueEntry;
 
 struct _RefQueueEntry {
        void *dis_link;
        guint32 gchandle;
+       MonoDomain *domain;
        void *user_data;
        RefQueueEntry *next;
 };
@@ -354,10 +352,6 @@ struct _MonoReferenceQueue {
        gboolean should_be_deleted;
 };
 
-MonoReferenceQueue* mono_gc_reference_queue_new (mono_reference_queue_callback callback) MONO_INTERNAL;
-void mono_gc_reference_queue_free (MonoReferenceQueue *queue) MONO_INTERNAL;
-gboolean mono_gc_reference_queue_add (MonoReferenceQueue *queue, MonoObject *obj, void *user_data) MONO_INTERNAL;
-
 #ifdef HOST_WIN32
 BOOL APIENTRY mono_gc_dllmain (HMODULE module_handle, DWORD reason, LPVOID reserved) MONO_INTERNAL;
 #endif
index d8aab55121be09783d150f23c6d8f6045ead7dc4..465f6d1974d6d693f7171d3d79d2327f3001708d 100644 (file)
@@ -1456,14 +1456,10 @@ reference_queue_clear_for_domain (MonoDomain *domain)
                RefQueueEntry **iter = &queue->queue;
                RefQueueEntry *entry;
                while ((entry = *iter)) {
-                       MonoObject *obj;
+                       if (entry->domain == domain) {
 #ifdef HAVE_SGEN_GC
-                       obj = mono_gc_weak_link_get (&entry->dis_link);
-                       if (obj && mono_object_domain (obj) == domain) {
                                mono_gc_weak_link_remove (&entry->dis_link, TRUE);
 #else
-                       obj = mono_gchandle_get_target (entry->gchandle);
-                       if (obj && mono_object_domain (obj) == domain) {
                                mono_gchandle_free ((guint32)entry->gchandle);
 #endif
                                ref_list_remove_element (iter, entry);
@@ -1477,16 +1473,20 @@ reference_queue_clear_for_domain (MonoDomain *domain)
 }
 /**
  * mono_gc_reference_queue_new:
- * @callback callback used when processing dead entries.
+ * @callback callback used when processing collected entries.
  *
  * Create a new reference queue used to process collected objects.
- * A reference queue let you queue a pair (managed object, user data)
+ * A reference queue let you add a pair of (managed object, user data)
  * using the mono_gc_reference_queue_add method.
  *
  * Once the managed object is collected @callback will be called
  * in the finalizer thread with 'user data' as argument.
  *
- * The callback is called without any locks held.
+ * The callback is called from the finalizer thread without any locks held.
+ * When a AppDomain is unloaded, all callbacks for objects belonging to it
+ * will be invoked.
+ *
+ * @returns the new queue.
  */
 MonoReferenceQueue*
 mono_gc_reference_queue_new (mono_reference_queue_callback callback)
@@ -1510,7 +1510,7 @@ mono_gc_reference_queue_new (mono_reference_queue_callback callback)
  *
  * Queue an object to be watched for collection, when the @obj is
  * collected, the callback that was registered for the @queue will
- * be invoked with the @obj and @user_data arguments.
+ * be invoked with @user_data as argument.
  *
  * @returns false if the queue is scheduled to be freed.
  */
@@ -1523,6 +1523,7 @@ mono_gc_reference_queue_add (MonoReferenceQueue *queue, MonoObject *obj, void *u
 
        entry = g_new0 (RefQueueEntry, 1);
        entry->user_data = user_data;
+       entry->domain = mono_object_domain (obj);
 
 #ifdef HAVE_SGEN_GC
        mono_gc_weak_link_add (&entry->dis_link, obj, TRUE);
@@ -1537,9 +1538,9 @@ mono_gc_reference_queue_add (MonoReferenceQueue *queue, MonoObject *obj, void *u
 
 /**
  * mono_gc_reference_queue_free:
- * @queue the queue that should be deleted.
+ * @queue the queue that should be freed.
  *
- * This operation signals that @queue should be deleted. This operation is deferred
+ * This operation signals that @queue should be freed. This operation is deferred
  * as it happens on the finalizer thread.
  *
  * After this call, no further objects can be queued. It's the responsibility of the
index 5d62466ffbc6fbd04a0a3599d5832bd14a420ba5..ac2e0278ab59297036cc421c3929461481e73df3 100644 (file)
@@ -730,9 +730,7 @@ ICALL(MARSHAL_42, "copy_to_unmanaged", ves_icall_System_Runtime_InteropServices_
 
 ICALL_TYPE(ACTS, "System.Runtime.Remoting.Activation.ActivationServices", ACTS_1)
 ICALL(ACTS_1, "AllocateUninitializedClassInstance", ves_icall_System_Runtime_Activation_ActivationServices_AllocateUninitializedClassInstance)
-#ifndef DISABLE_REMOTING
 ICALL(ACTS_2, "EnableProxyActivation", ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation)
-#endif
 
 ICALL_TYPE(MONOMM, "System.Runtime.Remoting.Messaging.MonoMethodMessage", MONOMM_1)
 ICALL(MONOMM_1, "InitMessage", ves_icall_MonoMethodMessage_InitMessage)
@@ -892,7 +890,7 @@ ICALL(THREAD_28, "VolatileRead(int&)", ves_icall_System_Threading_Thread_Volatil
 ICALL(THREAD_29, "VolatileRead(int16&)", ves_icall_System_Threading_Thread_VolatileRead2)
 ICALL(THREAD_30, "VolatileRead(intptr&)", ves_icall_System_Threading_Thread_VolatileReadIntPtr)
 ICALL(THREAD_31, "VolatileRead(long&)", ves_icall_System_Threading_Thread_VolatileRead8)
-ICALL(THREAD_32, "VolatileRead(object&)", ves_icall_System_Threading_Thread_VolatileReadIntPtr)
+ICALL(THREAD_32, "VolatileRead(object&)", ves_icall_System_Threading_Thread_VolatileReadObject)
 ICALL(THREAD_33, "VolatileRead(sbyte&)", ves_icall_System_Threading_Thread_VolatileRead1)
 ICALL(THREAD_34, "VolatileRead(single&)", ves_icall_System_Threading_Thread_VolatileReadFloat)
 ICALL(THREAD_35, "VolatileRead(uint&)", ves_icall_System_Threading_Thread_VolatileRead4)
@@ -925,33 +923,33 @@ ICALL(THREADP_5, "pool_queue", icall_append_job)
 
 ICALL_TYPE(VOLATILE, "System.Threading.Volatile", VOLATILE_28)
 ICALL(VOLATILE_28, "Read(T&)", ves_icall_System_Threading_Volatile_Read_T)
-ICALL(VOLATILE_1, "Read(bool&)", ves_icall_System_Threading_Thread_VolatileRead1)
-ICALL(VOLATILE_2, "Read(byte&)", ves_icall_System_Threading_Thread_VolatileRead1)
-ICALL(VOLATILE_3, "Read(double&)", ves_icall_System_Threading_Thread_VolatileReadDouble)
-ICALL(VOLATILE_4, "Read(int&)", ves_icall_System_Threading_Thread_VolatileRead4)
-ICALL(VOLATILE_5, "Read(int16&)", ves_icall_System_Threading_Thread_VolatileRead2)
-ICALL(VOLATILE_6, "Read(intptr&)", ves_icall_System_Threading_Thread_VolatileReadIntPtr)
-ICALL(VOLATILE_7, "Read(long&)", ves_icall_System_Threading_Thread_VolatileRead8)
-ICALL(VOLATILE_8, "Read(sbyte&)", ves_icall_System_Threading_Thread_VolatileRead1)
-ICALL(VOLATILE_9, "Read(single&)", ves_icall_System_Threading_Thread_VolatileReadFloat)
-ICALL(VOLATILE_10, "Read(uint&)", ves_icall_System_Threading_Thread_VolatileRead4)
-ICALL(VOLATILE_11, "Read(uint16&)", ves_icall_System_Threading_Thread_VolatileRead2)
-ICALL(VOLATILE_12, "Read(uintptr&)", ves_icall_System_Threading_Thread_VolatileReadIntPtr)
-ICALL(VOLATILE_13, "Read(ulong&)", ves_icall_System_Threading_Thread_VolatileRead8)
+ICALL(VOLATILE_1, "Read(bool&)", ves_icall_System_Threading_Volatile_Read1)
+ICALL(VOLATILE_2, "Read(byte&)", ves_icall_System_Threading_Volatile_Read1)
+ICALL(VOLATILE_3, "Read(double&)", ves_icall_System_Threading_Volatile_ReadDouble)
+ICALL(VOLATILE_4, "Read(int&)", ves_icall_System_Threading_Volatile_Read4)
+ICALL(VOLATILE_5, "Read(int16&)", ves_icall_System_Threading_Volatile_Read2)
+ICALL(VOLATILE_6, "Read(intptr&)", ves_icall_System_Threading_Volatile_ReadIntPtr)
+ICALL(VOLATILE_7, "Read(long&)", ves_icall_System_Threading_Volatile_Read8)
+ICALL(VOLATILE_8, "Read(sbyte&)", ves_icall_System_Threading_Volatile_Read1)
+ICALL(VOLATILE_9, "Read(single&)", ves_icall_System_Threading_Volatile_ReadFloat)
+ICALL(VOLATILE_10, "Read(uint&)", ves_icall_System_Threading_Volatile_Read4)
+ICALL(VOLATILE_11, "Read(uint16&)", ves_icall_System_Threading_Volatile_Read2)
+ICALL(VOLATILE_12, "Read(uintptr&)", ves_icall_System_Threading_Volatile_ReadIntPtr)
+ICALL(VOLATILE_13, "Read(ulong&)", ves_icall_System_Threading_Volatile_Read8)
 ICALL(VOLATILE_27, "Write(T&,T)", ves_icall_System_Threading_Volatile_Write_T)
-ICALL(VOLATILE_14, "Write(bool&,bool)", ves_icall_System_Threading_Thread_VolatileWrite1)
-ICALL(VOLATILE_15, "Write(byte&,byte)", ves_icall_System_Threading_Thread_VolatileWrite1)
-ICALL(VOLATILE_16, "Write(double&,double)", ves_icall_System_Threading_Thread_VolatileWriteDouble)
-ICALL(VOLATILE_17, "Write(int&,int)", ves_icall_System_Threading_Thread_VolatileWrite4)
-ICALL(VOLATILE_18, "Write(int16&,int16)", ves_icall_System_Threading_Thread_VolatileWrite2)
-ICALL(VOLATILE_19, "Write(intptr&,intptr)", ves_icall_System_Threading_Thread_VolatileWriteIntPtr)
-ICALL(VOLATILE_20, "Write(long&,long)", ves_icall_System_Threading_Thread_VolatileWrite8)
-ICALL(VOLATILE_21, "Write(sbyte&,sbyte)", ves_icall_System_Threading_Thread_VolatileWrite1)
-ICALL(VOLATILE_22, "Write(single&,single)", ves_icall_System_Threading_Thread_VolatileWriteFloat)
-ICALL(VOLATILE_23, "Write(uint&,uint)", ves_icall_System_Threading_Thread_VolatileWrite4)
-ICALL(VOLATILE_24, "Write(uint16&,uint16)", ves_icall_System_Threading_Thread_VolatileWrite2)
-ICALL(VOLATILE_25, "Write(uintptr&,uintptr)", ves_icall_System_Threading_Thread_VolatileWriteIntPtr)
-ICALL(VOLATILE_26, "Write(ulong&,ulong)", ves_icall_System_Threading_Thread_VolatileWrite8)
+ICALL(VOLATILE_14, "Write(bool&,bool)", ves_icall_System_Threading_Volatile_Write1)
+ICALL(VOLATILE_15, "Write(byte&,byte)", ves_icall_System_Threading_Volatile_Write1)
+ICALL(VOLATILE_16, "Write(double&,double)", ves_icall_System_Threading_Volatile_WriteDouble)
+ICALL(VOLATILE_17, "Write(int&,int)", ves_icall_System_Threading_Volatile_Write4)
+ICALL(VOLATILE_18, "Write(int16&,int16)", ves_icall_System_Threading_Volatile_Write2)
+ICALL(VOLATILE_19, "Write(intptr&,intptr)", ves_icall_System_Threading_Volatile_WriteIntPtr)
+ICALL(VOLATILE_20, "Write(long&,long)", ves_icall_System_Threading_Volatile_Write8)
+ICALL(VOLATILE_21, "Write(sbyte&,sbyte)", ves_icall_System_Threading_Volatile_Write1)
+ICALL(VOLATILE_22, "Write(single&,single)", ves_icall_System_Threading_Volatile_WriteFloat)
+ICALL(VOLATILE_23, "Write(uint&,uint)", ves_icall_System_Threading_Volatile_Write4)
+ICALL(VOLATILE_24, "Write(uint16&,uint16)", ves_icall_System_Threading_Volatile_Write2)
+ICALL(VOLATILE_25, "Write(uintptr&,uintptr)", ves_icall_System_Threading_Volatile_WriteIntPtr)
+ICALL(VOLATILE_26, "Write(ulong&,ulong)", ves_icall_System_Threading_Volatile_Write8)
 
 ICALL_TYPE(WAITH, "System.Threading.WaitHandle", WAITH_1)
 ICALL(WAITH_1, "SignalAndWait_Internal", ves_icall_System_Threading_WaitHandle_SignalAndWait_Internal)
index 16cf33550f2b08c8407a339994c2b099f7371465..3bdaefe42bbb8c445ad5558f58f7db3dc30a57fc 100644 (file)
@@ -84,6 +84,7 @@
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-io-portability.h>
 #include <mono/utils/mono-digest.h>
+#include <mono/utils/bsearch.h>
 
 #if defined (HOST_WIN32)
 #include <windows.h>
@@ -684,7 +685,7 @@ ICALL_EXPORT void
 ves_icall_System_Array_ClearInternal (MonoArray *arr, int idx, int length)
 {
        int sz = mono_array_element_size (mono_object_class (arr));
-       mono_gc_bzero (mono_array_addr_with_size (arr, sz, idx), length * sz);
+       mono_gc_bzero (mono_array_addr_with_size_fast (arr, sz, idx), length * sz);
 }
 
 ICALL_EXPORT gboolean
@@ -693,92 +694,59 @@ ves_icall_System_Array_FastCopy (MonoArray *source, int source_idx, MonoArray* d
        int element_size;
        void * dest_addr;
        void * source_addr;
+       MonoVTable *src_vtable;
+       MonoVTable *dest_vtable;
        MonoClass *src_class;
        MonoClass *dest_class;
 
-       MONO_ARCH_SAVE_REGS;
+       src_vtable = source->obj.vtable;
+       dest_vtable = dest->obj.vtable;
 
-       if (source->obj.vtable->klass->rank != dest->obj.vtable->klass->rank)
+       if (src_vtable->rank != dest_vtable->rank)
                return FALSE;
 
        if (source->bounds || dest->bounds)
                return FALSE;
 
        /* there's no integer overflow since mono_array_length returns an unsigned integer */
-       if ((dest_idx + length > mono_array_length (dest)) ||
-               (source_idx + length > mono_array_length (source)))
+       if ((dest_idx + length > mono_array_length_fast (dest)) ||
+               (source_idx + length > mono_array_length_fast (source)))
                return FALSE;
 
-       src_class = source->obj.vtable->klass->element_class;
-       dest_class = dest->obj.vtable->klass->element_class;
+       src_class = src_vtable->klass->element_class;
+       dest_class = dest_vtable->klass->element_class;
 
        /*
         * Handle common cases.
         */
 
-       /* Case1: object[] -> valuetype[] (ArrayList::ToArray) */
-       if (src_class == mono_defaults.object_class && dest_class->valuetype) {
-               // FIXME: This is racy
+       /* Case1: object[] -> valuetype[] (ArrayList::ToArray) 
+       We fallback to managed here since we need to typecheck each boxed valuetype before storing them in the dest array.
+       */
+       if (src_class == mono_defaults.object_class && dest_class->valuetype)
                return FALSE;
-               /*
-                 int i;
-               int has_refs = dest_class->has_references;
-               for (i = source_idx; i < source_idx + length; ++i) {
-                       MonoObject *elem = mono_array_get (source, MonoObject*, i);
-                       if (elem && !mono_object_isinst (elem, dest_class))
-                               return FALSE;
-               }
-
-               element_size = mono_array_element_size (dest->obj.vtable->klass);
-               memset (mono_array_addr_with_size (dest, element_size, dest_idx), 0, element_size * length);
-               for (i = 0; i < length; ++i) {
-                       MonoObject *elem = mono_array_get (source, MonoObject*, source_idx + i);
-                       void *addr = mono_array_addr_with_size (dest, element_size, dest_idx + i);
-                       if (!elem)
-                               continue;
-                       if (has_refs)
-                               mono_value_copy (addr, (char *)elem + sizeof (MonoObject), dest_class);
-                       else
-                               memcpy (addr, (char *)elem + sizeof (MonoObject), element_size);
-               }
-               return TRUE;
-               */
-       }
 
        /* Check if we're copying a char[] <==> (u)short[] */
        if (src_class != dest_class) {
                if (dest_class->valuetype || dest_class->enumtype || src_class->valuetype || src_class->enumtype)
                        return FALSE;
 
-               if (mono_class_is_subclass_of (src_class, dest_class, FALSE))
-                       ;
-               /* Case2: object[] -> reftype[] (ArrayList::ToArray) */
-               else if (mono_class_is_subclass_of (dest_class, src_class, FALSE)) {
-                       // FIXME: This is racy
-                       return FALSE;
-                       /*
-                         int i;
-                       for (i = source_idx; i < source_idx + length; ++i) {
-                               MonoObject *elem = mono_array_get (source, MonoObject*, i);
-                               if (elem && !mono_object_isinst (elem, dest_class))
-                                       return FALSE;
-                       }
-                       */
-               } else
+               /* It's only safe to copy between arrays if we can ensure the source will always have a subtype of the destination. We bail otherwise. */
+               if (!mono_class_is_subclass_of (src_class, dest_class, FALSE))
                        return FALSE;
        }
 
        if (dest_class->valuetype) {
                element_size = mono_array_element_size (source->obj.vtable->klass);
-               source_addr = mono_array_addr_with_size (source, element_size, source_idx);
+               source_addr = mono_array_addr_with_size_fast (source, element_size, source_idx);
                if (dest_class->has_references) {
                        mono_value_copy_array (dest, dest_idx, source_addr, length);
                } else {
-                       dest_addr = mono_array_addr_with_size (dest, element_size, dest_idx);
+                       dest_addr = mono_array_addr_with_size_fast (dest, element_size, dest_idx);
                        mono_gc_memmove (dest_addr, source_addr, element_size * length);
                }
        } else {
-               mono_array_memcpy_refs (dest, dest_idx, source, source_idx, length);
+               mono_array_memcpy_refs_fast (dest, dest_idx, source, source_idx, length);
        }
 
        return TRUE;
@@ -898,18 +866,6 @@ ves_icall_System_Runtime_CompilerServices_RuntimeHelpers_InitializeArray (MonoAr
        }
 #else
        memcpy (mono_array_addr (array, char, 0), field_data, size);
-#ifdef ARM_FPU_FPA
-       if (klass->element_class->byval_arg.type == MONO_TYPE_R8) {
-               gint i;
-               double tmp;
-               double *data = (double*)mono_array_addr (array, double, 0);
-
-               for (i = 0; i < size; i++, data++) {
-                       readr8 (data, &tmp);
-                       *data = tmp;
-               }
-       }
-#endif
 #endif
 }
 
@@ -1158,7 +1114,7 @@ ves_icall_System_ValueType_Equals (MonoObject *this, MonoObject *that, MonoArray
                int i;
                mono_gc_wbarrier_generic_store (fields, (MonoObject*) mono_array_new (mono_domain_get (), mono_defaults.object_class, count));
                for (i = 0; i < count; ++i)
-                       mono_array_setref (*fields, i, values [i]);
+                       mono_array_setref_fast (*fields, i, values [i]);
                return FALSE;
        } else {
                return TRUE;
@@ -2796,6 +2752,7 @@ ves_icall_InternalInvoke (MonoReflectionMethod *method, MonoObject *this, MonoAr
         */
        MonoMethod *m = method->method;
        MonoMethodSignature *sig = mono_method_signature (m);
+       MonoImage *image;
        int pcount;
        void *obj = this;
 
@@ -2849,10 +2806,16 @@ ves_icall_InternalInvoke (MonoReflectionMethod *method, MonoObject *this, MonoAr
                return NULL;
        }
 
-       if (m->klass->image->assembly->ref_only) {
+       image = m->klass->image;
+       if (image->assembly->ref_only) {
                mono_gc_wbarrier_generic_store (exc, (MonoObject*) mono_get_exception_invalid_operation ("It is illegal to invoke a method on a type loaded using the ReflectionOnly api."));
                return NULL;
        }
+
+       if (image->dynamic && !((MonoDynamicImage*)image)->run) {
+               mono_gc_wbarrier_generic_store (exc, (MonoObject*) mono_get_exception_not_supported ("Cannot invoke a method in a dynamic assembly without run access."));
+               return NULL;
+       }
        
        if (m->klass->rank && !strcmp (m->name, ".ctor")) {
                int i;
@@ -5967,10 +5930,12 @@ ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData (guint32 year, MonoArray
        struct tm start, tt;
        time_t t;
 
-       long int gmtoff;
-       int is_daylight = 0, day;
+       long int gmtoff, gmtoff_after, gmtoff_st, gmtoff_ds;
+       int day, transitioned;
        char tzone [64];
 
+       gmtoff_st = gmtoff_ds = transitioned = 0;
+
        MONO_ARCH_SAVE_REGS;
 
        MONO_CHECK_ARG_NULL (data);
@@ -6006,13 +5971,15 @@ ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData (guint32 year, MonoArray
        gmtoff = gmt_offset (&start, t);
 
        /* For each day of the year, calculate the tm_gmtoff. */
-       for (day = 0; day < 365; day++) {
+       for (day = 0; day < 365 && transitioned < 2; day++) {
 
                t += 3600*24;
                tt = *localtime (&t);
 
+        gmtoff_after = gmt_offset(&tt, t);
+
                /* Daylight saving starts or ends here. */
-               if (gmt_offset (&tt, t) != gmtoff) {
+               if (gmtoff_after != gmtoff) {
                        struct tm tt1;
                        time_t t1;
 
@@ -6032,36 +5999,37 @@ ves_icall_System_CurrentSystemTimeZone_GetTimeZoneData (guint32 year, MonoArray
                        strftime (tzone, sizeof (tzone), "%Z", &tt);
                        
                        /* Write data, if we're already in daylight saving, we're done. */
-                       if (is_daylight) {
-                               mono_array_setref ((*names), 0, mono_string_new (domain, tzone));
-                               mono_array_set ((*data), gint64, 1, ((gint64)t1 + EPOCH_ADJUST) * 10000000L);
-                               return 1;
+                       if (tt.tm_isdst) {
+                               mono_array_setref ((*names), 1, mono_string_new (domain, tzone));
+                               mono_array_set ((*data), gint64, 0, ((gint64)t1 + EPOCH_ADJUST) * 10000000L);
+                               if (gmtoff_ds == 0) {
+                                       gmtoff_st = gmtoff;
+                                       gmtoff_ds = gmtoff_after;
+                               }
+                               transitioned++;
                        } else {
-                               struct tm end;
                                time_t te;
+                               te = mktime (&tt);
                                
-                               memset (&end, 0, sizeof (end));
-                               end.tm_year = year-1900 + 1;
-                               end.tm_mday = 1;
-                               
-                               te = mktime (&end);
-                               
-                               mono_array_setref ((*names), 1, mono_string_new (domain, tzone));
-                               mono_array_set ((*data), gint64, 0, ((gint64)t1 + EPOCH_ADJUST) * 10000000L);
                                mono_array_setref ((*names), 0, mono_string_new (domain, tzone));
-                               mono_array_set ((*data), gint64, 1, ((gint64)te + EPOCH_ADJUST) * 10000000L);
-                               is_daylight = 1;
+                               mono_array_set ((*data), gint64, 1, ((gint64)t1 + EPOCH_ADJUST) * 10000000L);
+                               if (gmtoff_ds == 0) {
+                                       gmtoff_st = gmtoff_after;
+                                       gmtoff_ds = gmtoff;
+                               }
+                               transitioned++;
                        }
 
                        /* This is only set once when we enter daylight saving. */
-                       mono_array_set ((*data), gint64, 2, (gint64)gmtoff * 10000000L);
-                       mono_array_set ((*data), gint64, 3, (gint64)(gmt_offset (&tt, t) - gmtoff) * 10000000L);
-
+                       if (tt1.tm_isdst) {
+                               mono_array_set ((*data), gint64, 2, (gint64)gmtoff_st * 10000000L);
+                               mono_array_set ((*data), gint64, 3, (gint64)(gmtoff_ds - gmtoff_st) * 10000000L);
+                       }
                        gmtoff = gmt_offset (&tt, t);
                }
        }
 
-       if (!is_daylight) {
+       if (transitioned < 2) {
                strftime (tzone, sizeof (tzone), "%Z", &tt);
                mono_array_setref ((*names), 0, mono_string_new (domain, tzone));
                mono_array_setref ((*names), 1, mono_string_new (domain, tzone));
@@ -6537,10 +6505,8 @@ ves_icall_System_Environment_Exit (int result)
  * NaCl exits anyway.
  */
 #ifndef __native_client__
-       mono_runtime_shutdown ();
-
-       /* This will kill the tp threads which cannot be suspended */
-       mono_thread_pool_cleanup ();
+       if (!mono_runtime_try_shutdown ())
+               mono_thread_exit ();
 
        /* Suspend all managed threads since the runtime is going away */
        mono_thread_suspend_all_other_threads ();
@@ -6839,6 +6805,15 @@ ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation (Mo
 
        mono_vtable_set_is_remote (vtable, enable);
 }
+
+#else /* DISABLE_REMOTING */
+
+ICALL_EXPORT void
+ves_icall_System_Runtime_Activation_ActivationServices_EnableProxyActivation (MonoReflectionType *type, MonoBoolean enable)
+{
+       g_assert_not_reached ();
+}
+
 #endif
 
 ICALL_EXPORT MonoObject *
@@ -7952,7 +7927,7 @@ compare_method_imap (const void *key, const void *elem)
 static gpointer
 find_method_icall (const IcallTypeDesc *imap, const char *name)
 {
-       const guint16 *nameslot = bsearch (name, icall_names_idx + imap->first_icall, icall_desc_num_icalls (imap), sizeof (icall_names_idx [0]), compare_method_imap);
+       const guint16 *nameslot = mono_binary_search (name, icall_names_idx + imap->first_icall, icall_desc_num_icalls (imap), sizeof (icall_names_idx [0]), compare_method_imap);
        if (!nameslot)
                return NULL;
        return (gpointer)icall_functions [(nameslot - &icall_names_idx [0])];
@@ -7968,7 +7943,7 @@ compare_class_imap (const void *key, const void *elem)
 static const IcallTypeDesc*
 find_class_icalls (const char *name)
 {
-       const guint16 *nameslot = bsearch (name, icall_type_names_idx, Icall_type_num, sizeof (icall_type_names_idx [0]), compare_class_imap);
+       const guint16 *nameslot = mono_binary_search (name, icall_type_names_idx, Icall_type_num, sizeof (icall_type_names_idx [0]), compare_class_imap);
        if (!nameslot)
                return NULL;
        return &icall_type_descs [nameslot - &icall_type_names_idx [0]];
@@ -7986,7 +7961,7 @@ compare_method_imap (const void *key, const void *elem)
 static gpointer
 find_method_icall (const IcallTypeDesc *imap, const char *name)
 {
-       const char **nameslot = bsearch (name, icall_names + imap->first_icall, icall_desc_num_icalls (imap), sizeof (icall_names [0]), compare_method_imap);
+       const char **nameslot = mono_binary_search (name, icall_names + imap->first_icall, icall_desc_num_icalls (imap), sizeof (icall_names [0]), compare_method_imap);
        if (!nameslot)
                return NULL;
        return (gpointer)icall_functions [(nameslot - icall_names)];
@@ -8002,7 +7977,7 @@ compare_class_imap (const void *key, const void *elem)
 static const IcallTypeDesc*
 find_class_icalls (const char *name)
 {
-       const char **nameslot = bsearch (name, icall_type_names, Icall_type_num, sizeof (icall_type_names [0]), compare_class_imap);
+       const char **nameslot = mono_binary_search (name, icall_type_names, Icall_type_num, sizeof (icall_type_names [0]), compare_class_imap);
        if (!nameslot)
                return NULL;
        return &icall_type_descs [nameslot - icall_type_names];
@@ -8213,7 +8188,7 @@ mono_lookup_icall_symbol (MonoMethod *m)
        func = mono_lookup_internal_call (m);
        if (!func)
                return NULL;
-       slot = bsearch (func, functions_sorted, G_N_ELEMENTS (icall_functions), sizeof (gpointer), func_cmp);
+       slot = mono_binary_search (func, functions_sorted, G_N_ELEMENTS (icall_functions), sizeof (gpointer), func_cmp);
        if (!slot)
                return NULL;
        g_assert (slot);
index 5847544f469cf97e71c666717fee74bb506acde1..7140a630bad2630e1e332dd5dd3b7c2e1ef089e6 100644 (file)
@@ -151,7 +151,16 @@ mono_image_rva_map (MonoImage *image, guint32 addr)
        const int top = iinfo->cli_section_count;
        MonoSectionTable *tables = iinfo->cli_section_tables;
        int i;
-       
+
+#ifdef HOST_WIN32
+       if (image->is_module_handle) {
+               if (addr && addr < image->raw_data_len)
+                       return image->raw_data + addr;
+               else
+                       return NULL;
+       }
+#endif
+
        for (i = 0; i < top; i++){
                if ((addr >= tables->st_virtual_address) &&
                    (addr < tables->st_virtual_address + tables->st_raw_data_size)){
@@ -159,10 +168,6 @@ mono_image_rva_map (MonoImage *image, guint32 addr)
                                if (!mono_image_ensure_section_idx (image, i))
                                        return NULL;
                        }
-#ifdef HOST_WIN32
-                       if (image->is_module_handle)
-                               return image->raw_data + addr;
-#endif
                        return (char*)iinfo->cli_sections [i] +
                                (addr - tables->st_virtual_address);
                }
@@ -1536,10 +1541,7 @@ mono_image_close_except_pools (MonoImage *image)
         * MonoImage might outlive its associated MonoAssembly.
         */
        if (image->references && !image->dynamic) {
-               MonoTableInfo *t = &image->tables [MONO_TABLE_ASSEMBLYREF];
-               int i;
-
-               for (i = 0; i < t->rows; i++) {
+               for (i = 0; i < image->nreferences; i++) {
                        if (image->references [i] && image->references [i] != REFERENCE_MISSING) {
                                if (!mono_assembly_close_except_image_pools (image->references [i]))
                                        image->references [i] = NULL;
@@ -1625,8 +1627,10 @@ mono_image_close_except_pools (MonoImage *image)
        free_hash (image->delegate_invoke_generic_cache);
        free_hash (image->delegate_begin_invoke_generic_cache);
        free_hash (image->delegate_end_invoke_generic_cache);
+       free_hash (image->synchronized_generic_cache);
        free_hash (image->remoting_invoke_cache);
        free_hash (image->runtime_invoke_cache);
+       free_hash (image->runtime_invoke_vtype_cache);
        free_hash (image->runtime_invoke_direct_cache);
        free_hash (image->runtime_invoke_vcall_cache);
        free_hash (image->synchronized_cache);
@@ -1714,10 +1718,7 @@ mono_image_close_finish (MonoImage *image)
        image->reflection_info_unregister_classes = NULL;
 
        if (image->references && !image->dynamic) {
-               MonoTableInfo *t = &image->tables [MONO_TABLE_ASSEMBLYREF];
-               int i;
-
-               for (i = 0; i < t->rows; i++) {
+               for (i = 0; i < image->nreferences; i++) {
                        if (image->references [i] && image->references [i] != REFERENCE_MISSING)
                                mono_assembly_close_finish (image->references [i]);
                }
index a42be33a3e4eaa981dab58f76627e2533816ac62..c3ad58b3431c00e04a95676339e5f07ea2e3291f 100644 (file)
@@ -18,65 +18,65 @@ typedef enum {
        MONO_IMAGE_IMAGE_INVALID
 } MonoImageOpenStatus;
 
-void          mono_images_init    (void);
-void          mono_images_cleanup (void);
+MONO_API void          mono_images_init    (void);
+MONO_API void          mono_images_cleanup (void);
 
-MonoImage    *mono_image_open     (const char *fname,
+MONO_API MonoImage    *mono_image_open     (const char *fname,
                                   MonoImageOpenStatus *status);
-MonoImage    *mono_image_open_full (const char *fname,
+MONO_API MonoImage    *mono_image_open_full (const char *fname,
                                   MonoImageOpenStatus *status, mono_bool refonly);
-MonoImage    *mono_pe_file_open     (const char *fname,
+MONO_API MonoImage    *mono_pe_file_open     (const char *fname,
                                     MonoImageOpenStatus *status);
-MonoImage    *mono_image_open_from_data (char *data, uint32_t data_len, mono_bool need_copy,
+MONO_API MonoImage    *mono_image_open_from_data (char *data, uint32_t data_len, mono_bool need_copy,
                                          MonoImageOpenStatus *status);
-MonoImage    *mono_image_open_from_data_full (char *data, uint32_t data_len, mono_bool need_copy,
+MONO_API MonoImage    *mono_image_open_from_data_full (char *data, uint32_t data_len, mono_bool need_copy,
                                          MonoImageOpenStatus *status, mono_bool refonly);
-MonoImage    *mono_image_open_from_data_with_name (char *data, uint32_t data_len, mono_bool need_copy,
+MONO_API MonoImage    *mono_image_open_from_data_with_name (char *data, uint32_t data_len, mono_bool need_copy,
                                                    MonoImageOpenStatus *status, mono_bool refonly, const char *name);
-void          mono_image_fixup_vtable (MonoImage *image);
-MonoImage    *mono_image_loaded   (const char *name);
-MonoImage    *mono_image_loaded_full   (const char *name, mono_bool refonly);
-MonoImage    *mono_image_loaded_by_guid (const char *guid);
-MonoImage    *mono_image_loaded_by_guid_full (const char *guid, mono_bool refonly);
-void          mono_image_init     (MonoImage *image);
-void          mono_image_close    (MonoImage *image);
-void          mono_image_addref   (MonoImage *image);
-const char   *mono_image_strerror (MonoImageOpenStatus status);
+MONO_API void          mono_image_fixup_vtable (MonoImage *image);
+MONO_API MonoImage    *mono_image_loaded   (const char *name);
+MONO_API MonoImage    *mono_image_loaded_full   (const char *name, mono_bool refonly);
+MONO_API MonoImage    *mono_image_loaded_by_guid (const char *guid);
+MONO_API MonoImage    *mono_image_loaded_by_guid_full (const char *guid, mono_bool refonly);
+MONO_API void          mono_image_init     (MonoImage *image);
+MONO_API void          mono_image_close    (MonoImage *image);
+MONO_API void          mono_image_addref   (MonoImage *image);
+MONO_API const char   *mono_image_strerror (MonoImageOpenStatus status);
 
-int           mono_image_ensure_section     (MonoImage *image,
+MONO_API int           mono_image_ensure_section     (MonoImage *image,
                                             const char *section);
-int           mono_image_ensure_section_idx (MonoImage *image,
+MONO_API int           mono_image_ensure_section_idx (MonoImage *image,
                                             int section);
 
-uint32_t       mono_image_get_entry_point    (MonoImage *image);
-const char   *mono_image_get_resource       (MonoImage *image, uint32_t offset, uint32_t *size);
-MonoImage*    mono_image_load_file_for_image (MonoImage *image, int fileidx);
+MONO_API uint32_t       mono_image_get_entry_point    (MonoImage *image);
+MONO_API const char   *mono_image_get_resource       (MonoImage *image, uint32_t offset, uint32_t *size);
+MONO_API MonoImage*    mono_image_load_file_for_image (MonoImage *image, int fileidx);
 
-MonoImage*    mono_image_load_module (MonoImage *image, int idx);
+MONO_API MonoImage*    mono_image_load_module (MonoImage *image, int idx);
 
-const char*   mono_image_get_name       (MonoImage *image);
-const char*   mono_image_get_filename   (MonoImage *image);
-const char *  mono_image_get_guid       (MonoImage *image);
-MonoAssembly* mono_image_get_assembly   (MonoImage *image);
-mono_bool     mono_image_is_dynamic     (MonoImage *image);
-char*         mono_image_rva_map        (MonoImage *image, uint32_t rva);
+MONO_API const char*   mono_image_get_name       (MonoImage *image);
+MONO_API const char*   mono_image_get_filename   (MonoImage *image);
+MONO_API const char *  mono_image_get_guid       (MonoImage *image);
+MONO_API MonoAssembly* mono_image_get_assembly   (MonoImage *image);
+MONO_API mono_bool     mono_image_is_dynamic     (MonoImage *image);
+MONO_API char*         mono_image_rva_map        (MonoImage *image, uint32_t rva);
 
-const MonoTableInfo *mono_image_get_table_info (MonoImage *image, int table_id);
-int                  mono_image_get_table_rows (MonoImage *image, int table_id);
-int                  mono_table_info_get_rows  (const MonoTableInfo *table);
+MONO_API const MonoTableInfo *mono_image_get_table_info (MonoImage *image, int table_id);
+MONO_API int                  mono_image_get_table_rows (MonoImage *image, int table_id);
+MONO_API int                  mono_table_info_get_rows  (const MonoTableInfo *table);
 
 /* This actually returns a MonoPEResourceDataEntry *, but declaring it
  * causes an include file loop.
  */
-void*      mono_image_lookup_resource (MonoImage *image, uint32_t res_id,
+MONO_API void*      mono_image_lookup_resource (MonoImage *image, uint32_t res_id,
                                          uint32_t lang_id, mono_unichar2 *name);
 
-const char*   mono_image_get_public_key  (MonoImage *image, uint32_t *size);
-const char*   mono_image_get_strong_name (MonoImage *image, uint32_t *size);
-uint32_t       mono_image_strong_name_position (MonoImage *image, uint32_t *size);
-void          mono_image_add_to_name_cache (MonoImage *image, 
+MONO_API const char*   mono_image_get_public_key  (MonoImage *image, uint32_t *size);
+MONO_API const char*   mono_image_get_strong_name (MonoImage *image, uint32_t *size);
+MONO_API uint32_t       mono_image_strong_name_position (MonoImage *image, uint32_t *size);
+MONO_API void          mono_image_add_to_name_cache (MonoImage *image, 
                        const char *nspace, const char *name, uint32_t idx);
-mono_bool     mono_image_has_authenticode_entry (MonoImage *image);
+MONO_API mono_bool     mono_image_has_authenticode_entry (MonoImage *image);
 
 MONO_END_DECLS
 
index fb9f01286295e566a7807b1a89622530e922c984..6983eb71e5bf45fa54e04112adb949c44cfc228e 100644 (file)
@@ -2252,7 +2252,7 @@ stack_walk_adapter (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data)
                return FALSE;
        case FRAME_TYPE_MANAGED:
                g_assert (frame->ji);
-               return d->func (frame->ji->method, frame->native_offset, frame->il_offset, frame->managed, d->user_data);
+               return d->func (mono_jit_info_get_method (frame->ji), frame->native_offset, frame->il_offset, frame->managed, d->user_data);
                break;
        default:
                g_assert_not_reached ();
index c519c30607f2826f5729f6dc603a5281453b7e28..b159dee727ab7a6bb55896e513bb25ed90634fa6 100644 (file)
@@ -8,86 +8,86 @@ MONO_BEGIN_DECLS
 
 typedef mono_bool (*MonoStackWalk)     (MonoMethod *method, int32_t native_offset, int32_t il_offset, mono_bool managed, void* data);
 
-MonoMethod *
+MONO_API MonoMethod *
 mono_get_method             (MonoImage *image, uint32_t token, MonoClass *klass);
 
-MonoMethod *
+MONO_API MonoMethod *
 mono_get_method_full        (MonoImage *image, uint32_t token, MonoClass *klass,
                             MonoGenericContext *context);
 
-MonoMethod *
+MONO_API MonoMethod *
 mono_get_method_constrained (MonoImage *image, uint32_t token, MonoClass *constrained_class,
                             MonoGenericContext *context, MonoMethod **cil_method);
 
-void               
+MONO_API void               
 mono_free_method           (MonoMethod *method);
 
-MonoMethodSignature*
+MONO_API MonoMethodSignature*
 mono_method_get_signature_full (MonoMethod *method, MonoImage *image, uint32_t token,
                                MonoGenericContext *context);
 
-MonoMethodSignature* 
+MONO_API MonoMethodSignature* 
 mono_method_get_signature  (MonoMethod *method, MonoImage *image, uint32_t token);
 
-MonoMethodSignature* 
+MONO_API MonoMethodSignature* 
 mono_method_signature      (MonoMethod *method);
 
-MonoMethodHeader* 
+MONO_API MonoMethodHeader* 
 mono_method_get_header     (MonoMethod *method);
 
-const char*
+MONO_API const char*
 mono_method_get_name       (MonoMethod *method);
 
-MonoClass*
+MONO_API MonoClass*
 mono_method_get_class      (MonoMethod *method);
 
-uint32_t
+MONO_API uint32_t
 mono_method_get_token      (MonoMethod *method);
 
-uint32_t
+MONO_API uint32_t
 mono_method_get_flags      (MonoMethod *method, uint32_t *iflags);
 
-uint32_t
+MONO_API uint32_t
 mono_method_get_index      (MonoMethod *method);
 
-MonoImage *
+MONO_API MonoImage *
 mono_load_image            (const char *fname, MonoImageOpenStatus *status);
 
-void
+MONO_API void
 mono_add_internal_call     (const char *name, const void* method);
 
-void*
+MONO_API void*
 mono_lookup_internal_call (MonoMethod *method);
 
-const char*
+MONO_API const char*
 mono_lookup_icall_symbol (MonoMethod *m);
 
-void
+MONO_API void
 mono_dllmap_insert (MonoImage *assembly, const char *dll, const char *func, const char *tdll, const char *tfunc);
 
-void*
+MONO_API void*
 mono_lookup_pinvoke_call (MonoMethod *method, const char **exc_class, const char **exc_arg);
 
-void
+MONO_API void
 mono_method_get_param_names (MonoMethod *method, const char **names);
 
-uint32_t
+MONO_API uint32_t
 mono_method_get_param_token (MonoMethod *method, int idx);
 
-void
+MONO_API void
 mono_method_get_marshal_info (MonoMethod *method, MonoMarshalSpec **mspecs);
 
-mono_bool
+MONO_API mono_bool
 mono_method_has_marshal_info (MonoMethod *method);
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_method_get_last_managed  (void);
 
-void
+MONO_API void
 mono_stack_walk         (MonoStackWalk func, void* user_data);
 
 /* Use this if the IL offset is not needed: it's faster */
-void
+MONO_API void
 mono_stack_walk_no_il   (MonoStackWalk func, void* user_data);
 
 MONO_END_DECLS
index 23e63c5e733e20ae7d0b240391d7bff9a16b570c..1474a105737e7086789fbef0d35708ce50c0c086 100644 (file)
@@ -24,6 +24,7 @@
 #include <mono/metadata/locales.h>
 #include <mono/metadata/culture-info.h>
 #include <mono/metadata/culture-info-tables.h>
+#include <mono/utils/bsearch.h>
 
 #ifndef DISABLE_NORMALIZATION
 #include <mono/metadata/normalization-tables.h>
@@ -313,7 +314,7 @@ construct_culture_from_specific_name (MonoCultureInfo *ci, gchar *name)
 
        MONO_ARCH_SAVE_REGS;
 
-       ne = bsearch (name, culture_name_entries, NUM_CULTURE_ENTRIES,
+       ne = mono_binary_search (name, culture_name_entries, NUM_CULTURE_ENTRIES,
                        sizeof (CultureInfoNameEntry), culture_name_locator);
 
        if (ne == NULL)
@@ -332,7 +333,7 @@ culture_info_entry_from_lcid (int lcid)
 {
        const CultureInfoEntry *ci;
 
-       ci = bsearch (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
+       ci = mono_binary_search (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
 
        return ci;
 }
@@ -345,7 +346,7 @@ region_info_entry_from_lcid (int lcid)
 
        MONO_ARCH_SAVE_REGS;
 
-       ne = bsearch (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
+       ne = mono_binary_search (&lcid, culture_entries, NUM_CULTURE_ENTRIES, sizeof (CultureInfoEntry), culture_lcid_locator);
 
        if (ne == NULL)
                return FALSE;
@@ -355,47 +356,18 @@ region_info_entry_from_lcid (int lcid)
        return entry;
 }
 
-/*
- * The following two methods are modified from the ICU source code. (http://oss.software.ibm.com/icu)
- * Copyright (c) 1995-2003 International Business Machines Corporation and others
- * All rights reserved.
- */
-static gchar*
-get_posix_locale (void)
-{
-       const gchar* posix_locale = NULL;
-
-       posix_locale = g_getenv("LC_ALL");
-       if (posix_locale == 0) {
-               posix_locale = g_getenv("LANG");
-               if (posix_locale == 0) {
-                       posix_locale = setlocale(LC_ALL, NULL);
-               }
-       }
-
-       if (posix_locale == NULL)
-               return NULL;
-
-       if ((strcmp ("C", posix_locale) == 0) || (strchr (posix_locale, ' ') != NULL)
-                       || (strchr (posix_locale, '/') != NULL)) {
-               /*
-                * HPUX returns 'C C C C C C C'
-                * Solaris can return /en_US/C/C/C/C/C on the second try.
-                * Maybe we got some garbage.
-                */
-               return NULL;
-       }
-
-       return g_strdup (posix_locale);
-}
-
 #if defined (__APPLE__)
 static gchar*
 get_darwin_locale (void)
 {
        static gchar *darwin_locale = NULL;
        CFLocaleRef locale = NULL;
+       CFStringRef locale_language = NULL;
+       CFStringRef locale_country = NULL;
+       CFStringRef locale_script = NULL;
        CFStringRef locale_cfstr = NULL;
+       CFIndex bytes_converted;
+       CFIndex bytes_written;
        CFIndex len;
        int i;
 
@@ -405,21 +377,51 @@ get_darwin_locale (void)
        locale = CFLocaleCopyCurrent ();
 
        if (locale) {
-               locale_cfstr = CFLocaleGetIdentifier (locale);
-
-               if (locale_cfstr) {
-                       len = CFStringGetMaximumSizeForEncoding (CFStringGetLength (locale_cfstr), kCFStringEncodingMacRoman) + 1;
-                       darwin_locale = (char *) malloc (len);
-                       if (!CFStringGetCString (locale_cfstr, darwin_locale, len, kCFStringEncodingMacRoman)) {
-                               free (darwin_locale);
-                               CFRelease (locale);
-                               darwin_locale = NULL;
-                               return NULL;
+               locale_language = CFLocaleGetValue (locale, kCFLocaleLanguageCode);
+               if (locale_language != NULL && CFStringGetBytes(locale_language, CFRangeMake (0, CFStringGetLength (locale_language)), kCFStringEncodingMacRoman, 0, FALSE, NULL, 0, &bytes_converted) > 0) {
+                       len = bytes_converted + 1;
+
+                       locale_country = CFLocaleGetValue (locale, kCFLocaleCountryCode);
+                       if (locale_country != NULL && CFStringGetBytes (locale_country, CFRangeMake (0, CFStringGetLength (locale_country)), kCFStringEncodingMacRoman, 0, FALSE, NULL, 0, &bytes_converted) > 0) {
+                               len += bytes_converted + 1;
+
+                               locale_script = CFLocaleGetValue (locale, kCFLocaleScriptCode);
+                               if (locale_script != NULL && CFStringGetBytes (locale_script, CFRangeMake (0, CFStringGetLength (locale_script)), kCFStringEncodingMacRoman, 0, FALSE, NULL, 0, &bytes_converted) > 0) {
+                                       len += bytes_converted + 1;
+                               }
+
+                               darwin_locale = (char *) malloc (len + 1);
+                               CFStringGetBytes (locale_language, CFRangeMake (0, CFStringGetLength (locale_language)), kCFStringEncodingMacRoman, 0, FALSE, (UInt8 *) darwin_locale, len, &bytes_converted);
+
+                               darwin_locale[bytes_converted] = '-';
+                               bytes_written = bytes_converted + 1;
+                               if (locale_script != NULL && CFStringGetBytes (locale_script, CFRangeMake (0, CFStringGetLength (locale_script)), kCFStringEncodingMacRoman, 0, FALSE, (UInt8 *) &darwin_locale[bytes_written], len - bytes_written, &bytes_converted) > 0) {
+                                       darwin_locale[bytes_written + bytes_converted] = '-';
+                                       bytes_written += bytes_converted + 1;
+                               }
+
+                               CFStringGetBytes (locale_country, CFRangeMake (0, CFStringGetLength (locale_country)), kCFStringEncodingMacRoman, 0, FALSE, (UInt8 *) &darwin_locale[bytes_written], len - bytes_written, &bytes_converted);
+                               darwin_locale[bytes_written + bytes_converted] = '\0';
                        }
+               }
 
-                       for (i = 0; i < strlen (darwin_locale); i++)
-                               if (darwin_locale [i] == '_')
-                                       darwin_locale [i] = '-';
+               if (darwin_locale == NULL) {
+                       locale_cfstr = CFLocaleGetIdentifier (locale);
+
+                       if (locale_cfstr) {
+                               len = CFStringGetMaximumSizeForEncoding (CFStringGetLength (locale_cfstr), kCFStringEncodingMacRoman) + 1;
+                               darwin_locale = (char *) malloc (len);
+                               if (!CFStringGetCString (locale_cfstr, darwin_locale, len, kCFStringEncodingMacRoman)) {
+                                       free (darwin_locale);
+                                       CFRelease (locale);
+                                       darwin_locale = NULL;
+                                       return NULL;
+                               }
+
+                               for (i = 0; i < strlen (darwin_locale); i++)
+                                       if (darwin_locale [i] == '_')
+                                               darwin_locale [i] = '-';
+                       }                       
                }
 
                CFRelease (locale);
@@ -429,14 +431,34 @@ get_darwin_locale (void)
 }
 #endif
 
-static gchar*
-get_current_locale_name (void)
+static char *
+get_posix_locale (void)
 {
-       gchar *locale;
-       gchar *corrected = NULL;
-       const gchar *p;
-       gchar *c;
+       const char *locale;
+
+       locale = g_getenv ("LC_ALL");
+       if (locale == NULL) {
+               locale = g_getenv ("LANG");
+               if (locale == NULL)
+                       locale = setlocale (LC_ALL, NULL);
+       }
+       if (locale == NULL)
+               return NULL;
+
+       /* Skip English-only locale 'C' */
+       if (strcmp (locale, "C") == 0)
+               return NULL;
 
+       return g_strdup (locale);
+}
+
+
+static gchar *
+get_current_locale_name (void)
+{
+       char *locale;
+       char *p, *ret;
+               
 #ifdef HOST_WIN32
        locale = g_win32_getlocale ();
 #elif defined (__APPLE__)      
@@ -445,52 +467,23 @@ get_current_locale_name (void)
                locale = get_posix_locale ();
 #else
        locale = get_posix_locale ();
-#endif 
+#endif
 
        if (locale == NULL)
                return NULL;
 
-       if ((p = strchr (locale, '.')) != NULL) {
-               /* assume new locale can't be larger than old one? */
-               corrected = g_malloc (strlen (locale));
-               strncpy (corrected, locale, p - locale);
-               corrected [p - locale] = 0;
+       p = strchr (locale, '.');
+       if (p != NULL)
+               *p = 0;
+       p = strchr (locale, '@');
+       if (p != NULL)
+               *p = 0;
 
-               /* do not copy after the @ */
-               if ((p = strchr (corrected, '@')) != NULL)
-                       corrected [p - corrected] = 0;
-       }
-
-       /* Note that we scan the *uncorrected* ID. */
-       if ((p = strrchr (locale, '@')) != NULL) {
-
-               /*
-                * In Mono we dont handle the '@' modifier because we do
-                * not have any cultures that use it. We just trim it
-                * off of the end of the name.
-                */
-
-               if (corrected == NULL) {
-                       corrected = g_malloc (strlen (locale));
-                       strncpy (corrected, locale, p - locale);
-                       corrected [p - locale] = 0;
-               }
-       }
-
-       if (corrected == NULL)
-               corrected = locale;
-       else
-               g_free (locale);
-
-       if ((c = strchr (corrected, '_')) != NULL)
-               *c = '-';
-
-       c = corrected;
-       corrected = g_ascii_strdown (c, -1);
-       g_free (c);
+       ret = g_ascii_strdown (locale, -1);
+       g_free (locale);
 
-       return corrected;
-}       
+       return ret;
+}
 
 MonoBoolean
 ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_current_locale (MonoCultureInfo *ci)
@@ -537,7 +530,7 @@ ves_icall_System_Globalization_CultureInfo_construct_internal_locale_from_name (
        MONO_ARCH_SAVE_REGS;
 
        n = mono_string_to_utf8 (name);
-       ne = bsearch (n, culture_name_entries, NUM_CULTURE_ENTRIES,
+       ne = mono_binary_search (n, culture_name_entries, NUM_CULTURE_ENTRIES,
                        sizeof (CultureInfoNameEntry), culture_name_locator);
 
        if (ne == NULL) {
@@ -591,7 +584,7 @@ ves_icall_System_Globalization_RegionInfo_construct_internal_region_from_name (M
        MONO_ARCH_SAVE_REGS;
 
        n = mono_string_to_utf8 (name);
-       ne = bsearch (n, region_name_entries, NUM_REGION_ENTRIES,
+       ne = mono_binary_search (n, region_name_entries, NUM_REGION_ENTRIES,
                sizeof (RegionInfoNameEntry), region_name_locator);
 
        if (ne == NULL) {
index f7623db73f5f19d2747e2dacbca5b843203ff0fa..d75e9c302cb4f5cb1e8d75f68d2da2d1196858d6 100644 (file)
@@ -64,7 +64,7 @@ mono_locks_tracer_init (void)
 {
        char *name;
        InitializeCriticalSection (&tracer_lock);
-       if (!getenv ("MONO_ENABLE_LOCK_TRACER"))
+       if (!g_getenv ("MONO_ENABLE_LOCK_TRACER"))
                return;
        name = g_strdup_printf ("locks.%d", getpid ());
        trace_file = fopen (name, "w+");
index 958aa7fd039ccb229c455bda8e2c76e95c02010d..a6114b1b7e7d5d071e7589322ceae6dcd012a816 100644 (file)
@@ -98,7 +98,7 @@ emit_struct_conv_full (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_obje
 static void 
 mono_struct_delete_old (MonoClass *klass, char *ptr);
 
-void *
+MONO_API void *
 mono_marshal_string_to_utf16 (MonoString *s);
 
 static void *
@@ -122,9 +122,14 @@ mono_string_from_byvalwstr (gunichar2 *data, int len);
 static void
 mono_byvalarray_to_array (MonoArray *arr, gpointer native_arr, MonoClass *eltype, guint32 elnum);
 
+static void
+mono_byvalarray_to_byte_array (MonoArray *arr, gpointer native_arr, guint32 elnum);
+
 static void
 mono_array_to_byvalarray (gpointer native_arr, MonoArray *arr, MonoClass *eltype, guint32 elnum);
 
+static void
+mono_array_to_byte_byvalarray (gpointer native_arr, MonoArray *arr, guint32 elnum);
 
 static MonoAsyncResult *
 mono_delegate_begin_invoke (MonoDelegate *delegate, gpointer *params);
@@ -145,7 +150,7 @@ mono_marshal_check_domain_image (gint32 domain_id, MonoImage *image);
 static MonoObject *
 mono_remoting_wrapper (MonoMethod *method, gpointer *params);
 
-void
+MONO_API void
 mono_upgrade_remote_class_wrapper (MonoReflectionType *rtype, MonoTransparentProxy *tproxy);
 
 #endif
@@ -205,6 +210,13 @@ mono_signature_no_pinvoke (MonoMethod *method)
        return sig;
 }
 
+void
+mono_marshal_init_tls (void)
+{
+       mono_native_tls_alloc (&last_error_tls_id, NULL);
+       mono_native_tls_alloc (&load_type_info_tls_id, NULL);
+}
+
 void
 mono_marshal_init (void)
 {
@@ -214,8 +226,6 @@ mono_marshal_init (void)
                module_initialized = TRUE;
                InitializeCriticalSection (&marshal_mutex);
                marshal_mutex_initialized = TRUE;
-               mono_native_tls_alloc (&last_error_tls_id, NULL);
-               mono_native_tls_alloc (&load_type_info_tls_id, NULL);
 
                register_icall (ves_icall_System_Threading_Thread_ResetAbort, "ves_icall_System_Threading_Thread_ResetAbort", "void", TRUE);
                register_icall (mono_marshal_string_to_utf16, "mono_marshal_string_to_utf16", "ptr obj", FALSE);
@@ -234,7 +244,9 @@ mono_marshal_init (void)
                register_icall (mono_array_to_lparray, "mono_array_to_lparray", "ptr object", FALSE);
                register_icall (mono_free_lparray, "mono_free_lparray", "void object ptr", FALSE);
                register_icall (mono_byvalarray_to_array, "mono_byvalarray_to_array", "void object ptr ptr int32", FALSE);
+               register_icall (mono_byvalarray_to_byte_array, "mono_byvalarray_to_byte_array", "void object ptr int32", FALSE);
                register_icall (mono_array_to_byvalarray, "mono_array_to_byvalarray", "void ptr object ptr int32", FALSE);
+               register_icall (mono_array_to_byte_byvalarray, "mono_array_to_byte_byvalarray", "void ptr object int32", FALSE);
                register_icall (mono_delegate_to_ftnptr, "mono_delegate_to_ftnptr", "ptr object", FALSE);
                register_icall (mono_ftnptr_to_delegate, "mono_ftnptr_to_delegate", "object ptr ptr", FALSE);
                register_icall (mono_marshal_asany, "mono_marshal_asany", "ptr object int32 int32", FALSE);
@@ -543,10 +555,13 @@ mono_delegate_free_ftnptr (MonoDelegate *delegate)
        if (ptr) {
                uint32_t gchandle;
                void **method_data;
+               MonoMethod *method;
+
                ji = mono_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (ptr));
                g_assert (ji);
 
-               method_data = ((MonoMethodWrapper*)ji->method)->method_data;
+               method = mono_jit_info_get_method (ji);
+               method_data = ((MonoMethodWrapper*)method)->method_data;
 
                /*the target gchandle is the first entry after size and the wrapper itself.*/
                gchandle = GPOINTER_TO_UINT (method_data [2]);
@@ -554,7 +569,7 @@ mono_delegate_free_ftnptr (MonoDelegate *delegate)
                if (gchandle)
                        mono_gchandle_free (gchandle);
 
-               mono_runtime_free_method (mono_object_domain (delegate), ji->method);
+               mono_runtime_free_method (mono_object_domain (delegate), method);
        }
 }
 
@@ -687,6 +702,12 @@ mono_byvalarray_to_array (MonoArray *arr, gpointer native_arr, MonoClass *elclas
                g_assert_not_reached ();
 }
 
+static void
+mono_byvalarray_to_byte_array (MonoArray *arr, gpointer native_arr, guint32 elnum)
+{
+       mono_byvalarray_to_array (arr, native_arr, mono_defaults.byte_class, elnum);
+}
+
 static void
 mono_array_to_byvalarray (gpointer native_arr, MonoArray *arr, MonoClass *elclass, guint32 elnum)
 {
@@ -710,6 +731,12 @@ mono_array_to_byvalarray (gpointer native_arr, MonoArray *arr, MonoClass *elclas
        }
 }
 
+static void
+mono_array_to_byte_byvalarray (gpointer native_arr, MonoArray *arr, guint32 elnum)
+{
+       mono_array_to_byvalarray (native_arr, arr, mono_defaults.byte_class, elnum);
+}
+
 void
 mono_string_utf8_to_builder (MonoStringBuilder *sb, char *text)
 {
@@ -1341,9 +1368,8 @@ emit_ptr_to_object_conv (MonoMethodBuilder *mb, MonoType *type, MonoMarshalConv
                mono_mb_emit_ldloc (mb, 1);
                mono_mb_emit_byte (mb, CEE_LDIND_REF);
                mono_mb_emit_ldloc (mb, 0);
-               mono_mb_emit_ptr (mb, mono_defaults.byte_class);
                mono_mb_emit_icon (mb, mspec->data.array_data.num_elem);
-               mono_mb_emit_icall (mb, mono_byvalarray_to_array);
+               mono_mb_emit_icall (mb, mono_byvalarray_to_byte_array);
                break;
        }
        case MONO_MARSHAL_CONV_STR_BYVALSTR: 
@@ -1716,9 +1742,8 @@ emit_object_to_ptr_conv (MonoMethodBuilder *mb, MonoType *type, MonoMarshalConv
                mono_mb_emit_ldloc (mb, 1);
                mono_mb_emit_ldloc (mb, 0);     
                mono_mb_emit_byte (mb, CEE_LDIND_REF);
-               mono_mb_emit_ptr (mb, mono_defaults.byte_class);
                mono_mb_emit_icon (mb, mspec->data.array_data.num_elem);
-               mono_mb_emit_icall (mb, mono_array_to_byvalarray);
+               mono_mb_emit_icall (mb, mono_array_to_byte_byvalarray);
                mono_mb_patch_short_branch (mb, pos);
                break;
        }
@@ -1973,13 +1998,12 @@ emit_struct_conv_full (MonoMethodBuilder *mb, MonoClass *klass, gboolean to_obje
                        }
                        case MONO_TYPE_OBJECT: {
 #ifndef DISABLE_COM
-                               mono_init_com_types ();
                                if (to_object) {
                                        static MonoMethod *variant_clear = NULL;
                                        static MonoMethod *get_object_for_native_variant = NULL;
 
                                        if (!variant_clear)
-                                               variant_clear = mono_class_get_method_from_name (mono_defaults.variant_class, "Clear", 0);
+                                               variant_clear = mono_class_get_method_from_name (mono_class_get_variant_class (), "Clear", 0);
                                        if (!get_object_for_native_variant)
                                                get_object_for_native_variant = mono_class_get_method_from_name (mono_defaults.marshal_class, "GetObjectForNativeVariant", 1);
                                        mono_mb_emit_ldloc (mb, 1);
@@ -2571,7 +2595,14 @@ mono_marshal_method_from_wrapper (MonoMethod *wrapper)
                res = mono_marshal_get_wrapper_info (wrapper);
                if (res == NULL)
                        return wrapper;
-               return res;
+               if (wrapper->is_inflated)
+                       /*
+                        * A method cannot be inflated and a wrapper at the same time, so the wrapper info
+                        * contains an uninflated method.
+                        */
+                       return mono_class_inflate_generic_method (res, mono_method_get_context (wrapper));
+               else
+                       return res;
        case MONO_WRAPPER_MANAGED_TO_NATIVE:
                info = mono_marshal_get_wrapper_info (wrapper);
                if (info && (info->subtype == WRAPPER_SUBTYPE_NONE || info->subtype == WRAPPER_SUBTYPE_NATIVE_FUNC_AOT))
@@ -2665,6 +2696,77 @@ get_wrapper_target_class (MonoImage *image)
        return klass;
 }
 
+/*
+ * Wrappers for generic methods should be instances of generic wrapper methods, i.e .the wrapper for Sort<int> should be
+ * an instance of the wrapper for Sort<T>. This is required for full-aot to work.
+ */
+
+/*
+ * check_generic_wrapper_cache:
+ *
+ *   Check CACHE for the wrapper of the generic instance ORIG_METHOD, and return it if it is found.
+ * KEY should be the key for ORIG_METHOD in the cache, while DEF_KEY should be the key of its
+ * generic method definition.
+ */
+static MonoMethod*
+check_generic_wrapper_cache (GHashTable *cache, MonoMethod *orig_method, gpointer key, gpointer def_key)
+{
+       MonoMethod *res;
+       MonoMethod *inst, *def;
+       MonoGenericContext *ctx;
+       MonoMethod *def_method;
+
+       g_assert (orig_method->is_inflated);
+       def_method = ((MonoMethodInflated*)orig_method)->declaring;
+       ctx = mono_method_get_context (orig_method);
+
+       /*
+        * Look for the instance
+        */
+       res = mono_marshal_find_in_cache (cache, key);
+       if (res)
+               return res;
+
+       /*
+        * Look for the definition
+        */
+       def = mono_marshal_find_in_cache (cache, def_key);
+       if (def) {
+               inst = mono_class_inflate_generic_method (def, ctx);
+               /* Cache it */
+               mono_memory_barrier ();
+               mono_marshal_lock ();
+               res = g_hash_table_lookup (cache, key);
+               if (!res) {
+                       g_hash_table_insert (cache, key, inst);
+                       res = inst;
+               }
+               mono_marshal_unlock ();
+               return res;
+       }
+       return NULL;
+}
+
+static MonoMethod*
+cache_generic_wrapper (GHashTable *cache, MonoMethod *orig_method, MonoMethod *def, MonoGenericContext *ctx, gpointer key)
+{
+       MonoMethod *inst, *res;
+
+       /*
+        * We use the same cache for the generic definition and the instances.
+        */
+       inst = mono_class_inflate_generic_method (def, ctx);
+       mono_memory_barrier ();
+       mono_marshal_lock ();
+       res = g_hash_table_lookup (cache, key);
+       if (!res) {
+               g_hash_table_insert (cache, key, inst);
+               res = inst;
+       }
+       mono_marshal_unlock ();
+       return res;
+}
+
 static MonoMethod*
 check_generic_delegate_wrapper_cache (GHashTable *cache, MonoMethod *orig_method, MonoMethod *def_method, MonoGenericContext *ctx)
 {
@@ -3078,7 +3180,7 @@ mono_marshal_get_remoting_invoke (MonoMethod *method)
 
        /* this seems to be the best plase to put this, as all remoting invokes seem to get filtered through here */
 #ifndef DISABLE_COM
-       if (mono_class_is_com_object (method->klass) || method->klass == mono_defaults.com_object_class) {
+       if (mono_class_is_com_object (method->klass) || method->klass == mono_class_get_com_object_class ()) {
                MonoVTable *vtable = mono_class_vtable (mono_domain_get (), method->klass);
                g_assert (vtable); /*FIXME do proper error handling*/
 
@@ -4092,6 +4194,7 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
        MonoGenericContext *ctx = NULL;
        MonoGenericContainer *container = NULL;
        MonoMethod *orig_method = NULL;
+       WrapperInfo *info;
 
        /*
         * If the delegate target is null, and the target method is not static, a virtual 
@@ -4122,8 +4225,9 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
                closed_over_null = sig->param_count == mono_method_signature (del->method)->param_count;
 
        if (del && del->method && mono_method_signature (del->method)->param_count == sig->param_count + 1 && (del->method->flags & METHOD_ATTRIBUTE_STATIC)) {
+               g_assert (!callvirt);
                invoke_sig = mono_method_signature (del->method);
-               target_method = del->method;
+               target_method = NULL;
                static_method_with_first_arg_bound = TRUE;
        }
 
@@ -4151,12 +4255,20 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
                res = check_generic_delegate_wrapper_cache (cache, orig_method, method, ctx);
                if (res)
                        return res;
-       } else if (callvirt || static_method_with_first_arg_bound) {
+       } else if (static_method_with_first_arg_bound) {
+               cache = get_cache (&method->klass->image->delegate_bound_static_invoke_cache,
+                                                  (GHashFunc)mono_signature_hash, 
+                                                  (GCompareFunc)mono_metadata_signature_equal);
+               /*
+                * The wrapper is based on sig+invoke_sig, but sig can be derived from invoke_sig.
+                */
+               res = mono_marshal_find_in_cache (cache, invoke_sig);
+               if (res)
+                       return res;
+       } else if (callvirt) {
                GHashTable **cache_ptr;
-               if (static_method_with_first_arg_bound)
-                       cache_ptr = &method->klass->image->delegate_bound_static_invoke_cache;
-               else
-                       cache_ptr = &method->klass->image->delegate_abstract_invoke_cache;
+
+               cache_ptr = &method->klass->image->delegate_abstract_invoke_cache;
 
                /* We need to cache the signature+method pair */
                mono_marshal_lock ();
@@ -4183,7 +4295,10 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
        if (!static_method_with_first_arg_bound)
                invoke_sig = static_sig;
 
-       name = mono_signature_to_name (sig, "invoke");
+       if (static_method_with_first_arg_bound)
+               name = mono_signature_to_name (invoke_sig, "invoke_bound_");
+       else
+               name = mono_signature_to_name (sig, "invoke");
        if (ctx)
                mb = mono_mb_new (method->klass, name, MONO_WRAPPER_DELEGATE_INVOKE);
        else
@@ -4303,7 +4418,12 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
 
                def = mono_mb_create_and_cache (cache, method->klass, mb, sig, sig->param_count + 16);
                res = cache_generic_delegate_wrapper (cache, orig_method, def, ctx);
-       } else if (static_method_with_first_arg_bound || callvirt) {
+       } else if (static_method_with_first_arg_bound) {
+               res = mono_mb_create_and_cache (cache, invoke_sig, mb, sig, sig->param_count + 16);
+
+               info = mono_wrapper_info_create (res, WRAPPER_SUBTYPE_DELEGATE_INVOKE_BOUND);
+               mono_marshal_set_wrapper_info (res, info);
+       } else if (callvirt) {
                // From mono_mb_create_and_cache
                newm = mono_mb_create_method (mb, sig, sig->param_count + 16);
                /*We perform double checked locking, so must fence before publishing*/
@@ -4317,7 +4437,10 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
                        if (static_method_with_first_arg_bound)
                                new_key->sig = signature_dup (del->method->klass->image, key.sig);
                        g_hash_table_insert (cache, new_key, res);
-                       mono_marshal_set_wrapper_info (res, new_key);
+
+                       info = mono_wrapper_info_create (res, WRAPPER_SUBTYPE_DELEGATE_INVOKE_VIRTUAL);
+                       mono_marshal_set_wrapper_info (res, info);
+
                        mono_marshal_unlock ();
                } else {
                        mono_marshal_unlock ();
@@ -4325,6 +4448,9 @@ mono_marshal_get_delegate_invoke (MonoMethod *method, MonoDelegate *del)
                }
        } else {
                res = mono_mb_create_and_cache (cache, sig, mb, sig, sig->param_count + 16);
+
+               info = mono_wrapper_info_create (res, WRAPPER_SUBTYPE_NONE);
+               mono_marshal_set_wrapper_info (res, info);
        }
        mono_mb_free (mb);
 
@@ -4421,9 +4547,12 @@ mono_marshal_get_string_ctor_signature (MonoMethod *method)
 static MonoType*
 get_runtime_invoke_type (MonoType *t, gboolean ret)
 {
-       if (t->byref)
+       if (t->byref) {
+               if (t->type == MONO_TYPE_GENERICINST && mono_class_is_nullable (mono_class_from_mono_type (t)))
+                       return t;
                /* Can't share this with 'I' as that needs another indirection */
-               return t;
+               return &mono_defaults.int_class->this_arg;
+       }
 
        if (MONO_TYPE_IS_REFERENCE (t))
                return &mono_defaults.object_class->byval_arg;
@@ -4842,20 +4971,10 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual)
                /* Can't share this as we push a string as this */
                need_direct_wrapper = TRUE;
        } else {
-               if (method->klass->valuetype && mono_method_signature (method)->hasthis) {
-                       /* 
-                        * Valuetype methods receive a managed pointer as the this argument.
-                        * Create a new signature to reflect this.
-                        */
-                       callsig = signature_dup_add_this (method->klass->image, mono_method_signature (method), method->klass);
-                       /* Can't share this as it would be shared with static methods taking an IntPtr argument */
-                       need_direct_wrapper = TRUE;
-               } else {
-                       if (method->dynamic)
-                               callsig = signature_dup (method->klass->image, mono_method_signature (method));
-                       else
-                               callsig = mono_method_signature (method);
-               }
+               if (method->dynamic)
+                       callsig = signature_dup (method->klass->image, mono_method_signature (method));
+               else
+                       callsig = mono_method_signature (method);
        }
 
        target_klass = get_wrapper_target_class (method->klass->image);
@@ -4876,9 +4995,15 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual)
 
                callsig = mono_marshal_get_runtime_invoke_sig (callsig);
 
-               cache = get_cache (&target_klass->image->runtime_invoke_cache, 
-                                                  (GHashFunc)mono_signature_hash, 
-                                                  (GCompareFunc)runtime_invoke_signature_equal);
+               if (method->klass->valuetype && mono_method_signature (method)->hasthis)
+                       /* These have a different csig */
+                       cache = get_cache (&target_klass->image->runtime_invoke_vtype_cache,
+                                                          (GHashFunc)mono_signature_hash,
+                                                          (GCompareFunc)runtime_invoke_signature_equal);
+               else
+                       cache = get_cache (&target_klass->image->runtime_invoke_cache,
+                                                          (GHashFunc)mono_signature_hash,
+                                                          (GCompareFunc)runtime_invoke_signature_equal);
 
                /* from mono_marshal_find_in_cache */
                mono_marshal_lock ();
@@ -4902,7 +5027,7 @@ mono_marshal_get_runtime_invoke (MonoMethod *method, gboolean virtual)
 
        csig->ret = &mono_defaults.object_class->byval_arg;
        if (method->klass->valuetype && mono_method_signature (method)->hasthis)
-               csig->params [0] = callsig->params [0];
+               csig->params [0] = get_runtime_invoke_type (&method->klass->this_arg, FALSE);
        else
                csig->params [0] = &mono_defaults.object_class->byval_arg;
        csig->params [1] = &mono_defaults.int_class->byval_arg;
@@ -5320,6 +5445,10 @@ mono_marshal_get_ldfld_wrapper (MonoType *type)
                        mono_mb_emit_byte (mb, CEE_LDIND_REF);
                }
                break;
+       case MONO_TYPE_VAR:
+       case MONO_TYPE_MVAR:
+               mono_mb_emit_op (mb, CEE_LDOBJ, klass);
+               break;
        default:
                g_warning ("type %x not implemented", type->type);
                g_assert_not_reached ();
@@ -5648,6 +5777,8 @@ mono_marshal_get_stfld_wrapper (MonoType *type)
                mono_mb_emit_op (mb, CEE_STOBJ, klass);
                break;
        case MONO_TYPE_GENERICINST:
+       case MONO_TYPE_VAR:
+       case MONO_TYPE_MVAR:
                mono_mb_emit_op (mb, CEE_STOBJ, klass);
                break;
        default:
@@ -6307,6 +6438,9 @@ emit_marshal_vtype (EmitMarshalContext *m, int argnum, MonoType *t,
                        break;
                }
 
+               if (t->byref && (t->attrs & PARAM_ATTRIBUTE_IN) && !(t->attrs & PARAM_ATTRIBUTE_OUT))
+                       break;
+
                /* Check for null */
                mono_mb_emit_ldarg (mb, argnum);
                pos2 = mono_mb_emit_branch (mb, CEE_BRFALSE);
@@ -6824,7 +6958,7 @@ emit_marshal_object (EmitMarshalContext *m, int argnum, MonoType *t,
                        }
 #endif
 
-                       if (t->byref && !t->attrs & PARAM_ATTRIBUTE_IN && t->attrs & PARAM_ATTRIBUTE_OUT)
+                       if (t->byref && !(t->attrs & PARAM_ATTRIBUTE_IN) && (t->attrs & PARAM_ATTRIBUTE_OUT))
                                break;
 
                        if (conv == -1) {
@@ -7271,8 +7405,6 @@ emit_marshal_variant (EmitMarshalContext *m, int argnum, MonoType *t,
        static MonoMethod *get_object_for_native_variant = NULL;
        static MonoMethod *get_native_variant_for_object = NULL;
 
-       mono_init_com_types ();
-       
        if (!get_object_for_native_variant)
                get_object_for_native_variant = mono_class_get_method_from_name (mono_defaults.marshal_class, "GetObjectForNativeVariant", 1);
        g_assert (get_object_for_native_variant);
@@ -7283,12 +7415,12 @@ emit_marshal_variant (EmitMarshalContext *m, int argnum, MonoType *t,
 
        switch (action) {
        case MARSHAL_ACTION_CONV_IN: {
-               conv_arg = mono_mb_add_local (mb, &mono_defaults.variant_class->byval_arg);
+               conv_arg = mono_mb_add_local (mb, &mono_class_get_variant_class ()->byval_arg);
                
                if (t->byref)
-                       *conv_arg_type = &mono_defaults.variant_class->this_arg;
+                       *conv_arg_type = &mono_class_get_variant_class ()->this_arg;
                else
-                       *conv_arg_type = &mono_defaults.variant_class->byval_arg;
+                       *conv_arg_type = &mono_class_get_variant_class ()->byval_arg;
 
                if (t->byref && !(t->attrs & PARAM_ATTRIBUTE_IN) && t->attrs & PARAM_ATTRIBUTE_OUT)
                        break;
@@ -7305,7 +7437,7 @@ emit_marshal_variant (EmitMarshalContext *m, int argnum, MonoType *t,
                static MonoMethod *variant_clear = NULL;
 
                if (!variant_clear)
-                       variant_clear = mono_class_get_method_from_name (mono_defaults.variant_class, "Clear", 0);
+                       variant_clear = mono_class_get_method_from_name (mono_class_get_variant_class (), "Clear", 0);
                g_assert (variant_clear);
 
 
@@ -7338,9 +7470,9 @@ emit_marshal_variant (EmitMarshalContext *m, int argnum, MonoType *t,
                conv_arg = mono_mb_add_local (mb, &mono_defaults.object_class->byval_arg);
 
                if (t->byref)
-                       *conv_arg_type = &mono_defaults.variant_class->this_arg;
+                       *conv_arg_type = &mono_class_get_variant_class ()->this_arg;
                else
-                       *conv_arg_type = &mono_defaults.variant_class->byval_arg;
+                       *conv_arg_type = &mono_class_get_variant_class ()->byval_arg;
 
                if (t->byref && !(t->attrs & PARAM_ATTRIBUTE_IN) && t->attrs & PARAM_ATTRIBUTE_OUT)
                        break;
@@ -8748,13 +8880,14 @@ mono_marshal_get_native_wrapper (MonoMethod *method, gboolean check_exceptions,
                pinvoke = TRUE;
 
        if (!piinfo->addr) {
-               if (pinvoke)
+               if (pinvoke) {
                        if (method->iflags & METHOD_IMPL_ATTRIBUTE_NATIVE)
                                exc_arg = "Method contains unsupported native code";
-                       else
+                       else if (!aot)
                                mono_lookup_pinvoke_call (method, &exc_class, &exc_arg);
-               else
+               } else {
                        piinfo->addr = mono_lookup_internal_call (method);
+               }
        }
 
        /* hack - redirect certain string constructors to CreateString */
@@ -9065,6 +9198,16 @@ mono_marshal_emit_managed_wrapper (MonoMethodBuilder *mb, MonoMethodSignature *i
                        emit_marshal (m, i, sig->params [i], mspecs [i + 1], 0, &csig->params [i], MARSHAL_ACTION_MANAGED_CONV_IN);
                }
        }
+
+       if (!sig->ret->byref) {
+               switch (sig->ret->type) {
+               case MONO_TYPE_STRING:
+                       csig->ret = &mono_defaults.int_class->byval_arg;
+                       break;
+               default:
+                       break;
+               }
+       }
 #else
        MonoMethodSignature *sig, *csig;
        int i, *tmp_locals;
@@ -9380,9 +9523,10 @@ mono_marshal_get_managed_wrapper (MonoMethod *method, MonoClass *delegate_klass,
                        MonoBoolean set_last_error = 0;
                        MonoBoolean best_fit_mapping = 0;
                        MonoBoolean throw_on_unmappable = 0;
+                       MonoError error;
 
-                       mono_reflection_create_custom_attr_data_args (mono_defaults.corlib, attr->ctor, attr->data, attr->data_size, &typed_args, &named_args, &arginfo);
-
+                       mono_reflection_create_custom_attr_data_args (mono_defaults.corlib, attr->ctor, attr->data, attr->data_size, &typed_args, &named_args, &arginfo, &error);
+                       g_assert (mono_error_ok (&error));
                        g_assert (mono_array_length (typed_args) == 1);
 
                        /* typed args */
@@ -10201,6 +10345,19 @@ mono_marshal_get_synchronized_inner_wrapper (MonoMethod *method)
        WrapperInfo *info;
        MonoMethodSignature *sig;
        MonoMethod *res;
+       MonoGenericContext *ctx = NULL;
+       MonoMethod *orig_method = NULL;
+       MonoGenericContainer *container = NULL;
+
+       if (method->is_inflated && !mono_method_get_context (method)->method_inst) {
+               orig_method = method;
+               ctx = &((MonoMethodInflated*)method)->context;
+               method = ((MonoMethodInflated*)method)->declaring;
+               container = mono_method_get_generic_container (method);
+               if (!container)
+                       container = method->klass->generic_container;
+               g_assert (container);
+       }
 
        mb = mono_mb_new (method->klass, method->name, MONO_WRAPPER_UNKNOWN);
 #ifndef DISABLE_JIT
@@ -10213,6 +10370,8 @@ mono_marshal_get_synchronized_inner_wrapper (MonoMethod *method)
        info = mono_wrapper_info_create (res, WRAPPER_SUBTYPE_SYNCHRONIZED_INNER);
        info->d.synchronized_inner.method = method;
        mono_marshal_set_wrapper_info (res, info);
+       if (ctx)
+               res = mono_class_inflate_generic_method (res, ctx);
        return res;
 }
 
@@ -10230,15 +10389,39 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
        MonoMethod *res;
        GHashTable *cache;
        int i, pos, this_local, ret_local = 0;
+       MonoGenericContext *ctx = NULL;
+       MonoMethod *orig_method = NULL;
+       MonoGenericContainer *container = NULL;
 
        g_assert (method);
 
        if (method->wrapper_type == MONO_WRAPPER_SYNCHRONIZED)
                return method;
 
-       cache = get_cache (&method->klass->image->synchronized_cache, mono_aligned_addr_hash, NULL);
-       if ((res = mono_marshal_find_in_cache (cache, method)))
-               return res;
+       /* FIXME: Support generic methods too */
+       if (method->is_inflated && !mono_method_get_context (method)->method_inst) {
+               orig_method = method;
+               ctx = &((MonoMethodInflated*)method)->context;
+               method = ((MonoMethodInflated*)method)->declaring;
+               container = mono_method_get_generic_container (method);
+               if (!container)
+                       container = method->klass->generic_container;
+               g_assert (container);
+       }
+
+       /*
+        * Check cache
+        */
+       if (ctx) {
+               cache = get_cache (&method->klass->image->synchronized_generic_cache, mono_aligned_addr_hash, NULL);
+               res = check_generic_wrapper_cache (cache, orig_method, orig_method, method);
+               if (res)
+                       return res;
+       } else {
+               cache = get_cache (&method->klass->image->synchronized_cache, mono_aligned_addr_hash, NULL);
+               if ((res = mono_marshal_find_in_cache (cache, method)))
+                       return res;
+       }
 
        sig = signature_dup (method->klass->image, mono_method_signature (method));
        sig->pinvoke = 0;
@@ -10295,7 +10478,7 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
                mono_method_desc_free (desc);
 
                desc = mono_method_desc_new ("Type:GetTypeFromHandle", FALSE);
-               gettypefromhandle_method = mono_method_desc_search_in_class (desc, mono_defaults.monotype_class->parent);
+               gettypefromhandle_method = mono_method_desc_search_in_class (desc, mono_defaults.systemtype_class);
                g_assert (gettypefromhandle_method);
                mono_method_desc_free (desc);
        }
@@ -10329,7 +10512,10 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
        for (i = 0; i < sig->param_count; i++)
                mono_mb_emit_ldarg (mb, i + (sig->hasthis == TRUE));
 
-       mono_mb_emit_managed_call (mb, method, NULL);
+       if (ctx)
+               mono_mb_emit_managed_call (mb, mono_class_inflate_generic_method (method, &container->context), NULL);
+       else
+               mono_mb_emit_managed_call (mb, method, NULL);
 
        if (!MONO_TYPE_IS_VOID (sig->ret))
                mono_mb_emit_stloc (mb, ret_local);
@@ -10354,8 +10540,14 @@ mono_marshal_get_synchronized_wrapper (MonoMethod *method)
        mono_mb_set_clauses (mb, 1, clause);
 #endif
 
-       res = mono_mb_create_and_cache (cache, method,
-                                                                       mb, sig, sig->param_count + 16);
+       if (ctx) {
+               MonoMethod *def;
+               def = mono_mb_create_and_cache (cache, method, mb, sig, sig->param_count + 16);
+               res = cache_generic_wrapper (cache, orig_method, def, ctx, orig_method);
+       } else {
+               res = mono_mb_create_and_cache (cache, method,
+                                                                               mb, sig, sig->param_count + 16);
+       }
        mono_mb_free (mb);
 
        return res;     
@@ -11313,6 +11505,76 @@ mono_marshal_get_array_address (int rank, int elem_size)
        return ret;
 }
 
+/*
+ * mono_marshal_get_array_accessor_wrapper:
+ *
+ *   Return a wrapper which just calls METHOD, which should be an Array Get/Set/Address method.
+ */
+MonoMethod *
+mono_marshal_get_array_accessor_wrapper (MonoMethod *method)
+{
+       MonoMethodSignature *sig;
+       MonoMethodBuilder *mb;
+       MonoMethod *res;
+       GHashTable *cache;
+       int i;
+       MonoGenericContext *ctx = NULL;
+       MonoMethod *orig_method = NULL;
+       MonoGenericContainer *container = NULL;
+       WrapperInfo *info;
+
+       /*
+        * These wrappers are needed to avoid the JIT replacing the calls to these methods with intrinsics
+        * inside runtime invoke wrappers, thereby making the wrappers not unshareable.
+        * FIXME: Use generic methods.
+        */
+       /*
+        * Check cache
+        */
+       if (ctx) {
+               cache = NULL;
+               g_assert_not_reached ();
+       } else {
+               cache = get_cache (&method->klass->image->array_accessor_cache, mono_aligned_addr_hash, NULL);
+               if ((res = mono_marshal_find_in_cache (cache, method)))
+                       return res;
+       }
+
+       sig = signature_dup (method->klass->image, mono_method_signature (method));
+       sig->pinvoke = 0;
+
+       mb = mono_mb_new (method->klass, method->name, MONO_WRAPPER_UNKNOWN);
+
+#ifndef DISABLE_JIT
+       /* Call the method */
+       if (sig->hasthis)
+               mono_mb_emit_ldarg (mb, 0);
+       for (i = 0; i < sig->param_count; i++)
+               mono_mb_emit_ldarg (mb, i + (sig->hasthis == TRUE));
+
+       if (ctx)
+               mono_mb_emit_managed_call (mb, mono_class_inflate_generic_method (method, &container->context), NULL);
+       else
+               mono_mb_emit_managed_call (mb, method, NULL);
+       mono_mb_emit_byte (mb, CEE_RET);
+#endif
+
+       if (ctx) {
+               MonoMethod *def;
+               def = mono_mb_create_and_cache (cache, method, mb, sig, sig->param_count + 16);
+               res = cache_generic_wrapper (cache, orig_method, def, ctx, orig_method);
+       } else {
+               res = mono_mb_create_and_cache (cache, method,
+                                                                               mb, sig, sig->param_count + 16);
+               info = mono_wrapper_info_create (res, WRAPPER_SUBTYPE_ARRAY_ACCESSOR);
+               info->d.array_accessor.method = method;
+               mono_marshal_set_wrapper_info (res, info);
+       }
+       mono_mb_free (mb);
+
+       return res;     
+}
+
 void*
 mono_marshal_alloc (gulong size)
 {
@@ -11418,7 +11680,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_copy_to_unmanaged (MonoArray *s
        element_size = mono_array_element_size (src->obj.vtable->klass);
 
        /* no references should be involved */
-       source_addr = mono_array_addr_with_size (src, element_size, start_index);
+       source_addr = mono_array_addr_with_size_fast (src, element_size, start_index);
 
        memcpy (dest, source_addr, length * element_size);
 }
@@ -11447,7 +11709,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_copy_from_unmanaged (gpointer s
        element_size = mono_array_element_size (dest->obj.vtable->klass);
          
        /* no references should be involved */
-       dest_addr = mono_array_addr_with_size (dest, element_size, start_index);
+       dest_addr = mono_array_addr_with_size_fast (dest, element_size, start_index);
 
        memcpy (dest_addr, src, length * element_size);
 }
@@ -11895,7 +12157,7 @@ ves_icall_System_Runtime_InteropServices_Marshal_ReAllocCoTaskMem (gpointer ptr,
 void*
 ves_icall_System_Runtime_InteropServices_Marshal_UnsafeAddrOfPinnedArrayElement (MonoArray *arrayobj, int index)
 {
-       return mono_array_addr_with_size (arrayobj, mono_array_element_size (arrayobj->obj.vtable->klass), index);
+       return mono_array_addr_with_size_fast (arrayobj, mono_array_element_size (arrayobj->obj.vtable->klass), index);
 }
 
 MonoDelegate*
@@ -12684,8 +12946,6 @@ mono_marshal_free_dynamic_wrappers (MonoMethod *method)
         */
        if (image->runtime_invoke_direct_cache)
                g_hash_table_remove (image->runtime_invoke_direct_cache, method);
-       if (image->delegate_bound_static_invoke_cache)
-               g_hash_table_foreach_remove (image->delegate_bound_static_invoke_cache, signature_method_pair_matches_method, method);
        if (image->delegate_abstract_invoke_cache)
                g_hash_table_foreach_remove (image->delegate_abstract_invoke_cache, signature_method_pair_matches_method, method);
 
@@ -12736,6 +12996,8 @@ mono_marshal_free_inflated_wrappers (MonoMethod *method)
                g_hash_table_remove (method->klass->image->delegate_invoke_cache, sig);
        if (sig && method->klass->image->runtime_invoke_cache)
                g_hash_table_remove (method->klass->image->runtime_invoke_cache, sig);
+       if (sig && method->klass->image->runtime_invoke_vtype_cache)
+               g_hash_table_remove (method->klass->image->runtime_invoke_vtype_cache, sig);
 
         /*
          * indexed by SignatureMethodPair
@@ -12744,10 +13006,6 @@ mono_marshal_free_inflated_wrappers (MonoMethod *method)
                g_hash_table_foreach_remove (method->klass->image->delegate_abstract_invoke_cache,
                                             signature_method_pair_matches_signature, (gpointer)sig);
 
-       if (sig && method->klass->image->delegate_bound_static_invoke_cache)
-                g_hash_table_foreach_remove (method->klass->image->delegate_bound_static_invoke_cache,
-                                             signature_method_pair_matches_signature, (gpointer)sig);
-
         /*
          * indexed by MonoMethod pointers
          */
index 3a99ac60bd70a39c93de836470411ce8cab0925e..a5e45ee0d7a525cf15f23f74bcf365cc722653b3 100644 (file)
@@ -108,8 +108,12 @@ typedef enum {
        WRAPPER_SUBTYPE_SYNCHRONIZED_INNER,
        WRAPPER_SUBTYPE_GSHAREDVT_IN,
        WRAPPER_SUBTYPE_GSHAREDVT_OUT,
+       WRAPPER_SUBTYPE_ARRAY_ACCESSOR,
        /* Subtypes of MONO_WRAPPER_MANAGED_TO_MANAGED */
-       WRAPPER_SUBTYPE_GENERIC_ARRAY_HELPER
+       WRAPPER_SUBTYPE_GENERIC_ARRAY_HELPER,
+       /* Subtypes of MONO_WRAPPER_DELEGATE_INVOKE */
+       WRAPPER_SUBTYPE_DELEGATE_INVOKE_VIRTUAL,
+       WRAPPER_SUBTYPE_DELEGATE_INVOKE_BOUND
 } WrapperSubtype;
 
 typedef struct {
@@ -151,6 +155,10 @@ typedef struct {
        gpointer func;
 } ICallWrapperInfo;
 
+typedef struct {
+       MonoMethod *method;
+} ArrayAccessorWrapperInfo;
+
 /*
  * This structure contains additional information to uniquely identify a given wrapper
  * method. It can be retrieved by mono_marshal_get_wrapper_info () for certain types
@@ -177,6 +185,8 @@ typedef struct {
                GenericArrayHelperWrapperInfo generic_array_helper;
                /* ICALL_WRAPPER */
                ICallWrapperInfo icall;
+               /* ARRAY_ACCESSOR */
+               ArrayAccessorWrapperInfo array_accessor;
        } d;
 } WrapperInfo;
 
@@ -192,6 +202,9 @@ typedef void (*RuntimeInvokeDynamicFunction) (void *args, MonoObject **exc, void
 void
 mono_marshal_init (void) MONO_INTERNAL;
 
+void
+mono_marshal_init_tls (void) MONO_INTERNAL;
+
 void
 mono_marshal_cleanup (void) MONO_INTERNAL;
 
@@ -350,6 +363,9 @@ mono_marshal_get_virtual_stelemref_wrappers (int *nwrappers) MONO_INTERNAL;
 MonoMethod*
 mono_marshal_get_array_address (int rank, int elem_size) MONO_INTERNAL;
 
+MonoMethod *
+mono_marshal_get_array_accessor_wrapper (MonoMethod *method) MONO_INTERNAL;
+
 MonoMethod *
 mono_marshal_get_generic_array_helper (MonoClass *class, MonoClass *iface,
                                       gchar *name, MonoMethod *method) MONO_INTERNAL;
@@ -511,16 +527,16 @@ ves_icall_Mono_Interop_ComInteropProxy_AddProxy (gpointer pUnk, MonoComInteropPr
 MonoComInteropProxy*
 ves_icall_Mono_Interop_ComInteropProxy_FindProxy (gpointer pUnk) MONO_INTERNAL;
 
-void
+MONO_API void
 mono_win32_compat_CopyMemory (gpointer dest, gconstpointer source, gsize length);
 
-void
+MONO_API void
 mono_win32_compat_FillMemory (gpointer dest, gsize length, guchar fill);
 
-void
+MONO_API void
 mono_win32_compat_MoveMemory (gpointer dest, gconstpointer source, gsize length);
 
-void
+MONO_API void
 mono_win32_compat_ZeroMemory (gpointer dest, gsize length);
 
 void
index b8226ed616838d300c2fafb81e9f6e9fc9bc022b..b096be6e4fd4e52bd6d50aa91e8ca7731d0d4891 100644 (file)
@@ -7,37 +7,37 @@ MONO_BEGIN_DECLS
 
 typedef struct _MonoMemPool MonoMemPool;
 
-MonoMemPool *
+MONO_API MonoMemPool *
 mono_mempool_new           (void);
 
-MonoMemPool *
+MONO_API MonoMemPool *
 mono_mempool_new_size      (int initial_size);
 
-void
+MONO_API void
 mono_mempool_destroy       (MonoMemPool *pool);
 
-void
+MONO_API void
 mono_mempool_invalidate    (MonoMemPool *pool);
 
-void
+MONO_API void
 mono_mempool_empty         (MonoMemPool *pool);
 
-void
+MONO_API void
 mono_mempool_stats         (MonoMemPool *pool);
 
-void*
+MONO_API void*
 mono_mempool_alloc         (MonoMemPool *pool, unsigned int size);
 
-void*
+MONO_API void*
 mono_mempool_alloc0        (MonoMemPool *pool, unsigned int size);
 
-mono_bool
+MONO_API mono_bool
 mono_mempool_contains_addr (MonoMemPool *pool, void* addr);
 
-char*
+MONO_API char*
 mono_mempool_strdup        (MonoMemPool *pool, const char *s);
 
-uint32_t
+MONO_API uint32_t
 mono_mempool_get_allocated (MonoMemPool *pool);
 
 MONO_END_DECLS
index d0029658c9d31ebe5571d5b483127d88a3ae7555..a9f3149d952a4f4d0c33302c03383dacb949ae7a 100644 (file)
@@ -44,6 +44,7 @@ struct _MonoType {
 #define MONO_PROCESSOR_ARCHITECTURE_X86 2
 #define MONO_PROCESSOR_ARCHITECTURE_IA64 3
 #define MONO_PROCESSOR_ARCHITECTURE_AMD64 4
+#define MONO_PROCESSOR_ARCHITECTURE_ARM 5
 
 struct _MonoAssemblyName {
        const char *name;
@@ -196,6 +197,7 @@ struct _MonoImage {
         * It is NULL terminated.
         */
        MonoAssembly **references;
+       int nreferences;
 
        MonoImage **modules;
        guint32 module_count;
@@ -255,6 +257,7 @@ struct _MonoImage {
        GHashTable *delegate_end_invoke_cache;
        GHashTable *delegate_invoke_cache;
        GHashTable *runtime_invoke_cache;
+       GHashTable *runtime_invoke_vtype_cache;
 
        /*
         * indexed by SignatureMethodPair
@@ -281,6 +284,8 @@ struct _MonoImage {
        GHashTable *cominterop_wrapper_cache; /* LOCKING: marshal lock */
        GHashTable *thunk_invoke_cache;
        GHashTable *wrapper_param_names;
+       GHashTable *synchronized_generic_cache;
+       GHashTable *array_accessor_cache;
 
        /*
         * indexed by MonoClass pointers
@@ -587,7 +592,7 @@ mono_metadata_clean_for_image (MonoImage *image) MONO_INTERNAL;
 void
 mono_metadata_clean_generic_classes_for_image (MonoImage *image) MONO_INTERNAL;
 
-void
+MONO_API void
 mono_metadata_cleanup (void);
 
 const char *   mono_meta_table_name              (int table) MONO_INTERNAL;
@@ -607,7 +612,7 @@ mono_metadata_parse_array_full              (MonoImage             *image,
                                             const char            *ptr,
                                             const char           **rptr) MONO_INTERNAL;
 
-MonoType *
+MONO_API MonoType *
 mono_metadata_parse_type_full               (MonoImage             *image,
                                             MonoGenericContainer  *container,
                                             MonoParseTypeMode      mode,
@@ -620,14 +625,14 @@ mono_metadata_parse_signature_full          (MonoImage             *image,
                                             MonoGenericContainer  *generic_container,
                                             guint32                token) MONO_INTERNAL;
 
-MonoMethodSignature *
+MONO_API MonoMethodSignature *
 mono_metadata_parse_method_signature_full   (MonoImage             *image,
                                             MonoGenericContainer  *generic_container,
                                             int                     def,
                                             const char             *ptr,
                                             const char            **rptr);
 
-MonoMethodHeader *
+MONO_API MonoMethodHeader *
 mono_metadata_parse_mh_full                 (MonoImage             *image,
                                             MonoGenericContainer  *container,
                                             const char            *ptr);
@@ -686,7 +691,7 @@ mono_assembly_name_parse_full                    (const char           *name,
                                              gboolean *is_version_defined,
                                                  gboolean *is_token_defined) MONO_INTERNAL;
 
-guint32 mono_metadata_get_generic_param_row (MonoImage *image, guint32 token, guint32 *owner);
+MONO_API guint32 mono_metadata_get_generic_param_row (MonoImage *image, guint32 token, guint32 *owner);
 
 void mono_unload_interface_ids (MonoBitSet *bitset) MONO_INTERNAL;
 
@@ -701,7 +706,7 @@ mono_get_shared_generic_inst (MonoGenericContainer *container) MONO_INTERNAL;
 int
 mono_type_stack_size_internal (MonoType *t, int *align, gboolean allow_open) MONO_INTERNAL;
 
-void            mono_type_get_desc (GString *res, MonoType *type, mono_bool include_namespace);
+MONO_API void            mono_type_get_desc (GString *res, MonoType *type, mono_bool include_namespace);
 
 gboolean
 mono_metadata_type_equal_full (MonoType *t1, MonoType *t2, gboolean signature_only) MONO_INTERNAL;
@@ -712,7 +717,7 @@ mono_metadata_parse_marshal_spec_full (MonoImage *image, const char *ptr) MONO_I
 guint         mono_metadata_generic_inst_hash (gconstpointer data) MONO_INTERNAL;
 gboolean       mono_metadata_generic_inst_equal (gconstpointer ka, gconstpointer kb) MONO_INTERNAL;
 
-void
+MONO_API void
 mono_metadata_field_info_with_mempool (
                                          MonoImage *meta, 
                                      guint32       table_index,
index 94780bb0d5a469511d2ed0cb47b8f35996197f7e..e72f97abd5a04dd0e95238c6662b4e9f494b8763 100644 (file)
@@ -24,6 +24,7 @@
 #include <mono/metadata/attrdefs.h>
 #include <mono/utils/strenc.h>
 #include <mono/utils/mono-error-internals.h>
+#include <mono/utils/bsearch.h>
 #include <string.h>
 //#include <signal.h>
 #include <ctype.h>
@@ -1069,7 +1070,7 @@ search_sorted_table (VerifyContext *ctx, int table, int column, guint32 coded_to
        base = tinfo->base;
 
        VERIFIER_DEBUG ( printf ("looking token %x table %d col %d rsize %d roff %d\n", coded_token, table, column, locator.col_size, locator.col_offset) );
-       res = bsearch (&locator, base, tinfo->rows, tinfo->row_size, token_locator);
+       res = mono_binary_search (&locator, base, tinfo->rows, tinfo->row_size, token_locator);
        if (!res)
                return -1;
 
@@ -2659,8 +2660,8 @@ verify_method_table (VerifyContext *ctx)
                                ADD_ERROR (ctx, g_strdup_printf ("Invalid method row %d is a global method but not Static", i));
                        if (flags & (METHOD_ATTRIBUTE_ABSTRACT | METHOD_ATTRIBUTE_VIRTUAL))
                                ADD_ERROR (ctx, g_strdup_printf ("Invalid method row %d is a global method but is Abstract or Virtual", i));
-                       if (!(access == METHOD_ATTRIBUTE_COMPILER_CONTROLLED || access == METHOD_ATTRIBUTE_PUBLIC || access == METHOD_ATTRIBUTE_PRIVATE))
-                               ADD_ERROR (ctx, g_strdup_printf ("Invalid method row %d is a global method but not CompilerControled, Public or Private", i));
+                       if (access == METHOD_ATTRIBUTE_FAMILY || access == METHOD_ATTRIBUTE_FAM_AND_ASSEM || access == METHOD_ATTRIBUTE_FAM_OR_ASSEM)
+                               ADD_ERROR (ctx, g_strdup_printf ("Invalid method row %d is a global method but not CompilerControled, Public, Private or Assembly", i));
                }
 
                //TODO check valuetype for synchronized
@@ -3192,7 +3193,7 @@ verify_event_table_full (VerifyContext *ctx)
                if (!found_add)
                        ADD_ERROR (ctx, g_strdup_printf ("Invalid Event row %d has no AddOn associated method", i));
                if (!found_remove)
-                       ADD_ERROR (ctx, g_strdup_printf ("Invalid Event row %d has no AddOn associated method", i));
+                       ADD_ERROR (ctx, g_strdup_printf ("Invalid Event row %d has no RemoveOn associated method", i));
        }
 }
 
@@ -3625,6 +3626,7 @@ verify_generic_param_constraint_table (VerifyContext *ctx)
        MonoTableInfo *table = &ctx->image->tables [MONO_TABLE_GENERICPARAMCONSTRAINT];
        guint32 data [MONO_GENPARCONSTRAINT_SIZE];
        int i;
+       guint32 last_owner = 0, last_constraint = 0;
 
        for (i = 0; i < table->rows; ++i) {
                mono_metadata_decode_row (table, i, data, MONO_GENPARCONSTRAINT_SIZE);
@@ -3637,6 +3639,17 @@ verify_generic_param_constraint_table (VerifyContext *ctx)
 
                if (!get_coded_index_token (TYPEDEF_OR_REF_DESC, data [MONO_GENPARCONSTRAINT_CONSTRAINT]))
                        ADD_ERROR (ctx, g_strdup_printf ("GenericParamConstraint table row %d has null Constraint token", i));
+
+               if (last_owner > data [MONO_GENPARCONSTRAINT_GENERICPAR])
+                       ADD_ERROR (ctx, g_strdup_printf ("GenericParamConstraint table row %d is not properly sorted. Previous value of the owner column is 0x%08x current value is 0x%08x", i, last_owner, data [MONO_GENPARCONSTRAINT_GENERICPAR]));
+
+               if (last_owner == data [MONO_GENPARCONSTRAINT_GENERICPAR]) {
+                       if (last_constraint == data [MONO_GENPARCONSTRAINT_CONSTRAINT])
+                               ADD_ERROR (ctx, g_strdup_printf ("GenericParamConstraint table row %d has duplicate constraint 0x%08x", i, last_constraint));
+               } else {
+                       last_owner = data [MONO_GENPARCONSTRAINT_GENERICPAR];
+               }
+               last_constraint = data [MONO_GENPARCONSTRAINT_CONSTRAINT];
        }
 }
 
index 40411911bcc6fed9a28fa5dfa6d1fbcd3ea4c85d..18c1be537c80fa677a3f20a3827365a1acb9f021 100644 (file)
@@ -26,7 +26,8 @@
 #include "marshal.h"
 #include "debug-helpers.h"
 #include <mono/utils/mono-error-internals.h>
+#include <mono/utils/bsearch.h>
+
 /* Auxiliary structure used for caching inflated signatures */
 typedef struct {
        MonoMethodSignature *sig;
@@ -2430,15 +2431,18 @@ collect_inflated_signature_images (MonoInflatedMethodSignature *sig, CollectData
 static void
 collect_method_images (MonoMethodInflated *method, CollectData *data)
 {
+       MonoMethod *m = method->declaring;
+
        add_image (method->declaring->klass->image, data);
        if (method->context.class_inst)
                collect_ginst_images (method->context.class_inst, data);
        if (method->context.method_inst)
                collect_ginst_images (method->context.method_inst, data);
        /*
-       if (((MonoMethod*)method)->signature)
-               collect_signature_images (mono_method_signature ((MonoMethod*)method), data);
-       */
+        * Dynamic assemblies have no references, so the images they depend on can be unloaded before them.
+        */
+       if (m->klass->image->dynamic)
+               collect_signature_images (mono_method_signature (m), data);
 }
 
 static void
@@ -3914,7 +3918,7 @@ mono_metadata_typedef_from_field (MonoImage *meta, guint32 index)
        if (meta->uncompressed_metadata)
                loc.idx = search_ptr_table (meta, MONO_TABLE_FIELD_POINTER, loc.idx);
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, typedef_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, typedef_locator))
                return 0;
 
        /* loc_result is 0..1, needs to be mapped to table index (that is +1) */
@@ -3945,7 +3949,7 @@ mono_metadata_typedef_from_method (MonoImage *meta, guint32 index)
        if (meta->uncompressed_metadata)
                loc.idx = search_ptr_table (meta, MONO_TABLE_METHOD_POINTER, loc.idx);
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, typedef_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, typedef_locator))
                return 0;
 
        /* loc_result is 0..1, needs to be mapped to table index (that is +1) */
@@ -3987,7 +3991,7 @@ mono_metadata_interfaces_from_typedef_full (MonoImage *meta, guint32 index, Mono
        loc.col_idx = MONO_INTERFACEIMPL_CLASS;
        loc.t = tdef;
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
                return TRUE;
 
        start = loc.result;
@@ -4083,7 +4087,7 @@ mono_metadata_nested_in_typedef (MonoImage *meta, guint32 index)
        loc.col_idx = MONO_NESTED_CLASS_NESTED;
        loc.t = tdef;
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
                return 0;
 
        /* loc_result is 0..1, needs to be mapped to table index (that is +1) */
@@ -4147,7 +4151,7 @@ mono_metadata_packing_from_typedef (MonoImage *meta, guint32 index, guint32 *pac
        loc.col_idx = MONO_CLASS_LAYOUT_PARENT;
        loc.t = tdef;
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
                return 0;
 
        mono_metadata_decode_row (tdef, loc.result, cols, MONO_CLASS_LAYOUT_SIZE);
@@ -4184,7 +4188,7 @@ mono_metadata_custom_attrs_from_index (MonoImage *meta, guint32 index)
 
        /* FIXME: Index translation */
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
                return 0;
 
        /* Find the first entry by searching backwards */
@@ -4217,7 +4221,7 @@ mono_metadata_declsec_from_index (MonoImage *meta, guint32 index)
        loc.col_idx = MONO_DECL_SECURITY_PARENT;
        loc.t = tdef;
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, declsec_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, declsec_locator))
                return -1;
 
        /* Find the first entry by searching backwards */
@@ -4931,7 +4935,7 @@ mono_metadata_field_info_full (MonoImage *meta, guint32 index, guint32 *offset,
                loc.col_idx = MONO_FIELD_LAYOUT_FIELD;
                loc.t = tdef;
 
-               if (tdef->base && bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator)) {
+               if (tdef->base && mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator)) {
                        *offset = mono_metadata_decode_row_col (tdef, loc.result, MONO_FIELD_LAYOUT_OFFSET);
                } else {
                        *offset = (guint32)-1;
@@ -4943,7 +4947,7 @@ mono_metadata_field_info_full (MonoImage *meta, guint32 index, guint32 *offset,
                loc.col_idx = MONO_FIELD_RVA_FIELD;
                loc.t = tdef;
                
-               if (tdef->base && bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator)) {
+               if (tdef->base && mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator)) {
                        /*
                         * LAMESPEC: There is no signature, no nothing, just the raw data.
                         */
@@ -5004,7 +5008,7 @@ mono_metadata_get_constant_index (MonoImage *meta, guint32 token, guint32 hint)
        if ((hint > 0) && (hint < tdef->rows) && (mono_metadata_decode_row_col (tdef, hint - 1, MONO_CONSTANT_PARENT) == index))
                return hint;
 
-       if (tdef->base && bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator)) {
+       if (tdef->base && mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator)) {
                return loc.result + 1;
        }
        return 0;
@@ -5035,7 +5039,7 @@ mono_metadata_events_from_typedef (MonoImage *meta, guint32 index, guint *end_id
        loc.col_idx = MONO_EVENT_MAP_PARENT;
        loc.idx = index + 1;
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
                return 0;
        
        start = mono_metadata_decode_row_col (tdef, loc.result, MONO_EVENT_MAP_EVENTLIST);
@@ -5077,7 +5081,7 @@ mono_metadata_methods_from_event   (MonoImage *meta, guint32 index, guint *end_i
        loc.col_idx = MONO_METHOD_SEMA_ASSOCIATION;
        loc.idx = ((index + 1) << MONO_HAS_SEMANTICS_BITS) | MONO_HAS_SEMANTICS_EVENT; /* Method association coded index */
 
-       if (!bsearch (&loc, msemt->base, msemt->rows, msemt->row_size, table_locator))
+       if (!mono_binary_search (&loc, msemt->base, msemt->rows, msemt->row_size, table_locator))
                return 0;
 
        start = loc.result;
@@ -5126,7 +5130,7 @@ mono_metadata_properties_from_typedef (MonoImage *meta, guint32 index, guint *en
        loc.col_idx = MONO_PROPERTY_MAP_PARENT;
        loc.idx = index + 1;
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
                return 0;
        
        start = mono_metadata_decode_row_col (tdef, loc.result, MONO_PROPERTY_MAP_PROPERTY_LIST);
@@ -5168,7 +5172,7 @@ mono_metadata_methods_from_property   (MonoImage *meta, guint32 index, guint *en
        loc.col_idx = MONO_METHOD_SEMA_ASSOCIATION;
        loc.idx = ((index + 1) << MONO_HAS_SEMANTICS_BITS) | MONO_HAS_SEMANTICS_PROPERTY; /* Method association coded index */
 
-       if (!bsearch (&loc, msemt->base, msemt->rows, msemt->row_size, table_locator))
+       if (!mono_binary_search (&loc, msemt->base, msemt->rows, msemt->row_size, table_locator))
                return 0;
 
        start = loc.result;
@@ -5207,7 +5211,7 @@ mono_metadata_implmap_from_method (MonoImage *meta, guint32 method_idx)
        loc.col_idx = MONO_IMPLMAP_MEMBER;
        loc.idx = ((method_idx + 1) << MONO_MEMBERFORWD_BITS) | MONO_MEMBERFORWD_METHODDEF;
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
                return 0;
 
        return loc.result + 1;
@@ -5591,7 +5595,7 @@ mono_metadata_get_marshal_info (MonoImage *meta, guint32 idx, gboolean is_field)
 
        /* FIXME: Index translation */
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
                return NULL;
 
        return mono_metadata_blob_heap (meta, mono_metadata_decode_row_col (tdef, loc.result, MONO_FIELD_MARSHAL_NATIVE_TYPE));
@@ -5644,7 +5648,7 @@ mono_class_get_overrides_full (MonoImage *image, guint32 type_token, MonoMethod
        loc.col_idx = MONO_METHODIMPL_CLASS;
        loc.idx = mono_metadata_token_index (type_token);
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
                return TRUE;
 
        start = loc.result;
@@ -5784,7 +5788,7 @@ mono_metadata_get_generic_param_row (MonoImage *image, guint32 token, guint32 *o
        loc.col_idx = MONO_GENERICPARAM_OWNER;
        loc.t = tdef;
 
-       if (!bsearch (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
+       if (!mono_binary_search (&loc, tdef->base, tdef->rows, tdef->row_size, table_locator))
                return 0;
 
        /* Find the first entry by searching backwards */
@@ -6199,6 +6203,21 @@ mono_signature_is_instance (MonoMethodSignature *sig)
        return sig->hasthis;
 }
 
+/**
+ * mono_signature_param_is_out
+ * @sig: the method signature inspected
+ * @param_num: the 0-based index of the inspected parameter
+ * 
+ * Returns: #TRUE if the parameter is an out parameter, #FALSE
+ * otherwise.
+ */
+mono_bool
+mono_signature_param_is_out (MonoMethodSignature *sig, int param_num)
+{
+       g_assert (param_num >= 0 && param_num < sig->param_count);
+       return (sig->params [param_num]->attrs & PARAM_ATTRIBUTE_OUT) != 0;
+}
+
 /**
  * mono_signature_explicit_this:
  * @sig: the method signature inspected
index 4d83adf9ead5bdccd00e61744694780317bfc095..4b880c7bab42bb5aa733d70d0358604471524b29 100644 (file)
@@ -198,14 +198,14 @@ typedef struct {
        } data;
 } MonoMarshalSpec;
 
-void         mono_metadata_init (void);
+MONO_API void         mono_metadata_init (void);
 
-void         mono_metadata_decode_row (const MonoTableInfo   *t,
+MONO_API void         mono_metadata_decode_row (const MonoTableInfo   *t,
                                       int                    idx,
                                       uint32_t               *res,
                                       int                    res_size);
 
-uint32_t      mono_metadata_decode_row_col (const MonoTableInfo *t, 
+MONO_API uint32_t      mono_metadata_decode_row_col (const MonoTableInfo *t, 
                                           int            idx, 
                                           unsigned int          col);
 
@@ -216,61 +216,61 @@ uint32_t      mono_metadata_decode_row_col (const MonoTableInfo *t,
 #define mono_metadata_table_size(bitfield,table) ((((bitfield) >> ((table)*2)) & 0x3) + 1)
 #define mono_metadata_table_count(bitfield) ((bitfield) >> 24)
 
-int mono_metadata_compute_size (MonoImage   *meta,
+MONO_API int mono_metadata_compute_size (MonoImage   *meta,
                                 int             tableindex,
                                 uint32_t        *result_bitfield);
 
 /*
  *
  */
-const char    *mono_metadata_locate        (MonoImage *meta, int table, int idx);
-const char    *mono_metadata_locate_token  (MonoImage *meta, uint32_t token);
+MONO_API const char    *mono_metadata_locate        (MonoImage *meta, int table, int idx);
+MONO_API const char    *mono_metadata_locate_token  (MonoImage *meta, uint32_t token);
                                           
-const char    *mono_metadata_string_heap   (MonoImage *meta, uint32_t table_index);
-const char    *mono_metadata_blob_heap     (MonoImage *meta, uint32_t table_index);
-const char    *mono_metadata_user_string   (MonoImage *meta, uint32_t table_index);
-const char    *mono_metadata_guid_heap     (MonoImage *meta, uint32_t table_index);
+MONO_API const char    *mono_metadata_string_heap   (MonoImage *meta, uint32_t table_index);
+MONO_API const char    *mono_metadata_blob_heap     (MonoImage *meta, uint32_t table_index);
+MONO_API const char    *mono_metadata_user_string   (MonoImage *meta, uint32_t table_index);
+MONO_API const char    *mono_metadata_guid_heap     (MonoImage *meta, uint32_t table_index);
 
-uint32_t mono_metadata_typedef_from_field  (MonoImage *meta, uint32_t table_index);
-uint32_t mono_metadata_typedef_from_method (MonoImage *meta, uint32_t table_index);
-uint32_t mono_metadata_nested_in_typedef   (MonoImage *meta, uint32_t table_index);
-uint32_t mono_metadata_nesting_typedef     (MonoImage *meta, uint32_t table_index, uint32_t start_index);
+MONO_API uint32_t mono_metadata_typedef_from_field  (MonoImage *meta, uint32_t table_index);
+MONO_API uint32_t mono_metadata_typedef_from_method (MonoImage *meta, uint32_t table_index);
+MONO_API uint32_t mono_metadata_nested_in_typedef   (MonoImage *meta, uint32_t table_index);
+MONO_API uint32_t mono_metadata_nesting_typedef     (MonoImage *meta, uint32_t table_index, uint32_t start_index);
 
-MonoClass** mono_metadata_interfaces_from_typedef (MonoImage *meta, uint32_t table_index, unsigned int *count);
+MONO_API MonoClass** mono_metadata_interfaces_from_typedef (MonoImage *meta, uint32_t table_index, unsigned int *count);
 
-uint32_t     mono_metadata_events_from_typedef     (MonoImage *meta, uint32_t table_index, unsigned int *end_idx);
-uint32_t     mono_metadata_methods_from_event      (MonoImage *meta, uint32_t table_index, unsigned int *end);
-uint32_t     mono_metadata_properties_from_typedef (MonoImage *meta, uint32_t table_index, unsigned int *end);
-uint32_t     mono_metadata_methods_from_property   (MonoImage *meta, uint32_t table_index, unsigned int *end);
-uint32_t     mono_metadata_packing_from_typedef    (MonoImage *meta, uint32_t table_index, uint32_t *packing, uint32_t *size);
-const char* mono_metadata_get_marshal_info        (MonoImage *meta, uint32_t idx, mono_bool is_field);
-uint32_t     mono_metadata_custom_attrs_from_index (MonoImage *meta, uint32_t cattr_index);
+MONO_API uint32_t     mono_metadata_events_from_typedef     (MonoImage *meta, uint32_t table_index, unsigned int *end_idx);
+MONO_API uint32_t     mono_metadata_methods_from_event      (MonoImage *meta, uint32_t table_index, unsigned int *end);
+MONO_API uint32_t     mono_metadata_properties_from_typedef (MonoImage *meta, uint32_t table_index, unsigned int *end);
+MONO_API uint32_t     mono_metadata_methods_from_property   (MonoImage *meta, uint32_t table_index, unsigned int *end);
+MONO_API uint32_t     mono_metadata_packing_from_typedef    (MonoImage *meta, uint32_t table_index, uint32_t *packing, uint32_t *size);
+MONO_API const char* mono_metadata_get_marshal_info        (MonoImage *meta, uint32_t idx, mono_bool is_field);
+MONO_API uint32_t     mono_metadata_custom_attrs_from_index (MonoImage *meta, uint32_t cattr_index);
 
-MonoMarshalSpec *mono_metadata_parse_marshal_spec (MonoImage *image, const char *ptr);
+MONO_API MonoMarshalSpec *mono_metadata_parse_marshal_spec (MonoImage *image, const char *ptr);
 
-void mono_metadata_free_marshal_spec (MonoMarshalSpec *spec);
+MONO_API void mono_metadata_free_marshal_spec (MonoMarshalSpec *spec);
 
-uint32_t     mono_metadata_implmap_from_method     (MonoImage *meta, uint32_t method_idx);
+MONO_API uint32_t     mono_metadata_implmap_from_method     (MonoImage *meta, uint32_t method_idx);
 
-void        mono_metadata_field_info (MonoImage *meta, 
+MONO_API void        mono_metadata_field_info (MonoImage *meta, 
                                      uint32_t       table_index,
                                      uint32_t      *offset,
                                      uint32_t      *rva,
                                      MonoMarshalSpec **marshal_spec);
 
-uint32_t     mono_metadata_get_constant_index (MonoImage *meta, uint32_t token, uint32_t hint);
+MONO_API uint32_t     mono_metadata_get_constant_index (MonoImage *meta, uint32_t token, uint32_t hint);
 
 /*
  * Functions to extract information from the Blobs
  */
-uint32_t mono_metadata_decode_value     (const char            *ptr,
+MONO_API uint32_t mono_metadata_decode_value     (const char            *ptr,
                                         const char           **rptr);
-int32_t mono_metadata_decode_signed_value (const char *ptr, const char **rptr);
+MONO_API int32_t mono_metadata_decode_signed_value (const char *ptr, const char **rptr);
 
-uint32_t mono_metadata_decode_blob_size (const char            *ptr,
+MONO_API uint32_t mono_metadata_decode_blob_size (const char            *ptr,
                                         const char           **rptr);
 
-void mono_metadata_encode_value (uint32_t value, char *bug, char **endbuf);
+MONO_API void mono_metadata_encode_value (uint32_t value, char *bug, char **endbuf);
 
 #define MONO_OFFSET_IN_CLAUSE(clause,offset) \
        ((clause)->try_offset <= (offset) && (offset) < ((clause)->try_offset + (clause)->try_len))
@@ -329,133 +329,136 @@ typedef enum {
        MONO_PARSE_FIELD
 } MonoParseTypeMode;
 
-mono_bool
+MONO_API mono_bool
 mono_type_is_byref       (MonoType *type);
 
-int
+MONO_API int
 mono_type_get_type       (MonoType *type);
 
 /* For MONO_TYPE_FNPTR */
-MonoMethodSignature*
+MONO_API MonoMethodSignature*
 mono_type_get_signature  (MonoType *type);
 
 /* For MONO_TYPE_CLASS, VALUETYPE */
-MonoClass*
+MONO_API MonoClass*
 mono_type_get_class      (MonoType *type);
 
-MonoArrayType*
+MONO_API MonoArrayType*
 mono_type_get_array_type (MonoType *type);
 
 /* For MONO_TYPE_PTR */
-MonoType*
+MONO_API MonoType*
 mono_type_get_ptr_type (MonoType *type);
 
-MonoClass*
+MONO_API MonoClass*
 mono_type_get_modifiers  (MonoType *type, mono_bool *is_required, void **iter);
 
-mono_bool mono_type_is_struct    (MonoType *type);
-mono_bool mono_type_is_void      (MonoType *type);
-mono_bool mono_type_is_pointer   (MonoType *type);
-mono_bool mono_type_is_reference (MonoType *type);
+MONO_API mono_bool mono_type_is_struct    (MonoType *type);
+MONO_API mono_bool mono_type_is_void      (MonoType *type);
+MONO_API mono_bool mono_type_is_pointer   (MonoType *type);
+MONO_API mono_bool mono_type_is_reference (MonoType *type);
 
-MonoType*
+MONO_API MonoType*
 mono_signature_get_return_type (MonoMethodSignature *sig);
 
-MonoType*
+MONO_API MonoType*
 mono_signature_get_params      (MonoMethodSignature *sig, void **iter);
 
-uint32_t
+MONO_API uint32_t
 mono_signature_get_param_count (MonoMethodSignature *sig);
 
-uint32_t
+MONO_API uint32_t
 mono_signature_get_call_conv   (MonoMethodSignature *sig);
 
-int
+MONO_API int
 mono_signature_vararg_start    (MonoMethodSignature *sig);
 
-mono_bool
+MONO_API mono_bool
 mono_signature_is_instance     (MonoMethodSignature *sig);
 
-mono_bool
+MONO_API mono_bool
 mono_signature_explicit_this   (MonoMethodSignature *sig);
 
-uint32_t     mono_metadata_parse_typedef_or_ref (MonoImage      *m,
+MONO_API mono_bool
+mono_signature_param_is_out    (MonoMethodSignature *sig, int param_num);
+
+MONO_API uint32_t     mono_metadata_parse_typedef_or_ref (MonoImage      *m,
                                                 const char      *ptr,
                                                 const char     **rptr);
-int            mono_metadata_parse_custom_mod  (MonoImage      *m,
+MONO_API int            mono_metadata_parse_custom_mod  (MonoImage      *m,
                                                MonoCustomMod   *dest,
                                                const char      *ptr,
                                                const char     **rptr);
-MonoArrayType *mono_metadata_parse_array       (MonoImage      *m,
+MONO_API MonoArrayType *mono_metadata_parse_array       (MonoImage      *m,
                                                const char      *ptr,
                                                const char     **rptr);
-void           mono_metadata_free_array        (MonoArrayType     *array);
-MonoType      *mono_metadata_parse_type        (MonoImage      *m,
+MONO_API void           mono_metadata_free_array        (MonoArrayType     *array);
+MONO_API MonoType      *mono_metadata_parse_type        (MonoImage      *m,
                                                MonoParseTypeMode  mode,
                                                short              opt_attrs,
                                                const char        *ptr,
                                                const char       **rptr);
-MonoType      *mono_metadata_parse_param       (MonoImage      *m,
+MONO_API MonoType      *mono_metadata_parse_param       (MonoImage      *m,
                                                const char      *ptr,
                                                const char      **rptr);
-MonoType      *mono_metadata_parse_ret_type    (MonoImage      *m,
+MONO_API MonoType      *mono_metadata_parse_ret_type    (MonoImage      *m,
                                                const char      *ptr,
                                                const char      **rptr);
-MonoType      *mono_metadata_parse_field_type  (MonoImage      *m,
+MONO_API MonoType      *mono_metadata_parse_field_type  (MonoImage      *m,
                                                short            field_flags,
                                                const char      *ptr,
                                                const char      **rptr);
-MonoType      *mono_type_create_from_typespec  (MonoImage        *image, 
+MONO_API MonoType      *mono_type_create_from_typespec  (MonoImage        *image, 
                                                uint32_t           type_spec);
-void           mono_metadata_free_type         (MonoType        *type);
-int            mono_type_size                  (MonoType        *type, 
+MONO_API void           mono_metadata_free_type         (MonoType        *type);
+MONO_API int            mono_type_size                  (MonoType        *type, 
                                                int             *alignment);
-int            mono_type_stack_size            (MonoType        *type, 
+MONO_API int            mono_type_stack_size            (MonoType        *type, 
                                                int             *alignment);
 
-mono_bool       mono_type_generic_inst_is_valuetype      (MonoType *type);
-mono_bool       mono_metadata_generic_class_is_valuetype (MonoGenericClass *gclass);
-unsigned int          mono_metadata_generic_class_hash  (MonoGenericClass *gclass);
-mono_bool       mono_metadata_generic_class_equal (MonoGenericClass *g1, MonoGenericClass *g2);
+MONO_API mono_bool       mono_type_generic_inst_is_valuetype      (MonoType *type);
+MONO_API mono_bool       mono_metadata_generic_class_is_valuetype (MonoGenericClass *gclass);
+MONO_API unsigned int          mono_metadata_generic_class_hash  (MonoGenericClass *gclass);
+MONO_API mono_bool       mono_metadata_generic_class_equal (MonoGenericClass *g1, MonoGenericClass *g2);
 
-unsigned int          mono_metadata_type_hash         (MonoType *t1);
-mono_bool       mono_metadata_type_equal        (MonoType *t1, MonoType *t2);
+MONO_API unsigned int          mono_metadata_type_hash         (MonoType *t1);
+MONO_API mono_bool       mono_metadata_type_equal        (MonoType *t1, MonoType *t2);
 
-MonoMethodSignature  *mono_metadata_signature_alloc (MonoImage *image, uint32_t nparams);
+MONO_API MonoMethodSignature  *mono_metadata_signature_alloc (MonoImage *image, uint32_t nparams);
 
-MonoMethodSignature  *mono_metadata_signature_dup (MonoMethodSignature *sig);
+MONO_API MonoMethodSignature  *mono_metadata_signature_dup (MonoMethodSignature *sig);
 
-MonoMethodSignature  *mono_metadata_parse_signature (MonoImage *image, 
+MONO_API MonoMethodSignature  *mono_metadata_parse_signature (MonoImage *image, 
                                                     uint32_t    token);
 
-MonoMethodSignature  *mono_metadata_parse_method_signature (MonoImage            *m,
+MONO_API MonoMethodSignature  *mono_metadata_parse_method_signature (MonoImage            *m,
                                                             int                    def,
                                                             const char            *ptr,
                                                             const char           **rptr);
-void                  mono_metadata_free_method_signature  (MonoMethodSignature   *method);
+MONO_API void                  mono_metadata_free_method_signature  (MonoMethodSignature   *method);
 
-mono_bool          mono_metadata_signature_equal (MonoMethodSignature *sig1, 
+MONO_API mono_bool          mono_metadata_signature_equal (MonoMethodSignature *sig1, 
                                                 MonoMethodSignature *sig2);
 
-unsigned int             mono_signature_hash (MonoMethodSignature *sig);
+MONO_API unsigned int             mono_signature_hash (MonoMethodSignature *sig);
 
-MonoMethodHeader *mono_metadata_parse_mh (MonoImage *m, const char *ptr);
-void              mono_metadata_free_mh  (MonoMethodHeader *mh);
+MONO_API MonoMethodHeader *mono_metadata_parse_mh (MonoImage *m, const char *ptr);
+MONO_API void              mono_metadata_free_mh  (MonoMethodHeader *mh);
 
 /* MonoMethodHeader acccessors */
-const unsigned char*
+MONO_API const unsigned char*
 mono_method_header_get_code (MonoMethodHeader *header, uint32_t* code_size, uint32_t* max_stack);
 
-MonoType**
+MONO_API MonoType**
 mono_method_header_get_locals (MonoMethodHeader *header, uint32_t* num_locals, mono_bool *init_locals);
 
-int
+MONO_API int
 mono_method_header_get_num_clauses (MonoMethodHeader *header);
 
-int
+MONO_API int
 mono_method_header_get_clauses (MonoMethodHeader *header, MonoMethod *method, void **iter, MonoExceptionClause *clause);
 
-uint32_t 
+MONO_API uint32_t 
 mono_type_to_unmanaged (MonoType *type, MonoMarshalSpec *mspec, 
                        mono_bool as_field, mono_bool unicode, MonoMarshalConv *conv);
 
@@ -477,20 +480,20 @@ mono_type_to_unmanaged (MonoType *type, MonoMarshalSpec *mspec,
 
 #define mono_metadata_token_code(token) ((token & 0xff000000))
 
-uint32_t mono_metadata_token_from_dor (uint32_t dor_index);
+MONO_API uint32_t mono_metadata_token_from_dor (uint32_t dor_index);
 
-char *mono_guid_to_string (const uint8_t *guid);
+MONO_API char *mono_guid_to_string (const uint8_t *guid);
 
-uint32_t mono_metadata_declsec_from_index (MonoImage *meta, uint32_t idx);
+MONO_API uint32_t mono_metadata_declsec_from_index (MonoImage *meta, uint32_t idx);
 
-uint32_t mono_metadata_translate_token_index (MonoImage *image, int table, uint32_t idx);
+MONO_API uint32_t mono_metadata_translate_token_index (MonoImage *image, int table, uint32_t idx);
 
-void    mono_metadata_decode_table_row (MonoImage *image, int table,
+MONO_API void    mono_metadata_decode_table_row (MonoImage *image, int table,
                                       int                    idx,
                                       uint32_t               *res,
                                       int                    res_size);
 
-uint32_t      mono_metadata_decode_table_row_col (MonoImage *image, int table,
+MONO_API uint32_t      mono_metadata_decode_table_row_col (MonoImage *image, int table,
                                           int            idx, 
                                           unsigned int          col);
 
index 5a1edeb210fc2d57ab3132e44a3896e54f1f24c5..43a5e83933cb4202383cc99ac07da7eb688f482a 100644 (file)
@@ -179,6 +179,8 @@ mono_mb_create_method (MonoMethodBuilder *mb, MonoMethodSignature *signature, in
        }
 
        method->signature = signature;
+       if (!signature->hasthis)
+               method->flags |= METHOD_ATTRIBUTE_STATIC;
 
 #ifndef DISABLE_JIT
        if (max_stack < 8)
index 9933f1dd48730ba5f4d5ae377a67752543063a85..9784437db466c668357eabedd4b8949d83363426 100644 (file)
@@ -161,7 +161,7 @@ void
 mono_monitor_init_tls (void)
 {
 #if !defined(HOST_WIN32) && defined(HAVE_KW_THREAD)
-       tls_pthread_self = pthread_self ();
+       tls_pthread_self = (gsize) pthread_self ();
 #endif
 }
 
@@ -947,7 +947,7 @@ mono_monitor_get_fast_enter_method (MonoMethod *monitor_enter_method)
 
        mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
        mono_mb_emit_byte (mb, CEE_MONO_TLS);
-       mono_mb_emit_i4 (mb, thread_tls_offset);
+       mono_mb_emit_i4 (mb, TLS_KEY_THREAD);
        mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoInternalThread, tid));
        mono_mb_emit_byte (mb, CEE_ADD);
        mono_mb_emit_byte (mb, CEE_LDIND_I);
@@ -1109,7 +1109,7 @@ mono_monitor_get_fast_exit_method (MonoMethod *monitor_exit_method)
        mono_mb_emit_byte (mb, CEE_LDIND_I);
        mono_mb_emit_byte (mb, MONO_CUSTOM_PREFIX);
        mono_mb_emit_byte (mb, CEE_MONO_TLS);
-       mono_mb_emit_i4 (mb, thread_tls_offset);
+       mono_mb_emit_i4 (mb, TLS_KEY_THREAD);
        mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoInternalThread, tid));
        mono_mb_emit_byte (mb, CEE_ADD);
        mono_mb_emit_byte (mb, CEE_LDIND_I);
index a034cfb3dddb6caf029a7161536dfabac419a48b..183c2ec0b52371a31601b76efe469fc801cb53ab 100644 (file)
@@ -16,7 +16,7 @@
 
 G_BEGIN_DECLS
 
-void mono_locks_dump (gboolean include_untaken);
+MONO_API void mono_locks_dump (gboolean include_untaken);
 
 void mono_monitor_init (void) MONO_INTERNAL;
 void mono_monitor_cleanup (void) MONO_INTERNAL;
index 88991604f853f41ed209d32f50c64ba2ac7897db..d0af8b07f6163ac3f6b65baf332be61e71dc5daa 100644 (file)
@@ -564,7 +564,7 @@ mono_config_parse (const char *filename) {
        mono_config_parse_file (mono_cfg);
        g_free (mono_cfg);
 
-#ifndef TARGET_WIN32
+#if !defined(TARGET_WIN32) && !defined(__native_client__)
        home = g_get_home_dir ();
        user_cfg = g_strconcat (home, G_DIR_SEPARATOR_S, ".mono/config", NULL);
        mono_config_parse_file (user_cfg);
@@ -790,3 +790,17 @@ mono_config_parse_assembly_bindings (const char *filename, int amajor, int amino
        mono_config_parse_file_with_context (&state, filename);
 }
 
+static mono_bool mono_server_mode = FALSE;
+
+void
+mono_config_set_server_mode (mono_bool server_mode)
+{
+       mono_server_mode = server_mode;
+}
+
+mono_bool
+mono_config_is_server_mode (void)
+{
+       return mono_server_mode;
+}
+
index 0b46425cdb5985a4a5a094a29b811266f3480df9..4e68b8a15d82762bdbc9c0be57aedfe2fd84c135 100644 (file)
 
 MONO_BEGIN_DECLS
 
-const char* mono_get_config_dir (void);
-void        mono_set_config_dir (const char *dir);
+MONO_API const char* mono_get_config_dir (void);
+MONO_API void        mono_set_config_dir (const char *dir);
 
-const char* mono_get_machine_config (void);
+MONO_API const char* mono_get_machine_config (void);
 
-void mono_config_cleanup      (void);
-void mono_config_parse        (const char *filename);
-void mono_config_for_assembly (MonoImage *assembly);
-void mono_config_parse_memory (const char *buffer);
+MONO_API void mono_config_cleanup      (void);
+MONO_API void mono_config_parse        (const char *filename);
+MONO_API void mono_config_for_assembly (MonoImage *assembly);
+MONO_API void mono_config_parse_memory (const char *buffer);
 
-const char* mono_config_string_for_assembly_file (const char *filename);
+MONO_API const char* mono_config_string_for_assembly_file (const char *filename);
+
+MONO_API void mono_config_set_server_mode (mono_bool server_mode);
+MONO_API mono_bool mono_config_is_server_mode (void);
 
 MONO_END_DECLS
 
index 3ab5bf6ffe571be8b63f84b1a93b07d7a7a410ad..3023930e456a33f4fdac6fae218706fae6a7a4a8 100644 (file)
@@ -132,9 +132,9 @@ mono_cqitem_try_enqueue (MonoCQ *cq, MonoObject *obj)
                }
 
                if (InterlockedCompareExchange (&queue->last, pos + 1, pos) == pos) {
-                       mono_array_setref (queue->array, pos, obj);
+                       mono_array_setref_fast (queue->array, pos, obj);
                        STORE_STORE_FENCE;
-                       mono_array_set (queue->array_state, char, pos, TRUE);
+                       mono_array_set_fast (queue->array_state, char, pos, TRUE);
                        if ((pos + 1) == CQ_ARRAY_SIZE) {
                                CQ_DEBUG ("enqueue(): pos + 1 == CQ_ARRAY_SIZE, %d. Adding node.", CQ_ARRAY_SIZE);
                                mono_cq_add_node (cq);
index 450302a443d109c9f8d28c6757554937b275c30b..838b7ef4fa7b4cf9ad3e62256818462fed67f7f0 100644 (file)
@@ -50,42 +50,42 @@ extern volatile gint32 _mono_debugger_interruption_request;
 
 extern void (*mono_debugger_event_handler) (MonoDebuggerEvent event, guint64 data, guint64 arg);
 
-void            mono_debugger_initialize                    (gboolean use_debugger);
-void            mono_debugger_cleanup                       (void);
+MONO_API void            mono_debugger_initialize                    (gboolean use_debugger);
+MONO_API void            mono_debugger_cleanup                       (void);
 
-void            mono_debugger_lock                          (void);
-void            mono_debugger_unlock                        (void);
-void            mono_debugger_event                         (MonoDebuggerEvent event, guint64 data, guint64 arg);
+MONO_API void            mono_debugger_lock                          (void);
+MONO_API void            mono_debugger_unlock                        (void);
+MONO_API void            mono_debugger_event                         (MonoDebuggerEvent event, guint64 data, guint64 arg);
 
-gchar *
+MONO_API gchar *
 mono_debugger_check_runtime_version (const char *filename);
 
-void
+MONO_API void
 mono_debugger_class_initialized (MonoClass *klass);
 
-void
+MONO_API void
 mono_debugger_check_interruption (void);
 
-void
+MONO_API void
 mono_debugger_event_create_appdomain (MonoDomain *domain, gchar *shadow_path);
 
-void
+MONO_API void
 mono_debugger_event_unload_appdomain (MonoDomain *domain);
 
-MonoDebugMethodAddressList *
+MONO_API MonoDebugMethodAddressList *
 mono_debugger_insert_method_breakpoint (MonoMethod *method, guint64 idx);
 
-int
+MONO_API int
 mono_debugger_remove_method_breakpoint (guint64 index);
 
-void
+MONO_API void
 mono_debugger_check_breakpoints (MonoMethod *method, MonoDebugMethodAddress *debug_info);
 
-MonoClass *
+MONO_API MonoClass *
 mono_debugger_register_class_init_callback (MonoImage *image, const gchar *full_name,
                                            guint32 token, guint32 index);
 
-void
+MONO_API void
 mono_debugger_remove_class_init_callback (int index);
 
 #endif /* __MONO_DEBUG_DEBUGGER_H__ */
index 9743232da1b45a4b9093d06621170279423fb85f..6eff0ecbda320d6a165b4be0582e800fa2fdc057 100644 (file)
@@ -652,6 +652,12 @@ mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDoma
        for (i = 0; i < jit->num_locals; i++)
                write_variable (&jit->locals [i], ptr, &ptr);
 
+       *ptr++ = jit->gsharedvt_info_var ? 1 : 0;
+       if (jit->gsharedvt_info_var) {
+               write_variable (jit->gsharedvt_info_var, ptr, &ptr);
+               write_variable (jit->gsharedvt_locals_var, ptr, &ptr);
+       }
+
        size = ptr - oldptr;
        g_assert (size < max_size);
        total_size = size + sizeof (MonoDebugMethodAddress);
@@ -827,6 +833,8 @@ mono_debug_free_method_jit_info (MonoDebugMethodJitInfo *jit)
        g_free (jit->this_var);
        g_free (jit->params);
        g_free (jit->locals);
+       g_free (jit->gsharedvt_info_var);
+       g_free (jit->gsharedvt_locals_var);
        g_free (jit);
 }
 
@@ -871,6 +879,13 @@ mono_debug_read_method (MonoDebugMethodAddress *address)
        for (i = 0; i < jit->num_locals; i++)
                read_variable (&jit->locals [i], ptr, &ptr);
 
+       if (*ptr++) {
+               jit->gsharedvt_info_var = g_new0 (MonoDebugVarInfo, 1);
+               jit->gsharedvt_locals_var = g_new0 (MonoDebugVarInfo, 1);
+               read_variable (jit->gsharedvt_info_var, ptr, &ptr);
+               read_variable (jit->gsharedvt_locals_var, ptr, &ptr);
+       }
+
        return jit;
 }
 
index 9494a79f6770197ccacea4561f71a68bcf05668b..5f8b0258143de4a76e0526234dd27f7d334f410a 100644 (file)
@@ -88,6 +88,8 @@ struct _MonoDebugMethodJitInfo {
        MonoDebugVarInfo *params;
        uint32_t num_locals;
        MonoDebugVarInfo *locals;
+       MonoDebugVarInfo *gsharedvt_info_var;
+       MonoDebugVarInfo *gsharedvt_locals_var;
 };
 
 struct _MonoDebugMethodAddressList {
@@ -122,6 +124,15 @@ struct _MonoDebugSourceLocation {
 /* The variable is dead. */
 #define MONO_DEBUG_VAR_ADDRESS_MODE_DEAD               0x30000000
 
+/* Same as REGOFFSET, but do an indirection */
+#define MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR            0x40000000
+
+/* gsharedvt local */
+#define MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL            0x50000000
+
+/* variable is a vt address */
+#define MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR             0x60000000
+
 struct _MonoDebugVarInfo {
        uint32_t index;
        uint32_t offset;
@@ -140,59 +151,59 @@ extern MonoDebugFormat mono_debug_format;
 extern int32_t mono_debug_debugger_version;
 extern int32_t _mono_debug_using_mono_debugger;
 
-void mono_debug_list_add (MonoDebugList **list, const void* data);
-void mono_debug_list_remove (MonoDebugList **list, const void* data);
+MONO_API void mono_debug_list_add (MonoDebugList **list, const void* data);
+MONO_API void mono_debug_list_remove (MonoDebugList **list, const void* data);
 
-void mono_debug_init (MonoDebugFormat format);
-void mono_debug_open_image_from_memory (MonoImage *image, const mono_byte *raw_contents, int size);
-void mono_debug_cleanup (void);
+MONO_API void mono_debug_init (MonoDebugFormat format);
+MONO_API void mono_debug_open_image_from_memory (MonoImage *image, const mono_byte *raw_contents, int size);
+MONO_API void mono_debug_cleanup (void);
 
-void mono_debug_close_image (MonoImage *image);
+MONO_API void mono_debug_close_image (MonoImage *image);
 
-void mono_debug_domain_unload (MonoDomain *domain);
-void mono_debug_domain_create (MonoDomain *domain);
+MONO_API void mono_debug_domain_unload (MonoDomain *domain);
+MONO_API void mono_debug_domain_create (MonoDomain *domain);
 
-mono_bool mono_debug_using_mono_debugger (void);
+MONO_API mono_bool mono_debug_using_mono_debugger (void);
 
-MonoDebugMethodAddress *
+MONO_API MonoDebugMethodAddress *
 mono_debug_add_method (MonoMethod *method, MonoDebugMethodJitInfo *jit, MonoDomain *domain);
 
-void
+MONO_API void
 mono_debug_remove_method (MonoMethod *method, MonoDomain *domain);
 
-MonoDebugMethodInfo *
+MONO_API MonoDebugMethodInfo *
 mono_debug_lookup_method (MonoMethod *method);
 
-MonoDebugMethodAddressList *
+MONO_API MonoDebugMethodAddressList *
 mono_debug_lookup_method_addresses (MonoMethod *method);
 
-MonoDebugMethodJitInfo*
+MONO_API MonoDebugMethodJitInfo*
 mono_debug_find_method (MonoMethod *method, MonoDomain *domain);
 
-void
+MONO_API void
 mono_debug_free_method_jit_info (MonoDebugMethodJitInfo *jit);
 
 
-void
+MONO_API void
 mono_debug_add_delegate_trampoline (void* code, int size);
 
-MonoDebugLocalsInfo*
+MONO_API MonoDebugLocalsInfo*
 mono_debug_lookup_locals (MonoMethod *method);
 
 /*
  * Line number support.
  */
 
-MonoDebugSourceLocation *
+MONO_API MonoDebugSourceLocation *
 mono_debug_lookup_source_location (MonoMethod *method, uint32_t address, MonoDomain *domain);
 
-int32_t
+MONO_API int32_t
 mono_debug_il_offset_from_address (MonoMethod *method, MonoDomain *domain, uint32_t native_offset);
 
-void
+MONO_API void
 mono_debug_free_source_location (MonoDebugSourceLocation *location);
 
-char *
+MONO_API char *
 mono_debug_print_stack_frame (MonoMethod *method, uint32_t native_offset, MonoDomain *domain);
 
 /*
@@ -201,11 +212,11 @@ mono_debug_print_stack_frame (MonoMethod *method, uint32_t native_offset, MonoDo
  * These methods are used by the JIT while running inside the Mono Debugger.
  */
 
-int             mono_debugger_method_has_breakpoint       (MonoMethod *method);
-int             mono_debugger_insert_breakpoint           (const char *method_name, mono_bool include_namespace);
+MONO_API int             mono_debugger_method_has_breakpoint       (MonoMethod *method);
+MONO_API int             mono_debugger_insert_breakpoint           (const char *method_name, mono_bool include_namespace);
 
-void mono_set_is_debugger_attached (mono_bool attached);
-mono_bool mono_is_debugger_attached (void);
+MONO_API void mono_set_is_debugger_attached (mono_bool attached);
+MONO_API mono_bool mono_is_debugger_attached (void);
 
 MONO_END_DECLS
 
index 6cee6415259bddbf97127c6dbf933e01494e6b7d..343b97194a2144e4bb4104c6cc07f03014af20ab 100644 (file)
@@ -14,19 +14,6 @@ typedef union {
        unsigned char cval [8];
 } mono_rdouble;
 
-#ifdef ARM_FPU_FPA
-#define MONO_DOUBLE_ASSERT_ENDIANITY(dbl_ptr) \
-       do { \
-               mono_rdouble r; \
-               r.fval = *dbl_ptr;      \
-               r.ival = (guint64) *((guint32 *) r.cval) << 32 |        \
-                               *((guint32 *) (r.cval + 4));    \
-               *dbl_ptr = r.fval;      \
-       } while (0)
-#else
-#define MONO_DOUBLE_ASSERT_ENDIANITY(dbl_ptr)
-#endif
-
 #if NO_UNALIGNED_ACCESS
 
 guint16 mono_read16 (const unsigned char *x);
@@ -56,7 +43,6 @@ guint64 mono_read64 (const unsigned char *x);
        do {    \
                mono_rdouble mf;        \
                mf.ival = read64 ((x)); \
-               MONO_DOUBLE_ASSERT_ENDIANITY (&mf.fval);        \
                *(dest) = mf.fval;      \
        } while (0)
 
index f2ff92b53b82cd2532217226f4b14f76fa367cb6..689cad28a88b142337ea997146cace72324c5283 100644 (file)
@@ -11,15 +11,15 @@ MONO_BEGIN_DECLS
 
 typedef int (*MonoGCReferences) (MonoObject *obj, MonoClass *klass, uintptr_t size, uintptr_t num, MonoObject **refs, uintptr_t *offsets, void *data);
 
-void   mono_gc_collect         (int generation);
-int    mono_gc_max_generation  (void);
-int    mono_gc_get_generation  (MonoObject *object);
-int    mono_gc_collection_count (int generation);
-int64_t mono_gc_get_used_size   (void);
-int64_t mono_gc_get_heap_size   (void);
-int    mono_gc_invoke_finalizers (void);
+MONO_API void   mono_gc_collect         (int generation);
+MONO_API int    mono_gc_max_generation  (void);
+MONO_API int    mono_gc_get_generation  (MonoObject *object);
+MONO_API int    mono_gc_collection_count (int generation);
+MONO_API int64_t mono_gc_get_used_size   (void);
+MONO_API int64_t mono_gc_get_heap_size   (void);
+MONO_API int    mono_gc_invoke_finalizers (void);
 /* heap walking is only valid in the pre-stop-world event callback */
-int    mono_gc_walk_heap        (int flags, MonoGCReferences callback, void *data);
+MONO_API int    mono_gc_walk_heap        (int flags, MonoGCReferences callback, void *data);
 
 MONO_END_DECLS
 
index 79c80b78d8dfe1824eff324cf7a568a7eba6b0be..9d382f15476457b2fd7b02a2b3242a927245dc17 100644 (file)
@@ -1,47 +1,17 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
+/*
+ * mono-hash.c: GC-aware hashtable, based on Eglib's Hashtable
  *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the GNU
- * Lesser General Public License for more details.
+ * Authors:
+ *   Paolo Molaro (lupus@xamarin.com)
  *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GLib Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
+ * Copyright 2013 Xamarin Inc (http://www.xamarin.com)
  */
-
+#include <glib.h>
+#include <mono/utils/mono-publib.h>
 #ifndef __MONO_G_HASH_H__
 #define __MONO_G_HASH_H__
 
-/*
- * Imported in mono cvs from version 1.7 of gnome cvs.
- * This hash table is GC friendly and the pointers stored in it
- * are tracked by the garbage collector.
- */
-
-#include <glib.h>
-
-G_BEGIN_DECLS
-
-typedef struct _MonoGHashTable  MonoGHashTable;
-
-typedef gpointer (*MonoGRemapperFunc) (gpointer key, gpointer value, 
-                                                                          gpointer user_data);
-
+MONO_BEGIN_DECLS
 /* do not change the values of this enum */
 typedef enum {
        MONO_HASH_CONSERVATIVE_GC,
@@ -50,55 +20,23 @@ typedef enum {
        MONO_HASH_KEY_VALUE_GC /* note this is the OR of the other two values */
 } MonoGHashGCType;
 
-/* Hash tables
- */
-MonoGHashTable* mono_g_hash_table_new             (GHashFunc       hash_func,
-                                           GEqualFunc      key_equal_func);
-MonoGHashTable* mono_g_hash_table_new_type                (GHashFunc       hash_func,
-                                           GEqualFunc      key_equal_func,
-                                           MonoGHashGCType type);
-MonoGHashTable* mono_g_hash_table_new_full                (GHashFunc       hash_func,
-                                           GEqualFunc      key_equal_func,
-                                           GDestroyNotify  key_destroy_func,
-                                           GDestroyNotify  value_destroy_func);
-void       mono_g_hash_table_destroy      (MonoGHashTable         *hash_table);
-void       mono_g_hash_table_insert               (MonoGHashTable         *hash_table,
-                                           gpointer        key,
-                                           gpointer        value);
-void        mono_g_hash_table_replace           (MonoGHashTable     *hash_table,
-                                           gpointer        key,
-                                           gpointer        value);
-gboolean    mono_g_hash_table_remove              (MonoGHashTable         *hash_table,
-                                           gconstpointer   key);
-gboolean    mono_g_hash_table_steal             (MonoGHashTable     *hash_table,
-                                           gconstpointer   key);
-gpointer    mono_g_hash_table_lookup              (MonoGHashTable         *hash_table,
-                                           gconstpointer   key);
-gboolean    mono_g_hash_table_lookup_extended   (MonoGHashTable           *hash_table,
-                                           gconstpointer   lookup_key,
-                                           gpointer       *orig_key,
-                                           gpointer       *value);
-void       mono_g_hash_table_foreach      (MonoGHashTable         *hash_table,
-                                           GHFunc          func,
-                                           gpointer        user_data);
-guint      mono_g_hash_table_foreach_remove       (MonoGHashTable         *hash_table,
-                                           GHRFunc         func,
-                                           gpointer        user_data);
-guint      mono_g_hash_table_foreach_steal        (MonoGHashTable         *hash_table,
-                                           GHRFunc         func,
-                                           gpointer        user_data);
-gpointer    mono_g_hash_table_find (MonoGHashTable *hash_table,
-                                                                       GHRFunc predicate,
-                                                                       gpointer user_data);
-guint      mono_g_hash_table_size                 (MonoGHashTable         *hash_table);
-
-void        mono_g_hash_table_remap (MonoGHashTable *hash_table,
-                                                                        MonoGRemapperFunc func,
-                                                                        gpointer user_data);
-
-void        mono_g_hash_table_print_stats (MonoGHashTable *table);
-
-G_END_DECLS
-
+typedef struct _MonoGHashTable MonoGHashTable;
+
+MONO_API MonoGHashTable *mono_g_hash_table_new_type (GHashFunc hash_func, GEqualFunc key_equal_func, MonoGHashGCType type);
+MONO_API MonoGHashTable *mono_g_hash_table_new      (GHashFunc hash_func, GEqualFunc key_equal_func);
+MONO_API MonoGHashTable *mono_g_hash_table_new_full (GHashFunc hash_func, GEqualFunc key_equal_func,
+                                                    GDestroyNotify key_destroy_func, GDestroyNotify value_destroy_func);
+MONO_API guint    mono_g_hash_table_size            (MonoGHashTable *hash);
+MONO_API gpointer mono_g_hash_table_lookup          (MonoGHashTable *hash, gconstpointer key);
+MONO_API gboolean mono_g_hash_table_lookup_extended (MonoGHashTable *hash, gconstpointer key, gpointer *orig_key, gpointer *value);
+MONO_API void     mono_g_hash_table_foreach         (MonoGHashTable *hash, GHFunc func, gpointer user_data);
+MONO_API gpointer mono_g_hash_table_find            (MonoGHashTable *hash, GHRFunc predicate, gpointer user_data);
+MONO_API gboolean mono_g_hash_table_remove          (MonoGHashTable *hash, gconstpointer key);
+MONO_API guint    mono_g_hash_table_foreach_remove  (MonoGHashTable *hash, GHRFunc func, gpointer user_data);
+MONO_API void     mono_g_hash_table_destroy         (MonoGHashTable *hash);
+MONO_API void     mono_g_hash_table_insert          (MonoGHashTable *h, gpointer k, gpointer v);
+MONO_API void     mono_g_hash_table_replace         (MonoGHashTable *h, gpointer k, gpointer v);
+MONO_API void     mono_g_hash_table_print_stats     (MonoGHashTable *table);
+
+MONO_END_DECLS
 #endif /* __MONO_G_HASH_H__ */
-
index 0dc0b4b5d58f8918fd597deb3dc9cb413ed9aed6..199496a42eeee2dfa64e709910f73c9e7be8804e 100644 (file)
@@ -8,16 +8,16 @@
 #include <mono/metadata/object.h>
 
 typedef struct _MonoMList MonoMList;
-MonoMList*  mono_mlist_alloc       (MonoObject *data);
-MonoObject* mono_mlist_get_data    (MonoMList* list);
-void        mono_mlist_set_data    (MonoMList* list, MonoObject *data);
-MonoMList*  mono_mlist_set_next    (MonoMList* list, MonoMList *next);
-int         mono_mlist_length      (MonoMList* list);
-MonoMList*  mono_mlist_next        (MonoMList* list);
-MonoMList*  mono_mlist_last        (MonoMList* list);
-MonoMList*  mono_mlist_prepend     (MonoMList* list, MonoObject *data);
-MonoMList*  mono_mlist_append      (MonoMList* list, MonoObject *data);
-MonoMList*  mono_mlist_remove_item (MonoMList* list, MonoMList *item);
+MONO_API MonoMList*  mono_mlist_alloc       (MonoObject *data);
+MONO_API MonoObject* mono_mlist_get_data    (MonoMList* list);
+MONO_API void        mono_mlist_set_data    (MonoMList* list, MonoObject *data);
+MONO_API MonoMList*  mono_mlist_set_next    (MonoMList* list, MonoMList *next);
+MONO_API int         mono_mlist_length      (MonoMList* list);
+MONO_API MonoMList*  mono_mlist_next        (MonoMList* list);
+MONO_API MonoMList*  mono_mlist_last        (MonoMList* list);
+MONO_API MonoMList*  mono_mlist_prepend     (MonoMList* list, MonoObject *data);
+MONO_API MonoMList*  mono_mlist_append      (MonoMList* list, MonoObject *data);
+MONO_API MonoMList*  mono_mlist_remove_item (MonoMList* list, MonoMList *item);
 
 #endif /* __MONO_METADATA_MONO_MLIST_H__ */
 
index a1a3514f4fe1bc4639b7ffba80a807e5c05bc8df..e7fcb2d03b407e68d84dea83dc51469ee32bddb2 100644 (file)
@@ -1,20 +1,55 @@
-
 #if defined(__native_client__)
 
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-#include <eglib/src/glib.h>
-#include <errno.h>
-#include <sys/types.h>
+#include "nacl-stub.h"
 
-struct group *getgrnam(const char *name) { return NULL; }
-struct group *getgrgid(gid_t gid) { errno=EIO; return NULL; }
-int fsync(int fd) { errno=EINVAL; return -1; }
-dev_t makedev(guint32 maj, guint32 min) { return (maj)*256+(min); }
+struct group *getgrnam(const char *name)
+{
+       return NULL;
+}
+
+struct group *getgrgid(gid_t gid)
+{
+       errno = EIO;
+       return NULL;
+}
+
+int fsync(int fd)
+{
+       errno = EINVAL;
+       return -1;
+}
 
 #ifdef USE_NEWLIB
-int getdtablesize(void) {
+dev_t makedev(int maj, int min)
+{
+       return (maj)*256+(min);
+}
+
+int utime(const char *filename, const void *times)
+{
+       errno = EACCES;
+       return -1;
+}
+
+int kill(pid_t pid, int sig)
+{
+       errno = EACCES;
+       return -1;
+}
+
+int getrusage(int who, void *usage)
+{
+       errno = EACCES;
+       return -1;
+}
+
+int lstat(const char *path, struct stat *buf)
+{
+       return stat (path, buf);
+}
+
+int getdtablesize(void)
+{
 #ifdef OPEN_MAX
   return OPEN_MAX;
 #else
@@ -22,7 +57,8 @@ int getdtablesize(void) {
 #endif
 }
 
-size_t getpagesize(void) {
+size_t getpagesize(void)
+{
 #ifdef PAGE_SIZE
   return PAGE_SIZE;
 #else
@@ -30,8 +66,6 @@ size_t getpagesize(void) {
 #endif
 }
 
-#include <semaphore.h>
-
 int sem_trywait(sem_t *sem) {
   g_assert_not_reached ();
   return -1;
index 4076d65d183acca8e502cffb4db0a6f4a96cb439..86a2528b09f62a876d48a9d513c1c8364975350b 100644 (file)
@@ -192,6 +192,12 @@ mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value)
        *(void**)ptr = value;
 }
 
+void
+mono_gc_wbarrier_generic_store_atomic (gpointer ptr, MonoObject *value)
+{
+       InterlockedWritePointer (ptr, value);
+}
+
 void
 mono_gc_wbarrier_generic_nostore (gpointer ptr)
 {
@@ -218,7 +224,7 @@ mono_gc_is_critical_method (MonoMethod *method)
 }
 
 MonoMethod*
-mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
+mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box)
 {
        return NULL;
 }
index 6c64c8e56a13b78cbae09e3d0d49f8608f7c148d..d969533904f41f5f88dbd5ad5c4d422bc7df7c2f 100644 (file)
@@ -194,6 +194,27 @@ struct _MonoString {
 #define mono_array_length_fast(array) ((array)->max_length)
 #define mono_array_addr_with_size_fast(array,size,index) ( ((char*)(array)->vector) + (size) * (index) )
 
+#define mono_array_addr_fast(array,type,index) ((type*)(void*) mono_array_addr_with_size_fast (array, sizeof (type), index))
+#define mono_array_get_fast(array,type,index) ( *(type*)mono_array_addr_fast ((array), type, (index)) ) 
+#define mono_array_set_fast(array,type,index,value)    \
+       do {    \
+               type *__p = (type *) mono_array_addr_fast ((array), type, (index));     \
+               *__p = (value); \
+       } while (0)
+#define mono_array_setref_fast(array,index,value)      \
+       do {    \
+               void **__p = (void **) mono_array_addr_fast ((array), void*, (index));  \
+               mono_gc_wbarrier_set_arrayref ((array), __p, (MonoObject*)(value));     \
+               /* *__p = (value);*/    \
+       } while (0)
+#define mono_array_memcpy_refs_fast(dest,destidx,src,srcidx,count)     \
+       do {    \
+               void **__p = (void **) mono_array_addr_fast ((dest), void*, (destidx)); \
+               void **__s = mono_array_addr_fast ((src), void*, (srcidx));     \
+               mono_gc_wbarrier_arrayref_copy (__p, __s, (count));     \
+       } while (0)
+
+
 typedef struct {
        MonoObject obj;
        MonoObject *identity;
@@ -414,13 +435,13 @@ struct _MonoInternalThread {
        gpointer android_tid;
        gpointer thread_pinning_ref;
        gint32 ignore_next_signal;
+       MonoMethod *async_invoke_method;
        /* 
         * These fields are used to avoid having to increment corlib versions
         * when a new field is added to this structure.
         * Please synchronize any changes with InternalThread in Thread.cs, i.e. add the
         * same field there.
         */
-       gpointer unused0;
        gpointer unused1;
        gpointer unused2;
 };
@@ -578,12 +599,14 @@ typedef struct {
 } MonoRuntimeCallbacks;
 
 typedef gboolean (*MonoInternalStackWalk) (MonoStackFrameInfo *frame, MonoContext *ctx, gpointer data);
+typedef gboolean (*MonoInternalExceptionFrameWalk) (MonoMethod *method, gpointer ip, size_t native_offset, gboolean managed, gpointer user_data);
 
 typedef struct {
        void (*mono_walk_stack_with_ctx) (MonoInternalStackWalk func, MonoContext *ctx, MonoUnwindOptions options, void *user_data);
        void (*mono_walk_stack_with_state) (MonoInternalStackWalk func, MonoThreadUnwindState *state, MonoUnwindOptions options, void *user_data);
        void (*mono_raise_exception) (MonoException *ex);
        void (*mono_raise_exception_with_ctx) (MonoException *ex, MonoContext *ctx);
+       gboolean (*mono_exception_walk_trace) (MonoException *ex, MonoInternalExceptionFrameWalk func, gpointer user_data);
        gboolean (*mono_install_handler_block_guard) (MonoThreadUnwindState *unwind_state);
 } MonoRuntimeExceptionHandlingCallbacks;
 
@@ -1389,7 +1412,7 @@ void        mono_reflection_initialize_generic_parameter (MonoReflectionGenericP
 void        mono_reflection_create_unmanaged_type (MonoReflectionType *type) MONO_INTERNAL;
 void        mono_reflection_register_with_runtime (MonoReflectionType *type) MONO_INTERNAL;
 
-void        mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *method, const guchar *data, guint32 len, MonoArray **typed_args, MonoArray **named_args, CattrNamedArg **named_arg_info) MONO_INTERNAL;
+void        mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *method, const guchar *data, guint32 len, MonoArray **typed_args, MonoArray **named_args, CattrNamedArg **named_arg_info, MonoError *error) MONO_INTERNAL;
 MonoMethodSignature * mono_reflection_lookup_signature (MonoImage *image, MonoMethod *method, guint32 token) MONO_INTERNAL;
 
 MonoArray* mono_param_get_objects_internal  (MonoDomain *domain, MonoMethod *method, MonoClass *refclass) MONO_INTERNAL;
@@ -1582,7 +1605,7 @@ void
 mono_field_static_get_value_for_thread (MonoInternalThread *thread, MonoVTable *vt, MonoClassField *field, void *value) MONO_INTERNAL;
 
 /* exported, used by the debugger */
-void *
+MONO_API void *
 mono_vtable_get_static_field_data (MonoVTable *vt);
 
 char *
@@ -1603,6 +1626,9 @@ mono_exception_get_native_backtrace (MonoException *exc) MONO_INTERNAL;
 MonoString *
 ves_icall_Mono_Runtime_GetNativeStackTrace (MonoException *exc) MONO_INTERNAL;
 
+char *
+mono_exception_get_managed_backtrace (MonoException *exc) MONO_INTERNAL;
+
 #endif /* __MONO_OBJECT_INTERNALS_H__ */
 
 
index 9334fdcec5d55bce073d99b7d062931d5d9b8245..1b7afbd70f1358d6ceb88989ac44d9eb71107dd1 100644 (file)
@@ -2013,7 +2013,7 @@ mono_class_create_runtime_vtable (MonoDomain *domain, MonoClass *class, gboolean
                                        bitmap = default_bitmap;
                                } else if (mono_type_is_struct (field->type)) {
                                        fclass = mono_class_from_mono_type (field->type);
-                                       bitmap = compute_class_bitmap (fclass, default_bitmap, sizeof (default_bitmap) * 8, 0, &max_set, FALSE);
+                                       bitmap = compute_class_bitmap (fclass, default_bitmap, sizeof (default_bitmap) * 8, - (int)(sizeof (MonoObject) / sizeof (gpointer)), &max_set, FALSE);
                                        numbits = max_set + 1;
                                } else {
                                        default_bitmap [0] = 0;
@@ -2626,8 +2626,8 @@ mono_remote_class_vtable (MonoDomain *domain, MonoRemoteClass *remote_class, Mon
                MonoClass *klass;
                type = ((MonoReflectionType *)rp->class_to_proxy)->type;
                klass = mono_class_from_mono_type (type);
-#ifndef DISABLE_COMf
-               if ((mono_class_is_com_object (klass) || (mono_defaults.com_object_class && klass == mono_defaults.com_object_class)) && !mono_vtable_is_remote (mono_class_vtable (mono_domain_get (), klass)))
+#ifndef DISABLE_COM
+               if ((mono_class_is_com_object (klass) || (mono_class_get_com_object_class () && klass == mono_class_get_com_object_class ())) && !mono_vtable_is_remote (mono_class_vtable (mono_domain_get (), klass)))
                        remote_class->default_vtable = mono_class_proxy_vtable (domain, remote_class, MONO_REMOTING_TARGET_COMINTEROP);
                else
 #endif
@@ -2750,7 +2750,7 @@ mono_object_get_virtual_method (MonoObject *obj, MonoMethod *method)
                        res = mono_marshal_get_remoting_invoke_with_check (res);
                else {
 #ifndef DISABLE_COM
-                       if (klass == mono_defaults.com_object_class || mono_class_is_com_object (klass))
+                       if (klass == mono_class_get_com_object_class () || mono_class_is_com_object (klass))
                                res = mono_cominterop_get_invoke (res);
                        else
 #endif
@@ -3178,14 +3178,7 @@ mono_field_get_value_object (MonoDomain *domain, MonoClassField *field, MonoObje
                is_static = TRUE;
 
                if (!is_literal) {
-                       vtable = mono_class_vtable (domain, field->parent);
-                       if (!vtable) {
-                               char *name = mono_type_get_full_name (field->parent);
-                               /*FIXME extend this to use the MonoError api*/
-                               g_warning ("Could not retrieve the vtable for type %s in mono_field_get_value_object", name);
-                               g_free (name);
-                               return NULL;
-                       }
+                       vtable = mono_class_vtable_full (domain, field->parent, TRUE);
                        if (!vtable->initialized)
                                mono_runtime_class_init (vtable);
                }
@@ -4634,7 +4627,7 @@ mono_array_full_copy (MonoArray *src, MonoArray *dest)
 #ifdef HAVE_SGEN_GC
        if (klass->element_class->valuetype) {
                if (klass->element_class->has_references)
-                       mono_value_copy_array (dest, 0, mono_array_addr_with_size (src, 0, 0), mono_array_length (src));
+                       mono_value_copy_array (dest, 0, mono_array_addr_with_size_fast (src, 0, 0), mono_array_length (src));
                else
                        mono_gc_memmove (&dest->vector, &src->vector, size);
        } else {
@@ -4671,7 +4664,7 @@ mono_array_clone_in_domain (MonoDomain *domain, MonoArray *array)
 #ifdef HAVE_SGEN_GC
                if (klass->element_class->valuetype) {
                        if (klass->element_class->has_references)
-                               mono_value_copy_array (o, 0, mono_array_addr_with_size (array, 0, 0), mono_array_length (array));
+                               mono_value_copy_array (o, 0, mono_array_addr_with_size_fast (array, 0, 0), mono_array_length (array));
                        else
                                mono_gc_memmove (&o->vector, &array->vector, size);
                } else {
@@ -4694,7 +4687,7 @@ mono_array_clone_in_domain (MonoDomain *domain, MonoArray *array)
 #ifdef HAVE_SGEN_GC
        if (klass->element_class->valuetype) {
                if (klass->element_class->has_references)
-                       mono_value_copy_array (o, 0, mono_array_addr_with_size (array, 0, 0), mono_array_length (array));
+                       mono_value_copy_array (o, 0, mono_array_addr_with_size_fast (array, 0, 0), mono_array_length (array));
                else
                        mono_gc_memmove (&o->vector, &array->vector, size);
        } else {
@@ -5173,7 +5166,7 @@ void
 mono_value_copy_array (MonoArray *dest, int dest_idx, gpointer src, int count)
 {
        int size = mono_array_element_size (dest->obj.vtable->klass);
-       char *d = mono_array_addr_with_size (dest, size, dest_idx);
+       char *d = mono_array_addr_with_size_fast (dest, size, dest_idx);
        g_assert (size == mono_class_value_size (mono_object_class (dest)->element_class, NULL));
        mono_gc_wbarrier_value_copy (d, src, count, mono_object_class (dest)->element_class);
 }
@@ -6057,6 +6050,7 @@ mono_object_to_string (MonoObject *obj, MonoObject **exc)
 {
        static MonoMethod *to_string = NULL;
        MonoMethod *method;
+       void *target = obj;
 
        g_assert (obj);
 
@@ -6065,7 +6059,12 @@ mono_object_to_string (MonoObject *obj, MonoObject **exc)
 
        method = mono_object_get_virtual_method (obj, to_string);
 
-       return (MonoString *) mono_runtime_invoke (method, obj, NULL, exc);
+       // Unbox value type if needed
+       if (mono_class_is_valuetype (mono_method_get_class (method))) {
+               target = mono_object_unbox (obj);
+       }
+
+       return (MonoString *) mono_runtime_invoke (method, target, NULL, exc);
 }
 
 /**
@@ -6094,7 +6093,15 @@ mono_print_unhandled_exception (MonoObject *exc)
                        MonoObject *other_exc = NULL;
                        str = mono_object_to_string (exc, &other_exc);
                        if (other_exc) {
-                               message = g_strdup ("Nested exception, bailing out");
+                               char *original_backtrace = mono_exception_get_managed_backtrace ((MonoException*)exc);
+                               char *nested_backtrace = mono_exception_get_managed_backtrace ((MonoException*)other_exc);
+                               
+                               message = g_strdup_printf ("Nested exception detected.\nOriginal Exception: %s\nNested exception:%s\n",
+                                       original_backtrace, nested_backtrace);
+
+                               g_free (original_backtrace);
+                               g_free (nested_backtrace);
+                               free_message = TRUE;
                        } else if (str) {
                                message = mono_string_to_utf8_checked (str, &error);
                                if (!mono_error_ok (&error)) {
@@ -6182,7 +6189,7 @@ mono_delegate_ctor (MonoObject *this, MonoObject *target, gpointer addr)
        if (!ji && domain != mono_get_root_domain ())
                ji = mono_jit_info_table_find (mono_get_root_domain (), mono_get_addr_from_ftnptr (addr));
        if (ji) {
-               method = ji->method;
+               method = mono_jit_info_get_method (ji);
                g_assert (!method->klass->generic_container);
        }
 
index e975298e88164f946290c40cd7e4badb65f1ecd5..3015159d7fb7668325dccb70fc7ee14aacdd018a 100644 (file)
@@ -65,231 +65,231 @@ typedef void          (*MonoMainThreadFunc)    (void* user_data);
                mono_gc_wbarrier_arrayref_copy (__p, __s, (count));     \
        } while (0)
 
-mono_unichar2 *mono_string_chars  (MonoString *s);
-int            mono_string_length (MonoString *s);
+MONO_API mono_unichar2 *mono_string_chars  (MonoString *s);
+MONO_API int            mono_string_length (MonoString *s);
 
-MonoObject *
+MONO_API MonoObject *
 mono_object_new                    (MonoDomain *domain, MonoClass *klass);
 
-MonoObject *
+MONO_API MonoObject *
 mono_object_new_specific    (MonoVTable *vtable);
 
 /* can be used for classes without finalizer in non-profiling mode */
-MonoObject *
+MONO_API MonoObject *
 mono_object_new_fast       (MonoVTable *vtable);
 
-MonoObject *
+MONO_API MonoObject *
 mono_object_new_alloc_specific (MonoVTable *vtable);
 
-MonoObject *
+MONO_API MonoObject *
 mono_object_new_from_token  (MonoDomain *domain, MonoImage *image, uint32_t token);
 
-MonoArray*
+MONO_API MonoArray*
 mono_array_new             (MonoDomain *domain, MonoClass *eclass, uintptr_t n);
 
-MonoArray*
+MONO_API MonoArray*
 mono_array_new_full        (MonoDomain *domain, MonoClass *array_class,
                             uintptr_t *lengths, intptr_t *lower_bounds);
 
-MonoArray *
+MONO_API MonoArray *
 mono_array_new_specific            (MonoVTable *vtable, uintptr_t n);
 
-MonoArray*
+MONO_API MonoArray*
 mono_array_clone           (MonoArray *array);
 
-char*
+MONO_API char*
 mono_array_addr_with_size   (MonoArray *array, int size, uintptr_t idx);
 
-uintptr_t
+MONO_API uintptr_t
 mono_array_length           (MonoArray *array);
 
-MonoString*
+MONO_API MonoString*
 mono_string_new_utf16      (MonoDomain *domain, const mono_unichar2 *text, int32_t len);
 
-MonoString*
+MONO_API MonoString*
 mono_string_new_size       (MonoDomain *domain, int32_t len);
 
-MonoString*
+MONO_API MonoString*
 mono_ldstr                 (MonoDomain *domain, MonoImage *image, uint32_t str_index);
 
-MonoString*
+MONO_API MonoString*
 mono_string_is_interned            (MonoString *str);
 
-MonoString*
+MONO_API MonoString*
 mono_string_intern         (MonoString *str);
 
-MonoString*
+MONO_API MonoString*
 mono_string_new                    (MonoDomain *domain, const char *text);
 
-MonoString*
+MONO_API MonoString*
 mono_string_new_wrapper            (const char *text);
 
-MonoString*
+MONO_API MonoString*
 mono_string_new_len        (MonoDomain *domain, const char *text, unsigned int length);
 
-char *
+MONO_API char *
 mono_string_to_utf8        (MonoString *string_obj);
 
-char *
+MONO_API char *
 mono_string_to_utf8_checked (MonoString *string_obj, MonoError *error);
 
-mono_unichar2 *
+MONO_API mono_unichar2 *
 mono_string_to_utf16       (MonoString *string_obj);
 
-MonoString *
+MONO_API MonoString *
 mono_string_from_utf16     (mono_unichar2 *data);
 
-mono_bool
+MONO_API mono_bool
 mono_string_equal           (MonoString *s1, MonoString *s2);
 
-unsigned int
+MONO_API unsigned int
 mono_string_hash            (MonoString *s);
 
-int
+MONO_API int
 mono_object_hash            (MonoObject* obj);
 
-MonoString *
+MONO_API MonoString *
 mono_object_to_string (MonoObject *obj, MonoObject **exc);
 
-MonoObject *
+MONO_API MonoObject *
 mono_value_box             (MonoDomain *domain, MonoClass *klass, void* val);
 
-void
+MONO_API void
 mono_value_copy             (void* dest, void* src, MonoClass *klass);
 
-void
+MONO_API void
 mono_value_copy_array       (MonoArray *dest, int dest_idx, void* src, int count);
 
-MonoDomain*
+MONO_API MonoDomain*
 mono_object_get_domain      (MonoObject *obj);
 
-MonoClass*
+MONO_API MonoClass*
 mono_object_get_class       (MonoObject *obj);
 
-void*
+MONO_API void*
 mono_object_unbox          (MonoObject *obj);
 
-MonoObject *
+MONO_API MonoObject *
 mono_object_clone          (MonoObject *obj);
 
-MonoObject *
+MONO_API MonoObject *
 mono_object_isinst         (MonoObject *obj, MonoClass *klass);
 
-MonoObject *
+MONO_API MonoObject *
 mono_object_isinst_mbyref   (MonoObject *obj, MonoClass *klass);
 
-MonoObject *
+MONO_API MonoObject *
 mono_object_castclass_mbyref (MonoObject *obj, MonoClass *klass);
 
-mono_bool 
+MONO_API mono_bool 
 mono_monitor_try_enter       (MonoObject *obj, uint32_t ms);
 
-mono_bool
+MONO_API mono_bool
 mono_monitor_enter           (MonoObject *obj);
 
-unsigned int
+MONO_API unsigned int
 mono_object_get_size         (MonoObject *o);
 
-void 
+MONO_API void 
 mono_monitor_exit            (MonoObject *obj);
 
-void
+MONO_API void
 mono_raise_exception       (MonoException *ex);
 
-void
+MONO_API void
 mono_runtime_object_init    (MonoObject *this_obj);
 
-void
+MONO_API void
 mono_runtime_class_init            (MonoVTable *vtable);
 
-MonoMethod*
+MONO_API MonoMethod*
 mono_object_get_virtual_method (MonoObject *obj, MonoMethod *method);
 
-MonoObject*
+MONO_API MonoObject*
 mono_runtime_invoke        (MonoMethod *method, void *obj, void **params,
                             MonoObject **exc);
 
-MonoMethod *
+MONO_API MonoMethod *
 mono_get_delegate_invoke    (MonoClass *klass);
 
-MonoMethod *
+MONO_API MonoMethod *
 mono_get_delegate_begin_invoke (MonoClass *klass);
 
-MonoMethod *
+MONO_API MonoMethod *
 mono_get_delegate_end_invoke (MonoClass *klass);
 
-MonoObject*
+MONO_API MonoObject*
 mono_runtime_delegate_invoke (MonoObject *delegate, void **params, 
                              MonoObject **exc);
 
-MonoObject*
+MONO_API MonoObject*
 mono_runtime_invoke_array   (MonoMethod *method, void *obj, MonoArray *params,
                             MonoObject **exc);
 
-void*
+MONO_API void*
 mono_method_get_unmanaged_thunk (MonoMethod *method);
 
-MonoArray*
+MONO_API MonoArray*
 mono_runtime_get_main_args  (void);
 
-void
+MONO_API void
 mono_runtime_exec_managed_code (MonoDomain *domain,
                                MonoMainThreadFunc main_func,
                                void* main_args);
 
-int
+MONO_API int
 mono_runtime_run_main      (MonoMethod *method, int argc, char* argv[], 
                             MonoObject **exc);
 
-int
+MONO_API int
 mono_runtime_exec_main     (MonoMethod *method, MonoArray *args,
                             MonoObject **exc);
 
 /* The following functions won't be available with mono was configured with remoting disabled. */
 /*#ifndef DISABLE_REMOTING */
-void*
+MONO_API void*
 mono_load_remote_field (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, void **res);
 
-MonoObject *
+MONO_API MonoObject *
 mono_load_remote_field_new (MonoObject *this_obj, MonoClass *klass, MonoClassField *field);
 
-void
+MONO_API void
 mono_store_remote_field (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, void* val);
 
-void
+MONO_API void
 mono_store_remote_field_new (MonoObject *this_obj, MonoClass *klass, MonoClassField *field, MonoObject *arg);
 
 /* #endif */
 
-void
+MONO_API void
 mono_unhandled_exception    (MonoObject *exc);
 
-void
+MONO_API void
 mono_print_unhandled_exception (MonoObject *exc);
 
-void* 
+MONO_API void* 
 mono_compile_method       (MonoMethod *method);
 
 /* accessors for fields and properties */
-void
+MONO_API void
 mono_field_set_value (MonoObject *obj, MonoClassField *field, void *value);
 
-void
+MONO_API void
 mono_field_static_set_value (MonoVTable *vt, MonoClassField *field, void *value);
 
-void
+MONO_API void
 mono_field_get_value (MonoObject *obj, MonoClassField *field, void *value);
 
-void
+MONO_API void
 mono_field_static_get_value (MonoVTable *vt, MonoClassField *field, void *value);
 
-MonoObject *
+MONO_API MonoObject *
 mono_field_get_value_object (MonoDomain *domain, MonoClassField *field, MonoObject *obj);
 
-void
+MONO_API void
 mono_property_set_value (MonoProperty *prop, void *obj, void **params, MonoObject **exc);
 
-MonoObject*
+MONO_API MonoObject*
 mono_property_get_value (MonoProperty *prop, void *obj, void **params, MonoObject **exc);
 
 /* GC handles support 
@@ -306,19 +306,38 @@ mono_property_get_value (MonoProperty *prop, void *obj, void **params, MonoObjec
  * mono_gchandle_get_target () can be used to get the object referenced by both kinds
  * of handle: for a weakref handle, if an object has been collected, it will return NULL.
  */
-uint32_t      mono_gchandle_new         (MonoObject *obj, mono_bool pinned);
-uint32_t      mono_gchandle_new_weakref (MonoObject *obj, mono_bool track_resurrection);
-MonoObject*  mono_gchandle_get_target  (uint32_t gchandle);
-void         mono_gchandle_free        (uint32_t gchandle);
+MONO_API uint32_t      mono_gchandle_new         (MonoObject *obj, mono_bool pinned);
+MONO_API uint32_t      mono_gchandle_new_weakref (MonoObject *obj, mono_bool track_resurrection);
+MONO_API MonoObject*  mono_gchandle_get_target  (uint32_t gchandle);
+MONO_API void         mono_gchandle_free        (uint32_t gchandle);
+
+/* Reference queue support
+ *
+ * A reference queue is used to get notifications of when objects are collected.
+ * Call mono_gc_reference_queue_new to create a new queue and pass the callback that
+ * will be invoked when registered objects are collected.
+ * Call mono_gc_reference_queue_add to register a pair of objects and data within a queue.
+ * The callback will be triggered once an object is both unreachable and finalized.
+ */
+
+typedef void (*mono_reference_queue_callback) (void *user_data);
+typedef struct _MonoReferenceQueue MonoReferenceQueue;
+
+MONO_API MonoReferenceQueue* mono_gc_reference_queue_new (mono_reference_queue_callback callback);
+MONO_API void mono_gc_reference_queue_free (MonoReferenceQueue *queue);
+MONO_API mono_bool mono_gc_reference_queue_add (MonoReferenceQueue *queue, MonoObject *obj, void *user_data);
+
+
 
 /* GC write barriers support */
-void mono_gc_wbarrier_set_field     (MonoObject *obj, void* field_ptr, MonoObject* value);
-void mono_gc_wbarrier_set_arrayref  (MonoArray *arr, void* slot_ptr, MonoObject* value);
-void mono_gc_wbarrier_arrayref_copy (void* dest_ptr, void* src_ptr, int count);
-void mono_gc_wbarrier_generic_store (void* ptr, MonoObject* value);
-void mono_gc_wbarrier_generic_nostore (void* ptr);
-void mono_gc_wbarrier_value_copy    (void* dest, void* src, int count, MonoClass *klass);
-void mono_gc_wbarrier_object_copy   (MonoObject* obj, MonoObject *src);
+MONO_API void mono_gc_wbarrier_set_field     (MonoObject *obj, void* field_ptr, MonoObject* value);
+MONO_API void mono_gc_wbarrier_set_arrayref  (MonoArray *arr, void* slot_ptr, MonoObject* value);
+MONO_API void mono_gc_wbarrier_arrayref_copy (void* dest_ptr, void* src_ptr, int count);
+MONO_API void mono_gc_wbarrier_generic_store (void* ptr, MonoObject* value);
+MONO_API void mono_gc_wbarrier_generic_store_atomic (void *ptr, MonoObject *value);
+MONO_API void mono_gc_wbarrier_generic_nostore (void* ptr);
+MONO_API void mono_gc_wbarrier_value_copy    (void* dest, void* src, int count, MonoClass *klass);
+MONO_API void mono_gc_wbarrier_object_copy   (MonoObject* obj, MonoObject *src);
 
 MONO_END_DECLS
 
index 1c553f15b1d9c12ecb9ae8393dcf3f58ca3f616b..71b4cb495861d7f923827b6c07c23737b799a879 100644 (file)
@@ -64,10 +64,10 @@ typedef struct {
 
 extern const MonoOpcode mono_opcodes [];
 
-const char*
+MONO_API const char*
 mono_opcode_name (int opcode);
 
-MonoOpcodeEnum
+MONO_API MonoOpcodeEnum
 mono_opcode_value (const mono_byte **ip, const mono_byte *end);
 
 MONO_END_DECLS
old mode 100644 (file)
new mode 100755 (executable)
index 09299a7cfd7449ff68560bf6e781667375282ef0..c7b8f6d8a88463fad9c5be909cac96b5726ee3d1 100644 (file)
@@ -151,47 +151,47 @@ typedef void (*MonoProfilerCodeBufferNew) (MonoProfiler *prof, void* buffer, int
 /*
  * Function the profiler may call.
  */
-void mono_profiler_install       (MonoProfiler *prof, MonoProfileFunc shutdown_callback);
-void mono_profiler_set_events    (MonoProfileFlags events);
+MONO_API void mono_profiler_install       (MonoProfiler *prof, MonoProfileFunc shutdown_callback);
+MONO_API void mono_profiler_set_events    (MonoProfileFlags events);
 
-MonoProfileFlags mono_profiler_get_events (void);
+MONO_API MonoProfileFlags mono_profiler_get_events (void);
 
-void mono_profiler_install_appdomain   (MonoProfileAppDomainFunc start_load, MonoProfileAppDomainResult end_load,
+MONO_API void mono_profiler_install_appdomain   (MonoProfileAppDomainFunc start_load, MonoProfileAppDomainResult end_load,
                                         MonoProfileAppDomainFunc start_unload, MonoProfileAppDomainFunc end_unload);
-void mono_profiler_install_assembly    (MonoProfileAssemblyFunc start_load, MonoProfileAssemblyResult end_load,
+MONO_API void mono_profiler_install_assembly    (MonoProfileAssemblyFunc start_load, MonoProfileAssemblyResult end_load,
                                         MonoProfileAssemblyFunc start_unload, MonoProfileAssemblyFunc end_unload);
-void mono_profiler_install_module      (MonoProfileModuleFunc start_load, MonoProfileModuleResult end_load,
+MONO_API void mono_profiler_install_module      (MonoProfileModuleFunc start_load, MonoProfileModuleResult end_load,
                                         MonoProfileModuleFunc start_unload, MonoProfileModuleFunc end_unload);
-void mono_profiler_install_class       (MonoProfileClassFunc start_load, MonoProfileClassResult end_load,
+MONO_API void mono_profiler_install_class       (MonoProfileClassFunc start_load, MonoProfileClassResult end_load,
                                         MonoProfileClassFunc start_unload, MonoProfileClassFunc end_unload);
 
-void mono_profiler_install_jit_compile (MonoProfileMethodFunc start, MonoProfileMethodResult end);
-void mono_profiler_install_jit_end (MonoProfileJitResult end);
-void mono_profiler_install_method_free (MonoProfileMethodFunc callback);
-void mono_profiler_install_method_invoke (MonoProfileMethodFunc start, MonoProfileMethodFunc end);
-void mono_profiler_install_enter_leave (MonoProfileMethodFunc enter, MonoProfileMethodFunc fleave);
-void mono_profiler_install_thread      (MonoProfileThreadFunc start, MonoProfileThreadFunc end);
-void mono_profiler_install_thread_name (MonoProfileThreadNameFunc thread_name_cb);
-void mono_profiler_install_transition  (MonoProfileMethodResult callback);
-void mono_profiler_install_allocation  (MonoProfileAllocFunc callback);
-void mono_profiler_install_monitor     (MonoProfileMonitorFunc callback);
-void mono_profiler_install_statistical (MonoProfileStatFunc callback);
-void mono_profiler_install_statistical_call_chain (MonoProfileStatCallChainFunc callback, int call_chain_depth, MonoProfilerCallChainStrategy call_chain_strategy);
-void mono_profiler_install_exception   (MonoProfileExceptionFunc throw_callback, MonoProfileMethodFunc exc_method_leave, MonoProfileExceptionClauseFunc clause_callback);
-void mono_profiler_install_coverage_filter (MonoProfileCoverageFilterFunc callback);
-void mono_profiler_coverage_get  (MonoProfiler *prof, MonoMethod *method, MonoProfileCoverageFunc func);
-void mono_profiler_install_gc    (MonoProfileGCFunc callback, MonoProfileGCResizeFunc heap_resize_callback);
-void mono_profiler_install_gc_moves    (MonoProfileGCMoveFunc callback);
-void mono_profiler_install_gc_roots    (MonoProfileGCHandleFunc handle_callback, MonoProfileGCRootFunc roots_callback);
-void mono_profiler_install_runtime_initialized (MonoProfileFunc runtime_initialized_callback);
-
-void mono_profiler_install_code_chunk_new (MonoProfilerCodeChunkNew callback);
-void mono_profiler_install_code_chunk_destroy (MonoProfilerCodeChunkDestroy callback);
-void mono_profiler_install_code_buffer_new (MonoProfilerCodeBufferNew callback);
-
-void mono_profiler_install_iomap (MonoProfileIomapFunc callback);
-
-void mono_profiler_load             (const char *desc);
+MONO_API void mono_profiler_install_jit_compile (MonoProfileMethodFunc start, MonoProfileMethodResult end);
+MONO_API void mono_profiler_install_jit_end (MonoProfileJitResult end);
+MONO_API void mono_profiler_install_method_free (MonoProfileMethodFunc callback);
+MONO_API void mono_profiler_install_method_invoke (MonoProfileMethodFunc start, MonoProfileMethodFunc end);
+MONO_API void mono_profiler_install_enter_leave (MonoProfileMethodFunc enter, MonoProfileMethodFunc fleave);
+MONO_API void mono_profiler_install_thread      (MonoProfileThreadFunc start, MonoProfileThreadFunc end);
+MONO_API void mono_profiler_install_thread_name (MonoProfileThreadNameFunc thread_name_cb);
+MONO_API void mono_profiler_install_transition  (MonoProfileMethodResult callback);
+MONO_API void mono_profiler_install_allocation  (MonoProfileAllocFunc callback);
+MONO_API void mono_profiler_install_monitor     (MonoProfileMonitorFunc callback);
+MONO_API void mono_profiler_install_statistical (MonoProfileStatFunc callback);
+MONO_API void mono_profiler_install_statistical_call_chain (MonoProfileStatCallChainFunc callback, int call_chain_depth, MonoProfilerCallChainStrategy call_chain_strategy);
+MONO_API void mono_profiler_install_exception   (MonoProfileExceptionFunc throw_callback, MonoProfileMethodFunc exc_method_leave, MonoProfileExceptionClauseFunc clause_callback);
+MONO_API void mono_profiler_install_coverage_filter (MonoProfileCoverageFilterFunc callback);
+MONO_API void mono_profiler_coverage_get  (MonoProfiler *prof, MonoMethod *method, MonoProfileCoverageFunc func);
+MONO_API void mono_profiler_install_gc    (MonoProfileGCFunc callback, MonoProfileGCResizeFunc heap_resize_callback);
+MONO_API void mono_profiler_install_gc_moves    (MonoProfileGCMoveFunc callback);
+MONO_API void mono_profiler_install_gc_roots    (MonoProfileGCHandleFunc handle_callback, MonoProfileGCRootFunc roots_callback);
+MONO_API void mono_profiler_install_runtime_initialized (MonoProfileFunc runtime_initialized_callback);
+
+MONO_API void mono_profiler_install_code_chunk_new (MonoProfilerCodeChunkNew callback);
+MONO_API void mono_profiler_install_code_chunk_destroy (MonoProfilerCodeChunkDestroy callback);
+MONO_API void mono_profiler_install_code_buffer_new (MonoProfilerCodeBufferNew callback);
+
+MONO_API void mono_profiler_install_iomap (MonoProfileIomapFunc callback);
+
+MONO_API void mono_profiler_load             (const char *desc);
 
 MONO_END_DECLS
 
index 7135cc49f047a20e47dcf71be474260e00f8d3d1..4605e587f782b9b1823761934cfbd978800c6730 100644 (file)
@@ -202,6 +202,19 @@ static void init_type_builder_generics (MonoObject *type);
 
 #define mono_type_array_get_and_resolve(array, index) mono_reflection_type_get_handle ((MonoReflectionType*)mono_array_get (array, gpointer, index))
 
+#define CHECK_ADD4_OVERFLOW_UN(a, b) ((guint32)(0xFFFFFFFFU) - (guint32)(b) < (guint32)(a))
+#define CHECK_ADD8_OVERFLOW_UN(a, b) ((guint64)(0xFFFFFFFFFFFFFFFFUL) - (guint64)(b) < (guint64)(a))
+
+#if SIZEOF_VOID_P == 4
+#define CHECK_ADDP_OVERFLOW_UN(a,b) CHECK_ADD4_OVERFLOW_UN(a, b)
+#else
+#define CHECK_ADDP_OVERFLOW_UN(a,b) CHECK_ADD8_OVERFLOW_UN(a, b)
+#endif
+
+#define ADDP_IS_GREATER_OR_OVF(a, b, c) (((a) + (b) > (c)) || CHECK_ADDP_OVERFLOW_UN (a, b))
+#define ADD_IS_GREATER_OR_OVF(a, b, c) (((a) + (b) > (c)) || CHECK_ADD4_OVERFLOW_UN (a, b))
+
+
 void
 mono_reflection_init (void)
 {
@@ -1753,13 +1766,7 @@ encode_constant (MonoDynamicImage *assembly, MonoObject *val, guint32 *ret_type)
        char *p, *box_val;
        char* buf;
        guint32 idx = 0, len = 0, dummy = 0;
-#ifdef ARM_FPU_FPA
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-       guint32 fpa_double [2];
-       guint32 *fpa_p;
-#endif
-#endif
-       
+
        p = buf = g_malloc (64);
        if (!val) {
                *ret_type = MONO_TYPE_CLASS;
@@ -1792,14 +1799,6 @@ handle_enum:
                break;
        case MONO_TYPE_R8:
                len = 8;
-#ifdef ARM_FPU_FPA
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
-               fpa_p = (guint32*)box_val;
-               fpa_double [0] = fpa_p [1];
-               fpa_double [1] = fpa_p [0];
-               box_val = (char*)fpa_double;
-#endif
-#endif
                break;
        case MONO_TYPE_VALUETYPE: {
                MonoClass *klass = val->vtable->klass;
@@ -4805,7 +4804,7 @@ mono_image_create_method_token (MonoDynamicImage *assembly, MonoObject *obj, Mon
        MonoMethodSignature *sig;
 
        klass = obj->vtable->klass;
-       if (strcmp (klass->name, "MonoMethod") == 0) {
+       if (strcmp (klass->name, "MonoMethod") == 0 || strcmp (klass->name, "MonoCMethod") == 0) {
                MonoMethod *method = ((MonoReflectionMethod *)obj)->method;
                MonoMethodSignature *old;
                guint32 sig_token, parent;
@@ -6783,9 +6782,13 @@ mono_param_get_objects_internal (MonoDomain *domain, MonoMethod *method, MonoCla
        if (!System_Reflection_ParameterInfo_array) {
                MonoClass *klass;
 
-               klass = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "ParameterInfo");
+               klass = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "MonoParameterInfo");
+               if (!klass)
+                       klass = mono_class_from_name (mono_defaults.corlib, "System.Reflection", "ParameterInfo");
+
                mono_memory_barrier ();
                System_Reflection_ParameterInfo = klass; 
+
        
                klass = mono_array_class_get (klass, 1);
                mono_memory_barrier ();
@@ -7766,7 +7769,7 @@ mono_reflection_get_token (MonoObject *obj)
                MonoReflectionMonoEvent *p = (MonoReflectionMonoEvent*)obj;
 
                token = mono_class_get_event_token (p->event);
-       } else if (strcmp (klass->name, "ParameterInfo") == 0) {
+       } else if (strcmp (klass->name, "ParameterInfo") == 0 || strcmp (klass->name, "MonoParameterInfo") == 0) {
                MonoReflectionParameter *p = (MonoReflectionParameter*)obj;
                MonoClass *member_class = mono_object_class (p->MemberImpl);
                g_assert (mono_class_is_reflection_method_or_constructor (member_class));
@@ -7788,6 +7791,23 @@ mono_reflection_get_token (MonoObject *obj)
        return token;
 }
 
+static MonoClass*
+load_cattr_enum_type (MonoImage *image, const char *p, const char **end)
+{
+       char *n;
+       MonoType *t;
+       int slen = mono_metadata_decode_value (p, &p);
+       n = g_memdup (p, slen + 1);
+       n [slen] = 0;
+       t = mono_reflection_type_from_name (n, image);
+       if (!t)
+               g_error ("Cannot load type '%s'", n);
+       g_free (n);
+       p += slen;
+       *end = p;
+       return mono_class_from_mono_type (t);
+}
+
 static void*
 load_cattr_value (MonoImage *image, MonoType *t, const char *p, const char **end)
 {
@@ -7906,6 +7926,8 @@ handle_type:
                        type = MONO_TYPE_SZARRAY;
                        if (etype == 0x50) {
                                tklass = mono_defaults.systemtype_class;
+                       } else if (etype == 0x55) {
+                               tklass = load_cattr_enum_type (image, p, &p);
                        } else {
                                if (etype == 0x51)
                                        /* See Partition II, Appendix B3 */
@@ -8247,7 +8269,7 @@ create_custom_attr (MonoImage *image, MonoMethod *method, const guchar *data, gu
  * NAMED_ARG_INFO will contain information about the named arguments.
  */
 void
-mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *method, const guchar *data, guint32 len, MonoArray **typed_args, MonoArray **named_args, CattrNamedArg **named_arg_info)
+mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *method, const guchar *data, guint32 len, MonoArray **typed_args, MonoArray **named_args, CattrNamedArg **named_arg_info, MonoError *error)
 {
        MonoArray *typedargs, *namedargs;
        MonoClass *attrklass;
@@ -8257,14 +8279,18 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
        guint32 i, j, num_named;
        CattrNamedArg *arginfo = NULL;
 
-       if (!mono_verifier_verify_cattr_content (image, method, data, len, NULL))
-               return;
-
-       mono_class_init (method->klass);
-
        *typed_args = NULL;
        *named_args = NULL;
        *named_arg_info = NULL;
+
+       mono_error_init (error);
+
+       if (!mono_verifier_verify_cattr_content (image, method, data, len, NULL)) {
+               mono_error_set_generic_error (error, "System.Reflection", "CustomAttributeFormatException", "Binary format of the specified custom attribute was invalid.");
+               return;
+       }
+
+       mono_class_init (method->klass);
        
        domain = mono_domain_get ();
 
@@ -8308,6 +8334,9 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                        gint type_len;
                        char *type_name;
                        type_len = mono_metadata_decode_blob_size (named, &named);
+                       if (ADDP_IS_GREATER_OR_OVF ((const guchar*)named, type_len, data + len))
+                               goto fail;
+
                        type_name = g_malloc (type_len + 1);
                        memcpy (type_name, named, type_len);
                        type_name [type_len] = 0;
@@ -8316,6 +8345,8 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
                        g_free (type_name);
                }
                name_len = mono_metadata_decode_blob_size (named, &named);
+               if (ADDP_IS_GREATER_OR_OVF ((const guchar*)named, name_len, data + len))
+                       goto fail;
                name = g_malloc (name_len + 1);
                memcpy (name, named, name_len);
                name [name_len] = 0;
@@ -8356,6 +8387,11 @@ mono_reflection_create_custom_attr_data_args (MonoImage *image, MonoMethod *meth
 
        *typed_args = typedargs;
        *named_args = namedargs;
+       return;
+fail:
+       mono_error_set_generic_error (error, "System.Reflection", "CustomAttributeFormatException", "Binary format of the specified custom attribute was invalid.");
+       g_free (arginfo);
+       *named_arg_info = NULL;
 }
 
 void
@@ -8365,7 +8401,8 @@ mono_reflection_resolve_custom_attribute_data (MonoReflectionMethod *ref_method,
        MonoArray *typedargs, *namedargs;
        MonoImage *image;
        MonoMethod *method;
-       CattrNamedArg *arginfo;
+       CattrNamedArg *arginfo = NULL;
+       MonoError error;
        int i;
 
        *ctor_args = NULL;
@@ -8381,12 +8418,16 @@ mono_reflection_resolve_custom_attribute_data (MonoReflectionMethod *ref_method,
        if (!mono_class_init (method->klass))
                mono_raise_exception (mono_class_get_exception_for_failure (method->klass));
 
-       mono_reflection_create_custom_attr_data_args (image, method, data, len, &typedargs, &namedargs, &arginfo);
+       mono_reflection_create_custom_attr_data_args (image, method, data, len, &typedargs, &namedargs, &arginfo, &error);
+       if (!mono_error_ok (&error))
+               mono_error_raise_exception (&error);
        if (mono_loader_get_last_error ())
                mono_raise_exception (mono_loader_error_prepare_exception (mono_loader_get_last_error ()));
 
-       if (!typedargs || !namedargs)
+       if (!typedargs || !namedargs) {
+               g_free (arginfo);
                return;
+       }
 
        for (i = 0; i < mono_method_signature (method)->param_count; ++i) {
                MonoObject *obj = mono_array_get (typedargs, MonoObject*, i);
@@ -8413,6 +8454,7 @@ mono_reflection_resolve_custom_attribute_data (MonoReflectionMethod *ref_method,
 
        *ctor_args = typedargs;
        *named_args = namedargs;
+       g_free (arginfo);
 }
 
 static MonoObject*
@@ -8685,6 +8727,15 @@ mono_custom_attrs_from_field (MonoClass *klass, MonoClassField *field)
        return mono_custom_attrs_from_index (klass->image, idx);
 }
 
+/**
+ * mono_custom_attrs_from_param:
+ * @method: handle to the method that we want to retrieve custom parameter information from
+ * @param: parameter number, where zero represent the return value, and one is the first parameter in the method
+ *
+ * The result must be released with mono_custom_attrs_free().
+ *
+ * Returns: the custom attribute object for the specified parameter, or NULL if there are none.
+ */
 MonoCustomAttrInfo*
 mono_custom_attrs_from_param (MonoMethod *method, guint32 param)
 {
@@ -8831,7 +8882,7 @@ mono_reflection_get_custom_attrs_info (MonoObject *obj)
        } else if ((strcmp ("MonoGenericMethod", klass->name) == 0) || (strcmp ("MonoGenericCMethod", klass->name) == 0)) {
                MonoReflectionMethod *rmethod = (MonoReflectionMethod*)obj;
                cinfo = mono_custom_attrs_from_method (rmethod->method);
-       } else if (strcmp ("ParameterInfo", klass->name) == 0) {
+       } else if (strcmp ("ParameterInfo", klass->name) == 0 || strcmp ("MonoParameterInfo", klass->name) == 0) {
                MonoReflectionParameter *param = (MonoReflectionParameter*)obj;
                MonoClass *member_class = mono_object_class (param->MemberImpl);
                if (mono_class_is_reflection_method_or_constructor (member_class)) {
@@ -9398,18 +9449,7 @@ handle_enum:
                p += 4;
                break;
        case MONO_TYPE_R8:
-#if defined(ARM_FPU_FPA) && G_BYTE_ORDER == G_LITTLE_ENDIAN
-               p [0] = argval [4];
-               p [1] = argval [5];
-               p [2] = argval [6];
-               p [3] = argval [7];
-               p [4] = argval [0];
-               p [5] = argval [1];
-               p [6] = argval [2];
-               p [7] = argval [3];
-#else
                swap_with_size (p, argval, 8, 1);
-#endif
                p += 8;
                break;
        case MONO_TYPE_U8:
index 494a9a76216685d6999e76d46603f5effd33f8e4..0301342806f0fe51760da4024369520fc3f18f22 100644 (file)
@@ -41,44 +41,44 @@ typedef enum {
        ResolveTokenError_Other
 } MonoResolveTokenError;
 
-int           mono_reflection_parse_type (char *name, MonoTypeNameParse *info);
-MonoType*     mono_reflection_get_type   (MonoImage* image, MonoTypeNameParse *info, mono_bool ignorecase, mono_bool *type_resolve);
-void          mono_reflection_free_type_info (MonoTypeNameParse *info);
-MonoType*     mono_reflection_type_from_name (char *name, MonoImage *image);
-uint32_t      mono_reflection_get_token (MonoObject *obj);
-
-MonoReflectionAssembly* mono_assembly_get_object (MonoDomain *domain, MonoAssembly *assembly);
-MonoReflectionModule*   mono_module_get_object   (MonoDomain *domain, MonoImage *image);
-MonoReflectionModule*   mono_module_file_get_object (MonoDomain *domain, MonoImage *image, int table_index);
-MonoReflectionType*     mono_type_get_object     (MonoDomain *domain, MonoType *type);
-MonoReflectionMethod*   mono_method_get_object   (MonoDomain *domain, MonoMethod *method, MonoClass *refclass);
-MonoReflectionField*    mono_field_get_object    (MonoDomain *domain, MonoClass *klass, MonoClassField *field);
-MonoReflectionProperty* mono_property_get_object (MonoDomain *domain, MonoClass *klass, MonoProperty *property);
-MonoReflectionEvent*    mono_event_get_object    (MonoDomain *domain, MonoClass *klass, MonoEvent *event);
+MONO_API int           mono_reflection_parse_type (char *name, MonoTypeNameParse *info);
+MONO_API MonoType*     mono_reflection_get_type   (MonoImage* image, MonoTypeNameParse *info, mono_bool ignorecase, mono_bool *type_resolve);
+MONO_API void          mono_reflection_free_type_info (MonoTypeNameParse *info);
+MONO_API MonoType*     mono_reflection_type_from_name (char *name, MonoImage *image);
+MONO_API uint32_t      mono_reflection_get_token (MonoObject *obj);
+
+MONO_API MonoReflectionAssembly* mono_assembly_get_object (MonoDomain *domain, MonoAssembly *assembly);
+MONO_API MonoReflectionModule*   mono_module_get_object   (MonoDomain *domain, MonoImage *image);
+MONO_API MonoReflectionModule*   mono_module_file_get_object (MonoDomain *domain, MonoImage *image, int table_index);
+MONO_API MonoReflectionType*     mono_type_get_object     (MonoDomain *domain, MonoType *type);
+MONO_API MonoReflectionMethod*   mono_method_get_object   (MonoDomain *domain, MonoMethod *method, MonoClass *refclass);
+MONO_API MonoReflectionField*    mono_field_get_object    (MonoDomain *domain, MonoClass *klass, MonoClassField *field);
+MONO_API MonoReflectionProperty* mono_property_get_object (MonoDomain *domain, MonoClass *klass, MonoProperty *property);
+MONO_API MonoReflectionEvent*    mono_event_get_object    (MonoDomain *domain, MonoClass *klass, MonoEvent *event);
 /* note: this one is slightly different: we keep the whole array of params in the cache */
-MonoArray* mono_param_get_objects  (MonoDomain *domain, MonoMethod *method);
-MonoReflectionMethodBody* mono_method_body_get_object (MonoDomain *domain, MonoMethod *method);
-
-MonoObject *mono_get_dbnull_object (MonoDomain *domain);
-
-MonoArray*  mono_reflection_get_custom_attrs_by_type (MonoObject *obj, MonoClass *attr_klass, MonoError *error);
-MonoArray*  mono_reflection_get_custom_attrs (MonoObject *obj);
-MonoArray*  mono_reflection_get_custom_attrs_data (MonoObject *obj);
-MonoArray*  mono_reflection_get_custom_attrs_blob (MonoReflectionAssembly *assembly, MonoObject *ctor, MonoArray *ctorArgs, MonoArray *properties, MonoArray *porpValues, MonoArray *fields, MonoArray* fieldValues);
-
-MonoCustomAttrInfo* mono_reflection_get_custom_attrs_info (MonoObject *obj);
-MonoArray*  mono_custom_attrs_construct (MonoCustomAttrInfo *cinfo);
-MonoCustomAttrInfo* mono_custom_attrs_from_index    (MonoImage *image, uint32_t idx);
-MonoCustomAttrInfo* mono_custom_attrs_from_method   (MonoMethod *method);
-MonoCustomAttrInfo* mono_custom_attrs_from_class    (MonoClass *klass);
-MonoCustomAttrInfo* mono_custom_attrs_from_assembly (MonoAssembly *assembly);
-MonoCustomAttrInfo* mono_custom_attrs_from_property (MonoClass *klass, MonoProperty *property);
-MonoCustomAttrInfo* mono_custom_attrs_from_event    (MonoClass *klass, MonoEvent *event);
-MonoCustomAttrInfo* mono_custom_attrs_from_field    (MonoClass *klass, MonoClassField *field);
-MonoCustomAttrInfo* mono_custom_attrs_from_param    (MonoMethod *method, uint32_t param);
-mono_bool           mono_custom_attrs_has_attr      (MonoCustomAttrInfo *ainfo, MonoClass *attr_klass);
-MonoObject*         mono_custom_attrs_get_attr      (MonoCustomAttrInfo *ainfo, MonoClass *attr_klass);
-void                mono_custom_attrs_free          (MonoCustomAttrInfo *ainfo);
+MONO_API MonoArray* mono_param_get_objects  (MonoDomain *domain, MonoMethod *method);
+MONO_API MonoReflectionMethodBody* mono_method_body_get_object (MonoDomain *domain, MonoMethod *method);
+
+MONO_API MonoObject *mono_get_dbnull_object (MonoDomain *domain);
+
+MONO_API MonoArray*  mono_reflection_get_custom_attrs_by_type (MonoObject *obj, MonoClass *attr_klass, MonoError *error);
+MONO_API MonoArray*  mono_reflection_get_custom_attrs (MonoObject *obj);
+MONO_API MonoArray*  mono_reflection_get_custom_attrs_data (MonoObject *obj);
+MONO_API MonoArray*  mono_reflection_get_custom_attrs_blob (MonoReflectionAssembly *assembly, MonoObject *ctor, MonoArray *ctorArgs, MonoArray *properties, MonoArray *porpValues, MonoArray *fields, MonoArray* fieldValues);
+
+MONO_API MonoCustomAttrInfo* mono_reflection_get_custom_attrs_info (MonoObject *obj);
+MONO_API MonoArray*  mono_custom_attrs_construct (MonoCustomAttrInfo *cinfo);
+MONO_API MonoCustomAttrInfo* mono_custom_attrs_from_index    (MonoImage *image, uint32_t idx);
+MONO_API MonoCustomAttrInfo* mono_custom_attrs_from_method   (MonoMethod *method);
+MONO_API MonoCustomAttrInfo* mono_custom_attrs_from_class    (MonoClass *klass);
+MONO_API MonoCustomAttrInfo* mono_custom_attrs_from_assembly (MonoAssembly *assembly);
+MONO_API MonoCustomAttrInfo* mono_custom_attrs_from_property (MonoClass *klass, MonoProperty *property);
+MONO_API MonoCustomAttrInfo* mono_custom_attrs_from_event    (MonoClass *klass, MonoEvent *event);
+MONO_API MonoCustomAttrInfo* mono_custom_attrs_from_field    (MonoClass *klass, MonoClassField *field);
+MONO_API MonoCustomAttrInfo* mono_custom_attrs_from_param    (MonoMethod *method, uint32_t param);
+MONO_API mono_bool           mono_custom_attrs_has_attr      (MonoCustomAttrInfo *ainfo, MonoClass *attr_klass);
+MONO_API MonoObject*         mono_custom_attrs_get_attr      (MonoCustomAttrInfo *ainfo, MonoClass *attr_klass);
+MONO_API void                mono_custom_attrs_free          (MonoCustomAttrInfo *ainfo);
 
 
 #define MONO_DECLSEC_ACTION_MIN                0x1
@@ -105,9 +105,9 @@ enum {
        MONO_DECLSEC_FLAG_DEMAND_CHOICE                 = 0x00020000
 };
 
-uint32_t mono_declsec_flags_from_method (MonoMethod *method);
-uint32_t mono_declsec_flags_from_class (MonoClass *klass);
-uint32_t mono_declsec_flags_from_assembly (MonoAssembly *assembly);
+MONO_API uint32_t mono_declsec_flags_from_method (MonoMethod *method);
+MONO_API uint32_t mono_declsec_flags_from_class (MonoClass *klass);
+MONO_API uint32_t mono_declsec_flags_from_assembly (MonoAssembly *assembly);
 
 /* this structure MUST be kept in synch with RuntimeDeclSecurityEntry
  * located in /mcs/class/corlib/System.Security/SecurityFrame.cs */
@@ -123,16 +123,16 @@ typedef struct {
        MonoDeclSecurityEntry demandchoice;
 } MonoDeclSecurityActions;
 
-MonoBoolean mono_declsec_get_demands (MonoMethod *callee, MonoDeclSecurityActions* demands);
-MonoBoolean mono_declsec_get_linkdemands (MonoMethod *callee, MonoDeclSecurityActions* klass, MonoDeclSecurityActions* cmethod);
-MonoBoolean mono_declsec_get_inheritdemands_class (MonoClass *klass, MonoDeclSecurityActions* demands);
-MonoBoolean mono_declsec_get_inheritdemands_method (MonoMethod *callee, MonoDeclSecurityActions* demands);
+MONO_API MonoBoolean mono_declsec_get_demands (MonoMethod *callee, MonoDeclSecurityActions* demands);
+MONO_API MonoBoolean mono_declsec_get_linkdemands (MonoMethod *callee, MonoDeclSecurityActions* klass, MonoDeclSecurityActions* cmethod);
+MONO_API MonoBoolean mono_declsec_get_inheritdemands_class (MonoClass *klass, MonoDeclSecurityActions* demands);
+MONO_API MonoBoolean mono_declsec_get_inheritdemands_method (MonoMethod *callee, MonoDeclSecurityActions* demands);
 
-MonoBoolean mono_declsec_get_method_action (MonoMethod *method, uint32_t action, MonoDeclSecurityEntry *entry);
-MonoBoolean mono_declsec_get_class_action (MonoClass *klass, uint32_t action, MonoDeclSecurityEntry *entry);
-MonoBoolean mono_declsec_get_assembly_action (MonoAssembly *assembly, uint32_t action, MonoDeclSecurityEntry *entry);
+MONO_API MonoBoolean mono_declsec_get_method_action (MonoMethod *method, uint32_t action, MonoDeclSecurityEntry *entry);
+MONO_API MonoBoolean mono_declsec_get_class_action (MonoClass *klass, uint32_t action, MonoDeclSecurityEntry *entry);
+MONO_API MonoBoolean mono_declsec_get_assembly_action (MonoAssembly *assembly, uint32_t action, MonoDeclSecurityEntry *entry);
 
-MonoType* mono_reflection_type_get_type (MonoReflectionType *reftype);
+MONO_API MonoType* mono_reflection_type_get_type (MonoReflectionType *reftype);
 
 MONO_END_DECLS
 
index ed32066b8dc1e1f2e6493efa075786db69799c5d..7b14f436536eb13fb0b509a6c2645ccd816bcda8 100644 (file)
 #include <mono/metadata/runtime.h>
 #include <mono/metadata/monitor.h>
 #include <mono/metadata/threads-types.h>
+#include <mono/metadata/threadpool.h>
+#include <mono/metadata/marshal.h>
+#include <mono/utils/atomic.h>
+
+static gboolean shutting_down_inited = FALSE;
+static gboolean shutting_down = FALSE;
+
+/** 
+ * mono_runtime_set_shutting_down:
+ *
+ * Invoked by System.Environment.Exit to flag that the runtime
+ * is shutting down.
+ *
+ * Deprecated. This function can break the shutdown sequence.
+ */
+void
+mono_runtime_set_shutting_down (void)
+{
+       shutting_down = TRUE;
+}
+
+/**
+ * mono_runtime_is_shutting_down:
+ *
+ * Returns whether the runtime has been flagged for shutdown.
+ *
+ * This is consumed by the P:System.Environment.HasShutdownStarted
+ * property.
+ *
+ */
+gboolean
+mono_runtime_is_shutting_down (void)
+{
+       return shutting_down;
+}
 
 static void
 fire_process_exit_event (MonoDomain *domain, gpointer user_data)
@@ -45,22 +80,39 @@ mono_runtime_fire_process_exit_event (void)
 #endif
 }
 
-/*
-Initialize runtime shutdown.
-After this call completes the thread pool will stop accepting new jobs and
 
-*/
-void
-mono_runtime_shutdown (void)
+/*
+ * Try to initialize runtime shutdown.
+ * After this call completes the thread pool will stop accepting new jobs and no further threads will be created.
+ *
+ * @return true if shutdown was initiated by this call or false is other thread beat this one
+ */
+gboolean
+mono_runtime_try_shutdown (void)
 {
+       if (InterlockedCompareExchange (&shutting_down_inited, TRUE, FALSE))
+               return FALSE;
+
        mono_runtime_fire_process_exit_event ();
 
+       shutting_down = TRUE;
+
        mono_threads_set_shutting_down ();
 
        /* No new threads will be created after this point */
 
        mono_runtime_set_shutting_down ();
 
+       /* This will kill the tp threads which cannot be suspended */
+       mono_thread_pool_cleanup ();
+
+       /*TODO move the follow to here:
+       mono_thread_suspend_all_other_threads (); OR  mono_thread_wait_all_other_threads
+
+       mono_runtime_quit ();
+       */
+
+       return TRUE;
 }
 
 
@@ -71,3 +123,17 @@ mono_runtime_is_critical_method (MonoMethod *method)
                return TRUE;
        return FALSE;
 }
+
+/*
+Coordinate the creation of all remaining TLS slots in the runtime.
+No further TLS slots should be created after this function finishes.
+This restriction exists because AOT requires offsets to be constant
+across runs.
+*/
+void
+mono_runtime_init_tls (void)
+{
+       mono_marshal_init_tls ();
+       mono_thread_pool_init_tls ();
+       mono_thread_init_tls ();
+}
index 086b51a12cb85b99ad6118e34ebac3ff933d872c..83f17b7d33ec5ea767724f8f72af6d5ea1298960 100644 (file)
@@ -15,8 +15,9 @@
 MONO_BEGIN_DECLS
 
 gboolean mono_runtime_is_critical_method (MonoMethod *method) MONO_INTERNAL;
-void mono_runtime_shutdown (void) MONO_INTERNAL;
+gboolean mono_runtime_try_shutdown (void) MONO_INTERNAL;
 
+void mono_runtime_init_tls (void) MONO_INTERNAL;
 MONO_END_DECLS
 
 #endif /* _MONO_METADATA_RUNTIME_H_ */
index 96407dadf282cc6630f7e99f7045be140568d9be..126a48da2c75810b374ade2ef2064f9030df4ee4 100644 (file)
@@ -56,9 +56,9 @@ extern MonoSecurityCoreCLRLevel mono_security_core_clr_method_level (MonoMethod
 extern gboolean mono_security_core_clr_is_platform_image (MonoImage *image) MONO_INTERNAL;
 extern gboolean mono_security_core_clr_determine_platform_image (MonoImage *image) MONO_INTERNAL;
 
-extern gboolean mono_security_core_clr_require_elevated_permissions (void);
+extern MONO_API gboolean mono_security_core_clr_require_elevated_permissions (void);
 
-extern void mono_security_core_clr_set_options (MonoSecurityCoreCLROptions options);
-extern MonoSecurityCoreCLROptions mono_security_core_clr_get_options (void);
+extern MONO_API void mono_security_core_clr_set_options (MonoSecurityCoreCLROptions options);
+extern MONO_API MonoSecurityCoreCLROptions mono_security_core_clr_get_options (void);
 
 #endif /* _MONO_METADATA_SECURITY_CORE_CLR_H_ */
index 55a472ffa44e561703d9a3ac271fdaccce8355c7..c208638850d9b3b330cc5c9f9db35c6765b5e5e4 100644 (file)
@@ -347,6 +347,7 @@ mono_gc_try_alloc_obj_nolock (MonoVTable *vtable, size_t size)
        TLAB_ACCESS_INIT;
 
        size = ALIGN_UP (size);
+       SGEN_ASSERT (9, size >= sizeof (MonoObject), "Object too small");
 
        g_assert (vtable->gc_descr);
        if (size > SGEN_MAX_SMALL_OBJ_SIZE)
@@ -434,6 +435,24 @@ mono_gc_alloc_obj (MonoVTable *vtable, size_t size)
        void *res;
 #ifndef DISABLE_CRITICAL_REGION
        TLAB_ACCESS_INIT;
+
+       if (G_UNLIKELY (has_per_allocation_action)) {
+               static int alloc_count;
+               int current_alloc = InterlockedIncrement (&alloc_count);
+
+               if (verify_before_allocs) {
+                       if ((current_alloc % verify_before_allocs) == 0)
+                               sgen_check_whole_heap_stw ();
+               }
+               if (collect_before_allocs) {
+                       if (((current_alloc % collect_before_allocs) == 0) && nursery_section) {
+                               LOCK_GC;
+                               sgen_perform_collection (0, GENERATION_NURSERY, "collect-before-alloc-triggered", TRUE);
+                               UNLOCK_GC;
+                       }
+               }
+       }
+
        ENTER_CRITICAL_REGION;
        res = mono_gc_try_alloc_obj_nolock (vtable, size);
        if (res) {
@@ -685,6 +704,9 @@ create_allocator (int atype)
        MONO_THREAD_VAR_OFFSET (tlab_next_addr, tlab_next_addr_offset);
        MONO_THREAD_VAR_OFFSET (tlab_temp_end, tlab_temp_end_offset);
 
+       mono_tls_key_set_offset (TLS_KEY_SGEN_TLAB_NEXT_ADDR, tlab_next_addr_offset);
+       mono_tls_key_set_offset (TLS_KEY_SGEN_TLAB_TEMP_END, tlab_temp_end_offset);
+
        g_assert (tlab_next_addr_offset != -1);
        g_assert (tlab_temp_end_offset != -1);
 #endif
@@ -692,6 +714,7 @@ create_allocator (int atype)
        if (!registered) {
                mono_register_jit_icall (mono_gc_alloc_obj, "mono_gc_alloc_obj", mono_create_icall_signature ("object ptr int"), FALSE);
                mono_register_jit_icall (mono_gc_alloc_vector, "mono_gc_alloc_vector", mono_create_icall_signature ("object ptr int int"), FALSE);
+               mono_register_jit_icall (mono_gc_alloc_string, "mono_gc_alloc_string", mono_create_icall_signature ("object ptr int int32"), FALSE);
                registered = TRUE;
        }
 
@@ -704,14 +727,23 @@ create_allocator (int atype)
        } else if (atype == ATYPE_VECTOR) {
                num_params = 2;
                name = "AllocVector";
+       } else if (atype == ATYPE_STRING) {
+               num_params = 2;
+               name = "AllocString";
        } else {
                g_assert_not_reached ();
        }
 
        csig = mono_metadata_signature_alloc (mono_defaults.corlib, num_params);
-       csig->ret = &mono_defaults.object_class->byval_arg;
-       for (i = 0; i < num_params; ++i)
-               csig->params [i] = &mono_defaults.int_class->byval_arg;
+       if (atype == ATYPE_STRING) {
+               csig->ret = &mono_defaults.string_class->byval_arg;
+               csig->params [0] = &mono_defaults.int_class->byval_arg;
+               csig->params [1] = &mono_defaults.int32_class->byval_arg;
+       } else {
+               csig->ret = &mono_defaults.object_class->byval_arg;
+               for (i = 0; i < num_params; ++i)
+                       csig->params [i] = &mono_defaults.int_class->byval_arg;
+       }
 
        mb = mono_mb_new (mono_defaults.object_class, name, MONO_WRAPPER_ALLOC);
 
@@ -785,6 +817,16 @@ create_allocator (int atype)
                mono_mb_set_clauses (mb, 1, clause);
                mono_mb_patch_branch (mb, pos_leave);
                /* end catch */
+       } else if (atype == ATYPE_STRING) {
+               /* a string allocator method takes the args: (vtable, len) */
+               /* bytes = (sizeof (MonoString) + ((len + 1) * 2)); */
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_icon (mb, 1);
+               mono_mb_emit_byte (mb, MONO_CEE_SHL);
+               //WE manually fold the above + 2 here
+               mono_mb_emit_icon (mb, sizeof (MonoString) + 2);
+               mono_mb_emit_byte (mb, CEE_ADD);
+               mono_mb_emit_stloc (mb, size_var);
        } else {
                g_assert_not_reached ();
        }
@@ -812,7 +854,7 @@ create_allocator (int atype)
 
        /* tlab_next_addr (local) = tlab_next_addr (TLS var) */
        tlab_next_addr_var = mono_mb_add_local (mb, &mono_defaults.int_class->byval_arg);
-       EMIT_TLS_ACCESS (mb, tlab_next_addr, tlab_next_addr_offset);
+       EMIT_TLS_ACCESS (mb, tlab_next_addr, TLS_KEY_SGEN_TLAB_NEXT_ADDR);
        mono_mb_emit_stloc (mb, tlab_next_addr_var);
 
        /* p = (void**)tlab_next; */
@@ -831,7 +873,7 @@ create_allocator (int atype)
 
        /* if (G_LIKELY (new_next < tlab_temp_end)) */
        mono_mb_emit_ldloc (mb, new_next_var);
-       EMIT_TLS_ACCESS (mb, tlab_temp_end, tlab_temp_end_offset);
+       EMIT_TLS_ACCESS (mb, tlab_temp_end, TLS_KEY_SGEN_TLAB_TEMP_END);
        slowpath_branch = mono_mb_emit_short_branch (mb, MONO_CEE_BLT_UN_S);
 
        /* Slowpath */
@@ -849,6 +891,9 @@ create_allocator (int atype)
        } else if (atype == ATYPE_VECTOR) {
                mono_mb_emit_ldarg (mb, 1);
                mono_mb_emit_icall (mb, mono_gc_alloc_vector);
+       } else if (atype == ATYPE_STRING) {
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_icall (mb, mono_gc_alloc_string);
        } else {
                g_assert_not_reached ();
        }
@@ -883,6 +928,22 @@ create_allocator (int atype)
 #else
                mono_mb_emit_byte (mb, CEE_STIND_I4);
 #endif
+       } else  if (atype == ATYPE_STRING) {
+               /* need to set length and clear the last char */
+               /* s->length = len; */
+               mono_mb_emit_ldloc (mb, p_var);
+               mono_mb_emit_icon (mb, G_STRUCT_OFFSET (MonoString, length));
+               mono_mb_emit_byte (mb, MONO_CEE_ADD);
+               mono_mb_emit_ldarg (mb, 1);
+               mono_mb_emit_byte (mb, MONO_CEE_STIND_I4);
+               /* s->chars [len] = 0; */
+               mono_mb_emit_ldloc (mb, p_var);
+               mono_mb_emit_ldloc (mb, size_var);
+               mono_mb_emit_icon (mb, 2);
+               mono_mb_emit_byte (mb, MONO_CEE_SUB);
+               mono_mb_emit_byte (mb, MONO_CEE_ADD);
+               mono_mb_emit_icon (mb, 0);
+               mono_mb_emit_byte (mb, MONO_CEE_STIND_I2);
        }
 
        /*
@@ -915,10 +976,9 @@ create_allocator (int atype)
  *     object allocate (MonoVTable *vtable)
  */
 MonoMethod*
-mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
+mono_gc_get_managed_allocator (MonoClass *klass, gboolean for_box)
 {
 #ifdef MANAGED_ALLOCATION
-       MonoClass *klass = vtable->klass;
 
 #ifdef HAVE_KW_THREAD
        int tlab_next_offset = -1;
@@ -929,21 +989,21 @@ mono_gc_get_managed_allocator (MonoVTable *vtable, gboolean for_box)
        if (tlab_next_offset == -1 || tlab_temp_end_offset == -1)
                return NULL;
 #endif
-
+       if (collect_before_allocs)
+               return NULL;
        if (!mono_runtime_has_tls_get ())
                return NULL;
        if (klass->instance_size > tlab_size)
                return NULL;
+
        if (klass->has_finalize || mono_class_is_marshalbyref (klass) || (mono_profiler_get_events () & MONO_PROFILE_ALLOCATIONS))
                return NULL;
        if (klass->rank)
                return NULL;
        if (klass->byval_arg.type == MONO_TYPE_STRING)
-               return NULL;
-       if (collect_before_allocs)
-               return NULL;
-
-       if (ALIGN_TO (klass->instance_size, ALLOC_ALIGN) < MAX_SMALL_OBJ_SIZE)
+               return mono_gc_get_managed_allocator_by_type (ATYPE_STRING);
+       /* Generic classes have dynamic field and can go above MAX_SMALL_OBJ_SIZE. */
+       if (ALIGN_TO (klass->instance_size, ALLOC_ALIGN) < MAX_SMALL_OBJ_SIZE && !mono_class_is_open_constructed_type (&klass->byval_arg))
                return mono_gc_get_managed_allocator_by_type (ATYPE_SMALL);
        else
                return mono_gc_get_managed_allocator_by_type (ATYPE_NORMAL);
old mode 100644 (file)
new mode 100755 (executable)
index 8a2fa73..e400d7c
 #ifdef MONO_ARCH_HAS_MONO_CONTEXT
 #define USE_MONO_CTX
 #else
-#ifdef _MSC_VER
-#define ARCH_STORE_REGS(ptr) __asm {   \
-               __asm mov [ptr], edi \
-               __asm mov [ptr+4], esi \
-               __asm mov [ptr+8], ebx \
-               __asm mov [ptr+12], edx \
-               __asm mov [ptr+16], ecx \
-               __asm mov [ptr+20], eax \
-               __asm mov [ptr+24], ebp \
-               __asm mov [ptr+28], esp \
-       }
-#else
-#define ARCH_STORE_REGS(ptr)   \
-       __asm__ __volatile__(   \
-               "mov %%edi,0(%0)\n"     \
-               "mov %%esi,4(%0)\n"     \
-               "mov %%ebx,8(%0)\n"     \
-               "mov %%edx,12(%0)\n"    \
-               "mov %%ecx,16(%0)\n"    \
-               "mov %%eax,20(%0)\n"    \
-               "mov %%ebp,24(%0)\n"    \
-               "mov %%esp,28(%0)\n"    \
-               :                       \
-               : "r" (ptr)     \
-       )
-#endif
+#error 0
 #endif
 
 /*FIXME, move this to mono-sigcontext as this is generaly useful.*/
        )
 #endif
 
+#ifndef REG_SP
+#define REG_SP REG_O6
+#endif
+
 #define ARCH_SIGCTX_SP(ctx)    (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_SP])
 #define ARCH_SIGCTX_IP(ctx)    (((ucontext_t *)(ctx))->uc_mcontext.gregs [REG_PC])
 #define ARCH_COPY_SIGCTX_REGS(a,ctx) do {      \
index 40448b28696b9b1f117cae7a8ae86aa38491c07a..391fcee27b1cb4b07ae7040010015e6ee7d5c5ed 100644 (file)
@@ -558,7 +558,6 @@ sgen_bridge_processing_stw_step (void)
         * bridge_processing_in_progress must be set with the world
         * stopped.  If not there would be race conditions.
         */
-       g_assert (!bridge_processing_in_progress);
        bridge_processing_in_progress = TRUE;
 
        SGEN_TV_GETTIME (btv);
@@ -841,7 +840,7 @@ bridge_test_cross_reference (int num_sccs, MonoGCBridgeSCC **sccs, int num_xrefs
                for (j = 0; j < sccs [i]->num_objs; ++j) {
        //              g_print ("  %s\n", sgen_safe_name (sccs [i]->objs [j]));
                        if (i & 1) /*retain half of the bridged objects */
-                               sccs [i]->objs [0] = NULL;
+                               sccs [i]->is_alive = TRUE;
                }
        }
        for (i = 0; i < num_xrefs; ++i) {
@@ -851,6 +850,84 @@ bridge_test_cross_reference (int num_sccs, MonoGCBridgeSCC **sccs, int num_xrefs
        }
 }
 
+static MonoClassField *mono_bridge_test_field;
+
+enum {
+       BRIDGE_DEAD,
+       BRIDGE_ROOT,
+       BRIDGE_SAME_SCC,
+       BRIDGE_XREF,
+};
+
+static gboolean
+test_scc (MonoGCBridgeSCC *scc, int i)
+{
+       int status = BRIDGE_DEAD;
+       mono_field_get_value (scc->objs [i], mono_bridge_test_field, &status);
+       return status > 0;
+}
+
+static void
+mark_scc (MonoGCBridgeSCC *scc, int value)
+{
+       int i;
+       for (i = 0; i < scc->num_objs; ++i) {
+               if (!test_scc (scc, i)) {
+                       int status = value;
+                       mono_field_set_value (scc->objs [i], mono_bridge_test_field, &status);
+               }
+       }
+}
+
+static void
+bridge_test_cross_reference2 (int num_sccs, MonoGCBridgeSCC **sccs, int num_xrefs, MonoGCBridgeXRef *xrefs)
+{
+       int i;
+       gboolean modified;
+
+       if (!mono_bridge_test_field) {
+               mono_bridge_test_field = mono_class_get_field_from_name (mono_object_get_class (sccs[0]->objs [0]), "__test");
+               g_assert (mono_bridge_test_field);
+       }
+
+       /*We mark all objects in a scc with live objects as reachable by scc*/
+       for (i = 0; i < num_sccs; ++i) {
+               int j;
+               gboolean live = FALSE;
+               for (j = 0; j < sccs [i]->num_objs; ++j) {
+                       if (test_scc (sccs [i], j)) {
+                               live = TRUE;
+                               break;
+                       }
+               }
+               if (!live)
+                       continue;
+               for (j = 0; j < sccs [i]->num_objs; ++j) {
+                       if (!test_scc (sccs [i], j)) {
+                               int status = BRIDGE_SAME_SCC;
+                               mono_field_set_value (sccs [i]->objs [j], mono_bridge_test_field, &status);
+                       }
+               }
+       }
+
+       /*Now we mark the transitive closure of reachable objects from the xrefs*/
+       modified = TRUE;
+       while (modified) {
+               modified = FALSE;
+               /* Mark all objects that are brought to life due to xrefs*/
+               for (i = 0; i < num_xrefs; ++i) {
+                       MonoGCBridgeXRef ref = xrefs [i];
+                       if (test_scc (sccs [ref.src_scc_index], 0) && !test_scc (sccs [ref.dst_scc_index], 0)) {
+                               modified = TRUE;
+                               mark_scc (sccs [ref.dst_scc_index], BRIDGE_XREF);
+                       }
+               }
+       }
+
+       /* keep everything in memory, all we want to do is test persistence */
+       for (i = 0; i < num_sccs; ++i)
+               sccs [i]->is_alive = TRUE;
+}
 
 void
 sgen_register_test_bridge_callbacks (const char *bridge_class_name)
@@ -859,9 +936,9 @@ sgen_register_test_bridge_callbacks (const char *bridge_class_name)
        callbacks.bridge_version = SGEN_BRIDGE_VERSION;
        callbacks.is_bridge_class = bridge_test_is_bridge_class;
        callbacks.is_bridge_object = bridge_test_is_bridge_object;
-       callbacks.cross_references = bridge_test_cross_reference;
+       callbacks.cross_references = bridge_class_name[0] == '2' ? bridge_test_cross_reference2 : bridge_test_cross_reference;
        mono_gc_register_bridge_callbacks (&callbacks);
-       bridge_class = bridge_class_name;
+       bridge_class = bridge_class_name + (bridge_class_name[0] == '2' ? 1 : 0);
 }
 
 #endif
index 4ce7384f1cd3cdd5b3916a7d25afc447929f2922..24dc86fdadd66cb8aaaf7de7c0a72fc334830083 100644 (file)
@@ -629,7 +629,7 @@ LOOP_HEAD:
                        else
                                index = ARRAY_OBJ_INDEX (start, obj, elem_size);
 
-                       elem = first_elem = (char*)mono_array_addr_with_size ((MonoArray*)obj, elem_size, index);
+                       elem = first_elem = (char*)mono_array_addr_with_size_fast ((MonoArray*)obj, elem_size, index);
                        if (klass->element_class->valuetype) {
                                ScanVTypeFunc scan_vtype_func = sgen_get_current_object_ops ()->scan_vtype;
 
index 45c6f2093a8283b09b439abc391e9b57379eb67d..046871ae4d7f925382aa0677b69bb47746228648 100644 (file)
@@ -133,7 +133,7 @@ describe_pointer (char *ptr, gboolean need_setup)
        printf ("Descriptor type: %d (%s)\n", type, descriptor_types [type]);
 
        size = sgen_safe_object_get_size ((MonoObject*)ptr);
-       printf ("Size: %td\n", size);
+       printf ("Size: %d\n", (int)size);
 }
 
 void
index cd53a862c3d42e7db2249e3fb96ba2c0702e8f90..573f3c6486e02cd3c3d3c180577156dc104d11a7 100644 (file)
@@ -153,6 +153,12 @@ sgen_gc_descr_has_references (mword desc)
 #define PREFETCH(addr)
 #endif
 
+#if defined(__GNUC__) && SIZEOF_VOID_P==4
+#define GNUC_BUILTIN_CTZ(bmap) __builtin_ctz(bmap)
+#elif defined(__GNUC__) && SIZEOF_VOID_P==8
+#define GNUC_BUILTIN_CTZ(bmap) __builtin_ctzl(bmap)
+#endif
+
 /* code using these macros must define a HANDLE_PTR(ptr) macro that does the work */
 #define OBJ_RUN_LEN_FOREACH_PTR(desc,obj)      do {    \
                if ((desc) & 0xffff0000) {      \
@@ -170,21 +176,21 @@ sgen_gc_descr_has_references (mword desc)
                }       \
        } while (0)
 
-#ifdef __GNUC__
+#if defined(__GNUC__)
 #define OBJ_BITMAP_FOREACH_PTR(desc,obj)       do {    \
                /* there are pointers */        \
                void **_objptr = (void**)(obj); \
                gsize _bmap = (desc) >> 16;     \
                _objptr += OBJECT_HEADER_WORDS; \
                { \
-                       int _index = __builtin_ctz (_bmap); \
+                       int _index = GNUC_BUILTIN_CTZ (_bmap);          \
                        _objptr += _index; \
                        _bmap >>= (_index + 1);                         \
                        HANDLE_PTR (_objptr, (obj));            \
                        _objptr ++;                                                     \
                        } \
                while (_bmap) { \
-                       int _index = __builtin_ctz (_bmap); \
+                       int _index = GNUC_BUILTIN_CTZ (_bmap);          \
                        _objptr += _index; \
                        _bmap >>= (_index + 1);                         \
                        HANDLE_PTR (_objptr, (obj));            \
index b6983fb908f1746d941f7678ac8a8d071b9e6114..bb350a9e91ffbde1a81bc6a46ab1d8c2f6de801c 100644 (file)
@@ -31,6 +31,7 @@
 #include "metadata/sgen-gray.h"
 #include "metadata/sgen-protocol.h"
 #include "utils/dtrace.h"
+#include "utils/mono-counters.h"
 
 #define ptr_in_nursery sgen_ptr_in_nursery
 
@@ -230,12 +231,66 @@ register_for_finalization (MonoObject *obj, void *user_data, int generation)
        }
 }
 
+/*
+ * We're using (mostly) non-locking staging queues for finalizers and weak links to speed
+ * up registering them.  Otherwise we'd have to take the GC lock.
+ *
+ * The queues are arrays of `StageEntry`, plus a `next_entry` index.  Threads add entries to
+ * the queue via `add_stage_entry()` in a linear fashion until it fills up, in which case
+ * `process_stage_entries()` is called to drain it.  A garbage collection will also drain
+ * the queues via the same function.  That implies that `add_stage_entry()`, since it
+ * doesn't take a lock, must be able to run concurrently with `process_stage_entries()`,
+ * though it doesn't have to make progress while the queue is drained.  In fact, once it
+ * detects that the queue is being drained, it blocks until the draining is done.
+ *
+ * The protocol must guarantee that entries in the queue are causally ordered, otherwise two
+ * entries for the same location might get switched, resulting in the earlier one being
+ * committed and the later one ignored.
+ *
+ * `next_entry` is the index of the next entry to be filled, or `-1` if the queue is
+ * currently being drained.  Each entry has a state:
+ *
+ * `STAGE_ENTRY_FREE`: The entry is free.  Its data fields must be `NULL`.
+ *
+ * `STAGE_ENTRY_BUSY`: The entry is currently being filled in.
+ *
+ * `STAGE_ENTRY_USED`: The entry is completely filled in and must be processed in the next
+ * draining round.
+ *
+ * `STAGE_ENTRY_INVALID`: The entry was busy during queue draining and therefore
+ * invalidated.  Entries that are `BUSY` can obviously not be processed during a drain, but
+ * we can't leave them in place because new entries might be inserted before them, including
+ * from the same thread, violating causality.  An alternative would be not to reset
+ * `next_entry` to `0` after a drain, but to the index of the last `BUSY` entry plus one,
+ * but that can potentially waste the whole queue.
+ *
+ * State transitions:
+ *
+ * | from    | to      | filler? | drainer? |
+ * +---------+---------+---------+----------+
+ * | FREE    | BUSY    | X       |          |
+ * | BUSY    | FREE    | X       |          |
+ * | BUSY    | USED    | X       |          |
+ * | BUSY    | INVALID |         | X        |
+ * | USED    | FREE    |         | X        |
+ * | INVALID | FREE    | X       |          |
+ *
+ * `next_entry` can be incremented either by the filler thread that set the corresponding
+ * entry to `BUSY`, or by another filler thread that's trying to get a `FREE` slot.  If that
+ * other thread wasn't allowed to increment, it would block on the first filler thread.
+ *
+ * An entry's state, once it's set from `FREE` to `BUSY` by a filler thread, can only be
+ * changed by that same thread or by the drained.  The drainer can only set a `BUSY` thread
+ * to `INVALID`, so it needs to be set to `FREE` again by the original filler thread.
+ */
+
 #define STAGE_ENTRY_FREE       0
 #define STAGE_ENTRY_BUSY       1
 #define STAGE_ENTRY_USED       2
+#define STAGE_ENTRY_INVALID    3
 
 typedef struct {
-       gint32 state;
+       volatile gint32 state;
        MonoObject *obj;
        void *user_data;
 } StageEntry;
@@ -245,75 +300,217 @@ typedef struct {
 static volatile gint32 next_fin_stage_entry = 0;
 static StageEntry fin_stage_entries [NUM_FIN_STAGE_ENTRIES];
 
+/*
+ * This is used to lock the stage when processing is forced, i.e. when it's triggered by a
+ * garbage collection.  In that case, the world is already stopped and there's only one
+ * thread operating on the queue.
+ */
+static void
+lock_stage_for_processing (volatile gint32 *next_entry)
+{
+       *next_entry = -1;
+}
+
+/*
+ * When processing is triggered by an overflow, we don't want to take the GC lock
+ * immediately, and then set `next_index` to `-1`, because another thread might have drained
+ * the queue in the mean time.  Instead, we make sure the overflow is still there, we
+ * atomically set `next_index`, and only once that happened do we take the GC lock.
+ */
+static gboolean
+try_lock_stage_for_processing (int num_entries, volatile gint32 *next_entry)
+{
+       gint32 old = *next_entry;
+       if (old < num_entries)
+               return FALSE;
+       return InterlockedCompareExchange (next_entry, -1, old) == old;
+}
+
 /* LOCKING: requires that the GC lock is held */
 static void
-process_stage_entries (int num_entries, volatile gint32 *next_entry, StageEntry *entries, void (*process_func) (MonoObject*, void*))
+process_stage_entries (int num_entries, volatile gint32 *next_entry, StageEntry *entries, void (*process_func) (MonoObject*, void*, int))
 {
        int i;
-       int num_registered = 0;
-       int num_busy = 0;
+
+       /*
+        * This can happen if after setting `next_index` to `-1` in
+        * `try_lock_stage_for_processing()`, a GC was triggered, which then drained the
+        * queue and reset `next_entry`.
+        *
+        * We have the GC lock now, so if it's still `-1`, we can't be interrupted by a GC.
+        */
+       if (*next_entry != -1)
+               return;
 
        for (i = 0; i < num_entries; ++i) {
-               gint32 state = entries [i].state;
+               gint32 state;
 
-               if (state == STAGE_ENTRY_BUSY)
-                       ++num_busy;
+       retry:
+               state = entries [i].state;
 
-               if (state != STAGE_ENTRY_USED ||
-                               InterlockedCompareExchange (&entries [i].state, STAGE_ENTRY_BUSY, STAGE_ENTRY_USED) != STAGE_ENTRY_USED) {
+               switch (state) {
+               case STAGE_ENTRY_FREE:
+               case STAGE_ENTRY_INVALID:
+                       continue;
+               case STAGE_ENTRY_BUSY:
+                       /* BUSY -> INVALID */
+                       /*
+                        * This must be done atomically, because the filler thread can set
+                        * the entry to `USED`, in which case we must process it, so we must
+                        * detect that eventuality.
+                        */
+                       if (InterlockedCompareExchange (&entries [i].state, STAGE_ENTRY_INVALID, STAGE_ENTRY_BUSY) != STAGE_ENTRY_BUSY)
+                               goto retry;
                        continue;
+               case STAGE_ENTRY_USED:
+                       break;
+               default:
+                       SGEN_ASSERT (0, FALSE, "Invalid stage entry state");
+                       break;
                }
 
-               process_func (entries [i].obj, entries [i].user_data);
+               /* state is USED */
+
+               process_func (entries [i].obj, entries [i].user_data, i);
 
                entries [i].obj = NULL;
                entries [i].user_data = NULL;
 
                mono_memory_write_barrier ();
 
+               /* USED -> FREE */
+               /*
+                * This transition only happens here, so we don't have to do it atomically.
+                */
                entries [i].state = STAGE_ENTRY_FREE;
-
-               ++num_registered;
        }
 
-       *next_entry = 0;
+       mono_memory_write_barrier ();
 
-       /* g_print ("stage busy %d reg %d\n", num_busy, num_registered); */
+       *next_entry = 0;
 }
 
-static gboolean
+#ifdef HEAVY_STATISTICS
+static long long stat_overflow_abort = 0;
+static long long stat_wait_for_processing = 0;
+static long long stat_increment_other_thread = 0;
+static long long stat_index_decremented = 0;
+static long long stat_entry_invalidated = 0;
+static long long stat_success = 0;
+#endif
+
+static int
 add_stage_entry (int num_entries, volatile gint32 *next_entry, StageEntry *entries, MonoObject *obj, void *user_data)
 {
-       gint32 index;
-
-       do {
-               do {
-                       index = *next_entry;
-                       if (index >= num_entries)
-                               return FALSE;
-               } while (InterlockedCompareExchange (next_entry, index + 1, index) != index);
-
+       gint32 index, new_next_entry, old_next_entry;
+       gint32 previous_state;
+
+ retry:
+       for (;;) {
+               index = *next_entry;
+               if (index >= num_entries) {
+                       HEAVY_STAT (++stat_overflow_abort);
+                       return -1;
+               }
+               if (index < 0) {
+                       /*
+                        * Backed-off waiting is way more efficient than even using a
+                        * dedicated lock for this.
+                        */
+                       while ((index = *next_entry) < 0) {
+                               /*
+                                * This seems like a good value.  Determined by timing
+                                * sgen-weakref-stress.exe.
+                                */
+                               g_usleep (200);
+                               HEAVY_STAT (++stat_wait_for_processing);
+                       }
+                       continue;
+               }
+               /* FREE -> BUSY */
+               if (entries [index].state != STAGE_ENTRY_FREE ||
+                               InterlockedCompareExchange (&entries [index].state, STAGE_ENTRY_BUSY, STAGE_ENTRY_FREE) != STAGE_ENTRY_FREE) {
+                       /*
+                        * If we can't get the entry it must be because another thread got
+                        * it first.  We don't want to wait for that thread to increment
+                        * `next_entry`, so we try to do it ourselves.  Whether we succeed
+                        * or not, we start over.
+                        */
+                       if (*next_entry == index) {
+                               InterlockedCompareExchange (next_entry, index + 1, index);
+                               //g_print ("tried increment for other thread\n");
+                               HEAVY_STAT (++stat_increment_other_thread);
+                       }
+                       continue;
+               }
+               /* state is BUSY now */
+               mono_memory_write_barrier ();
                /*
-                * We don't need a write barrier here.  *next_entry is just a
-                * help for finding an index, its value is irrelevant for
-                * correctness.
+                * Incrementing `next_entry` must happen after setting the state to `BUSY`.
+                * If it were the other way around, it would be possible that after a filler
+                * incremented the index, other threads fill up the queue, the queue is
+                * drained, the original filler finally fills in the slot, but `next_entry`
+                * ends up at the start of the queue, and new entries are written in the
+                * queue in front of, not behind, the original filler's entry.
+                *
+                * We don't actually require that the CAS succeeds, but we do require that
+                * the value of `next_entry` is not lower than our index.  Since the drainer
+                * sets it to `-1`, that also takes care of the case that the drainer is
+                * currently running.
                 */
-       } while (entries [index].state != STAGE_ENTRY_FREE ||
-                       InterlockedCompareExchange (&entries [index].state, STAGE_ENTRY_BUSY, STAGE_ENTRY_FREE) != STAGE_ENTRY_FREE);
+               old_next_entry = InterlockedCompareExchange (next_entry, index + 1, index);
+               if (old_next_entry < index) {
+                       /* BUSY -> FREE */
+                       /* INVALID -> FREE */
+                       /*
+                        * The state might still be `BUSY`, or the drainer could have set it
+                        * to `INVALID`.  In either case, there's no point in CASing.  Set
+                        * it to `FREE` and start over.
+                        */
+                       entries [index].state = STAGE_ENTRY_FREE;
+                       HEAVY_STAT (++stat_index_decremented);
+                       continue;
+               }
+               break;
+       }
+
+       SGEN_ASSERT (0, index >= 0 && index < num_entries, "Invalid index");
 
        entries [index].obj = obj;
        entries [index].user_data = user_data;
 
        mono_memory_write_barrier ();
 
-       entries [index].state = STAGE_ENTRY_USED;
+       new_next_entry = *next_entry;
+       mono_memory_read_barrier ();
+       /* BUSY -> USED */
+       /*
+        * A `BUSY` entry will either still be `BUSY` or the drainer will have set it to
+        * `INVALID`.  In the former case, we set it to `USED` and we're finished.  In the
+        * latter case, we reset it to `FREE` and start over.
+        */
+       previous_state = InterlockedCompareExchange (&entries [index].state, STAGE_ENTRY_USED, STAGE_ENTRY_BUSY);
+       if (previous_state == STAGE_ENTRY_BUSY) {
+               SGEN_ASSERT (0, new_next_entry >= index || new_next_entry < 0, "Invalid next entry index - as long as we're busy, other thread can only increment or invalidate it");
+               HEAVY_STAT (++stat_success);
+               return index;
+       }
+
+       SGEN_ASSERT (0, previous_state == STAGE_ENTRY_INVALID, "Invalid state transition - other thread can only make busy state invalid");
+       entries [index].obj = NULL;
+       entries [index].user_data = NULL;
+       mono_memory_write_barrier ();
+       /* INVALID -> FREE */
+       entries [index].state = STAGE_ENTRY_FREE;
 
-       return TRUE;
+       HEAVY_STAT (++stat_entry_invalidated);
+
+       goto retry;
 }
 
 /* LOCKING: requires that the GC lock is held */
 static void
-process_fin_stage_entry (MonoObject *obj, void *user_data)
+process_fin_stage_entry (MonoObject *obj, void *user_data, int index)
 {
        if (ptr_in_nursery (obj))
                register_for_finalization (obj, user_data, GENERATION_NURSERY);
@@ -325,16 +522,19 @@ process_fin_stage_entry (MonoObject *obj, void *user_data)
 void
 sgen_process_fin_stage_entries (void)
 {
+       lock_stage_for_processing (&next_fin_stage_entry);
        process_stage_entries (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, process_fin_stage_entry);
 }
 
 void
 mono_gc_register_for_finalization (MonoObject *obj, void *user_data)
 {
-       while (!add_stage_entry (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, obj, user_data)) {
-               LOCK_GC;
-               sgen_process_fin_stage_entries ();
-               UNLOCK_GC;
+       while (add_stage_entry (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, obj, user_data) == -1) {
+               if (try_lock_stage_for_processing (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry)) {
+                       LOCK_GC;
+                       process_stage_entries (NUM_FIN_STAGE_ENTRIES, &next_fin_stage_entry, fin_stage_entries, process_fin_stage_entry);
+                       UNLOCK_GC;
+               }
        }
 }
 
@@ -478,7 +678,7 @@ sgen_null_link_in_range (int generation, gboolean before_finalization, ScanCopyC
                        if (!major_collector.is_object_live (object)) {
                                if (sgen_gc_is_object_ready_for_finalization (object)) {
                                        *link = NULL;
-                                       binary_protocol_dislink_update (link, NULL, 0);
+                                       binary_protocol_dislink_update (link, NULL, 0, 0);
                                        SGEN_LOG (5, "Dislink nullified at %p to GCed object %p", link, object);
                                        SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
                                        continue;
@@ -500,14 +700,14 @@ sgen_null_link_in_range (int generation, gboolean before_finalization, ScanCopyC
                                                g_assert (copy);
                                                *link = HIDE_POINTER (copy, track);
                                                add_or_remove_disappearing_link ((MonoObject*)copy, link, GENERATION_OLD);
-                                               binary_protocol_dislink_update (link, copy, track);
+                                               binary_protocol_dislink_update (link, copy, track, 0);
 
                                                SGEN_LOG (5, "Upgraded dislink at %p to major because object %p moved to %p", link, object, copy);
 
                                                continue;
                                        } else {
                                                *link = HIDE_POINTER (copy, track);
-                                               binary_protocol_dislink_update (link, copy, track);
+                                               binary_protocol_dislink_update (link, copy, track, 0);
                                                SGEN_LOG (5, "Updated dislink at %p to %p", link, DISLINK_OBJECT (link));
                                        }
                                }
@@ -530,7 +730,7 @@ sgen_null_links_for_domain (MonoDomain *domain, int generation)
 
                        if (*link) {
                                *link = NULL;
-                               binary_protocol_dislink_update (link, NULL, 0);
+                               binary_protocol_dislink_update (link, NULL, 0, 0);
                                free = FALSE;
                                /*
                                 * This can happen if finalizers are not ran, i.e. Environment.Exit ()
@@ -563,7 +763,7 @@ sgen_null_links_with_predicate (int generation, WeakLinkAlivePredicateFunc predi
 
                if (!is_alive) {
                        *link = NULL;
-                       binary_protocol_dislink_update (link, NULL, 0);
+                       binary_protocol_dislink_update (link, NULL, 0, 0);
                        SGEN_LOG (5, "Dislink nullified by predicate at %p to GCed object %p", link, object);
                        SGEN_HASH_TABLE_FOREACH_REMOVE (TRUE);
                        continue;
@@ -592,10 +792,13 @@ sgen_remove_finalizers_for_domain (MonoDomain *domain, int generation)
 
 /* LOCKING: requires that the GC lock is held */
 static void
-process_dislink_stage_entry (MonoObject *obj, void *_link)
+process_dislink_stage_entry (MonoObject *obj, void *_link, int index)
 {
        void **link = _link;
 
+       if (index >= 0)
+               binary_protocol_dislink_process_staged (link, obj, index);
+
        add_or_remove_disappearing_link (NULL, link, GENERATION_NURSERY);
        add_or_remove_disappearing_link (NULL, link, GENERATION_OLD);
        if (obj) {
@@ -615,6 +818,7 @@ static StageEntry dislink_stage_entries [NUM_DISLINK_STAGE_ENTRIES];
 void
 sgen_process_dislink_stage_entries (void)
 {
+       lock_stage_for_processing (&next_dislink_stage_entry);
        process_stage_entries (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, process_dislink_stage_entry);
 }
 
@@ -640,25 +844,43 @@ sgen_register_disappearing_link (MonoObject *obj, void **link, gboolean track, g
        else
                *link = NULL;
 
-       binary_protocol_dislink_update (link, obj, track);
-
 #if 1
        if (in_gc) {
-               process_dislink_stage_entry (obj, link);
+               binary_protocol_dislink_update (link, obj, track, 0);
+               process_dislink_stage_entry (obj, link, -1);
        } else {
-               while (!add_stage_entry (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, obj, link)) {
-                       LOCK_GC;
-                       sgen_process_dislink_stage_entries ();
-                       UNLOCK_GC;
+               int index;
+               binary_protocol_dislink_update (link, obj, track, 1);
+               while ((index = add_stage_entry (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, obj, link)) == -1) {
+                       if (try_lock_stage_for_processing (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry)) {
+                               LOCK_GC;
+                               process_stage_entries (NUM_DISLINK_STAGE_ENTRIES, &next_dislink_stage_entry, dislink_stage_entries, process_dislink_stage_entry);
+                               UNLOCK_GC;
+                       }
                }
+               binary_protocol_dislink_update_staged (link, obj, track, index);
        }
 #else
        if (!in_gc)
                LOCK_GC;
-       process_dislink_stage_entry (obj, link);
+       binary_protocol_dislink_update (link, obj, track, 0);
+       process_dislink_stage_entry (obj, link, -1);
        if (!in_gc)
                UNLOCK_GC;
 #endif
 }
 
+void
+sgen_init_fin_weak_hash (void)
+{
+#ifdef HEAVY_STATISTICS
+       mono_counters_register ("FinWeak Successes", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_success);
+       mono_counters_register ("FinWeak Overflow aborts", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_overflow_abort);
+       mono_counters_register ("FinWeak Wait for processing", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_wait_for_processing);
+       mono_counters_register ("FinWeak Increment other thread", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_increment_other_thread);
+       mono_counters_register ("FinWeak Index decremented", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_index_decremented);
+       mono_counters_register ("FinWeak Entry invalidated", MONO_COUNTER_GC | MONO_COUNTER_LONG, &stat_entry_invalidated);
+#endif
+}
+
 #endif /* HAVE_SGEN_GC */
index 88c5308bcdd71fdcf05b3dbcdee54e0e8638ad6e..fa4b9e6b86dc668f19dc854f99666ab09ebe0f0a 100644 (file)
@@ -317,6 +317,7 @@ static int stat_wbarrier_set_field = 0;
 static int stat_wbarrier_set_arrayref = 0;
 static int stat_wbarrier_arrayref_copy = 0;
 static int stat_wbarrier_generic_store = 0;
+static int stat_wbarrier_generic_store_atomic = 0;
 static int stat_wbarrier_set_root = 0;
 static int stat_wbarrier_value_copy = 0;
 static int stat_wbarrier_object_copy = 0;
@@ -1048,6 +1049,10 @@ mono_gc_clear_domain (MonoDomain * domain)
 
        LOCK_GC;
 
+       binary_protocol_domain_unload_begin (domain);
+
+       sgen_stop_world (0);
+
        if (concurrent_collection_in_progress)
                sgen_perform_collection (0, GENERATION_OLD, "clear domain", TRUE);
        g_assert (!concurrent_collection_in_progress);
@@ -1112,6 +1117,10 @@ mono_gc_clear_domain (MonoDomain * domain)
                sgen_object_layout_dump (stdout);
        }
 
+       sgen_restart_world (0, NULL);
+
+       binary_protocol_domain_unload_end (domain);
+
        UNLOCK_GC;
 }
 
@@ -1908,7 +1917,8 @@ finish_gray_stack (int generation, GrayQueue *queue)
        We must reset the gathered bridges since their original block might be evacuated due to major
        fragmentation in the meanwhile and the bridge code should not have to deal with that.
        */
-       sgen_bridge_reset_data ();
+       if (sgen_need_bridge_processing ())
+               sgen_bridge_reset_data ();
 
        /*
         * Walk the ephemeron tables marking all values with reachable keys. This must be completely done
@@ -1925,9 +1935,25 @@ finish_gray_stack (int generation, GrayQueue *queue)
        sgen_scan_togglerefs (start_addr, end_addr, ctx);
 
        if (sgen_need_bridge_processing ()) {
+               /*Make sure the gray stack is empty before we process bridge objects so we get liveness right*/
+               sgen_drain_gray_stack (-1, ctx);
                sgen_collect_bridge_objects (generation, ctx);
                if (generation == GENERATION_OLD)
                        sgen_collect_bridge_objects (GENERATION_NURSERY, ctx);
+
+               /*
+               Do the first bridge step here, as the collector liveness state will become useless after that.
+
+               An important optimization is to only proccess the possibly dead part of the object graph and skip
+               over all live objects as we transitively know everything they point must be alive too.
+
+               The above invariant is completely wrong if we let the gray queue be drained and mark/copy everything.
+
+               This has the unfortunate side effect of making overflow collections perform the first step twice, but
+               given we now have heuristics that perform major GC in anticipation of minor overflows this should not
+               be a big deal.
+               */
+               sgen_bridge_processing_stw_step ();
        }
 
        /*
@@ -2209,6 +2235,7 @@ init_stats (void)
        mono_counters_register ("WBarrier set arrayref", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_set_arrayref);
        mono_counters_register ("WBarrier arrayref copy", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_arrayref_copy);
        mono_counters_register ("WBarrier generic store called", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_generic_store);
+       mono_counters_register ("WBarrier generic atomic store called", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_generic_store_atomic);
        mono_counters_register ("WBarrier set root", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_set_root);
        mono_counters_register ("WBarrier value copy", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_value_copy);
        mono_counters_register ("WBarrier object copy", MONO_COUNTER_GC | MONO_COUNTER_INT, &stat_wbarrier_object_copy);
@@ -3255,6 +3282,9 @@ major_do_collection (const char *reason)
        TV_DECLARE (all_btv);
        int old_next_pin_slot;
 
+       if (disable_major_collections)
+               return FALSE;
+
        if (major_collector.get_and_reset_num_major_objects_marked) {
                long long num_marked = major_collector.get_and_reset_num_major_objects_marked ();
                g_assert (!num_marked);
@@ -3276,13 +3306,15 @@ major_do_collection (const char *reason)
        return bytes_pinned_from_failed_allocation > 0;
 }
 
-static gboolean major_do_collection (const char *reason);
-
 static void
 major_start_concurrent_collection (const char *reason)
 {
-       long long num_objects_marked = major_collector.get_and_reset_num_major_objects_marked ();
+       long long num_objects_marked;
+
+       if (disable_major_collections)
+               return;
 
+       num_objects_marked = major_collector.get_and_reset_num_major_objects_marked ();
        g_assert (num_objects_marked == 0);
 
        MONO_GC_CONCURRENT_START_BEGIN (GENERATION_OLD);
@@ -3382,6 +3414,9 @@ sgen_ensure_free_space (size_t size)
        sgen_perform_collection (size, generation_to_collect, reason, FALSE);
 }
 
+/*
+ * LOCKING: Assumes the GC lock is held.
+ */
 void
 sgen_perform_collection (size_t requested_size, int generation_to_collect, const char *reason, gboolean wait_to_finish)
 {
@@ -3985,34 +4020,30 @@ scan_thread_data (void *start_nursery, void *end_nursery, gboolean precise, Gray
                        SGEN_LOG (3, "GC disabled for thread %p, range: %p-%p, size: %td", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start);
                        continue;
                }
-
-               if (!info->joined_stw) {
-                       SGEN_LOG (3, "Skipping thread not seen in STW %p, range: %p-%p, size: %td", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start);
+               if (mono_thread_info_run_state (info) != STATE_RUNNING) {
+                       SGEN_LOG (3, "Skipping non-running thread %p, range: %p-%p, size: %td (state %d)", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start, mono_thread_info_run_state (info));
                        continue;
                }
-               
                SGEN_LOG (3, "Scanning thread %p, range: %p-%p, size: %td, pinned=%d", info, info->stack_start, info->stack_end, (char*)info->stack_end - (char*)info->stack_start, sgen_get_pinned_count ());
-               if (!info->thread_is_dying) {
-                       if (gc_callbacks.thread_mark_func && !conservative_stack_mark) {
-                               UserCopyOrMarkData data = { NULL, queue };
-                               set_user_copy_or_mark_data (&data);
-                               gc_callbacks.thread_mark_func (info->runtime_data, info->stack_start, info->stack_end, precise);
-                               set_user_copy_or_mark_data (NULL);
-                       } else if (!precise) {
-                               if (!conservative_stack_mark) {
-                                       fprintf (stderr, "Precise stack mark not supported - disabling.\n");
-                                       conservative_stack_mark = TRUE;
-                               }
-                               conservatively_pin_objects_from (info->stack_start, info->stack_end, start_nursery, end_nursery, PIN_TYPE_STACK);
+               if (gc_callbacks.thread_mark_func && !conservative_stack_mark) {
+                       UserCopyOrMarkData data = { NULL, queue };
+                       set_user_copy_or_mark_data (&data);
+                       gc_callbacks.thread_mark_func (info->runtime_data, info->stack_start, info->stack_end, precise);
+                       set_user_copy_or_mark_data (NULL);
+               } else if (!precise) {
+                       if (!conservative_stack_mark) {
+                               fprintf (stderr, "Precise stack mark not supported - disabling.\n");
+                               conservative_stack_mark = TRUE;
                        }
+                       conservatively_pin_objects_from (info->stack_start, info->stack_end, start_nursery, end_nursery, PIN_TYPE_STACK);
                }
 
-               if (!info->thread_is_dying && !precise) {
+               if (!precise) {
 #ifdef USE_MONO_CTX
                        conservatively_pin_objects_from ((void**)&info->ctx, (void**)&info->ctx + ARCH_NUM_REGS,
                                start_nursery, end_nursery, PIN_TYPE_STACK);
 #else
-                       conservatively_pin_objects_from (&info->regs, &info->regs + ARCH_NUM_REGS,
+                       conservatively_pin_objects_from ((void**)&info->regs, (void**)&info->regs + ARCH_NUM_REGS,
                                        start_nursery, end_nursery, PIN_TYPE_STACK);
 #endif
                }
@@ -4033,7 +4064,6 @@ ptr_on_stack (void *ptr)
 static void*
 sgen_thread_register (SgenThreadInfo* info, void *addr)
 {
-       LOCK_GC;
 #ifndef HAVE_KW_THREAD
        info->tlab_start = info->tlab_next = info->tlab_temp_end = info->tlab_real_end = NULL;
 
@@ -4043,14 +4073,11 @@ sgen_thread_register (SgenThreadInfo* info, void *addr)
        sgen_thread_info = info;
 #endif
 
-#if !defined(__MACH__)
+#ifdef SGEN_POSIX_STW
        info->stop_count = -1;
        info->signal = 0;
 #endif
        info->skip = 0;
-       info->joined_stw = FALSE;
-       info->doing_handshake = FALSE;
-       info->thread_is_dying = FALSE;
        info->stack_start = NULL;
        info->stopped_ip = NULL;
        info->stopped_domain = NULL;
@@ -4064,6 +4091,7 @@ sgen_thread_register (SgenThreadInfo* info, void *addr)
 
        binary_protocol_thread_register ((gpointer)mono_thread_info_get_tid (info));
 
+       // FIXME: Unift with mono_thread_get_stack_bounds ()
        /* try to get it with attributes first */
 #if (defined(HAVE_PTHREAD_GETATTR_NP) || defined(HAVE_PTHREAD_ATTR_GET_NP)) && defined(HAVE_PTHREAD_ATTR_GETSTACK)
   {
@@ -4088,8 +4116,14 @@ sgen_thread_register (SgenThreadInfo* info, void *addr)
      pthread_attr_destroy (&attr);
   }
 #elif defined(HAVE_PTHREAD_GET_STACKSIZE_NP) && defined(HAVE_PTHREAD_GET_STACKADDR_NP)
-                info->stack_end = (char*)pthread_get_stackaddr_np (pthread_self ());
-                info->stack_start_limit = (char*)info->stack_end - pthread_get_stacksize_np (pthread_self ());
+       {
+               size_t stsize = 0;
+               guint8 *staddr = NULL;
+
+               mono_thread_get_stack_bounds (&staddr, &stsize);
+               info->stack_start_limit = staddr;
+               info->stack_end = staddr + stsize;
+       }
 #else
        {
                /* FIXME: we assume the stack grows down */
@@ -4108,13 +4142,11 @@ sgen_thread_register (SgenThreadInfo* info, void *addr)
 
        if (gc_callbacks.thread_attach_func)
                info->runtime_data = gc_callbacks.thread_attach_func ();
-
-       UNLOCK_GC;
        return info;
 }
 
 static void
-sgen_thread_unregister (SgenThreadInfo *p)
+sgen_thread_detach (SgenThreadInfo *p)
 {
        /* If a delegate is passed to native code and invoked on a thread we dont
         * know about, the jit will register it with mono_jit_thread_attach, but
@@ -4124,39 +4156,11 @@ sgen_thread_unregister (SgenThreadInfo *p)
         */
        if (mono_domain_get ())
                mono_thread_detach (mono_thread_current ());
+}
 
-       p->thread_is_dying = TRUE;
-
-       /*
-       There is a race condition between a thread finishing executing and been removed
-       from the GC thread set.
-       This happens on posix systems when TLS data is been cleaned-up, libpthread will
-       set the thread_info slot to NULL before calling the cleanup function. This
-       opens a window in which the thread is registered but has a NULL TLS.
-
-       The suspend signal handler needs TLS data to know where to store thread state
-       data or otherwise it will simply ignore the thread.
-
-       This solution works because the thread doing STW will wait until all threads been
-       suspended handshake back, so there is no race between the doing_hankshake test
-       and the suspend_thread call.
-
-       This is not required on systems that do synchronous STW as those can deal with
-       the above race at suspend time.
-
-       FIXME: I believe we could avoid this by using mono_thread_info_lookup when
-       mono_thread_info_current returns NULL. Or fix mono_thread_info_lookup to do so.
-       */
-#if (defined(__MACH__) && MONO_MACH_ARCH_SUPPORTED) || !defined(HAVE_PTHREAD_KILL)
-       LOCK_GC;
-#else
-       while (!TRYLOCK_GC) {
-               if (!sgen_park_current_thread_if_doing_handshake (p))
-                       g_usleep (50);
-       }
-       MONO_GC_LOCKED ();
-#endif
-
+static void
+sgen_thread_unregister (SgenThreadInfo *p)
+{
        binary_protocol_thread_unregister ((gpointer)mono_thread_info_get_tid (p));
        SGEN_LOG (3, "unregister thread %p (%p)", p, (gpointer)mono_thread_info_get_tid (p));
 
@@ -4164,9 +4168,6 @@ sgen_thread_unregister (SgenThreadInfo *p)
                gc_callbacks.thread_detach_func (p->runtime_data);
                p->runtime_data = NULL;
        }
-
-       mono_threads_unregister_current_thread (p);
-       UNLOCK_GC;
 }
 
 
@@ -4231,6 +4232,7 @@ mono_gc_pthread_detach (pthread_t thread)
 void
 mono_gc_pthread_exit (void *retval) 
 {
+       mono_thread_info_dettach ();
        pthread_exit (retval);
 }
 
@@ -4399,6 +4401,24 @@ mono_gc_wbarrier_generic_store (gpointer ptr, MonoObject* value)
        sgen_dummy_use (value);
 }
 
+/* Same as mono_gc_wbarrier_generic_store () but performs the store
+ * as an atomic operation with release semantics.
+ */
+void
+mono_gc_wbarrier_generic_store_atomic (gpointer ptr, MonoObject *value)
+{
+       HEAVY_STAT (++stat_wbarrier_generic_store_atomic);
+
+       SGEN_LOG (8, "Wbarrier atomic store at %p to %p (%s)", ptr, value, value ? safe_name (value) : "null");
+
+       InterlockedWritePointer (ptr, value);
+
+       if (ptr_in_nursery (value))
+               mono_gc_wbarrier_generic_nostore (ptr);
+
+       sgen_dummy_use (value);
+}
+
 void mono_gc_wbarrier_value_copy_bitmap (gpointer _dest, gpointer _src, int size, unsigned bitmap)
 {
        mword *dest = _dest;
@@ -4793,7 +4813,7 @@ void
 mono_gc_base_init (void)
 {
        MonoThreadInfoCallbacks cb;
-       char *env;
+       const char *env;
        char **opts, **ptr;
        char *major_collector_opt = NULL;
        char *minor_collector_opt = NULL;
@@ -4831,6 +4851,7 @@ mono_gc_base_init (void)
        gc_debug_file = stderr;
 
        cb.thread_register = sgen_thread_register;
+       cb.thread_detach = sgen_thread_detach;
        cb.thread_unregister = sgen_thread_unregister;
        cb.thread_attach = sgen_thread_attach;
        cb.mono_method_is_critical = (gpointer)is_critical_method;
@@ -4845,7 +4866,7 @@ mono_gc_base_init (void)
 
        init_user_copy_or_mark_key ();
 
-       if ((env = getenv (MONO_GC_PARAMS_NAME))) {
+       if ((env = g_getenv (MONO_GC_PARAMS_NAME))) {
                opts = g_strsplit (env, ",", -1);
                for (ptr = opts; *ptr; ++ptr) {
                        char *opt = *ptr;
@@ -4864,6 +4885,7 @@ mono_gc_base_init (void)
        init_stats ();
        sgen_init_internal_allocator ();
        sgen_init_nursery_allocator ();
+       sgen_init_fin_weak_hash ();
 
        sgen_register_fixed_internal_mem_type (INTERNAL_MEM_SECTION, SGEN_SIZEOF_GC_MEM_SECTION);
        sgen_register_fixed_internal_mem_type (INTERNAL_MEM_FINALIZE_READY_ENTRY, sizeof (FinalizeReadyEntry));
@@ -4872,6 +4894,19 @@ mono_gc_base_init (void)
 
 #ifndef HAVE_KW_THREAD
        mono_native_tls_alloc (&thread_info_key, NULL);
+#if defined(__APPLE__) || defined (HOST_WIN32)
+       /* 
+        * CEE_MONO_TLS requires the tls offset, not the key, so the code below only works on darwin,
+        * where the two are the same.
+        */
+       mono_tls_key_set_offset (TLS_KEY_SGEN_THREAD_INFO, thread_info_key);
+#endif
+#else
+       {
+               int tls_offset = -1;
+               MONO_THREAD_VAR_OFFSET (sgen_thread_info, tls_offset);
+               mono_tls_key_set_offset (TLS_KEY_SGEN_THREAD_INFO, tls_offset);
+       }
 #endif
 
        /*
@@ -5070,6 +5105,10 @@ mono_gc_base_init (void)
                        }
 
                        if (!strcmp (opt, "cementing")) {
+                               if (major_collector.is_parallel) {
+                                       sgen_env_var_error (MONO_GC_PARAMS_NAME, "Ignoring.", "`cementing` is not supported for the parallel major collector.");
+                                       continue;
+                               }
                                cement_enabled = TRUE;
                                continue;
                        }
@@ -5114,10 +5153,12 @@ mono_gc_base_init (void)
                g_strfreev (opts);
        }
 
-       if (major_collector.is_parallel)
+       if (major_collector.is_parallel) {
+               cement_enabled = FALSE;
                sgen_workers_init (num_workers);
-       else if (major_collector.is_concurrent)
+       } else if (major_collector.is_concurrent) {
                sgen_workers_init (1);
+       }
 
        if (major_collector_opt)
                g_free (major_collector_opt);
@@ -5129,7 +5170,7 @@ mono_gc_base_init (void)
 
        sgen_cement_init (cement_enabled);
 
-       if ((env = getenv (MONO_GC_DEBUG_NAME))) {
+       if ((env = g_getenv (MONO_GC_DEBUG_NAME))) {
                gboolean usage_printed = FALSE;
 
                opts = g_strsplit (env, ",", -1);
index 311548db9bc1e038b35791e972604000c0197893..18948819cdb81fadf1eed25a86c273926ec16e17 100644 (file)
@@ -66,17 +66,30 @@ NurseryClearPolicy sgen_get_nursery_clear_policy (void) MONO_INTERNAL;
 #define SGEN_TV_ELAPSED(start,end) (int)((end-start) / 10)
 #define SGEN_TV_ELAPSED_MS(start,end) ((SGEN_TV_ELAPSED((start),(end)) + 500) / 1000)
 
+#if !defined(__MACH__) && !MONO_MACH_ARCH_SUPPORTED && defined(HAVE_PTHREAD_KILL)
+#define SGEN_POSIX_STW 1
+#endif
+
 /* eventually share with MonoThread? */
 /*
  * This structure extends the MonoThreadInfo structure.
  */
 struct _SgenThreadInfo {
        MonoThreadInfo info;
+       /*
+       This is set to TRUE when STW fails to suspend a thread, most probably because the
+       underlying thread is dead.
+       */
        int skip;
        volatile int in_critical_region;
-       gboolean joined_stw;
-       gboolean doing_handshake;
-       gboolean thread_is_dying;
+
+       /*
+       This is set the argument of mono_gc_set_skip_thread.
+
+       A thread that knowingly holds no managed state can call this
+       function around blocking loops to reduce the GC burden by not
+       been scanned.
+       */
        gboolean gc_disabled;
        void *stack_end;
        void *stack_start;
@@ -87,14 +100,17 @@ struct _SgenThreadInfo {
        char **tlab_real_end_addr;
        gpointer runtime_data;
 
-       /* Only used on POSIX platforms */
+#ifdef SGEN_POSIX_STW
+       /* This is -1 until the first suspend. */
        int signal;
-       /* Ditto */
-       unsigned int stop_count; /* to catch duplicate signals */
+       /* FIXME: kill this, we only use signals on systems that have rt-posix, which doesn't have issues with duplicates. */
+       unsigned int stop_count; /* to catch duplicate signals. */
+#endif
 
        gpointer stopped_ip;    /* only valid if the thread is stopped */
-       MonoDomain *stopped_domain; /* ditto */
+       MonoDomain *stopped_domain; /* dsto */
 
+       /*FIXME pretty please finish killing ARCH_NUM_REGS */
 #ifdef USE_MONO_CTX
        MonoContext ctx;                /* ditto */
 #else
@@ -127,7 +143,7 @@ struct _GCMemSection {
        /* in major collections indexes in the pin_queue for objects that pin this section */
        void **pin_queue_start;
        int pin_queue_num_entries;
-       unsigned short num_scan_start;
+       unsigned int num_scan_start;
 };
 
 /*
@@ -263,19 +279,19 @@ extern int sgen_nursery_bits MONO_INTERNAL;
 extern char *sgen_nursery_start MONO_INTERNAL;
 extern char *sgen_nursery_end MONO_INTERNAL;
 
-static inline gboolean
+static MONO_ALWAYS_INLINE gboolean
 sgen_ptr_in_nursery (void *p)
 {
        return SGEN_PTR_IN_NURSERY ((p), DEFAULT_NURSERY_BITS, sgen_nursery_start, sgen_nursery_end);
 }
 
-static inline char*
+static MONO_ALWAYS_INLINE char*
 sgen_get_nursery_start (void)
 {
        return sgen_nursery_start;
 }
 
-static inline char*
+static MONO_ALWAYS_INLINE char*
 sgen_get_nursery_end (void)
 {
        return sgen_nursery_end;
@@ -376,7 +392,6 @@ int sgen_thread_handshake (BOOL suspend) MONO_INTERNAL;
 gboolean sgen_suspend_thread (SgenThreadInfo *info) MONO_INTERNAL;
 gboolean sgen_resume_thread (SgenThreadInfo *info) MONO_INTERNAL;
 void sgen_wait_for_suspend_ack (int count) MONO_INTERNAL;
-gboolean sgen_park_current_thread_if_doing_handshake (SgenThreadInfo *p) MONO_INTERNAL;
 void sgen_os_init (void) MONO_INTERNAL;
 
 gboolean sgen_is_worker_thread (MonoNativeThreadId thread) MONO_INTERNAL;
@@ -417,6 +432,7 @@ enum {
        INTERNAL_MEM_JOB_QUEUE_ENTRY,
        INTERNAL_MEM_TOGGLEREF_DATA,
        INTERNAL_MEM_CARDTABLE_MOD_UNION,
+       INTERNAL_MEM_BINARY_PROTOCOL,
        INTERNAL_MEM_MAX
 };
 
@@ -768,6 +784,8 @@ const char* sgen_safe_name (void* obj) MONO_INTERNAL;
 
 gboolean sgen_object_is_live (void *obj) MONO_INTERNAL;
 
+void  sgen_init_fin_weak_hash (void) MONO_INTERNAL;
+
 gboolean sgen_need_bridge_processing (void) MONO_INTERNAL;
 void sgen_bridge_reset_data (void) MONO_INTERNAL;
 void sgen_bridge_processing_stw_step (void) MONO_INTERNAL;
@@ -927,28 +945,24 @@ extern __thread char *stack_end;
 #endif
 
 #ifdef HAVE_KW_THREAD
-#define EMIT_TLS_ACCESS(mb,dummy,offset)       do {    \
+#define EMIT_TLS_ACCESS(mb,member,key) do {    \
        mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);   \
        mono_mb_emit_byte ((mb), CEE_MONO_TLS);         \
-       mono_mb_emit_i4 ((mb), (offset));               \
+       mono_mb_emit_i4 ((mb), (key));          \
        } while (0)
 #else
 
-/* 
- * CEE_MONO_TLS requires the tls offset, not the key, so the code below only works on darwin,
- * where the two are the same.
- */
 #if defined(__APPLE__) || defined (HOST_WIN32)
-#define EMIT_TLS_ACCESS(mb,member,dummy)       do {    \
+#define EMIT_TLS_ACCESS(mb,member,key) do {    \
        mono_mb_emit_byte ((mb), MONO_CUSTOM_PREFIX);   \
        mono_mb_emit_byte ((mb), CEE_MONO_TLS);         \
-       mono_mb_emit_i4 ((mb), thread_info_key);        \
+       mono_mb_emit_i4 ((mb), TLS_KEY_SGEN_THREAD_INFO);       \
        mono_mb_emit_icon ((mb), G_STRUCT_OFFSET (SgenThreadInfo, member));     \
        mono_mb_emit_byte ((mb), CEE_ADD);              \
        mono_mb_emit_byte ((mb), CEE_LDIND_I);          \
        } while (0)
 #else
-#define EMIT_TLS_ACCESS(mb,member,dummy)       do { g_error ("sgen is not supported when using --with-tls=pthread.\n"); } while (0)
+#define EMIT_TLS_ACCESS(mb,member,key) do { g_error ("sgen is not supported when using --with-tls=pthread.\n"); } while (0)
 #endif
 
 #endif
@@ -987,6 +1001,7 @@ typedef enum {
        ATYPE_NORMAL,
        ATYPE_VECTOR,
        ATYPE_SMALL,
+       ATYPE_STRING,
        ATYPE_NUM
 } SgenAllocatorType;
 
index 6be8b0d285d30ef92c73b1f54e4397790d5aa74e..8bf1c1123453acfe961597f45e389dc95e8d50cb 100644 (file)
@@ -110,6 +110,7 @@ description_for_type (int type)
        case INTERNAL_MEM_JOB_QUEUE_ENTRY: return "job-queue-entry";
        case INTERNAL_MEM_TOGGLEREF_DATA: return "toggleref-data";
        case INTERNAL_MEM_CARDTABLE_MOD_UNION: return "cardtable-mod-union";
+       case INTERNAL_MEM_BINARY_PROTOCOL: return "binary-protocol";
        default:
                g_assert_not_reached ();
        }
index b273a5ab822bd0cf5f35c3a3590f6c5836723fff..58f825903e25dd7bb0ea7e1aeef3a41dad177670 100644 (file)
@@ -510,10 +510,10 @@ mono_sgen_los_describe_pointer (char *ptr)
                vtable = (MonoVTable*)SGEN_LOAD_VTABLE (obj->data);
 
                if (obj->data == ptr) {
-                       SGEN_LOG (0, "%s (size %td pin %d)\n", los_kind, size, pinned ? 1 : 0);
+                       SGEN_LOG (0, "%s (size %d pin %d)\n", los_kind, (int)size, pinned ? 1 : 0);
                } else {
-                       SGEN_LOG (0, "%s (interior-ptr offset %td size %td pin %d)",
-                                       los_kind, ptr - obj->data, size, pinned ? 1 : 0);
+                       SGEN_LOG (0, "%s (interior-ptr offset %td size %d pin %d)",
+                                         los_kind, ptr - obj->data, (int)size, pinned ? 1 : 0);
                }
 
                return TRUE;
@@ -568,7 +568,11 @@ sgen_los_object_size (LOSObject *obj)
 LOSObject*
 sgen_los_header_for_object (char *data)
 {
+#if _MSC_VER
+       return (LOSObject*)(data - (int)(&(((LOSObject*)0)->data)));
+#else
        return (LOSObject*)(data - sizeof (LOSObject));
+#endif
 }
 
 void
old mode 100644 (file)
new mode 100755 (executable)
index 43a587c..98b4b7a
@@ -1574,22 +1574,20 @@ sweep_block (MSBlockInfo *block, gboolean during_major_collection)
 static inline int
 bitcount (mword d)
 {
-#if SIZEOF_VOID_P == 8
-       /* http://www.jjj.de/bitwizardry/bitwizardrypage.html */
-       d -=  (d>>1) & 0x5555555555555555;
-       d  = ((d>>2) & 0x3333333333333333) + (d & 0x3333333333333333);
-       d  = ((d>>4) + d) & 0x0f0f0f0f0f0f0f0f;
-       d *= 0x0101010101010101;
-       return d >> 56;
+       int count = 0;
+
+#ifdef __GNUC__
+       if (sizeof (mword) == sizeof (unsigned long))
+               count += __builtin_popcountl (d);
+       else
+               count += __builtin_popcount (d);
 #else
-       /* http://aggregate.org/MAGIC/ */
-       d -= ((d >> 1) & 0x55555555);
-       d = (((d >> 2) & 0x33333333) + (d & 0x33333333));
-       d = (((d >> 4) + d) & 0x0f0f0f0f);
-       d += (d >> 8);
-       d += (d >> 16);
-       return (d & 0x0000003f);
+       while (d) {
+               count ++;
+               d &= (d - 1);
+       }
 #endif
+       return count;
 }
 
 static void
@@ -1893,6 +1891,14 @@ major_have_computer_minor_collection_allowance (void)
                void **empty_block_arr;
                void **rebuild_next;
 
+#ifdef TARGET_WIN32
+               /*
+                * sgen_free_os_memory () asserts in mono_vfree () because windows doesn't like freeing the middle of
+                * a VirtualAlloc ()-ed block.
+                */
+               return;
+#endif
+
                if (num_empty_blocks <= section_reserve)
                        return;
                SGEN_ASSERT (0, num_empty_blocks > 0, "section reserve can't be negative");
@@ -2297,6 +2303,9 @@ major_scan_card_table (gboolean mod_union, SgenGrayQueue *queue)
                                 */
                                if (!card_data)
                                        continue;
+#else
+                               g_assert_not_reached ();
+                               card_data = NULL;
 #endif
                        } else {
                                card_data = card_base = sgen_card_table_get_card_scan_address ((mword)block_start);
index 7dc35fdbe3e88d61c372dd6aa97612c931b72960..eb44627eee03f516223bb762b59f6e3ef741e002 100644 (file)
@@ -139,11 +139,11 @@ sgen_memgov_try_calculate_minor_collection_allowance (gboolean overwrite)
        if (debug_print_allowance) {
                mword old_major = last_collection_old_num_major_sections * major_collector.section_size;
 
-               SGEN_LOG (1, "Before collection: %td bytes (%td major, %td LOS)",
-                               old_major + last_collection_old_los_memory_usage, old_major, last_collection_old_los_memory_usage);
-               SGEN_LOG (1, "After collection: %td bytes (%td major, %td LOS)",
-                               new_heap_size, new_major, last_collection_los_memory_usage);
-               SGEN_LOG (1, "Allowance: %td bytes", minor_collection_allowance);
+               SGEN_LOG (1, "Before collection: %ld bytes (%ld major, %ld LOS)",
+                                 (long)(old_major + last_collection_old_los_memory_usage), (long)old_major, (long)last_collection_old_los_memory_usage);
+               SGEN_LOG (1, "After collection: %ld bytes (%ld major, %ld LOS)",
+                                 (long)new_heap_size, (long)new_major, (long)last_collection_los_memory_usage);
+               SGEN_LOG (1, "Allowance: %ld bytes", (long)minor_collection_allowance);
        }
 
        if (major_collector.have_computed_minor_collection_allowance)
@@ -215,7 +215,7 @@ log_timming (GGTimingInfo *info)
        full_timing_buff [0] = '\0';
 
        if (!info->is_overflow)
-               sprintf (full_timing_buff, "total %.2fms, bridge %.2f", info->stw_time / 1000.0f, (int)info->bridge_time / 1000.0f);
+               sprintf (full_timing_buff, "total %.2fms, bridge %.2fms", info->stw_time / 1000.0f, (int)info->bridge_time / 1000.0f);
        if (info->generation == GENERATION_OLD)
                mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_GC, "GC_MAJOR%s: (%s) pause %.2fms, %s major %dK/%dK los %dK/%dK",
                        info->is_overflow ? "_OVERFLOW" : "",
index 7d625644f5c6c946bceb07e832518654595a7259..d16b2b778a6438932f2a4060eb6ebb5ab23b4782 100644 (file)
@@ -70,6 +70,7 @@
 #include "metadata/sgen-protocol.h"
 #include "metadata/sgen-archdep.h"
 #include "metadata/sgen-bridge.h"
+#include "metadata/sgen-memory-governor.h"
 #include "metadata/mono-gc.h"
 #include "metadata/method-builder.h"
 #include "metadata/profiler-private.h"
@@ -151,6 +152,8 @@ static AllocRecord *alloc_records;
 static volatile int next_record;
 static volatile int alloc_count;
 
+void dump_alloc_records (void);
+void verify_alloc_records (void);
 
 static const char*
 get_reason_name (AllocRecord *rec)
index 14290d373d682bcbd84eb3e69ade4960a5ef27e6..41d068b1e51512f87037b70cf0ea3057b9b4499b 100644 (file)
@@ -116,25 +116,15 @@ sgen_thread_handshake (BOOL suspend)
        int count = 0;
 
        FOREACH_THREAD_SAFE (info) {
-               if (info->joined_stw == suspend)
-                       continue;
-               info->joined_stw = suspend;
-
                if (info == cur_thread || sgen_is_worker_thread (mono_thread_info_get_tid (info)))
                        continue;
                if (info->gc_disabled)
                        continue;
 
                if (suspend) {
-                       g_assert (!info->doing_handshake);
-                       info->doing_handshake = TRUE;
-
                        if (!sgen_suspend_thread (info))
                                continue;
                } else {
-                       g_assert (info->doing_handshake);
-                       info->doing_handshake = FALSE;
-
                        ret = thread_resume (info->info.native_handle);
                        if (ret != KERN_SUCCESS)
                                continue;
index a3de37b0daaa5493d82e0f784c3fefa82e755af8..b0270c049c32d9ced53753665cec30d56835f639 100644 (file)
@@ -34,6 +34,7 @@
 #include "metadata/gc-internal.h"
 #include "metadata/sgen-archdep.h"
 #include "metadata/object-internals.h"
+#include "utils/mono-signal-handler.h"
 
 #if defined(__APPLE__) || defined(__OpenBSD__) || defined(__FreeBSD__)
 const static int suspend_signal_num = SIGXFSZ;
@@ -57,10 +58,9 @@ suspend_thread (SgenThreadInfo *info, void *context)
 #endif
        gpointer stack_start;
 
-       g_assert (info->doing_handshake);
-
        info->stopped_domain = mono_domain_get ();
        info->stopped_ip = context ? (gpointer) ARCH_SIGCTX_IP (context) : NULL;
+       info->signal = 0;
        stop_count = sgen_global_stop_count;
        /* duplicate signal */
        if (0 && info->stop_count == stop_count)
@@ -111,7 +111,7 @@ suspend_thread (SgenThreadInfo *info, void *context)
        do {
                info->signal = 0;
                sigsuspend (&suspend_signal_mask);
-       } while (info->signal != restart_signal_num && info->doing_handshake);
+       } while (info->signal != restart_signal_num);
 
        /* Unblock the restart signal. */
        pthread_sigmask (SIG_UNBLOCK, &suspend_ack_signal_mask, NULL);
@@ -122,49 +122,25 @@ suspend_thread (SgenThreadInfo *info, void *context)
 }
 
 /* LOCKING: assumes the GC lock is held (by the stopping thread) */
-static void
-suspend_handler (int sig, siginfo_t *siginfo, void *context)
+MONO_SIGNAL_HANDLER_FUNC (static, suspend_handler, (int sig, siginfo_t *siginfo, void *context))
 {
        SgenThreadInfo *info;
        int old_errno = errno;
 
        info = mono_thread_info_current ();
-
-       if (info) {
-               suspend_thread (info, context);
-       } else {
-               /* This can happen while a thread is dying */
-               //g_print ("no thread info in suspend\n");
-       }
+       suspend_thread (info, context);
 
        errno = old_errno;
 }
 
-static void
-restart_handler (int sig)
+MONO_SIGNAL_HANDLER_FUNC (static, restart_handler, (int sig))
 {
        SgenThreadInfo *info;
        int old_errno = errno;
 
        info = mono_thread_info_current ();
-       /*
-       If the thread info is null is means we're currently in the process of cleaning up,
-       the pthread destructor has already kicked in and it has explicitly invoked the suspend handler.
-       
-       This means this thread has been suspended, TLS is dead, so the only option we have is to
-       rely on pthread_self () and seatch over the thread list.
-       */
-       if (!info)
-               info = (SgenThreadInfo*)mono_thread_info_lookup (pthread_self ());
-
-       /*
-        * If a thread is dying there might be no thread info.  In
-        * that case we rely on info->doing_handshake.
-        */
-       if (info) {
-               info->signal = restart_signal_num;
-               SGEN_LOG (4, "Restart handler in %p %p", info, (gpointer)mono_native_thread_id_get ());
-       }
+       info->signal = restart_signal_num;
+       SGEN_LOG (4, "Restart handler in %p %p", info, (gpointer)mono_native_thread_id_get ());
        errno = old_errno;
 }
 
@@ -194,16 +170,6 @@ sgen_wait_for_suspend_ack (int count)
        }
 }
 
-gboolean
-sgen_park_current_thread_if_doing_handshake (SgenThreadInfo *p)
-{
-    if (!p->doing_handshake)
-           return FALSE;
-
-    suspend_thread (p, NULL);
-    return TRUE;
-}
-
 int
 sgen_thread_handshake (BOOL suspend)
 {
@@ -215,9 +181,6 @@ sgen_thread_handshake (BOOL suspend)
 
        count = 0;
        FOREACH_THREAD_SAFE (info) {
-               if (info->joined_stw == suspend)
-                       continue;
-               info->joined_stw = suspend;
                if (mono_native_thread_id_equals (mono_thread_info_get_tid (info), me)) {
                        continue;
                }
@@ -225,14 +188,7 @@ sgen_thread_handshake (BOOL suspend)
                        continue;
                /*if (signum == suspend_signal_num && info->stop_count == global_stop_count)
                        continue;*/
-               if (suspend) {
-                       g_assert (!info->doing_handshake);
-                       info->doing_handshake = TRUE;
-               } else {
-                       g_assert (info->doing_handshake);
-                       info->doing_handshake = FALSE;
-               }
-               result = pthread_kill (mono_thread_info_get_tid (info), signum);
+               result = mono_threads_pthread_kill (info, signum);
                if (result == 0) {
                        count++;
                } else {
@@ -242,6 +198,8 @@ sgen_thread_handshake (BOOL suspend)
 
        sgen_wait_for_suspend_ack (count);
 
+       SGEN_LOG (4, "%s handshake for %d threads\n", suspend ? "suspend" : "resume", count);
+
        return count;
 }
 
@@ -260,7 +218,7 @@ sgen_os_init (void)
                g_error ("failed sigaction");
        }
 
-       sinfo.sa_handler = restart_handler;
+       sinfo.sa_handler = (void*) restart_handler;
        if (sigaction (restart_signal_num, &sinfo, NULL) != 0) {
                g_error ("failed sigaction");
        }
old mode 100644 (file)
new mode 100755 (executable)
index a476c73..cf3ba9d
@@ -60,6 +60,17 @@ sgen_suspend_thread (SgenThreadInfo *info)
        info->stopped_ip = (gpointer)context.Eip;
        info->stack_start = (char*)context.Esp - REDZONE_SIZE;
 
+#ifdef USE_MONO_CTX
+       memset (&info->ctx, 0, sizeof (MonoContext));
+       info->ctx.edi = context.Edi;
+       info->ctx.esi = context.Esi;
+       info->ctx.ebx = context.Ebx;
+       info->ctx.edx = context.Edx;
+       info->ctx.ecx = context.Ecx;
+       info->ctx.eax = context.Eax;
+       info->ctx.ebp = context.Ebp;
+       info->ctx.esp = context.Esp;
+#else
        info->regs [0] = context.Edi;
        info->regs [1] = context.Esi;
        info->regs [2] = context.Ebx;
@@ -68,6 +79,7 @@ sgen_suspend_thread (SgenThreadInfo *info)
        info->regs [5] = context.Eax;
        info->regs [6] = context.Ebp;
        info->regs [7] = context.Esp;
+#endif
 
        /* Notify the JIT */
        if (mono_gc_get_gc_callbacks ()->thread_suspend_func)
@@ -90,23 +102,14 @@ sgen_thread_handshake (BOOL suspend)
        int count = 0;
 
        FOREACH_THREAD_SAFE (info) {
-               if (info->joined_stw == suspend)
-                       continue;
-               info->joined_stw = suspend;
                if (info == current)
                        continue;
                if (info->gc_disabled)
                        continue;
                if (suspend) {
-                       g_assert (!info->doing_handshake);
-                       info->doing_handshake = TRUE;
-
                        if (!sgen_suspend_thread (info))
                                continue;
                } else {
-                       g_assert (info->doing_handshake);
-                       info->doing_handshake = FALSE;
-
                        if (!sgen_resume_thread (info))
                                continue;
                }
index 51a9ccf3c9863f77f573a215829bc17ed64fada3..60feed2d372b96a3ccf7e1a6087e0d53b3e78868 100644 (file)
@@ -107,13 +107,8 @@ unlock_recursive (void)
 }
 
 static void
-binary_protocol_flush_buffers_rec (BinaryProtocolBuffer *buffer)
+binary_protocol_flush_buffer (BinaryProtocolBuffer *buffer)
 {
-       if (!buffer)
-               return;
-
-       binary_protocol_flush_buffers_rec (buffer->next);
-
        g_assert (buffer->index > 0);
        fwrite (buffer->buffer, 1, buffer->index, binary_protocol_file);
 
@@ -123,15 +118,30 @@ binary_protocol_flush_buffers_rec (BinaryProtocolBuffer *buffer)
 void
 binary_protocol_flush_buffers (gboolean force)
 {
+       int num_buffers = 0, i;
+       BinaryProtocolBuffer *buf;
+       BinaryProtocolBuffer **bufs;
+
        if (!binary_protocol_file)
                return;
 
        if (!force && !try_lock_exclusive ())
                return;
 
-       binary_protocol_flush_buffers_rec (binary_protocol_buffers);
+       for (buf = binary_protocol_buffers; buf != NULL; buf = buf->next)
+               ++num_buffers;
+       bufs = sgen_alloc_internal_dynamic (num_buffers * sizeof (BinaryProtocolBuffer*), INTERNAL_MEM_BINARY_PROTOCOL, TRUE);
+       for (buf = binary_protocol_buffers, i = 0; buf != NULL; buf = buf->next, i++)
+               bufs [i] = buf;
+       SGEN_ASSERT (0, i == num_buffers, "Binary protocol buffer count error");
+
        binary_protocol_buffers = NULL;
 
+       for (i = num_buffers - 1; i >= 0; --i)
+               binary_protocol_flush_buffer (bufs [i]);
+
+       sgen_free_internal_dynamic (buf, num_buffers * sizeof (BinaryProtocolBuffer*), INTERNAL_MEM_BINARY_PROTOCOL);
+
        if (!force)
                unlock_exclusive ();
 
@@ -368,12 +378,40 @@ binary_protocol_cement_reset (void)
 }
 
 void
-binary_protocol_dislink_update (gpointer link, gpointer obj, int track)
+binary_protocol_dislink_update (gpointer link, gpointer obj, int track, int staged)
 {
-       SGenProtocolDislinkUpdate entry = { link, obj, track };
+       SGenProtocolDislinkUpdate entry = { link, obj, track, staged };
        protocol_entry (SGEN_PROTOCOL_DISLINK_UPDATE, &entry, sizeof (SGenProtocolDislinkUpdate));
 }
 
+void
+binary_protocol_dislink_update_staged (gpointer link, gpointer obj, int track, int index)
+{
+       SGenProtocolDislinkUpdateStaged entry = { link, obj, track, index };
+       protocol_entry (SGEN_PROTOCOL_DISLINK_UPDATE_STAGED, &entry, sizeof (SGenProtocolDislinkUpdateStaged));
+}
+
+void
+binary_protocol_dislink_process_staged (gpointer link, gpointer obj, int index)
+{
+       SGenProtocolDislinkProcessStaged entry = { link, obj, index };
+       protocol_entry (SGEN_PROTOCOL_DISLINK_PROCESS_STAGED, &entry, sizeof (SGenProtocolDislinkProcessStaged));
+}
+
+void
+binary_protocol_domain_unload_begin (gpointer domain)
+{
+       SGenProtocolDomainUnload entry = { domain };
+       protocol_entry (SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN, &entry, sizeof (SGenProtocolDomainUnload));
+}
+
+void
+binary_protocol_domain_unload_end (gpointer domain)
+{
+       SGenProtocolDomainUnload entry = { domain };
+       protocol_entry (SGEN_PROTOCOL_DOMAIN_UNLOAD_END, &entry, sizeof (SGenProtocolDomainUnload));
+}
+
 #endif
 
 #endif /* HAVE_SGEN_GC */
index 7b9dff67965e2b53183f9a6d20cfd18dad3aafef..18355075cbf4c34c0ada8769957c4a88046ddfea 100644 (file)
@@ -49,7 +49,11 @@ enum {
        SGEN_PROTOCOL_CARD_SCAN,
        SGEN_PROTOCOL_CEMENT,
        SGEN_PROTOCOL_CEMENT_RESET,
-       SGEN_PROTOCOL_DISLINK_UPDATE
+       SGEN_PROTOCOL_DISLINK_UPDATE,
+       SGEN_PROTOCOL_DISLINK_UPDATE_STAGED,
+       SGEN_PROTOCOL_DISLINK_PROCESS_STAGED,
+       SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN,
+       SGEN_PROTOCOL_DOMAIN_UNLOAD_END
 };
 
 typedef struct {
@@ -167,8 +171,26 @@ typedef struct {
        gpointer link;
        gpointer obj;
        int track;
+       int staged;
 } SGenProtocolDislinkUpdate;
 
+typedef struct {
+       gpointer link;
+       gpointer obj;
+       int track;
+       int index;
+} SGenProtocolDislinkUpdateStaged;
+
+typedef struct {
+       gpointer link;
+       gpointer obj;
+       int index;
+} SGenProtocolDislinkProcessStaged;
+
+typedef struct {
+       gpointer domain;
+} SGenProtocolDomainUnload;
+
 /* missing: finalizers, dislinks, roots, non-store wbarriers */
 
 void binary_protocol_init (const char *filename) MONO_INTERNAL;
@@ -201,7 +223,11 @@ void binary_protocol_missing_remset (gpointer obj, gpointer obj_vtable, int offs
 void binary_protocol_card_scan (gpointer start, int size) MONO_INTERNAL;
 void binary_protocol_cement (gpointer ptr, gpointer vtable, int size) MONO_INTERNAL;
 void binary_protocol_cement_reset (void) MONO_INTERNAL;
-void binary_protocol_dislink_update (gpointer link, gpointer obj, int track) MONO_INTERNAL;
+void binary_protocol_dislink_update (gpointer link, gpointer obj, int track, int staged) MONO_INTERNAL;
+void binary_protocol_dislink_update_staged (gpointer link, gpointer obj, int track, int index) MONO_INTERNAL;
+void binary_protocol_dislink_process_staged (gpointer link, gpointer obj, int index) MONO_INTERNAL;
+void binary_protocol_domain_unload_begin (gpointer domain) MONO_INTERNAL;
+void binary_protocol_domain_unload_end (gpointer domain) MONO_INTERNAL;
 
 #else
 
@@ -232,6 +258,10 @@ void binary_protocol_dislink_update (gpointer link, gpointer obj, int track) MON
 #define binary_protocol_card_scan(start, size)
 #define binary_protocol_cement(ptr, vtable, size)
 #define binary_protocol_cement_reset()
-#define binary_protocol_dislink_update(link,obj,track)
+#define binary_protocol_dislink_update(link,obj,track,staged)
+#define binary_protocol_dislink_update_staged(link,obj,track,index)
+#define binary_protocol_dislink_process_staged(link,obj,index)
+#define binary_protocol_domain_unload_begin(domain)
+#define binary_protocol_domain_unload_end(domain)
 
 #endif
old mode 100644 (file)
new mode 100755 (executable)
index 92326a8..0f52505
@@ -58,7 +58,7 @@ static void
 update_current_thread_stack (void *start)
 {
        int stack_guard = 0;
-#ifndef USE_MONO_CTX
+#if !defined(USE_MONO_CTX)
        void *reg_ptr = cur_thread_regs;
 #endif
        SgenThreadInfo *info = mono_thread_info_current ();
@@ -91,11 +91,17 @@ is_ip_in_managed_allocator (MonoDomain *domain, gpointer ip)
                return FALSE;
        if (!sgen_has_critical_method ())
                return FALSE;
-       ji = mono_jit_info_table_find (domain, ip);
+
+       /*
+        * mono_jit_info_table_find is not async safe since it calls into the AOT runtime to load information for
+        * missing methods (#13951). To work around this, we disable the AOT fallback. For this to work, the JIT needs
+        * to register the jit info for all GC critical methods after they are JITted/loaded.
+        */
+       ji = mono_jit_info_table_find_internal (domain, ip, FALSE);
        if (!ji)
                return FALSE;
 
-       return sgen_is_critical_method (ji->method);
+       return sgen_is_critical_method (mono_jit_info_get_method (ji));
 }
 
 static int
@@ -111,9 +117,9 @@ restart_threads_until_none_in_managed_allocator (void)
                   allocator */
                FOREACH_THREAD_SAFE (info) {
                        gboolean result;
-                       if (info->skip || info->gc_disabled || !info->joined_stw)
+                       if (info->skip || info->gc_disabled)
                                continue;
-                       if (!info->thread_is_dying && (!info->stack_start || info->in_critical_region ||
+                       if (mono_thread_info_run_state (info) == STATE_RUNNING && (!info->stack_start || info->in_critical_region || info->info.inside_critical_region ||
                                        is_ip_in_managed_allocator (info->stopped_domain, info->stopped_ip))) {
                                binary_protocol_thread_restart ((gpointer)mono_thread_info_get_tid (info));
                                SGEN_LOG (3, "thread %p resumed.", (void*) (size_t) info->info.native_handle);
@@ -189,18 +195,6 @@ release_gc_locks (void)
        UNLOCK_INTERRUPTION;
 }
 
-static void
-stw_bridge_process (void)
-{
-       sgen_bridge_processing_stw_step ();
-}
-
-static void
-bridge_process (int generation)
-{
-       sgen_bridge_processing_finish (generation);
-}
-
 static TV_DECLARE (stop_world_time);
 static unsigned long max_pause_usec = 0;
 
@@ -233,6 +227,7 @@ sgen_stop_world (int generation)
        MONO_GC_WORLD_STOP_END ();
 
        sgen_memgov_collection_start (generation);
+       sgen_bridge_reset_data ();
 
        return count;
 }
@@ -248,6 +243,7 @@ sgen_restart_world (int generation, GGTimingInfo *timing)
        unsigned long usec, bridge_usec;
 
        /* notify the profiler of the leftovers */
+       /* FIXME this is the wrong spot at we can STW for non collection reasons. */
        if (G_UNLIKELY (mono_profiler_events & MONO_PROFILE_GC_MOVES))
                sgen_gc_event_moves ();
        mono_profiler_gc_event (MONO_GC_EVENT_PRE_START_WORLD, generation);
@@ -261,9 +257,6 @@ sgen_restart_world (int generation, GGTimingInfo *timing)
 #endif
        } END_FOREACH_THREAD
 
-       stw_bridge_process ();
-       release_gc_locks ();
-
        count = sgen_thread_handshake (FALSE);
        TV_GETTIME (end_sw);
        usec = TV_ELAPSED (stop_world_time, end_sw);
@@ -272,9 +265,21 @@ sgen_restart_world (int generation, GGTimingInfo *timing)
        mono_profiler_gc_event (MONO_GC_EVENT_POST_START_WORLD, generation);
        MONO_GC_WORLD_RESTART_END (generation);
 
+       /*
+        * We must release the thread info suspend lock after doing
+        * the thread handshake.  Otherwise, if the GC stops the world
+        * and a thread is in the process of starting up, but has not
+        * yet registered (it's not in the thread_list), it is
+        * possible that the thread does register while the world is
+        * stopped.  When restarting the GC will then try to restart
+        * said thread, but since it never got the suspend signal, it
+        * cannot answer the restart signal, so a deadlock results.
+        */
+       release_gc_locks ();
+
        mono_thread_hazardous_try_free_some ();
 
-       bridge_process (generation);
+       sgen_bridge_processing_finish (generation);
 
        TV_GETTIME (end_bridge);
        bridge_usec = TV_ELAPSED (end_sw, end_bridge);
index a05c177603555481b2b881c923ed355af6c59b6a..7407e9d70e05a50a826dbc191e42f21fc3b84776 100644 (file)
@@ -136,7 +136,7 @@ ensure_toggleref_capacity (int capacity)
                MonoGCToggleRef *tmp;
                int old_capacity = toggleref_array_capacity;
                while (toggleref_array_capacity < toggleref_array_size + capacity)
-                       toggleref_array_size *= 2;
+                       toggleref_array_capacity *= 2;
 
                tmp = sgen_alloc_internal_dynamic (
                        toggleref_array_capacity * sizeof (MonoGCToggleRef),
index 60cb7a527e474b06bef5b358721ec83d7b8d5e8c..6509d091a9401bc753bab6b2dd1b5cfcb591dc39 100644 (file)
@@ -26,7 +26,9 @@
 #include <errno.h>
 
 #include <sys/types.h>
-#ifndef HOST_WIN32 
+#ifdef HOST_WIN32
+#include <ws2tcpip.h>
+#else
 #include <sys/socket.h>
 #include <sys/ioctl.h>
 #include <netinet/in.h>
 #define AI_ADDRCONFIG 0
 #endif
 
+#ifdef __APPLE__
+/*
+ * We remove this until we have a Darwin implementation
+ * that can walk the result of struct ifconf.  The current
+ * implementation only works for Linux
+ */
+#undef HAVE_SIOCGIFCONF
+#endif
+
 static gint32 convert_family(MonoAddressFamily mono_family)
 {
        gint32 family=-1;
@@ -813,7 +824,8 @@ gint32 ves_icall_System_Net_Sockets_Socket_Available_internal(SOCKET sock,
        MONO_ARCH_SAVE_REGS;
 
        *error = 0;
-       
+
+       /* FIXME: this might require amount to be unsigned long. */
        ret=ioctlsocket(sock, FIONREAD, &amount);
        if(ret==SOCKET_ERROR) {
                *error = WSAGetLastError ();
@@ -1402,19 +1414,13 @@ extern void ves_icall_System_Net_Sockets_Socket_Disconnect_internal(SOCKET sock,
                 */
                _wapi_disconnectex = NULL;
 
-               /* Look up the TransmitFile extension function pointer
-                * instead of calling TransmitFile() directly, because
-                * apparently "Several of the extension functions have
-                * been available since WinSock 1.1 and are exported
-                * from MSWsock.dll, however it's not advisable to
-                * link directly to this dll as this ties you to the
-                * Microsoft WinSock provider. A provider neutral way
-                * of accessing these extension functions is to load
-                * them dynamically via WSAIoctl using the
-                * SIO_GET_EXTENSION_FUNCTION_POINTER op code. This
-                * should, theoretically, allow you to access these
-                * functions from any provider that supports them..." 
-                * (http://www.codeproject.com/internet/jbsocketserver3.asp)
+               /*
+                * Use the SIO_GET_EXTENSION_FUNCTION_POINTER to
+                * determine the address of the disconnect method without
+                * taking a hard dependency on a single provider
+                * 
+                * For an explanation of why this is done, you can read
+                * the article at http://www.codeproject.com/internet/jbsocketserver3.asp
                 */
                ret = WSAIoctl (sock, SIO_GET_EXTENSION_FUNCTION_POINTER,
                                (void *)&trans_guid, sizeof(GUID),
@@ -2326,7 +2332,7 @@ ves_icall_System_Net_Sockets_Socket_WSAIoctl (SOCKET sock, gint32 code,
 
        *error = 0;
        
-       if (code == FIONBIO) {
+       if ((guint32)code == FIONBIO) {
                /* Invalid command. Must use Socket.Blocking */
                return -1;
        }
@@ -3137,7 +3143,7 @@ extern MonoBoolean ves_icall_System_Net_Dns_GetHostByAddr_internal(MonoString *a
        struct sockaddr_in6 saddr6;
        struct addrinfo *info = NULL, hints;
        gint32 family;
-       char hostname[1024] = {0};
+       char hostname[NI_MAXHOST] = {0};
        int flags = 0;
 #else
        struct in_addr inaddr;
index 9a9e7a4cb345ac73cd88bce8d3ed4a273fd8d461..8710dafd661e8d26ac41f99ec451bd617400a474 100644 (file)
@@ -19,6 +19,7 @@
 #include <mono/metadata/threadpool-internals.h>
 #include <mono/metadata/exception.h>
 #include <mono/metadata/environment.h>
+#include <mono/metadata/mono-config.h>
 #include <mono/metadata/mono-mlist.h>
 #include <mono/metadata/mono-perfcounters.h>
 #include <mono/metadata/socket-io.h>
@@ -89,7 +90,7 @@ typedef struct {
 
        gint event_system;
        gpointer event_data;
-       void (*modify) (gpointer event_data, int fd, int operation, int events, gboolean is_new);
+       void (*modify) (gpointer p, int fd, int operation, int events, gboolean is_new);
        void (*wait) (gpointer sock_data);
        void (*shutdown) (gpointer event_data);
 } SocketIOData;
@@ -152,6 +153,7 @@ static void socket_io_cleanup (SocketIOData *data);
 static MonoObject *get_io_event (MonoMList **list, gint event);
 static int get_events_from_list (MonoMList *list);
 static int get_event_from_state (MonoSocketAsyncResult *state);
+static void check_for_interruption_critical (void);
 
 static MonoClass *async_call_klass;
 static MonoClass *socket_async_call_klass;
@@ -557,8 +559,8 @@ socket_io_add (MonoAsyncResult *ares, MonoSocketAsyncResult *state)
 
        mono_g_hash_table_replace (data->sock_to_state, state->handle, list);
        ievt = get_events_from_list (list);
-       LeaveCriticalSection (&data->io_lock);
-       data->modify (data->event_data, fd, state->operation, ievt, is_new);
+       /* The modify function leaves the io_lock critical section. */
+       data->modify (data, fd, state->operation, ievt, is_new);
 }
 
 #ifndef DISABLE_SOCKETS
@@ -601,6 +603,7 @@ mono_async_invoke (ThreadPool *tp, MonoAsyncResult *ares)
        MonoObject *res, *exc = NULL;
        MonoArray *out_args = NULL;
        HANDLE wait_event = NULL;
+       MonoInternalThread *thread = mono_thread_internal_current ();
 
        if (ares->execution_context) {
                /* use captured ExecutionContext (if available) */
@@ -613,7 +616,10 @@ mono_async_invoke (ThreadPool *tp, MonoAsyncResult *ares)
        if (ac == NULL) {
                /* Fast path from ThreadPool.*QueueUserWorkItem */
                void *pa = ares->async_state;
+               /* The debugger needs this */
+               thread->async_invoke_method = ((MonoDelegate*)ares->async_delegate)->method;
                res = mono_runtime_delegate_invoke (ares->async_delegate, &pa, &exc);
+               thread->async_invoke_method = NULL;
        } else {
                MonoObject *cb_exc = NULL;
 
@@ -636,7 +642,9 @@ mono_async_invoke (ThreadPool *tp, MonoAsyncResult *ares)
                if (ac != NULL && ac->cb_method) {
                        void *pa = &ares;
                        cb_exc = NULL;
+                       thread->async_invoke_method = ac->cb_method;
                        mono_runtime_invoke (ac->cb_method, ac->cb_target, pa, &cb_exc);
+                       thread->async_invoke_method = NULL;
                        exc = cb_exc;
                } else {
                        exc = NULL;
@@ -764,6 +772,7 @@ monitor_thread (gpointer unused)
        ves_icall_System_Threading_Thread_SetName_internal (thread, mono_string_new (mono_domain_get (), "Threadpool monitor"));
        while (1) {
                ms = 500;
+               i = 10; //number of spurious awakes we tolerate before doing a round of rebalancing.
                do {
                        guint32 ts;
                        ts = mono_msec_ticks ();
@@ -774,7 +783,7 @@ monitor_thread (gpointer unused)
                                break;
                        if (THREAD_WANTS_A_BREAK (thread))
                                mono_thread_interruption_checkpoint ();
-               } while (ms > 0);
+               } while (ms > 0 && i--);
 
                if (mono_runtime_is_shutting_down ())
                        break;
@@ -807,7 +816,13 @@ monitor_thread (gpointer unused)
 }
 
 void
-mono_thread_pool_init ()
+mono_thread_pool_init_tls (void)
+{
+       mono_wsq_init ();
+}
+
+void
+mono_thread_pool_init (void)
 {
        gint threads_per_cpu = 1;
        gint thread_count;
@@ -844,7 +859,6 @@ mono_thread_pool_init ()
 
        InitializeCriticalSection (&wsqs_lock);
        wsqs = g_ptr_array_sized_new (MAX (100 * cpu_count, thread_count));
-       mono_wsq_init ();
 
 #ifndef DISABLE_PERFCOUNTERS
        async_tp.pc_nitems = init_perf_counter ("Mono Threadpool", "Work Items Added");
@@ -1058,8 +1072,10 @@ threadpool_append_jobs (ThreadPool *tp, MonoObject **jobs, gint njobs)
                }
                /* Create on demand up to min_threads to avoid startup penalty for apps that don't use
                 * the threadpool that much
-               * mono_thread_create_internal (mono_get_root_domain (), threadpool_start_idle_threads, tp, TRUE, FALSE, SMALL_STACK);
-               */
+                */
+               if (mono_config_is_server_mode ()) {
+                       mono_thread_create_internal (mono_get_root_domain (), threadpool_start_idle_threads, tp, TRUE, FALSE, SMALL_STACK);
+               }
        }
 
        for (i = 0; i < njobs; i++) {
@@ -1088,10 +1104,13 @@ static void
 threadpool_clear_queue (ThreadPool *tp, MonoDomain *domain)
 {
        MonoObject *obj;
-       MonoMList *other;
+       MonoMList *other = NULL;
+       MonoCQ *queue = tp->queue;
 
-       other = NULL;
-       while (mono_cq_dequeue (tp->queue, &obj)) {
+       if (!queue)
+               return;
+
+       while (mono_cq_dequeue (queue, &obj)) {
                if (obj == NULL)
                        continue;
                if (obj->vtable->domain != domain)
@@ -1099,6 +1118,9 @@ threadpool_clear_queue (ThreadPool *tp, MonoDomain *domain)
                threadpool_jobs_dec (obj);
        }
 
+       if (mono_runtime_is_shutting_down ())
+               return;
+
        while (other) {
                threadpool_append_job (tp, (MonoObject *) mono_mlist_get_data (other));
                other = mono_mlist_next (other);
@@ -1373,26 +1395,63 @@ should_i_die (ThreadPool *tp)
        return result;
 }
 
+static void
+set_tp_thread_info (ThreadPool *tp)
+{
+       const gchar *name;
+       MonoInternalThread *thread = mono_thread_internal_current ();
+
+       mono_profiler_thread_start (thread->tid);
+       name = (tp->is_io) ? "IO Threadpool worker" : "Threadpool worker";
+       mono_thread_set_name_internal (thread, mono_string_new (mono_domain_get (), name), FALSE);
+}
+
+static void
+clear_thread_state (void)
+{
+       MonoInternalThread *thread = mono_thread_internal_current ();
+       /* If the callee changes the background status, set it back to TRUE */
+       mono_thread_clr_state (thread , ~ThreadState_Background);
+       if (!mono_thread_test_state (thread , ThreadState_Background))
+               ves_icall_System_Threading_Thread_SetState (thread, ThreadState_Background);
+}
+
+static void
+check_for_interruption_critical (void)
+{
+       MonoInternalThread *thread;
+       /*RULE NUMBER ONE OF SKIP_THREAD: NEVER POKE MANAGED STATE.*/
+       mono_gc_set_skip_thread (FALSE);
+
+       thread = mono_thread_internal_current ();
+       if (THREAD_WANTS_A_BREAK (thread))
+               mono_thread_interruption_checkpoint ();
+
+       /*RULE NUMBER TWO OF SKIP_THREAD: READ RULE NUMBER ONE.*/
+       mono_gc_set_skip_thread (TRUE);
+}
+
+static void
+fire_profiler_thread_end (void)
+{
+       MonoInternalThread *thread = mono_thread_internal_current ();
+       mono_profiler_thread_end (thread->tid);
+}
+
 static void
 async_invoke_thread (gpointer data)
 {
        MonoDomain *domain;
-       MonoInternalThread *thread;
        MonoWSQ *wsq;
        ThreadPool *tp;
        gboolean must_die;
-       const gchar *name;
   
        tp = data;
        wsq = NULL;
        if (!tp->is_io)
                wsq = add_wsq ();
 
-       thread = mono_thread_internal_current ();
-
-       mono_profiler_thread_start (thread->tid);
-       name = (tp->is_io) ? "IO Threadpool worker" : "Threadpool worker";
-       mono_thread_set_name_internal (thread, mono_string_new (mono_domain_get (), name), FALSE);
+       set_tp_thread_info (tp);
 
        if (tp_start_func)
                tp_start_func (tp_hooks_user_data);
@@ -1474,10 +1533,7 @@ async_invoke_thread (gpointer data)
                                }
                                mono_thread_pop_appdomain_ref ();
                                InterlockedDecrement (&tp->busy_threads);
-                               /* If the callee changes the background status, set it back to TRUE */
-                               mono_thread_clr_state (thread , ~ThreadState_Background);
-                               if (!mono_thread_test_state (thread , ThreadState_Background))
-                                       ves_icall_System_Threading_Thread_SetState (thread, ThreadState_Background);
+                               clear_thread_state ();
                        }
                }
 
@@ -1510,8 +1566,7 @@ async_invoke_thread (gpointer data)
 #endif
                                if (mono_runtime_is_shutting_down ())
                                        break;
-                               if (THREAD_WANTS_A_BREAK (thread))
-                                       mono_thread_interruption_checkpoint ();
+                               check_for_interruption_critical ();
                        }
                        InterlockedDecrement (&tp->waiting);
 
@@ -1548,7 +1603,7 @@ async_invoke_thread (gpointer data)
                                                remove_wsq (wsq);
                                        }
 
-                                       mono_profiler_thread_end (thread->tid);
+                                       fire_profiler_thread_end ();
 
                                        if (tp_finish_func)
                                                tp_finish_func (tp_hooks_user_data);
index 8bcb834af7491430a1a92c126879d885834e3b86..81cea4ce1d4949a0ada48859baefa11d61124ccb 100644 (file)
@@ -7,6 +7,7 @@
 
 /* No managed code here */
 void mono_thread_pool_init (void) MONO_INTERNAL;
+void mono_thread_pool_init_tls (void) MONO_INTERNAL;
 
 void icall_append_job (MonoObject *ar) MONO_INTERNAL;
 void icall_append_io_job (MonoObject *target, MonoSocketAsyncResult *state) MONO_INTERNAL;
@@ -46,10 +47,10 @@ ves_icall_System_Threading_ThreadPool_SetMaxThreads (gint workerThreads,
                                                                gint completionPortThreads) MONO_INTERNAL;
 
 typedef void  (*MonoThreadPoolFunc) (gpointer user_data);
-void mono_install_threadpool_thread_hooks (MonoThreadPoolFunc start_func, MonoThreadPoolFunc finish_func, gpointer user_data);
+MONO_API void mono_install_threadpool_thread_hooks (MonoThreadPoolFunc start_func, MonoThreadPoolFunc finish_func, gpointer user_data);
 
 typedef void  (*MonoThreadPoolItemFunc) (gpointer user_data);
-void mono_install_threadpool_item_hooks (MonoThreadPoolItemFunc begin_func, MonoThreadPoolItemFunc end_func, gpointer user_data);
+MONO_API void mono_install_threadpool_item_hooks (MonoThreadPoolItemFunc begin_func, MonoThreadPoolItemFunc end_func, gpointer user_data);
 
 #endif
 
index dc1eb41879fea4319aa30e23898c3c18578f66e0..cf567afba74d7bc7f1e64141f60d56584cbe48d6 100644 (file)
@@ -140,6 +140,7 @@ gint16 ves_icall_System_Threading_Thread_VolatileRead2 (void *ptr) MONO_INTERNAL
 gint32 ves_icall_System_Threading_Thread_VolatileRead4 (void *ptr) MONO_INTERNAL;
 gint64 ves_icall_System_Threading_Thread_VolatileRead8 (void *ptr) MONO_INTERNAL;
 void * ves_icall_System_Threading_Thread_VolatileReadIntPtr (void *ptr) MONO_INTERNAL;
+void * ves_icall_System_Threading_Thread_VolatileReadObject (void *ptr) MONO_INTERNAL;
 double ves_icall_System_Threading_Thread_VolatileReadDouble (void *ptr) MONO_INTERNAL;
 float ves_icall_System_Threading_Thread_VolatileReadFloat (void *ptr) MONO_INTERNAL;
 
@@ -148,11 +149,26 @@ void ves_icall_System_Threading_Thread_VolatileWrite2 (void *ptr, gint16) MONO_I
 void ves_icall_System_Threading_Thread_VolatileWrite4 (void *ptr, gint32) MONO_INTERNAL;
 void ves_icall_System_Threading_Thread_VolatileWrite8 (void *ptr, gint64) MONO_INTERNAL;
 void ves_icall_System_Threading_Thread_VolatileWriteIntPtr (void *ptr, void *) MONO_INTERNAL;
-void ves_icall_System_Threading_Thread_VolatileWriteObject (void *ptr, void *) MONO_INTERNAL;
+void ves_icall_System_Threading_Thread_VolatileWriteObject (void *ptr, MonoObject *) MONO_INTERNAL;
 void ves_icall_System_Threading_Thread_VolatileWriteFloat (void *ptr, float) MONO_INTERNAL;
 void ves_icall_System_Threading_Thread_VolatileWriteDouble (void *ptr, double) MONO_INTERNAL;
 
+gint8 ves_icall_System_Threading_Volatile_Read1 (void *ptr) MONO_INTERNAL;
+gint16 ves_icall_System_Threading_Volatile_Read2 (void *ptr) MONO_INTERNAL;
+gint32 ves_icall_System_Threading_Volatile_Read4 (void *ptr) MONO_INTERNAL;
+gint64 ves_icall_System_Threading_Volatile_Read8 (void *ptr) MONO_INTERNAL;
+void * ves_icall_System_Threading_Volatile_ReadIntPtr (void *ptr) MONO_INTERNAL;
+double ves_icall_System_Threading_Volatile_ReadDouble (void *ptr) MONO_INTERNAL;
+float ves_icall_System_Threading_Volatile_ReadFloat (void *ptr) MONO_INTERNAL;
 MonoObject* ves_icall_System_Threading_Volatile_Read_T (void *ptr) MONO_INTERNAL;
+
+void ves_icall_System_Threading_Volatile_Write1 (void *ptr, gint8) MONO_INTERNAL;
+void ves_icall_System_Threading_Volatile_Write2 (void *ptr, gint16) MONO_INTERNAL;
+void ves_icall_System_Threading_Volatile_Write4 (void *ptr, gint32) MONO_INTERNAL;
+void ves_icall_System_Threading_Volatile_Write8 (void *ptr, gint64) MONO_INTERNAL;
+void ves_icall_System_Threading_Volatile_WriteIntPtr (void *ptr, void *) MONO_INTERNAL;
+void ves_icall_System_Threading_Volatile_WriteFloat (void *ptr, float) MONO_INTERNAL;
+void ves_icall_System_Threading_Volatile_WriteDouble (void *ptr, double) MONO_INTERNAL;
 void ves_icall_System_Threading_Volatile_Write_T (void *ptr, MonoObject *value) MONO_INTERNAL;
 
 void ves_icall_System_Threading_Thread_MemoryBarrier (void) MONO_INTERNAL;
@@ -184,11 +200,10 @@ void mono_thread_init_apartment_state (void) MONO_INTERNAL;
 void mono_thread_cleanup_apartment_state (void) MONO_INTERNAL;
 
 void mono_threads_set_shutting_down (void) MONO_INTERNAL;
-gboolean mono_threads_is_shutting_down (void) MONO_INTERNAL;
 
 gunichar2* mono_thread_get_name (MonoInternalThread *this_obj, guint32 *name_len) MONO_INTERNAL;
 
-MonoException* mono_thread_get_undeniable_exception (void);
+MONO_API MonoException* mono_thread_get_undeniable_exception (void);
 
 MonoException* mono_thread_get_and_clear_pending_exception (void) MONO_INTERNAL;
 
@@ -226,5 +241,8 @@ gpointer mono_get_special_static_data_for_thread (MonoInternalThread *thread, gu
 
 MonoException* mono_thread_resume_interruption (void) MONO_INTERNAL;
 void mono_threads_perform_thread_dump (void) MONO_INTERNAL;
+MonoThread *mono_thread_attach_full (MonoDomain *domain, gboolean force_attach) MONO_INTERNAL;
+
+void mono_thread_init_tls (void) MONO_INTERNAL;
 
 #endif /* _MONO_METADATA_THREADS_TYPES_H_ */
old mode 100644 (file)
new mode 100755 (executable)
index 69088c2..210aebb
@@ -48,6 +48,7 @@
 #include <mono/utils/hazard-pointer.h>
 #include <mono/utils/mono-tls.h>
 #include <mono/utils/atomic.h>
+#include <mono/utils/mono-memory-model.h>
 
 #include <mono/metadata/gc-internal.h>
 
@@ -245,7 +246,7 @@ mono_thread_get_tls_offset (void)
  * If handle_store() returns FALSE the thread must not be started
  * because Mono is shutting down.
  */
-static gboolean handle_store(MonoThread *thread)
+static gboolean handle_store(MonoThread *thread, gboolean force_attach)
 {
        mono_threads_lock ();
 
@@ -254,7 +255,7 @@ static gboolean handle_store(MonoThread *thread)
        if (threads_starting_up)
                mono_g_hash_table_remove (threads_starting_up, thread);
 
-       if (shutting_down) {
+       if (shutting_down && !force_attach) {
                mono_threads_unlock ();
                return FALSE;
        }
@@ -794,7 +795,7 @@ mono_thread_create_internal (MonoDomain *domain, gpointer func, gpointer arg, gb
        if (threadpool_thread)
                mono_thread_set_state (internal, ThreadState_Background);
 
-       if (handle_store (thread))
+       if (handle_store (thread, FALSE))
                ResumeThread (thread_handle);
 
        /* Check that the managed and unmanaged layout of MonoInternalThread matches */
@@ -814,10 +815,12 @@ mono_thread_create (MonoDomain *domain, gpointer func, gpointer arg)
 static __inline__ __attribute__((always_inline))
 /* This is not defined by gcc */
 unsigned long long
-__readfsdword (unsigned long long offset)
+__readfsdword (unsigned long offset)
 {
-       unsigned long long value;
-       __asm__("movl %%fs:%a[offset], %k[value]" : [value] "=q" (value) : [offset] "irm" (offset));
+       unsigned long value;
+       //      __asm__("movl %%fs:%a[offset], %k[value]" : [value] "=q" (value) : [offset] "irm" (offset));
+   __asm__ volatile ("movl    %%fs:%1,%0"
+     : "=r" (value) ,"=m" ((*(volatile long *) offset)));
        return value;
 }
 #endif
@@ -831,16 +834,8 @@ __readfsdword (unsigned long long offset)
 void
 mono_thread_get_stack_bounds (guint8 **staddr, size_t *stsize)
 {
-#if defined(HAVE_PTHREAD_GET_STACKSIZE_NP) && defined(HAVE_PTHREAD_GET_STACKADDR_NP)
-       *staddr = (guint8*)pthread_get_stackaddr_np (pthread_self ());
-       *stsize = pthread_get_stacksize_np (pthread_self ());
-
-       /* staddr points to the start of the stack, not the end */
-       *staddr -= *stsize;
-       *staddr = (guint8*)((gssize)*staddr & ~(mono_pagesize () - 1));
-       return;
-       /* FIXME: simplify the mess below */
-#elif defined(HOST_WIN32)
+#if defined(HOST_WIN32)
+       /* Windows */
        /* http://en.wikipedia.org/wiki/Win32_Thread_Information_Block */
        void* tib = (void*)__readfsdword(0x18);
        guint8 *stackTop = (guint8*)*(int*)((char*)tib + 4);
@@ -849,7 +844,33 @@ mono_thread_get_stack_bounds (guint8 **staddr, size_t *stsize)
        *staddr = stackBottom;
        *stsize = stackTop - stackBottom;
        return;
-#else
+
+#elif defined(HAVE_PTHREAD_GET_STACKSIZE_NP) && defined(HAVE_PTHREAD_GET_STACKADDR_NP)
+       /* Mac OS X */
+       *staddr = (guint8*)pthread_get_stackaddr_np (pthread_self());
+       *stsize = pthread_get_stacksize_np (pthread_self());
+
+
+#ifdef TARGET_OSX
+       /*
+        * Mavericks reports stack sizes as 512kb:
+        * http://permalink.gmane.org/gmane.comp.java.openjdk.hotspot.devel/11590
+        * https://bugs.openjdk.java.net/browse/JDK-8020753
+        */
+       if (*stsize == 512 * 1024)
+               *stsize = 2048 * mono_pagesize ();
+#endif
+
+       /* staddr points to the start of the stack, not the end */
+       *staddr -= *stsize;
+
+       /* When running under emacs, sometimes staddr is not aligned to a page size */
+       *staddr = (guint8*)((gssize)*staddr & ~(mono_pagesize() - 1));
+       return;
+
+#elif (defined(HAVE_PTHREAD_GETATTR_NP) || defined(HAVE_PTHREAD_ATTR_GET_NP)) && defined(HAVE_PTHREAD_ATTR_GETSTACK)
+       /* Linux, BSD */
+
        pthread_attr_t attr;
        guint8 *current = (guint8*)&attr;
 
@@ -857,15 +878,41 @@ mono_thread_get_stack_bounds (guint8 **staddr, size_t *stsize)
        *stsize = (size_t)-1;
 
        pthread_attr_init (&attr);
-#  ifdef HAVE_PTHREAD_GETATTR_NP
+
+#if     defined(HAVE_PTHREAD_GETATTR_NP)
+       /* Linux */
        pthread_getattr_np (pthread_self(), &attr);
-#  else
-#    ifdef HAVE_PTHREAD_ATTR_GET_NP
+
+#elif   defined(HAVE_PTHREAD_ATTR_GET_NP)
+       /* BSD */
        pthread_attr_get_np (pthread_self(), &attr);
-#    elif defined(sun)
+
+#else
+#error         Cannot determine which API is needed to retrieve pthread attributes.
+#endif
+
+       pthread_attr_getstack (&attr, (void**)staddr, stsize);
+       pthread_attr_destroy (&attr);
+
+       if (*staddr)
+               g_assert ((current > *staddr) && (current < *staddr + *stsize));
+
+       /* When running under emacs, sometimes staddr is not aligned to a page size */
+       *staddr = (guint8*)((gssize)*staddr & ~(mono_pagesize () - 1));
+       return;
+
+#elif defined(__OpenBSD__)
+       /* OpenBSD */
+       /* TODO :   Determine if this code is actually still needed. It may already be covered by the case above. */
+
+       pthread_attr_t attr;
+       guint8 *current = (guint8*)&attr;
+
        *staddr = NULL;
-       pthread_attr_getstacksize (&attr, &stsize);
-#    elif defined(__OpenBSD__)
+       *stsize = (size_t)-1;
+
+       pthread_attr_init (&attr);
+
        stack_t ss;
        int rslt;
 
@@ -874,30 +921,43 @@ mono_thread_get_stack_bounds (guint8 **staddr, size_t *stsize)
 
        *staddr = (guint8*)((size_t)ss.ss_sp - ss.ss_size);
        *stsize = ss.ss_size;
-#    else
-       *staddr = NULL;
-       *stsize = 0;
-       return;
-#    endif
-#  endif
 
-#  if !defined(sun)
-#    if !defined(__OpenBSD__)
-       pthread_attr_getstack (&attr, (void**)staddr, stsize);
-#    endif
+       pthread_attr_destroy (&attr);
+
        if (*staddr)
                g_assert ((current > *staddr) && (current < *staddr + *stsize));
-#  endif
-
-       pthread_attr_destroy (&attr);
-#endif
 
        /* When running under emacs, sometimes staddr is not aligned to a page size */
        *staddr = (guint8*)((gssize)*staddr & ~(mono_pagesize () - 1));
-}      
+       return;
+
+#elif defined(sun) || defined(__native_client__)
+       /* Solaris/Illumos, NaCl */
+       pthread_attr_t attr;
+       pthread_attr_init (&attr);
+       pthread_attr_getstacksize (&attr, &stsize);
+       pthread_attr_destroy (&attr);
+       *staddr = NULL;
+       return;
+
+#else
+       /* FIXME:   It'd be better to use the 'error' preprocessor macro here so we know
+                   at compile-time if the target platform isn't supported. */
+#warning "Unable to determine how to retrieve a thread's stack-bounds for this platform in 'mono_thread_get_stack_bounds()'."
+       *staddr = NULL;
+       *stsize = 0;
+       return;
+#endif
+}
 
 MonoThread *
 mono_thread_attach (MonoDomain *domain)
+{
+       return mono_thread_attach_full (domain, FALSE);
+}
+
+MonoThread *
+mono_thread_attach_full (MonoDomain *domain, gboolean force_attach)
 {
        MonoThreadInfo *info;
        MonoInternalThread *thread;
@@ -955,7 +1015,7 @@ mono_thread_attach (MonoDomain *domain)
 
        current_thread = new_thread_with_internal (domain, thread);
 
-       if (!handle_store (current_thread)) {
+       if (!handle_store (current_thread, force_attach)) {
                /* Mono is shutting down, so just wait for the end */
                for (;;)
                        Sleep (10000);
@@ -1134,8 +1194,6 @@ HANDLE ves_icall_System_Threading_Thread_Thread_internal(MonoThread *this,
 
 void ves_icall_System_Threading_InternalThread_Thread_free_internal (MonoInternalThread *this, HANDLE thread)
 {
-       MONO_ARCH_SAVE_REGS;
-
        THREAD_DEBUG (g_message ("%s: Closing thread %p, handle %p", __func__, this, thread));
 
        if (thread)
@@ -1165,7 +1223,7 @@ static void mono_thread_start (MonoThread *thread)
         * launched, to avoid the main thread deadlocking while trying
         * to clean up a thread that will never be signalled.
         */
-       if (!handle_store (thread))
+       if (!handle_store (thread, FALSE))
                return;
 
        ResumeThread (internal->handle);
@@ -1225,8 +1283,6 @@ void ves_icall_System_Threading_Thread_SpinWait_nop (void)
 gint32
 ves_icall_System_Threading_Thread_GetDomainID (void) 
 {
-       MONO_ARCH_SAVE_REGS;
-
        return mono_domain_get()->domain_id;
 }
 
@@ -1592,8 +1648,6 @@ ves_icall_System_Threading_WaitHandle_SignalAndWait_Internal (HANDLE toSignal, H
        guint32 ret;
        MonoInternalThread *thread = mono_thread_internal_current ();
 
-       MONO_ARCH_SAVE_REGS;
-
        if (ms == -1)
                ms = INFINITE;
 
@@ -1612,8 +1666,6 @@ HANDLE ves_icall_System_Threading_Mutex_CreateMutex_internal (MonoBoolean owned,
 { 
        HANDLE mutex;
        
-       MONO_ARCH_SAVE_REGS;
-   
        *created = TRUE;
        
        if (name == NULL) {
@@ -1630,8 +1682,6 @@ HANDLE ves_icall_System_Threading_Mutex_CreateMutex_internal (MonoBoolean owned,
 }                                                                   
 
 MonoBoolean ves_icall_System_Threading_Mutex_ReleaseMutex_internal (HANDLE handle ) { 
-       MONO_ARCH_SAVE_REGS;
-
        return(ReleaseMutex (handle));
 }
 
@@ -1641,8 +1691,6 @@ HANDLE ves_icall_System_Threading_Mutex_OpenMutex_internal (MonoString *name,
 {
        HANDLE ret;
        
-       MONO_ARCH_SAVE_REGS;
-       
        *error = ERROR_SUCCESS;
        
        ret = OpenMutex (rights, FALSE, mono_string_chars (name));
@@ -1658,8 +1706,6 @@ HANDLE ves_icall_System_Threading_Semaphore_CreateSemaphore_internal (gint32 ini
 { 
        HANDLE sem;
        
-       MONO_ARCH_SAVE_REGS;
-   
        *created = TRUE;
        
        if (name == NULL) {
@@ -1680,8 +1726,6 @@ gint32 ves_icall_System_Threading_Semaphore_ReleaseSemaphore_internal (HANDLE ha
 { 
        gint32 prevcount;
        
-       MONO_ARCH_SAVE_REGS;
-
        *fail = !ReleaseSemaphore (handle, releaseCount, &prevcount);
 
        return (prevcount);
@@ -1691,8 +1735,6 @@ HANDLE ves_icall_System_Threading_Semaphore_OpenSemaphore_internal (MonoString *
 {
        HANDLE ret;
        
-       MONO_ARCH_SAVE_REGS;
-       
        *error = ERROR_SUCCESS;
        
        ret = OpenSemaphore (rights, FALSE, mono_string_chars (name));
@@ -1707,8 +1749,6 @@ HANDLE ves_icall_System_Threading_Events_CreateEvent_internal (MonoBoolean manua
 {
        HANDLE event;
        
-       MONO_ARCH_SAVE_REGS;
-
        *created = TRUE;
 
        if (name == NULL) {
@@ -1726,21 +1766,15 @@ HANDLE ves_icall_System_Threading_Events_CreateEvent_internal (MonoBoolean manua
 }
 
 gboolean ves_icall_System_Threading_Events_SetEvent_internal (HANDLE handle) {
-       MONO_ARCH_SAVE_REGS;
-
        return (SetEvent(handle));
 }
 
 gboolean ves_icall_System_Threading_Events_ResetEvent_internal (HANDLE handle) {
-       MONO_ARCH_SAVE_REGS;
-
        return (ResetEvent(handle));
 }
 
 void
 ves_icall_System_Threading_Events_CloseEvent_internal (HANDLE handle) {
-       MONO_ARCH_SAVE_REGS;
-
        CloseHandle (handle);
 }
 
@@ -1750,8 +1784,6 @@ HANDLE ves_icall_System_Threading_Events_OpenEvent_internal (MonoString *name,
 {
        HANDLE ret;
        
-       MONO_ARCH_SAVE_REGS;
-       
        *error = ERROR_SUCCESS;
        
        ret = OpenEvent (rights, FALSE, mono_string_chars (name));
@@ -1764,53 +1796,46 @@ HANDLE ves_icall_System_Threading_Events_OpenEvent_internal (MonoString *name,
 
 gint32 ves_icall_System_Threading_Interlocked_Increment_Int (gint32 *location)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return InterlockedIncrement (location);
 }
 
 gint64 ves_icall_System_Threading_Interlocked_Increment_Long (gint64 *location)
 {
-       gint64 ret;
-
-       MONO_ARCH_SAVE_REGS;
-
-       mono_interlocked_lock ();
-
-       ret = ++ *location;
-       
-       mono_interlocked_unlock ();
-
-       
-       return ret;
+#if SIZEOF_VOID_P == 4
+       if (G_UNLIKELY ((size_t)location & 0x7)) {
+               gint64 ret;
+               mono_interlocked_lock ();
+               (*location)++;
+               ret = *location;
+               mono_interlocked_unlock ();
+               return ret;
+       }
+#endif
+       return InterlockedIncrement64 (location);
 }
 
 gint32 ves_icall_System_Threading_Interlocked_Decrement_Int (gint32 *location)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return InterlockedDecrement(location);
 }
 
 gint64 ves_icall_System_Threading_Interlocked_Decrement_Long (gint64 * location)
 {
-       gint64 ret;
-
-       MONO_ARCH_SAVE_REGS;
-
-       mono_interlocked_lock ();
-
-       ret = -- *location;
-       
-       mono_interlocked_unlock ();
-
-       return ret;
+#if SIZEOF_VOID_P == 4
+       if (G_UNLIKELY ((size_t)location & 0x7)) {
+               gint64 ret;
+               mono_interlocked_lock ();
+               (*location)--;
+               ret = *location;
+               mono_interlocked_unlock ();
+               return ret;
+       }
+#endif
+       return InterlockedDecrement64 (location);
 }
 
 gint32 ves_icall_System_Threading_Interlocked_Exchange_Int (gint32 *location, gint32 value)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return InterlockedExchange(location, value);
 }
 
@@ -1831,8 +1856,6 @@ gfloat ves_icall_System_Threading_Interlocked_Exchange_Single (gfloat *location,
 {
        IntFloatUnion val, ret;
 
-       MONO_ARCH_SAVE_REGS;
-
        val.fval = value;
        ret.ival = InterlockedExchange((gint32 *) location, val.ival);
 
@@ -1842,54 +1865,32 @@ gfloat ves_icall_System_Threading_Interlocked_Exchange_Single (gfloat *location,
 gint64 
 ves_icall_System_Threading_Interlocked_Exchange_Long (gint64 *location, gint64 value)
 {
-#if SIZEOF_VOID_P == 8
-       return (gint64) InterlockedExchangePointer((gpointer *) location, (gpointer)value);
-#else
-       gint64 res;
-
-       /* 
-        * According to MSDN, this function is only atomic with regards to the 
-        * other Interlocked functions on 32 bit platforms.
-        */
-       mono_interlocked_lock ();
-       res = *location;
-       *location = value;
-       mono_interlocked_unlock ();
-
-       return res;
+#if SIZEOF_VOID_P == 4
+       if (G_UNLIKELY ((size_t)location & 0x7)) {
+               gint64 ret;
+               mono_interlocked_lock ();
+               ret = *location;
+               *location = value;
+               mono_interlocked_unlock ();
+               return ret;
+       }
 #endif
+       return InterlockedExchange64 (location, value);
 }
 
 gdouble 
 ves_icall_System_Threading_Interlocked_Exchange_Double (gdouble *location, gdouble value)
 {
-#if SIZEOF_VOID_P == 8
        LongDoubleUnion val, ret;
 
        val.fval = value;
-       ret.ival = (gint64)InterlockedExchangePointer((gpointer *) location, (gpointer)val.ival);
+       ret.ival = (gint64)InterlockedExchange64((gint64 *) location, val.ival);
 
        return ret.fval;
-#else
-       gdouble res;
-
-       /* 
-        * According to MSDN, this function is only atomic with regards to the 
-        * other Interlocked functions on 32 bit platforms.
-        */
-       mono_interlocked_lock ();
-       res = *location;
-       *location = value;
-       mono_interlocked_unlock ();
-
-       return res;
-#endif
 }
 
 gint32 ves_icall_System_Threading_Interlocked_CompareExchange_Int(gint32 *location, gint32 value, gint32 comparand)
 {
-       MONO_ARCH_SAVE_REGS;
-
        return InterlockedCompareExchange(location, value, comparand);
 }
 
@@ -1910,8 +1911,6 @@ gfloat ves_icall_System_Threading_Interlocked_CompareExchange_Single (gfloat *lo
 {
        IntFloatUnion val, ret, cmp;
 
-       MONO_ARCH_SAVE_REGS;
-
        val.fval = value;
        cmp.fval = comparand;
        ret.ival = InterlockedCompareExchange((gint32 *) location, val.ival, cmp.ival);
@@ -1946,19 +1945,18 @@ ves_icall_System_Threading_Interlocked_CompareExchange_Double (gdouble *location
 gint64 
 ves_icall_System_Threading_Interlocked_CompareExchange_Long (gint64 *location, gint64 value, gint64 comparand)
 {
-#if SIZEOF_VOID_P == 8
-       return (gint64)InterlockedCompareExchangePointer((gpointer *) location, (gpointer)value, (gpointer)comparand);
-#else
-       gint64 old;
-
-       mono_interlocked_lock ();
-       old = *location;
-       if (old == comparand)
-               *location = value;
-       mono_interlocked_unlock ();
-       
-       return old;
+#if SIZEOF_VOID_P == 4
+       if (G_UNLIKELY ((size_t)location & 0x7)) {
+               gint64 old;
+               mono_interlocked_lock ();
+               old = *location;
+               if (old == comparand)
+                       *location = value;
+               mono_interlocked_unlock ();
+               return old;
+       }
 #endif
+       return InterlockedCompareExchange64 (location, value, comparand);
 }
 
 MonoObject*
@@ -1982,63 +1980,44 @@ ves_icall_System_Threading_Interlocked_Exchange_T (MonoObject **location, MonoOb
 gint32 
 ves_icall_System_Threading_Interlocked_Add_Int (gint32 *location, gint32 value)
 {
-#if SIZEOF_VOID_P == 8
-       /* Should be implemented as a JIT intrinsic */
-       mono_raise_exception (mono_get_exception_not_implemented (NULL));
-       return 0;
-#else
-       gint32 orig;
-
-       mono_interlocked_lock ();
-       orig = *location;
-       *location = orig + value;
-       mono_interlocked_unlock ();
-
-       return orig + value;
-#endif
+       return InterlockedAdd (location, value);
 }
 
 gint64 
 ves_icall_System_Threading_Interlocked_Add_Long (gint64 *location, gint64 value)
 {
-#if SIZEOF_VOID_P == 8
-       /* Should be implemented as a JIT intrinsic */
-       mono_raise_exception (mono_get_exception_not_implemented (NULL));
-       return 0;
-#else
-       gint64 orig;
-
-       mono_interlocked_lock ();
-       orig = *location;
-       *location = orig + value;
-       mono_interlocked_unlock ();
-
-       return orig + value;
+#if SIZEOF_VOID_P == 4
+       if (G_UNLIKELY ((size_t)location & 0x7)) {
+               gint64 ret;
+               mono_interlocked_lock ();
+               *location += value;
+               ret = *location;
+               mono_interlocked_unlock ();
+               return ret;
+       }
 #endif
+       return InterlockedAdd64 (location, value);
 }
 
 gint64 
 ves_icall_System_Threading_Interlocked_Read_Long (gint64 *location)
 {
-#if SIZEOF_VOID_P == 8
-       /* 64 bit reads are already atomic */
-       return *location;
-#else
-       gint64 res;
-
-       mono_interlocked_lock ();
-       res = *location;
-       mono_interlocked_unlock ();
-
-       return res;
+#if SIZEOF_VOID_P == 4
+       if (G_UNLIKELY ((size_t)location & 0x7)) {
+               gint64 ret;
+               mono_interlocked_lock ();
+               ret = *location;
+               mono_interlocked_unlock ();
+               return ret;
+       }
 #endif
+       return InterlockedRead64 (location);
 }
 
 void
 ves_icall_System_Threading_Thread_MemoryBarrier (void)
 {
-       mono_threads_lock ();
-       mono_threads_unlock ();
+       mono_memory_barrier ();
 }
 
 void
@@ -2465,104 +2444,232 @@ void mono_thread_stop (MonoThread *thread)
 gint8
 ves_icall_System_Threading_Thread_VolatileRead1 (void *ptr)
 {
-       return *((volatile gint8 *) (ptr));
+       gint8 tmp;
+       mono_atomic_load_acquire (tmp, gint8, (volatile gint8 *) ptr);
+       return tmp;
 }
 
 gint16
 ves_icall_System_Threading_Thread_VolatileRead2 (void *ptr)
 {
-       return *((volatile gint16 *) (ptr));
+       gint16 tmp;
+       mono_atomic_load_acquire (tmp, gint16, (volatile gint16 *) ptr);
+       return tmp;
 }
 
 gint32
 ves_icall_System_Threading_Thread_VolatileRead4 (void *ptr)
 {
-       return *((volatile gint32 *) (ptr));
+       gint32 tmp;
+       mono_atomic_load_acquire (tmp, gint32, (volatile gint32 *) ptr);
+       return tmp;
 }
 
 gint64
 ves_icall_System_Threading_Thread_VolatileRead8 (void *ptr)
 {
-       return *((volatile gint64 *) (ptr));
+       gint64 tmp;
+       mono_atomic_load_acquire (tmp, gint64, (volatile gint64 *) ptr);
+       return tmp;
 }
 
 void *
 ves_icall_System_Threading_Thread_VolatileReadIntPtr (void *ptr)
 {
-       return (void *)  *((volatile void **) ptr);
+       volatile void *tmp;
+       mono_atomic_load_acquire (tmp, volatile void *, (volatile void **) ptr);
+       return (void *) tmp;
+}
+
+void *
+ves_icall_System_Threading_Thread_VolatileReadObject (void *ptr)
+{
+       volatile MonoObject *tmp;
+       mono_atomic_load_acquire (tmp, volatile MonoObject *, (volatile MonoObject **) ptr);
+       return (MonoObject *) tmp;
 }
 
 double
 ves_icall_System_Threading_Thread_VolatileReadDouble (void *ptr)
 {
-       return *((volatile double *) (ptr));
+       double tmp;
+       mono_atomic_load_acquire (tmp, double, (volatile double *) ptr);
+       return tmp;
 }
 
 float
 ves_icall_System_Threading_Thread_VolatileReadFloat (void *ptr)
 {
-       return *((volatile float *) (ptr));
+       float tmp;
+       mono_atomic_load_acquire (tmp, float, (volatile float *) ptr);
+       return tmp;
+}
+
+gint8
+ves_icall_System_Threading_Volatile_Read1 (void *ptr)
+{
+       return InterlockedRead8 (ptr);
+}
+
+gint16
+ves_icall_System_Threading_Volatile_Read2 (void *ptr)
+{
+       return InterlockedRead16 (ptr);
+}
+
+gint32
+ves_icall_System_Threading_Volatile_Read4 (void *ptr)
+{
+       return InterlockedRead (ptr);
+}
+
+gint64
+ves_icall_System_Threading_Volatile_Read8 (void *ptr)
+{
+       return InterlockedRead64 (ptr);
+}
+
+void *
+ves_icall_System_Threading_Volatile_ReadIntPtr (void *ptr)
+{
+       return InterlockedReadPointer (ptr);
+}
+
+double
+ves_icall_System_Threading_Volatile_ReadDouble (void *ptr)
+{
+       LongDoubleUnion u;
+
+       u.ival = InterlockedRead64 (ptr);
+
+       return u.fval;
+}
+
+float
+ves_icall_System_Threading_Volatile_ReadFloat (void *ptr)
+{
+       IntFloatUnion u;
+
+       u.ival = InterlockedRead (ptr);
+
+       return u.fval;
 }
 
 MonoObject*
 ves_icall_System_Threading_Volatile_Read_T (void *ptr)
 {
-       return (MonoObject*)*((volatile MonoObject**)ptr);
+       return InterlockedReadPointer (ptr);
 }
 
 void
 ves_icall_System_Threading_Thread_VolatileWrite1 (void *ptr, gint8 value)
 {
-       *((volatile gint8 *) ptr) = value;
+       mono_atomic_store_release ((volatile gint8 *) ptr, value);
 }
 
 void
 ves_icall_System_Threading_Thread_VolatileWrite2 (void *ptr, gint16 value)
 {
-       *((volatile gint16 *) ptr) = value;
+       mono_atomic_store_release ((volatile gint16 *) ptr, value);
 }
 
 void
 ves_icall_System_Threading_Thread_VolatileWrite4 (void *ptr, gint32 value)
 {
-       *((volatile gint32 *) ptr) = value;
+       mono_atomic_store_release ((volatile gint32 *) ptr, value);
 }
 
 void
 ves_icall_System_Threading_Thread_VolatileWrite8 (void *ptr, gint64 value)
 {
-       *((volatile gint64 *) ptr) = value;
+       mono_atomic_store_release ((volatile gint64 *) ptr, value);
 }
 
 void
 ves_icall_System_Threading_Thread_VolatileWriteIntPtr (void *ptr, void *value)
 {
-       *((volatile void **) ptr) = value;
+       mono_atomic_store_release ((volatile void **) ptr, value);
 }
 
 void
-ves_icall_System_Threading_Thread_VolatileWriteObject (void *ptr, void *value)
+ves_icall_System_Threading_Thread_VolatileWriteObject (void *ptr, MonoObject *value)
 {
-       mono_gc_wbarrier_generic_store (ptr, value);
+       mono_gc_wbarrier_generic_store_atomic (ptr, value);
 }
 
 void
 ves_icall_System_Threading_Thread_VolatileWriteDouble (void *ptr, double value)
 {
-       *((volatile double *) ptr) = value;
+       mono_atomic_store_release ((volatile double *) ptr, value);
 }
 
 void
 ves_icall_System_Threading_Thread_VolatileWriteFloat (void *ptr, float value)
 {
-       *((volatile float *) ptr) = value;
+       mono_atomic_store_release ((volatile float *) ptr, value);
+}
+
+void
+ves_icall_System_Threading_Volatile_Write1 (void *ptr, gint8 value)
+{
+       InterlockedWrite8 (ptr, value);
+}
+
+void
+ves_icall_System_Threading_Volatile_Write2 (void *ptr, gint16 value)
+{
+       InterlockedWrite16 (ptr, value);
+}
+
+void
+ves_icall_System_Threading_Volatile_Write4 (void *ptr, gint32 value)
+{
+       InterlockedWrite (ptr, value);
+}
+
+void
+ves_icall_System_Threading_Volatile_Write8 (void *ptr, gint64 value)
+{
+       InterlockedWrite64 (ptr, value);
+}
+
+void
+ves_icall_System_Threading_Volatile_WriteIntPtr (void *ptr, void *value)
+{
+       InterlockedWritePointer (ptr, value);
+}
+
+void
+ves_icall_System_Threading_Volatile_WriteDouble (void *ptr, double value)
+{
+       LongDoubleUnion u;
+
+       u.fval = value;
+
+       InterlockedWrite64 (ptr, u.ival);
+}
+
+void
+ves_icall_System_Threading_Volatile_WriteFloat (void *ptr, float value)
+{
+       IntFloatUnion u;
+
+       u.fval = value;
+
+       InterlockedWrite (ptr, u.ival);
 }
 
 void
 ves_icall_System_Threading_Volatile_Write_T (void *ptr, MonoObject *value)
 {
-       *((volatile MonoObject **) ptr) = value;
-       mono_gc_wbarrier_generic_nostore (ptr);
+       mono_gc_wbarrier_generic_store_atomic (ptr, value);
+}
+
+void
+mono_thread_init_tls (void)
+{
+       MONO_FAST_TLS_INIT (tls_current_object);
+       mono_native_tls_alloc (&current_object_key, NULL);
 }
 
 void mono_thread_init (MonoThreadStartCB start_cb,
@@ -2578,8 +2685,6 @@ void mono_thread_init (MonoThreadStartCB start_cb,
        mono_init_static_data_info (&thread_static_info);
        mono_init_static_data_info (&context_static_info);
 
-       MONO_FAST_TLS_INIT (tls_current_object);
-       mono_native_tls_alloc (&current_object_key, NULL);
        THREAD_DEBUG (g_message ("%s: Allocated current_object_key %d", __func__, current_object_key));
 
        mono_thread_start_cb = start_cb;
@@ -2889,21 +2994,6 @@ mono_threads_set_shutting_down (void)
        }
 }
 
-/** 
- * mono_threads_is_shutting_down:
- *
- * Returns whether a thread has commenced shutdown of Mono.  Note that
- * if the function returns FALSE the caller must not assume that
- * shutdown is not in progress, because the situation might have
- * changed since the function returned.  For that reason this function
- * is of very limited utility.
- */
-gboolean
-mono_threads_is_shutting_down (void)
-{
-       return shutting_down;
-}
-
 void mono_thread_manage (void)
 {
        struct wait_data wait_data;
@@ -2944,10 +3034,12 @@ void mono_thread_manage (void)
                THREAD_DEBUG (g_message ("%s: I have %d threads after waiting.", __func__, wait->num));
        } while(wait->num>0);
 
-       mono_runtime_shutdown ();
-
-       THREAD_DEBUG (g_message ("%s: threadpool cleanup", __func__));
-       mono_thread_pool_cleanup ();
+       /* Mono is shutting down, so just wait for the end */
+       if (!mono_runtime_try_shutdown ()) {
+               /*FIXME mono_thread_suspend probably should call mono_thread_execute_interruption when self interrupting. */
+               mono_thread_suspend (mono_thread_internal_current ());
+               mono_thread_execute_interruption (mono_thread_internal_current ());
+       }
 
        /* 
         * Remove everything but the finalizer thread and self.
@@ -3204,7 +3296,7 @@ print_stack_frame_to_string (MonoStackFrameInfo *frame, MonoContext *ctx, gpoint
        GString *p = (GString*)data;
        MonoMethod *method = NULL;
        if (frame->ji)
-               method = frame->ji->method;
+               method = mono_jit_info_get_method (frame->ji);
 
        if (method) {
                gchar *location = mono_debug_print_stack_frame (method, frame->native_offset, frame->domain);
@@ -3682,12 +3774,22 @@ mono_free_static_data (gpointer* static_data, gboolean threadlocal)
 {
        int i;
        for (i = 1; i < NUM_STATIC_DATA_IDX; ++i) {
-               if (!static_data [i])
+               gpointer p = static_data [i];
+               if (!p)
                        continue;
+               /*
+                * At this point, the static data pointer array is still registered with the
+                * GC, so must ensure that mark_tls_slots() will not encounter any invalid
+                * data.  Freeing the individual arrays without first nulling their slots
+                * would make it possible for mark_tls_slots() to encounter a pointer to
+                * such an already freed array.  See bug #13813.
+                */
+               static_data [i] = NULL;
+               mono_memory_write_barrier ();
                if (mono_gc_user_markers_supported () && threadlocal)
-                       g_free (static_data [i]);
+                       g_free (p);
                else
-                       mono_gc_free_fixed (static_data [i]);
+                       mono_gc_free_fixed (p);
        }
        mono_gc_free_fixed (static_data);
 }
@@ -4596,7 +4698,7 @@ abort_thread_internal (MonoInternalThread *thread, gboolean can_raise_exception,
        InterlockedIncrement (&thread_interruption_requested);
 
        ji = mono_thread_info_get_last_managed (info);
-       protected_wrapper = ji && mono_threads_is_critical_method (ji->method);
+       protected_wrapper = ji && mono_threads_is_critical_method (mono_jit_info_get_method (ji));
        running_managed = mono_jit_info_match (ji, MONO_CONTEXT_GET_IP (&info->suspend_state.ctx));
 
        if (!protected_wrapper && running_managed) {
@@ -4635,6 +4737,7 @@ transition_to_suspended (MonoInternalThread *thread)
        } else {
                thread->state &= ~ThreadState_SuspendRequested;
                thread->state |= ThreadState_Suspended;
+               mono_thread_info_finish_suspend ();
        }
        LeaveCriticalSection (thread->synch_cs);
 }
@@ -4664,7 +4767,7 @@ suspend_thread_internal (MonoInternalThread *thread, gboolean interrupt)
                }
 
                ji = mono_thread_info_get_last_managed (info);
-               protected_wrapper = ji && mono_threads_is_critical_method (ji->method);
+               protected_wrapper = ji && mono_threads_is_critical_method (mono_jit_info_get_method (ji));
                running_managed = mono_jit_info_match (ji, MONO_CONTEXT_GET_IP (&info->suspend_state.ctx));
 
                if (running_managed && !protected_wrapper) {
index 2678789b6e6c2cc7d4c1d873b1f3b85eb7efe779..ab3f6cba7ddaa36859279b8bb04c410388a35809 100644 (file)
@@ -20,33 +20,33 @@ MONO_BEGIN_DECLS
 /* This callback should return TRUE if the runtime must wait for the thread, FALSE otherwise */
 typedef mono_bool (*MonoThreadManageCallback) (MonoThread* thread);
 
-extern void mono_thread_init (MonoThreadStartCB start_cb,
+extern MONO_API void mono_thread_init (MonoThreadStartCB start_cb,
                              MonoThreadAttachCB attach_cb);
-extern void mono_thread_cleanup (void);
-extern void mono_thread_manage(void);
+extern MONO_API void mono_thread_cleanup (void);
+extern MONO_API void mono_thread_manage(void);
 
-extern MonoThread *mono_thread_current (void);
+extern MONO_API MonoThread *mono_thread_current (void);
 
-extern void        mono_thread_set_main (MonoThread *thread);
-extern MonoThread *mono_thread_get_main (void);
+extern MONO_API void        mono_thread_set_main (MonoThread *thread);
+extern MONO_API MonoThread *mono_thread_get_main (void);
 
-extern void mono_thread_stop (MonoThread *thread);
+extern MONO_API void mono_thread_stop (MonoThread *thread);
 
-extern void mono_thread_new_init (intptr_t tid, void* stack_start,
+extern MONO_API void mono_thread_new_init (intptr_t tid, void* stack_start,
                                  void* func);
-extern void mono_thread_create (MonoDomain *domain, void* func, void* arg);
-extern MonoThread *mono_thread_attach (MonoDomain *domain);
-extern void mono_thread_detach (MonoThread *thread);
-extern void mono_thread_exit (void);
+extern MONO_API void mono_thread_create (MonoDomain *domain, void* func, void* arg);
+extern MONO_API MonoThread *mono_thread_attach (MonoDomain *domain);
+extern MONO_API void mono_thread_detach (MonoThread *thread);
+extern MONO_API void mono_thread_exit (void);
 
-void     mono_thread_set_manage_callback (MonoThread *thread, MonoThreadManageCallback func);
+MONO_API void     mono_thread_set_manage_callback (MonoThread *thread, MonoThreadManageCallback func);
 
-extern void mono_threads_set_default_stacksize (uint32_t stacksize);
-extern uint32_t mono_threads_get_default_stacksize (void);
+extern MONO_API void mono_threads_set_default_stacksize (uint32_t stacksize);
+extern MONO_API uint32_t mono_threads_get_default_stacksize (void);
 
-void mono_threads_request_thread_dump (void);
+MONO_API void mono_threads_request_thread_dump (void);
 
-mono_bool mono_thread_is_foreign (MonoThread *thread);
+MONO_API mono_bool mono_thread_is_foreign (MonoThread *thread);
 
 MONO_END_DECLS
 
index a82afefadf1521df3f9763cb665dd299681d8fd9..876a82bc07bff45490a716f78bce24876feff78f 100644 (file)
@@ -15,7 +15,7 @@ struct _tp_epoll_data {
 };
 
 typedef struct _tp_epoll_data tp_epoll_data;
-static void tp_epoll_modify (gpointer event_data, int fd, int operation, int events, gboolean is_new);
+static void tp_epoll_modify (gpointer p, int fd, int operation, int events, gboolean is_new);
 static void tp_epoll_shutdown (gpointer event_data);
 static void tp_epoll_wait (gpointer event_data);
 
@@ -51,12 +51,16 @@ tp_epoll_init (SocketIOData *data)
 }
 
 static void
-tp_epoll_modify (gpointer event_data, int fd, int operation, int events, gboolean is_new)
+tp_epoll_modify (gpointer p, int fd, int operation, int events, gboolean is_new)
 {
-       tp_epoll_data *data = event_data;
+       SocketIOData *socket_io_data;
+       tp_epoll_data *data;
        struct epoll_event evt;
        int epoll_op;
 
+       socket_io_data = p;
+       data = socket_io_data->event_data;
+
        memset (&evt, 0, sizeof (evt));
        evt.data.fd = fd;
        if ((events & MONO_POLLIN) != 0)
@@ -74,6 +78,7 @@ tp_epoll_modify (gpointer event_data, int fd, int operation, int events, gboolea
                        }
                }
        }
+       LeaveCriticalSection (&socket_io_data->io_lock);
 }
 
 static void
@@ -92,7 +97,6 @@ tp_epoll_wait (gpointer p)
 {
        SocketIOData *socket_io_data;
        int epollfd;
-       MonoInternalThread *thread;
        struct epoll_event *events, *evt;
        int ready = 0, i;
        gpointer async_results [EPOLL_NEVENTS * 2]; // * 2 because each loop can add up to 2 results here
@@ -102,7 +106,6 @@ tp_epoll_wait (gpointer p)
        socket_io_data = p;
        data = socket_io_data->event_data;
        epollfd = data->epollfd;
-       thread = mono_thread_internal_current ();
        events = g_new0 (struct epoll_event, EPOLL_NEVENTS);
 
        while (1) {
@@ -110,8 +113,7 @@ tp_epoll_wait (gpointer p)
 
                do {
                        if (ready == -1) {
-                               if (THREAD_WANTS_A_BREAK (thread))
-                                       mono_thread_interruption_checkpoint ();
+                               check_for_interruption_critical ();
                        }
                        ready = epoll_wait (epollfd, events, EPOLL_NEVENTS, -1);
                } while (ready == -1 && errno == EINTR);
index 22d21a37a7bdebb59340cb1f967d1f16b9043d67..75f12f266c8cccfe607bbb65bd0c09b82dc22a35 100644 (file)
@@ -12,7 +12,7 @@ struct _tp_kqueue_data {
 };
 
 typedef struct _tp_kqueue_data tp_kqueue_data;
-static void tp_kqueue_modify (gpointer event_data, int fd, int operation, int events, gboolean is_new);
+static void tp_kqueue_modify (gpointer p, int fd, int operation, int events, gboolean is_new);
 static void tp_kqueue_shutdown (gpointer event_data);
 static void tp_kqueue_wait (gpointer event_data);
 
@@ -42,9 +42,11 @@ kevent_change (int kfd, struct kevent *evt, const char *error_str)
 }
 
 static void
-tp_kqueue_modify (gpointer event_data, int fd, int operation, int events, gboolean is_new)
+tp_kqueue_modify (gpointer p, int fd, int operation, int events, gboolean is_new)
 {
-       tp_kqueue_data *data = event_data;
+       SocketIOData *socket_io_data;
+       socket_io_data = p;
+       tp_kqueue_data *data = socket_io_data->event_data;
        struct kevent evt;
 
        memset (&evt, 0, sizeof (evt));
@@ -57,6 +59,7 @@ tp_kqueue_modify (gpointer event_data, int fd, int operation, int events, gboole
                EV_SET (&evt, fd, EVFILT_WRITE, EV_ADD | EV_ENABLE | EV_ONESHOT, 0, 0, 0);
                kevent_change (data->fd, &evt, "ADD write");
        }
+       LeaveCriticalSection (&socket_io_data->io_lock);
 }
 
 static void
@@ -74,7 +77,6 @@ tp_kqueue_wait (gpointer p)
 {
        SocketIOData *socket_io_data;
        int kfd;
-       MonoInternalThread *thread;
        struct kevent *events, *evt;
        int ready = 0, i;
        gpointer async_results [KQUEUE_NEVENTS * 2]; // * 2 because each loop can add up to 2 results here
@@ -84,7 +86,6 @@ tp_kqueue_wait (gpointer p)
        socket_io_data = p;
        data = socket_io_data->event_data;
        kfd = data->fd;
-       thread = mono_thread_internal_current ();
        events = g_new0 (struct kevent, KQUEUE_NEVENTS);
 
        while (1) {
@@ -93,8 +94,7 @@ tp_kqueue_wait (gpointer p)
 
                do {
                        if (ready == -1) {
-                               if (THREAD_WANTS_A_BREAK (thread))
-                                       mono_thread_interruption_checkpoint ();
+                               check_for_interruption_critical ();
                        }
                        ready = kevent (kfd, NULL, 0, events, KQUEUE_NEVENTS, NULL);
                } while (ready == -1 && errno == EINTR);
index e03eca5248cc4c4a0f36bb374064bf2eebab1258..e44e338598837532e6bd5d3e80f4c54dd67efbf3 100644 (file)
@@ -19,7 +19,7 @@ struct _tp_poll_data {
 typedef struct _tp_poll_data tp_poll_data;
 
 static void tp_poll_shutdown (gpointer event_data);
-static void tp_poll_modify (gpointer event_data, int fd, int operation, int events, gboolean is_new);
+static void tp_poll_modify (gpointer p, int fd, int operation, int events, gboolean is_new);
 static void tp_poll_wait (gpointer p);
 
 static gpointer
@@ -74,12 +74,18 @@ tp_poll_init (SocketIOData *data)
 }
 
 static void
-tp_poll_modify (gpointer event_data, int fd, int operation, int events, gboolean is_new)
+tp_poll_modify (gpointer p, int fd, int operation, int events, gboolean is_new)
 {
-       tp_poll_data *data = event_data;
+       SocketIOData *socket_io_data;
+       tp_poll_data *data;
        char msg [1];
        int unused;
 
+       socket_io_data = p;
+       data = socket_io_data->event_data;
+
+       LeaveCriticalSection (&socket_io_data->io_lock);
+       
        MONO_SEM_WAIT (&data->new_sem);
        INIT_POLLFD (&data->newpfd, GPOINTER_TO_INT (fd), events);
        *msg = (char) operation;
@@ -150,14 +156,11 @@ tp_poll_wait (gpointer p)
        gint maxfd = 1;
        gint allocated;
        gint i;
-       MonoInternalThread *thread;
        tp_poll_data *data;
        SocketIOData *socket_io_data = p;
        MonoPtrArray async_results;
        gint nresults;
 
-       thread = mono_thread_internal_current ();
-
        data = socket_io_data->event_data;
        allocated = INITIAL_POLLFD_SIZE;
        pfds = g_new0 (mono_pollfd, allocated);
@@ -177,8 +180,7 @@ tp_poll_wait (gpointer p)
 
                do {
                        if (nsock == -1) {
-                               if (THREAD_WANTS_A_BREAK (thread))
-                                       mono_thread_interruption_checkpoint ();
+                               check_for_interruption_critical ();
                        }
 
                        nsock = mono_poll (pfds, maxfd, -1);
index a7f92a970909d4d34b0e6e490d9dc4de4ca4782e..3c29b116e4c5522eb4a9176455a8c10ee2d8a9c2 100644 (file)
@@ -869,7 +869,7 @@ mono_type_is_valid_in_context (VerifyContext *ctx, MonoType *type)
        if (!is_valid_type_in_context (ctx, type)) {
                char *str = mono_type_full_name (type);
                ADD_VERIFY_ERROR2 (ctx, g_strdup_printf ("Invalid generic type (%s%s) (argument out of range or %s is not generic) at 0x%04x",
-                       type->type == MONO_TYPE_VAR ? "!" : "!!",
+                       str [0] == '!' ? "" : type->type == MONO_TYPE_VAR ? "!" : "!!",
                        str,
                        type->type == MONO_TYPE_VAR ? "class" : "method",
                        ctx->ip_offset),
@@ -2088,6 +2088,28 @@ get_icollection_class (void)
                return generic_icollection_class;
 }
 
+static MonoClass*
+get_ireadonlylist_class (void)
+{
+       static MonoClass* generic_ireadonlylist_class = NULL;
+
+       if (generic_ireadonlylist_class == NULL)
+               generic_ireadonlylist_class = mono_class_from_name (mono_defaults.corlib,
+                       "System.Collections.Generic", "IReadOnlyList`1");
+       return generic_ireadonlylist_class;
+}
+
+static MonoClass*
+get_ireadonlycollection_class (void)
+{
+       static MonoClass* generic_ireadonlycollection_class = NULL;
+
+       if (generic_ireadonlycollection_class == NULL)
+               generic_ireadonlycollection_class = mono_class_from_name (mono_defaults.corlib,
+                       "System.Collections.Generic", "IReadOnlyCollection`1");
+       return generic_ireadonlycollection_class;
+}
+
 static MonoClass*
 inflate_class_one_arg (MonoClass *gtype, MonoClass *arg0)
 {
@@ -2128,6 +2150,10 @@ verifier_class_is_assignable_from (MonoClass *target, MonoClass *candidate)
                                        return TRUE;
                                if (verifier_inflate_and_check_compat (target, get_ienumerable_class (), candidate->element_class))
                                        return TRUE;
+                               if (verifier_inflate_and_check_compat (target, get_ireadonlylist_class (), candidate->element_class))
+                                       return TRUE;
+                               if (verifier_inflate_and_check_compat (target, get_ireadonlycollection_class (), candidate->element_class))
+                                       return TRUE;
                        } else {
                                MonoError error;
                                int i;
@@ -4503,7 +4529,7 @@ static void
 merge_stacks (VerifyContext *ctx, ILCodeDesc *from, ILCodeDesc *to, gboolean start, gboolean external) 
 {
        MonoError error;
-       int i, j, k;
+       int i, j;
        stack_init (ctx, to);
 
        if (start) {
@@ -4593,15 +4619,6 @@ merge_stacks (VerifyContext *ctx, ILCodeDesc *from, ILCodeDesc *to, gboolean sta
                                goto end_verify;
                        }
 
-                       for (j = 0; j < old_class->interface_count; ++j) {
-                               for (k = 0; k < new_class->interface_count; ++k) {
-                                       if (mono_metadata_type_equal (&old_class->interfaces [j]->byval_arg, &new_class->interfaces [k]->byval_arg)) {
-                                               match_class = old_class->interfaces [j];
-                                               goto match_found;
-                                       }
-                               }
-                       }
-
                        /* if old class is an interface that new class implements */
                        if (old_class->flags & TYPE_ATTRIBUTE_INTERFACE) {
                                if (verifier_class_is_assignable_from (old_class, new_class)) {
@@ -4961,7 +4978,9 @@ mono_method_verify (MonoMethod *method, int level)
                                ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Catch clause %d with invalid type", i));
                                break;
                        }
-               
+                       if (!mono_type_is_valid_in_context (&ctx, &clause->data.catch_class->byval_arg))
+                               break;
+
                        init_stack_with_value_at_exception_boundary (&ctx, ctx.code + clause->handler_offset, clause->data.catch_class);
                }
                else if (clause->flags == MONO_EXCEPTION_CLAUSE_FILTER) {
@@ -4970,6 +4989,9 @@ mono_method_verify (MonoMethod *method, int level)
                }
        }
 
+       if (!ctx.valid)
+               goto cleanup;
+
        original_bb = bb = mono_basic_block_split (method, &error);
        if (!mono_error_ok (&error)) {
                ADD_VERIFY_ERROR (&ctx, g_strdup_printf ("Invalid branch target: %s", mono_error_get_message (&error)));
index dd81fe49a8127b6de3dd8a6106479243da58cef9..75f52c6628f35dcb0f44d9340eb1c971996b373a 100644 (file)
@@ -52,9 +52,9 @@ typedef struct {
 } MonoVerifyInfoExtended;
 
 
-GSList* mono_method_verify       (MonoMethod *method, int level);
-void    mono_free_verify_list    (GSList *list);
-char*   mono_verify_corlib       (void);
+MONO_API GSList* mono_method_verify       (MonoMethod *method, int level);
+MONO_API void    mono_free_verify_list    (GSList *list);
+MONO_API char*   mono_verify_corlib       (void);
 
 MONO_END_DECLS
 
index 5bf87e135579ae307cdac5a3fcd0e844e40c7be2..6d694bc2957dfc692be3108bf3c3aeb5b2c53528 100644 (file)
 /inssel.c
 /inssel.h
 /mini.pc
-/cpu-pentium.h
-/cpu-g4.h
-/cpu-amd64.h
+/cpu-*.h
 /mono
 /monow
-/cpu-sparc.h
-/cpu-s390.h
-/cpu-x86.h
 /.hidden
 /semantic.cache
 /.project
@@ -33,5 +28,6 @@
 /buildver.h
 /TAGS
 /mono-sgen
+/mono-boehm
 /buildver-sgen.h
-
+/buildver-boehm.h
old mode 100644 (file)
new mode 100755 (executable)
index 4cbf423..a515b11
@@ -24,14 +24,6 @@ sgen_libs = \
        $(monodir)/mono/utils/libmonoutils.la \
        $(GLIB_LIBS) $(LIBICONV)
 
-if MOONLIGHT
-moon_libs = \
-       $(monodir)/mono/metadata/libmonoruntimemoon.la  \
-       $(monodir)/mono/io-layer/libwapi.la     \
-       $(monodir)/mono/utils/libmonoutils.la \
-       $(GLIB_LIBS) $(LIBICONV)
-endif
-
 static_libs=   \
        $(monodir)/mono/metadata/libmonoruntime-static.la       \
        $(monodir)/mono/io-layer/libwapi.la     \
@@ -47,7 +39,7 @@ sgenstatic_libs = \
 
 CLASS=$(mcs_topdir)/class/lib/net_4_5
 
-RUNTIME_EXECUTABLE = $(if $(SGEN),$(top_builddir)/mono/mini/mono-sgen,$(top_builddir)/runtime/mono-wrapper)
+RUNTIME_EXECUTABLE = $(if $(BOEHM),$(top_builddir)/mono/mini/mono-boehm,$(top_builddir)/runtime/mono-wrapper)
 
 RUNTIME = MONO_PATH=$(CLASS) $(RUNTIME_EXECUTABLE)
 RUNTIME_AOTCHECK = MONO_PATH=$(CLASS):. $(RUNTIME_EXECUTABLE)
@@ -75,16 +67,20 @@ genmdesc_CFLAGS = $(AM_CFLAGS)
 
 if NO_VERSION_SCRIPT
 monoldflags=$(export_ldflags)
-monobinldflags=$(export_ldflags)
+monobinldflags=$(export_ldflags) $(extra_runtime_ldflags)
 else
 monoldflags=-Wl,-version-script=$(srcdir)/ldscript $(export_ldflags)
-monobinldflags=-Wl,-version-script=$(srcdir)/ldscript.mono $(export_ldflags)
+monobinldflags=-Wl,-version-script=$(srcdir)/ldscript.mono $(export_ldflags) $(extra_runtime_ldflags)
 endif
 
 if HOST_WIN32
-libmono_2_0_la_LDFLAGS=-no-undefined -avoid-version -Wl,--kill-at $(monoldflags)
+libmonoldflags=-no-undefined -avoid-version -Wl,--kill-at $(monoldflags)
+else
+if PLATFORM_ANDROID
+libmonoldflags= -avoid-version $(monoldflags)
 else
-libmono_2_0_la_LDFLAGS=$(monoldflags) -version-info 1:0:0
+libmonoldflags=$(monoldflags) -version-info 1:0:0
+endif
 endif
 
 if JIT_SUPPORTED
@@ -96,9 +92,30 @@ sgen_static_libraries = libmini-static.la $(sgenstatic_libs)
 endif
 
 if SUPPORT_BOEHM
-boehm_libraries = libmono-2.0.la
+boehm_libraries = libmonoboehm-2.0.la
 boehm_static_libraries = libmini-static.la $(static_libs)
-boehm_binaries  = mono
+boehm_binaries  = mono-boehm
+endif
+
+#The mono uses sgen, while libmono remains boehm
+if SUPPORT_SGEN
+mono_bin_suffix = sgen
+else
+mono_bin_suffix = boehm
+endif
+libmono_suffix = boehm
+
+if DISABLE_EXECUTABLES
+else
+mono: mono-$(mono_bin_suffix)
+       ln -sf $< $@
+
+mono.exe: mono-$(mono_bin_suffix).exe
+       ln -sf $< $@
+
+install-exec-hook:
+       (cd $(DESTDIR)$(bindir) && ln -sf mono-$(mono_bin_suffix) mono)
+       (cd $(DESTDIR)$(libdir); for i in libmono$(libmono_suffix)*; do ln -sf $$i `echo $$i | sed s/$(libmono_suffix)//` ; done)
 endif
 
 if DISABLE_EXECUTABLES
@@ -110,7 +127,11 @@ bin_PROGRAMS = $(boehm_binaries) $(sgen_binaries)
 endif
 endif
 
+if DISABLE_EXECUTABLES
 noinst_PROGRAMS = genmdesc
+else
+noinst_PROGRAMS = genmdesc mono
+endif
 
 if DISABLE_EXECUTABLES
 shared_libraries = $(boehm_libraries) $(sgen_libraries)
@@ -134,14 +155,6 @@ else
 noinst_LTLIBRARIES = $(mini_common_lib) libmini-static.la
 endif
 
-if MOONLIGHT
-noinst_LTLIBRARIES += libmono-moon.la
-moon-do-build: $(BUILT_SOURCES) mono libmono-moon.la
-moon-do-clean: maintainer-clean-generic
-       -test -z "mono$(EXEEXT)" || rm -f mono$(EXEEXT)
-       -test -z "libmono-moon.la" || rm -f libmono-moon.la
-endif
-
 if LOADED_LLVM
 lib_LTLIBRARIES += libmono-llvm.la
 libmono_llvm_la_SOURCES = mini-llvm.c mini-llvm-cpp.cpp
@@ -155,27 +168,42 @@ endif
 
 endif
 
-mono_SOURCES = \
+mono_boehm_SOURCES = \
        main.c
 
 mono_CFLAGS = $(AM_CFLAGS)
 
+mono_boehm_CFLAGS = $(AM_CFLAGS)
+
 AM_CPPFLAGS = $(LIBGC_CPPFLAGS)
 
-mono_sgen_SOURCES = $(mono_SOURCES)
+mono_sgen_SOURCES = \
+       main-sgen.c
+
+mono_SOURCES = \
+       main-sgen.c
+
 mono_sgen_CFLAGS = $(AM_CFLAGS)
 
 # We build this after libmono was built so it contains the date when the final
 # link was done
 if SUPPORT_BOEHM
-buildver.h: libmini-static.la
-       @echo "const char *build_date = \"`date`\";" > buildver.h
-mono-main.$(OBJEXT): buildver.h
+if DISABLE_EXECUTABLES
+buildver-boehm.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntime.la
+else
+buildver-boehm.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntime-static.la
+endif
+       @echo "const char *build_date = \"`date`\";" > buildver-boehm.h
+mono_boehm-main.$(OBJEXT): buildver-boehm.h
 endif
 
-buildver-sgen.h: libmini-static.la
+if DISABLE_EXECUTABLES
+buildver-sgen.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntimesgen.la
+else
+buildver-sgen.h: libmini-static.la $(monodir)/mono/metadata/libmonoruntimesgen-static.la
+endif
        @echo "const char *build_date = \"`date`\";" > buildver-sgen.h
-mono_sgen-main.$(OBJEXT): buildver-sgen.h
+mono_sgen-main-sgen.$(OBJEXT): buildver-sgen.h
 
 if DTRACE_G_REQUIRED
 LIBMONO_DTRACE_OBJECT = .libs/mono-dtrace.$(OBJEXT)
@@ -195,7 +223,7 @@ if STATIC_MONO
 MONO_LIB=$(boehm_static_libraries)
 MONO_SGEN_LIB=$(sgen_static_libraries)
 else 
-MONO_LIB=libmono-2.0.la
+MONO_LIB=libmonoboehm-2.0.la
 MONO_SGEN_LIB=libmonosgen-2.0.la
 endif
 
@@ -205,7 +233,7 @@ else
 LLVMMONOF=$(LLVM_LIBS) $(LLVM_LDFLAGS)
 endif
 
-mono_LDADD = \
+mono_boehm_LDADD = \
        $(MONO_LIB)             \
        $(GLIB_LIBS)            \
        $(LLVMMONOF)            \
@@ -213,7 +241,7 @@ mono_LDADD = \
        -lm                     \
        $(MONO_DTRACE_OBJECT)
 
-mono_LDFLAGS = \
+mono_boehm_LDFLAGS = \
        $(static_flags) -export-dynamic $(monobinldflags) $(monobin_platform_ldflags)
 
 mono_sgen_LDADD = \
@@ -226,6 +254,14 @@ mono_sgen_LDADD = \
 
 mono_sgen_LDFLAGS = $(static_flags) -export-dynamic $(monobinldflags) $(monobin_platform_ldflags)
 
+# if SUPPORT_SGEN
+# 
+# mono_LDADD = $(mono_sgen_LDADD)
+# mono_LDFLAGS = $(mono_sgen_LDFLAGS)
+# 
+# endif
+
+
 if DTRACE_G_REQUIRED
 
 mono-dtrace.$(OBJEXT): $(top_srcdir)/data/mono.d mini.lo $(monodir)/mono/metadata/libmonoruntime-static.la
@@ -240,9 +276,9 @@ endif
 
 # Create monow.exe, linked for the 'windows' subsystem
 if HOST_WIN32
-monow_LDADD = $(mono_LDADD)
-monow_LDFLAGS = $(mono_LDFLAGS) -mwindows
-monow_SOURCES = $(mono_SOURCES)
+monow_LDADD = $(mono_boehm_LDADD)
+monow_LDFLAGS = $(mono_boehm_LDFLAGS) -mwindows
+monow_SOURCES = $(mono_boehm_SOURCES)
 endif
 
 genmdesc_SOURCES = \
@@ -385,7 +421,8 @@ common_sources = \
        debug-debugger.h        \
        xdebug.c                        \
        mini-llvm.h                     \
-       mini-llvm-cpp.h
+       mini-llvm-cpp.h \
+       alias-analysis.c
 
 test_sources =                         \
        basic-calls.cs          \
@@ -457,7 +494,7 @@ arch_define=__mips__
 endif
 
 if ARM
-# pick up arm_dpimacros.h and arm_fpamacros.h
+# pick up arm_dpimacros.h
 ARCH_CFLAGS = -I../arch/arm
 arch_sources = $(arm_sources)
 arch_built=cpu-arm.h
@@ -476,7 +513,7 @@ arch_built=cpu-sparc.h
 arch_define=__sparc__
 endif
 
-if S390x
+if S390X
 arch_sources = $(s390x_sources)
 arch_built=cpu-s390x.h
 arch_define=__s390__
@@ -507,28 +544,15 @@ endif
 libmini_la_SOURCES = $(common_sources) $(llvm_sources) $(arch_sources) $(os_sources)
 libmini_la_CFLAGS = $(mono_CFLAGS)
 
-libmono_2_0_la_SOURCES =
-libmono_2_0_la_CFLAGS = $(mono_CFLAGS)
-libmono_2_0_la_LIBADD = libmini.la $(libs) $(LIBMONO_DTRACE_OBJECT)
+libmonoboehm_2_0_la_SOURCES =
+libmonoboehm_2_0_la_CFLAGS = $(mono_boehm_CFLAGS)
+libmonoboehm_2_0_la_LIBADD = libmini.la $(libs) $(LIBMONO_DTRACE_OBJECT)
+libmonoboehm_2_0_la_LDFLAGS = $(libmonoldflags)
 
 libmonosgen_2_0_la_SOURCES =
 libmonosgen_2_0_la_CFLAGS = $(mono_sgen_CFLAGS)
 libmonosgen_2_0_la_LIBADD = libmini.la $(sgen_libs) $(LIBMONO_DTRACE_OBJECT)
-
-if PLATFORM_ANDROID
-libmonosgen_2_0_la_LDFLAGS = -avoid-version
-endif
-
-if MOONLIGHT
-libmono_moon_la_SOURCES = $(libmini_la_SOURCES)
-if MOONLIGHT_BOEHM
-libmono_moon_la_CFLAGS = $(mono_CFLAGS) $(MOONLIGHT_DEFINES)
-libmono_moon_la_LIBADD = $(moon_libs) $(libgc_libs) $(LIBMONO_DTRACE_OBJECT)
-else
-libmono_moon_la_CFLAGS = $(mono_sgen_CFLAGS) $(MOONLIGHT_DEFINES)
-libmono_moon_la_LIBADD = $(moon_libs) $(LIBMONO_DTRACE_OBJECT)
-endif
-endif
+libmonosgen_2_0_la_LDFLAGS = $(libmonoldflags)
 
 #
 # This library is shared between mono and mono-sgen, since the code in mini/ doesn't contain
@@ -691,7 +715,7 @@ docu: mini.sgm
 check-local: rcheck
 
 clean-local:
-       rm -f mono a.out gmon.out *.o buildver.h buildver-sgen.h test.exe
+       rm -f mono a.out gmon.out *.o buildver-boehm.h buildver-sgen.h test.exe
 
 pkgconfigdir = $(libdir)/pkgconfig
 
@@ -741,3 +765,9 @@ patch-automake:
 
 tags:
        etags -o TAGS `find .. -name "*.h" -o -name "*.c"`
+
+if HAS_EXTENSION_MODULE
+else
+Makefile.am: Makefile.am.in
+       cp $< $@
+endif
index 8a9349d293d1467718f93e1796c44f2b8c005307..843f7c3b77d1943bdaae9e9a4eb8caf4e553aae3 100644 (file)
@@ -989,8 +989,8 @@ remove_abc_from_inst (MonoInst *ins, MonoVariableRelationsEvaluationArea *area)
                if (REPORT_ABC_REMOVAL) {
                        printf ("ARRAY-ACCESS: removed bounds check on array %d with index %d\n",
                                        array_variable, index_variable);
-                       NULLIFY_INS (ins);
                }
+               NULLIFY_INS (ins);
        } else {
                if (TRACE_ABC_REMOVAL) {
                        if (index_context->ranges.zero.lower >= 0) {
diff --git a/mono/mini/alias-analysis.c b/mono/mini/alias-analysis.c
new file mode 100644 (file)
index 0000000..ef16442
--- /dev/null
@@ -0,0 +1,335 @@
+/*
+ * alias-analysis.c: Implement simple alias analysis for local variables.
+ *
+ * Author:
+ *   Rodrigo Kumpera (kumpera@gmail.com)
+ *
+ * (C) 2013 Xamarin
+ */
+
+#include <config.h>
+#include <stdio.h>
+
+#include "mini.h"
+#include "ir-emit.h"
+#include "glib.h"
+
+static gboolean
+is_int_stack_size (int type)
+{
+#if SIZEOF_VOID_P == 4
+       return type == STACK_I4 || type == STACK_MP;
+#else
+       return type == STACK_I4;
+#endif
+}
+
+static gboolean
+is_long_stack_size (int type)
+{
+#if SIZEOF_VOID_P == 8
+       return type == STACK_I8 || type == STACK_MP;
+#else
+       return type == STACK_I8;
+#endif
+}
+
+
+static gboolean
+lower_load (MonoCompile *cfg, MonoInst *load, MonoInst *ldaddr)
+{
+       MonoInst *var = ldaddr->inst_p0;
+       MonoType *type = &var->klass->byval_arg;
+       int replaced_op = mono_type_to_load_membase (cfg, type);
+
+       if (load->opcode == OP_LOADV_MEMBASE && load->klass != var->klass) {
+               if (cfg->verbose_level > 2)
+                       printf ("Incompatible load_vtype classes %s x %s\n", load->klass->name, var->klass->name);
+               return FALSE;
+       }
+
+       if (replaced_op != load->opcode) {
+               if (cfg->verbose_level > 2) 
+                       printf ("Incompatible load type: expected %s but got %s\n", 
+                               mono_inst_name (replaced_op),
+                               mono_inst_name (load->opcode));
+               return FALSE;
+       } else {
+               if (cfg->verbose_level > 2) { printf ("mem2reg replacing: "); mono_print_ins (load); }
+       }
+
+       load->opcode = mono_type_to_regmove (cfg, type);
+       type_to_eval_stack_type (cfg, type, load);
+       load->sreg1 = var->dreg;
+       mono_jit_stats.loads_eliminated++;
+       return TRUE;
+}
+
+static gboolean
+lower_store (MonoCompile *cfg, MonoInst *store, MonoInst *ldaddr)
+{
+       MonoInst *var = ldaddr->inst_p0;
+       MonoType *type = &var->klass->byval_arg;
+       int replaced_op = mono_type_to_store_membase (cfg, type);
+
+       if (store->opcode == OP_STOREV_MEMBASE && store->klass != var->klass) {
+               if (cfg->verbose_level > 2)
+                       printf ("Incompatible store_vtype classes %s x %s\n", store->klass->name, store->klass->name);
+               return FALSE;
+       }
+
+
+       if (replaced_op != store->opcode) {
+               if (cfg->verbose_level > 2) 
+                       printf ("Incompatible store_reg type: expected %s but got %s\n", 
+                               mono_inst_name (replaced_op),
+                               mono_inst_name (store->opcode));
+               return FALSE;
+       } else {
+               if (cfg->verbose_level > 2) { printf ("mem2reg replacing: "); mono_print_ins (store); }
+       }
+
+       store->opcode = mono_type_to_regmove (cfg, type);
+       type_to_eval_stack_type (cfg, type, store);
+       store->dreg = var->dreg;
+       mono_jit_stats.stores_eliminated++;
+       return TRUE;
+}
+
+static gboolean
+lower_store_imm (MonoCompile *cfg, MonoInst *store, MonoInst *ldaddr)
+{
+       MonoInst *var = ldaddr->inst_p0;
+       MonoType *type = &var->klass->byval_arg;
+       int store_op = mono_type_to_store_membase (cfg, type);
+       if (store_op == OP_STOREV_MEMBASE || store_op == OP_STOREX_MEMBASE)
+               return FALSE;
+
+       switch (store->opcode) {
+#if SIZEOF_VOID_P == 4
+       case OP_STORE_MEMBASE_IMM:
+#endif
+       case OP_STOREI4_MEMBASE_IMM:
+               if (!is_int_stack_size (var->type)) {
+                       if (cfg->verbose_level > 2) printf ("Incompatible variable of size != 4\n");
+                       return FALSE;
+               }
+               if (cfg->verbose_level > 2) { printf ("mem2reg replacing: "); mono_print_ins (store); }
+               store->opcode = OP_ICONST;
+               store->type = STACK_I4;
+               store->dreg = var->dreg;
+               store->inst_c0 = store->inst_imm;
+               break;
+
+#if SIZEOF_VOID_P == 8
+       case OP_STORE_MEMBASE_IMM:
+#endif    
+       case OP_STOREI8_MEMBASE_IMM:
+               if (!is_long_stack_size (var->type)) {
+                       if (cfg->verbose_level > 2) printf ("Incompatible variable of size != 8\n");
+                       return FALSE;
+               }
+               if (cfg->verbose_level > 2) { printf ("mem2reg replacing: "); mono_print_ins (store); }
+               store->opcode = OP_I8CONST;
+               store->type = STACK_I8;
+               store->dreg = var->dreg;
+               store->inst_l = store->inst_imm;
+               break;
+       default:
+               return FALSE;
+       }
+       mono_jit_stats.stores_eliminated++;     
+       return TRUE;
+}
+
+static gboolean
+lower_memory_access (MonoCompile *cfg)
+{
+       MonoBasicBlock *bb;
+       MonoInst *ins, *tmp;
+       gboolean needs_dce = FALSE;
+       GHashTable *addr_loads = g_hash_table_new (NULL, NULL);
+       //FIXME optimize
+       for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
+               g_hash_table_remove_all (addr_loads);
+
+               for (ins = bb->code; ins; ins = ins->next) {
+                       switch (ins->opcode) {
+                       case OP_LDADDR:
+                               g_hash_table_insert (addr_loads, GINT_TO_POINTER (ins->dreg), ins);
+                               if (cfg->verbose_level > 2) { printf ("New address: "); mono_print_ins (ins); }
+                               break;
+                       case OP_MOVE:
+                               tmp = (MonoInst*)g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->sreg1));
+                               /*
+                               Forward propagate known aliases
+                               ldaddr R10 <- R8
+                               mov R11 <- R10
+                               */
+                               if (tmp) {
+                                       g_hash_table_insert (addr_loads, GINT_TO_POINTER (ins->dreg), tmp);
+                                       if (cfg->verbose_level > 2) { printf ("New alias: "); mono_print_ins (ins); }
+                               } else {
+                                       /*
+                                       Source value is not a know address, kill the variable.
+                                       */
+                                       if (g_hash_table_remove (addr_loads, GINT_TO_POINTER (ins->dreg))) {
+                                               if (cfg->verbose_level > 2) { printf ("Killed alias: "); mono_print_ins (ins); }
+                                       }
+                               }
+                               break;
+
+                       case OP_LOADV_MEMBASE:
+                       case OP_LOAD_MEMBASE:
+                       case OP_LOADU1_MEMBASE:
+                       case OP_LOADI2_MEMBASE:
+                       case OP_LOADU2_MEMBASE:
+                       case OP_LOADI4_MEMBASE:
+                       case OP_LOADU4_MEMBASE:
+                       case OP_LOADI1_MEMBASE:
+                       case OP_LOADI8_MEMBASE:
+                       case OP_LOADR4_MEMBASE:
+                       case OP_LOADR8_MEMBASE:
+                               if (ins->inst_offset != 0)
+                                       continue;
+                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->sreg1));
+                               if (tmp) {
+                                       if (cfg->verbose_level > 2) { printf ("Found candidate load:"); mono_print_ins (ins); }
+                                       needs_dce |= lower_load (cfg, ins, tmp);
+                               }
+                               break;
+
+                       case OP_STORE_MEMBASE_REG:
+                       case OP_STOREI1_MEMBASE_REG:
+                       case OP_STOREI2_MEMBASE_REG:
+                       case OP_STOREI4_MEMBASE_REG:
+                       case OP_STOREI8_MEMBASE_REG:
+                       case OP_STORER4_MEMBASE_REG:
+                       case OP_STORER8_MEMBASE_REG:
+                       case OP_STOREV_MEMBASE:
+                               if (ins->inst_offset != 0)
+                                       continue;
+                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->dreg));
+                               if (tmp) {
+                                       if (cfg->verbose_level > 2) { printf ("Found candidate store:"); mono_print_ins (ins); }
+                                       needs_dce |= lower_store (cfg, ins, tmp);
+                               }
+                               break;
+
+                       case OP_STORE_MEMBASE_IMM:
+                       case OP_STOREI4_MEMBASE_IMM:
+                       case OP_STOREI8_MEMBASE_IMM:
+                               if (ins->inst_offset != 0)
+                                       continue;
+                               tmp = g_hash_table_lookup (addr_loads, GINT_TO_POINTER (ins->dreg));
+                               if (tmp) {
+                                       if (cfg->verbose_level > 2) { printf ("Found candidate store-imm:"); mono_print_ins (ins); }
+                                       needs_dce |= lower_store_imm (cfg, ins, tmp);
+                               }
+                               break;
+                       }
+               }
+       }
+       g_hash_table_destroy (addr_loads);
+       return needs_dce;
+}
+
+static gboolean
+recompute_aliased_variables (MonoCompile *cfg)
+{
+       int i;
+       MonoBasicBlock *bb;
+       MonoInst *ins;
+       int kills = 0;
+       int adds = 0;
+
+       for (i = 0; i < cfg->num_varinfo; i++) {
+               MonoInst *var = cfg->varinfo [i];
+               if (var->flags & MONO_INST_INDIRECT) {
+                       if (cfg->verbose_level > 2) {
+                               printf ("Killing :"); mono_print_ins (var);
+                       }
+                       ++kills;
+               }
+               var->flags &= ~MONO_INST_INDIRECT;
+       }
+
+       if (!kills)
+               return FALSE;
+
+       for (bb = cfg->bb_entry; bb; bb = bb->next_bb) {
+               for (ins = bb->code; ins; ins = ins->next) {
+                       if (ins->opcode == OP_LDADDR) {
+                               MonoInst *var;
+
+                               if (cfg->verbose_level > 2) { printf ("Found op :"); mono_print_ins (ins); }
+
+                               var = (MonoInst*)ins->inst_p0;
+                               if (!(var->flags & MONO_INST_INDIRECT)) {
+                                       if (cfg->verbose_level) { printf ("Restoring :"); mono_print_ins (var); }
+                                       ++adds;
+                               }
+                               var->flags |= MONO_INST_INDIRECT;
+                       }
+               }
+       }
+       
+       mono_jit_stats.alias_found += kills;
+       mono_jit_stats.alias_removed += kills - adds;
+       if (kills > adds) {
+               if (cfg->verbose_level > 2) {
+                       printf ("Method: %s\n", mono_method_full_name (cfg->method, 1));
+                       printf ("Kills %d Adds %d\n", kills, adds);
+               }
+               return TRUE;
+       }
+       return FALSE;
+}
+
+/*
+FIXME:
+       Don't DCE on the whole CFG, only the BBs that have changed.
+
+TODO:
+       SRVT of small types can fix cases of mismatch for fields of a different type than the component.
+       Handle aliasing of byrefs in call conventions.
+*/
+void
+mono_local_alias_analysis (MonoCompile *cfg)
+{
+       if (!cfg->has_indirection)
+               return;
+
+       if (cfg->verbose_level > 2)
+               mono_print_code (cfg, "BEFORE ALIAS_ANALYSIS");
+
+       /*
+       Remove indirection and memory access of known variables.
+       */
+       if (!lower_memory_access (cfg))
+               goto done;
+
+       /*
+       By replacing indirect access with direct operations, some LDADDR ops become dead. Kill them.
+       */
+       if (cfg->opt & MONO_OPT_DEADCE)
+               mono_local_deadce (cfg);
+
+       /*
+       Some variables no longer need to be flagged as indirect, find them.
+       */
+       if (!recompute_aliased_variables (cfg))
+               goto done;
+
+       /*
+       A lot of simplification just took place, we recompute local variables and do DCE to
+       really profit from the previous gains
+       */
+       mono_handle_global_vregs (cfg);
+       if (cfg->opt & MONO_OPT_DEADCE)
+               mono_local_deadce (cfg);
+
+done:
+       if (cfg->verbose_level > 2)
+               mono_print_code (cfg, "AFTER ALIAS_ANALYSIS");
+}
old mode 100644 (file)
new mode 100755 (executable)
index 9239517..c1e60f0
@@ -71,6 +71,8 @@
 
 #if defined(__linux__) || defined(__native_client_codegen__)
 #define RODATA_SECT ".rodata"
+#elif defined(TARGET_MACH)
+#define RODATA_SECT ".section __TEXT, __const"
 #else
 #define RODATA_SECT ".text"
 #endif
@@ -131,6 +133,7 @@ typedef struct MonoAotOptions {
        gboolean no_direct_calls;
        gboolean use_trampolines_page;
        gboolean no_instances;
+       gboolean gnu_asm;
        int nthreads;
        int ntrampolines;
        int nrgctx_trampolines;
@@ -185,10 +188,12 @@ typedef struct MonoAotCompile {
        guint32 final_got_size;
        /* Number of GOT entries reserved for trampolines */
        guint32 num_trampoline_got_entries;
+       guint32 tramp_page_size;
 
        guint32 num_trampolines [MONO_AOT_TRAMP_NUM];
        guint32 trampoline_got_offset_base [MONO_AOT_TRAMP_NUM];
        guint32 trampoline_size [MONO_AOT_TRAMP_NUM];
+       guint32 tramp_page_code_offsets [MONO_AOT_TRAMP_NUM];
 
        MonoAotOptions aot_opts;
        guint32 nmethods;
@@ -200,9 +205,11 @@ typedef struct MonoAotCompile {
        char *static_linking_symbol;
        CRITICAL_SECTION mutex;
        gboolean use_bin_writer;
+       gboolean gas_line_numbers;
        MonoImageWriter *w;
        MonoDwarfWriter *dwarf;
        FILE *fp;
+       char *tmpbasename;
        char *tmpfname;
        GSList *cie_program;
        GHashTable *unwind_info_offsets;
@@ -211,6 +218,7 @@ typedef struct MonoAotCompile {
        char *got_symbol_base;
        char *got_symbol;
        char *plt_symbol;
+       char *methods_symbol;
        GHashTable *method_label_hash;
        const char *temp_prefix;
        const char *user_symbol_prefix;
@@ -226,8 +234,12 @@ typedef struct MonoAotCompile {
        GHashTable *plt_entry_debug_sym_cache;
        gboolean thumb_mixed, need_no_dead_strip, need_pt_gnu_stack;
        GHashTable *ginst_hash;
+       GHashTable *dwarf_ln_filenames;
        gboolean global_symbols;
        gboolean direct_method_addresses;
+       int objc_selector_index, objc_selector_index_2;
+       GPtrArray *objc_selectors;
+       GHashTable *objc_selector_to_index;
 } MonoAotCompile;
 
 typedef struct {
@@ -526,6 +538,26 @@ encode_sleb128 (gint32 value, guint8 *buf, guint8 **endbuf)
        *endbuf = p;
 }
 
+static void
+emit_unset_mode (MonoAotCompile *acfg)
+{
+       img_writer_emit_unset_mode (acfg->w);
+}
+
+static G_GNUC_UNUSED void
+emit_set_thumb_mode (MonoAotCompile *acfg)
+{
+       emit_unset_mode (acfg);
+       fprintf (acfg->fp, ".code 16\n");
+}
+
+static G_GNUC_UNUSED void
+emit_set_arm_mode (MonoAotCompile *acfg)
+{
+       emit_unset_mode (acfg);
+       fprintf (acfg->fp, ".code 32\n");
+}
+
 /* ARCHITECTURE SPECIFIC CODE */
 
 #if defined(TARGET_X86) || defined(TARGET_AMD64) || defined(TARGET_ARM) || defined(TARGET_POWERPC)
@@ -607,6 +639,10 @@ arch_init (MonoAotCompile *acfg)
        acfg->llvm_label_prefix = "";
        acfg->user_symbol_prefix = "";
 
+#if defined(TARGET_AMD64)
+       g_string_append (acfg->llc_args, " -march=x86-64");
+#endif
+
 #ifdef TARGET_ARM
        if (acfg->aot_opts.mtriple && strstr (acfg->aot_opts.mtriple, "darwin")) {
                g_string_append (acfg->llc_args, "-mattr=+v6");
@@ -629,6 +665,7 @@ arch_init (MonoAotCompile *acfg)
        acfg->user_symbol_prefix = "_";
        acfg->llvm_label_prefix = "_";
        acfg->need_no_dead_strip = TRUE;
+       acfg->aot_opts.gnu_asm = TRUE;
 #endif
 
 #if defined(__linux__) && !defined(TARGET_ARM)
@@ -648,12 +685,12 @@ arch_init (MonoAotCompile *acfg)
  * calling code.
  */
 static void
-arch_emit_direct_call (MonoAotCompile *acfg, const char *target, gboolean external, int *call_size)
+arch_emit_direct_call (MonoAotCompile *acfg, const char *target, gboolean external, MonoJumpInfo *ji, int *call_size)
 {
 #if defined(TARGET_X86) || defined(TARGET_AMD64)
        /* Need to make sure this is exactly 5 bytes long */
        if (external && !acfg->use_bin_writer) {
-               img_writer_emit_unset_mode (acfg->w);
+               emit_unset_mode (acfg);
                fprintf (acfg->fp, "call %s\n", target);
        } else {
                emit_byte (acfg, '\xe8');
@@ -671,7 +708,7 @@ arch_emit_direct_call (MonoAotCompile *acfg, const char *target, gboolean extern
                img_writer_emit_reloc (acfg->w, R_ARM_CALL, target, -8);
                emit_bytes (acfg, buf, 4);
        } else {
-               img_writer_emit_unset_mode (acfg->w);
+               emit_unset_mode (acfg);
                fprintf (acfg->fp, "bl %s\n", target);
        }
        *call_size = 4;
@@ -679,7 +716,7 @@ arch_emit_direct_call (MonoAotCompile *acfg, const char *target, gboolean extern
        if (acfg->use_bin_writer) {
                g_assert_not_reached ();
        } else {
-               img_writer_emit_unset_mode (acfg->w);
+               emit_unset_mode (acfg);
                fprintf (acfg->fp, "bl %s\n", target);
                *call_size = 4;
        }
@@ -732,7 +769,7 @@ arch_emit_got_offset (MonoAotCompile *acfg, guint8 *code, int *code_size)
 {
 #if defined(TARGET_POWERPC64)
        g_assert (!acfg->use_bin_writer);
-       img_writer_emit_unset_mode (acfg->w);
+       emit_unset_mode (acfg);
        /* 
         * The ppc32 code doesn't seem to work on ppc64, the assembler complains about
         * unsupported relocations. So we store the got address into the .Lgot_addr
@@ -747,7 +784,7 @@ arch_emit_got_offset (MonoAotCompile *acfg, guint8 *code, int *code_size)
        *code_size = 16;
 #elif defined(TARGET_POWERPC)
        g_assert (!acfg->use_bin_writer);
-       img_writer_emit_unset_mode (acfg->w);
+       emit_unset_mode (acfg);
        fprintf (acfg->fp, ".L%d:\n", acfg->label_generator);
        fprintf (acfg->fp, "lis 0, (%s + 4 - .L%d)@h\n", acfg->got_symbol, acfg->label_generator);
        fprintf (acfg->fp, "ori 0, 0, (%s + 4 - .L%d)@l\n", acfg->got_symbol, acfg->label_generator);
@@ -803,6 +840,35 @@ arch_emit_got_access (MonoAotCompile *acfg, guint8 *code, int got_slot, int *cod
 
 #endif
 
+/*
+ * arch_emit_objc_selector_ref:
+ *
+ *   Emit the implementation of OP_OBJC_GET_SELECTOR, which itself implements @selector(foo:) in objective-c.
+ */
+static void
+arch_emit_objc_selector_ref (MonoAotCompile *acfg, guint8 *code, int index, int *code_size)
+{
+#if defined(TARGET_ARM)
+       char symbol1 [256];
+       char symbol2 [256];
+       int lindex = acfg->objc_selector_index_2 ++;
+
+       /* Emit ldr.imm/b */
+       emit_bytes (acfg, code, 8);
+
+       sprintf (symbol1, "L_OBJC_SELECTOR_%d", lindex);
+       sprintf (symbol2, "L_OBJC_SELECTOR_REFERENCES_%d", index);
+
+       emit_label (acfg, symbol1);
+       img_writer_emit_unset_mode (acfg->w);
+       fprintf (acfg->fp, ".long %s-(%s+12)", symbol2, symbol1);
+
+       *code_size = 12;
+#else
+       g_assert_not_reached ();
+#endif
+}
+
 /*
  * arch_emit_plt_entry:
  *
@@ -883,7 +949,7 @@ arch_emit_plt_entry (MonoAotCompile *acfg, int index)
 
                /* The GOT address is guaranteed to be in r30 by OP_LOAD_GOTADDR */
                g_assert (!acfg->use_bin_writer);
-               img_writer_emit_unset_mode (acfg->w);
+               emit_unset_mode (acfg);
                fprintf (acfg->fp, "lis 11, %d@h\n", offset);
                fprintf (acfg->fp, "ori 11, 11, %d@l\n", offset);
                fprintf (acfg->fp, "add 11, 11, 30\n");
@@ -915,13 +981,23 @@ arch_emit_llvm_plt_entry (MonoAotCompile *acfg, int index)
        /* LLVM calls the PLT entries using bl, so these have to be thumb2 */
        /* The caller already transitioned to thumb */
        /* The code below should be 12 bytes long */
+       /* clang has trouble encoding these instructions, so emit the binary */
+#if 0
        fprintf (acfg->fp, "ldr ip, [pc, #8]\n");
        /* thumb can't encode ld pc, [pc, ip] */
        fprintf (acfg->fp, "add ip, pc, ip\n");
        fprintf (acfg->fp, "ldr ip, [ip, #0]\n");
        fprintf (acfg->fp, "bx ip\n");
+#endif
+       emit_set_thumb_mode (acfg);
+       fprintf (acfg->fp, ".4byte 0xc008f8df\n");
+       fprintf (acfg->fp, ".2byte 0x44fc\n");
+       fprintf (acfg->fp, ".4byte 0xc000f8dc\n");
+       fprintf (acfg->fp, ".2byte 0x4760\n");
        emit_symbol_diff (acfg, acfg->got_symbol, ".", ((acfg->plt_got_offset_base + index) * sizeof (gpointer)) + 4);
        emit_int32 (acfg, acfg->plt_got_info_offsets [index]);
+       emit_unset_mode (acfg);
+       emit_set_arm_mode (acfg);
 #else
        g_assert_not_reached ();
 #endif
@@ -957,6 +1033,8 @@ arch_emit_specific_trampoline_pages (MonoAotCompile *acfg)
        if (!acfg->aot_opts.use_trampolines_page)
                return;
 
+       acfg->tramp_page_size = mono_pagesize ();
+
        sprintf (symbol, "%sspecific_trampolines_page", acfg->user_symbol_prefix);
        emit_alignment (acfg, mono_pagesize ());
        emit_global (acfg, symbol, TRUE);
@@ -1229,7 +1307,7 @@ arch_emit_specific_trampoline (MonoAotCompile *acfg, int offset, int *tramp_size
         * in the second got slot of every aot image. The caller already computed
         * the address of its got and placed it into r30.
         */
-       img_writer_emit_unset_mode (acfg->w);
+       emit_unset_mode (acfg);
        /* Load mscorlib got address */
        fprintf (acfg->fp, "%s 0, %d(30)\n", PPC_LD_OP, (int)sizeof (gpointer));
        /* Load generic trampoline address */
@@ -1461,7 +1539,7 @@ arch_emit_static_rgctx_trampoline (MonoAotCompile *acfg, int offset, int *tramp_
         * in the second got slot of every aot image. The caller already computed
         * the address of its got and placed it into r30.
         */
-       img_writer_emit_unset_mode (acfg->w);
+       emit_unset_mode (acfg);
        /* Load mscorlib got address */
        fprintf (acfg->fp, "%s 0, %d(30)\n", PPC_LD_OP, (int)sizeof (gpointer));
        /* Load rgctx */
@@ -1875,7 +1953,7 @@ arch_emit_autoreg (MonoAotCompile *acfg, char *symbol)
 {
 #if defined(TARGET_POWERPC) && defined(__mono_ilp32__)
        /* Based on code generated by gcc */
-       img_writer_emit_unset_mode (acfg->w);
+       emit_unset_mode (acfg);
 
        fprintf (acfg->fp,
 #if defined(_MSC_VER) || defined(MONO_CROSS_COMPILE) 
@@ -2555,6 +2633,8 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                                encode_klass_ref (acfg, method->klass, p, &p);
                        else if (info->subtype == WRAPPER_SUBTYPE_SYNCHRONIZED_INNER)
                                encode_method_ref (acfg, info->d.synchronized_inner.method, p, &p);
+                       else if (info->subtype == WRAPPER_SUBTYPE_ARRAY_ACCESSOR)
+                               encode_method_ref (acfg, info->d.array_accessor.method, p, &p);
                        break;
                }
                case MONO_WRAPPER_MANAGED_TO_NATIVE: {
@@ -2625,8 +2705,11 @@ encode_method_ref (MonoAotCompile *acfg, MonoMethod *method, guint8 *buf, guint8
                                encode_klass_ref (acfg, method->klass, p, &p);
                        } else {
                                MonoMethodSignature *sig = mono_method_signature (method);
+                               WrapperInfo *info = mono_marshal_get_wrapper_info (method);
 
                                encode_value (0, p, &p);
+                               if (method->wrapper_type == MONO_WRAPPER_DELEGATE_INVOKE)
+                                       encode_value (info ? info->subtype : 0, p, &p);
                                encode_signature (acfg, sig, p, &p);
                        }
                        break;
@@ -2950,21 +3033,24 @@ add_method (MonoAotCompile *acfg, MonoMethod *method)
        return add_method_full (acfg, method, FALSE, 0);
 }
 
-static void
-add_extra_method (MonoAotCompile *acfg, MonoMethod *method)
-{
-       add_method_full (acfg, method, TRUE, 0);
-}
-
 static void
 add_extra_method_with_depth (MonoAotCompile *acfg, MonoMethod *method, int depth)
 {
+       if (mono_method_is_generic_sharable_full (method, FALSE, TRUE, FALSE))
+               method = mini_get_shared_method (method);
+
        if (acfg->aot_opts.log_generics)
                printf ("%*sAdding method %s.\n", depth, "", mono_method_full_name (method, TRUE));
 
        add_method_full (acfg, method, TRUE, depth);
 }
 
+static void
+add_extra_method (MonoAotCompile *acfg, MonoMethod *method)
+{
+       add_extra_method_with_depth (acfg, method, 0);
+}
+
 static void
 add_jit_icall_wrapper (gpointer key, gpointer value, gpointer user_data)
 {
@@ -3188,11 +3274,9 @@ add_wrappers (MonoAotCompile *acfg)
        }
 
        if (strcmp (acfg->image->assembly->aname.name, "mscorlib") == 0) {
-#ifdef MONO_ARCH_HAVE_TLS_GET
                MonoMethodDesc *desc;
                MonoMethod *orig_method;
                int nallocators;
-#endif
 
                /* Runtime invoke wrappers */
 
@@ -3257,41 +3341,37 @@ add_wrappers (MonoAotCompile *acfg)
                add_method (acfg, mono_marshal_get_runtime_invoke_dynamic ());
 #endif
 
-               /* JIT icall wrappers */
-               /* FIXME: locking */
-               g_hash_table_foreach (mono_get_jit_icall_info (), add_jit_icall_wrapper, acfg);
-
                /* stelemref */
                add_method (acfg, mono_marshal_get_stelemref ());
 
-#ifdef MONO_ARCH_HAVE_TLS_GET
-               /* Managed Allocators */
-               nallocators = mono_gc_get_managed_allocator_types ();
-               for (i = 0; i < nallocators; ++i) {
-                       m = mono_gc_get_managed_allocator_by_type (i);
-                       if (m)
-                               add_method (acfg, m);
-               }
+               if (MONO_ARCH_HAVE_TLS_GET) {
+                       /* Managed Allocators */
+                       nallocators = mono_gc_get_managed_allocator_types ();
+                       for (i = 0; i < nallocators; ++i) {
+                               m = mono_gc_get_managed_allocator_by_type (i);
+                               if (m)
+                                       add_method (acfg, m);
+                       }
 
-               /* Monitor Enter/Exit */
-               desc = mono_method_desc_new ("Monitor:Enter(object,bool&)", FALSE);
-               orig_method = mono_method_desc_search_in_class (desc, mono_defaults.monitor_class);
-               /* This is a v4 method */
-               if (orig_method) {
+                       /* Monitor Enter/Exit */
+                       desc = mono_method_desc_new ("Monitor:Enter(object,bool&)", FALSE);
+                       orig_method = mono_method_desc_search_in_class (desc, mono_defaults.monitor_class);
+                       /* This is a v4 method */
+                       if (orig_method) {
+                               method = mono_monitor_get_fast_path (orig_method);
+                               if (method)
+                                       add_method (acfg, method);
+                       }
+                       mono_method_desc_free (desc);
+
+                       desc = mono_method_desc_new ("Monitor:Exit(object)", FALSE);
+                       orig_method = mono_method_desc_search_in_class (desc, mono_defaults.monitor_class);
+                       g_assert (orig_method);
+                       mono_method_desc_free (desc);
                        method = mono_monitor_get_fast_path (orig_method);
                        if (method)
-                       add_method (acfg, method);
+                               add_method (acfg, method);
                }
-               mono_method_desc_free (desc);
-
-               desc = mono_method_desc_new ("Monitor:Exit(object)", FALSE);
-               orig_method = mono_method_desc_search_in_class (desc, mono_defaults.monitor_class);
-               g_assert (orig_method);
-               mono_method_desc_free (desc);
-               method = mono_monitor_get_fast_path (orig_method);
-               if (method)
-                       add_method (acfg, method);
-#endif
 
                /* Stelemref wrappers */
                {
@@ -3324,6 +3404,10 @@ add_wrappers (MonoAotCompile *acfg)
                        }
                }
 #endif
+
+               /* JIT icall wrappers */
+               /* FIXME: locking */
+               g_hash_table_foreach (mono_get_jit_icall_info (), add_jit_icall_wrapper, acfg);
        }
 
        /* 
@@ -3437,13 +3521,62 @@ add_wrappers (MonoAotCompile *acfg)
                }
        }
 
+       /* array access wrappers */
+       for (i = 0; i < acfg->image->tables [MONO_TABLE_TYPESPEC].rows; ++i) {
+               MonoClass *klass;
+               
+               token = MONO_TOKEN_TYPE_SPEC | (i + 1);
+               klass = mono_class_get (acfg->image, token);
+
+               if (!klass) {
+                       mono_loader_clear_error ();
+                       continue;
+               }
+
+               if (klass->rank && MONO_TYPE_IS_PRIMITIVE (&klass->element_class->byval_arg)) {
+                       MonoMethod *m, *wrapper;
+
+                       /* Add runtime-invoke wrappers too */
+
+                       m = mono_class_get_method_from_name (klass, "Get", -1);
+                       g_assert (m);
+                       wrapper = mono_marshal_get_array_accessor_wrapper (m);
+                       add_extra_method (acfg, wrapper);
+                       add_extra_method (acfg, mono_marshal_get_runtime_invoke (wrapper, FALSE));
+
+                       m = mono_class_get_method_from_name (klass, "Set", -1);
+                       g_assert (m);
+                       wrapper = mono_marshal_get_array_accessor_wrapper (m);
+                       add_extra_method (acfg, wrapper);
+                       add_extra_method (acfg, mono_marshal_get_runtime_invoke (wrapper, FALSE));
+               }
+       }
+
        /* Synchronized wrappers */
        for (i = 0; i < acfg->image->tables [MONO_TABLE_METHOD].rows; ++i) {
                token = MONO_TOKEN_METHOD_DEF | (i + 1);
                method = mono_get_method (acfg->image, token, NULL);
 
-               if (method->iflags & METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED && !method->is_generic)
-                       add_method (acfg, mono_marshal_get_synchronized_wrapper (method));
+               if (method->iflags & METHOD_IMPL_ATTRIBUTE_SYNCHRONIZED) {
+                       if (method->is_generic) {
+                               // FIXME:
+                       } else if (method->klass->generic_container) {
+                               MonoGenericContext ctx;
+                               MonoMethod *inst, *gshared, *m;
+
+                               /*
+                                * Create a generic wrapper for a generic instance, and AOT that.
+                                */
+                               create_gsharedvt_inst (acfg, method, &ctx);
+                               inst = mono_class_inflate_generic_method (method, &ctx);        
+                               m = mono_marshal_get_synchronized_wrapper (inst);
+                               g_assert (m->is_inflated);
+                               gshared = mini_get_shared_method_full (m, FALSE, TRUE);
+                               add_method (acfg, gshared);
+                       } else {
+                               add_method (acfg, mono_marshal_get_synchronized_wrapper (method));
+                       }
+               }
        }
 
        /* pinvoke wrappers */
@@ -3608,6 +3741,21 @@ has_type_vars (MonoClass *klass)
                                        return TRUE;
                }
        }
+       if (klass->generic_container)
+               return TRUE;
+       return FALSE;
+}
+
+static gboolean
+is_vt_inst (MonoGenericInst *inst)
+{
+       int i;
+
+       for (i = 0; i < inst->type_argc; ++i) {
+               MonoType *t = inst->type_argv [i];
+               if (t->type == MONO_TYPE_VALUETYPE)
+                       return TRUE;
+       }
        return FALSE;
 }
 
@@ -3681,6 +3829,7 @@ add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth,
        MonoMethod *method;
        MonoClassField *field;
        gpointer iter;
+       gboolean use_gsharedvt = FALSE;
 
        if (!acfg->ginst_hash)
                acfg->ginst_hash = g_hash_table_new (NULL, NULL);
@@ -3713,9 +3862,23 @@ add_generic_class_with_depth (MonoAotCompile *acfg, MonoClass *klass, int depth,
 
        g_hash_table_insert (acfg->ginst_hash, klass, klass);
 
+       /*
+        * Use gsharedvt for generic collections with vtype arguments to avoid code blowup.
+        * Enable this only for some classes since gsharedvt might not support all methods.
+        */
+       if ((acfg->opts & MONO_OPT_GSHAREDVT) && klass->image == mono_defaults.corlib && klass->generic_class && klass->generic_class->context.class_inst && is_vt_inst (klass->generic_class->context.class_inst) && (!strcmp (klass->name, "Dictionary`2") || !strcmp (klass->name, "List`1")))
+               use_gsharedvt = TRUE;
+
        iter = NULL;
        while ((method = mono_class_get_methods (klass, &iter))) {
-               if (mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE))
+               if ((acfg->opts & MONO_OPT_GSHAREDVT) && method->is_inflated && mono_method_get_context (method)->method_inst) {
+                       /*
+                        * This is partial sharing, and we can't handle it yet
+                        */
+                       continue;
+               }
+               
+               if (mono_method_is_generic_sharable_full (method, FALSE, FALSE, use_gsharedvt))
                        /* Already added */
                        continue;
 
@@ -3878,6 +4041,8 @@ add_types_from_method_header (MonoAotCompile *acfg, MonoMethod *method)
                for (j = 0; j < header->num_locals; ++j)
                        if (header->locals [j]->type == MONO_TYPE_GENERICINST)
                                add_generic_class_with_depth (acfg, mono_class_from_mono_type (header->locals [j]), depth + 1, "local");
+       } else {
+               mono_loader_clear_error ();
        }
 }
 
@@ -3989,7 +4154,7 @@ add_generic_instances (MonoAotCompile *acfg)
                 * If the method is fully sharable, it was already added in place of its
                 * generic definition.
                 */
-               if (mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE))
+               if (mono_method_is_generic_sharable_full (method, FALSE, FALSE, FALSE))
                        continue;
 
                /*
@@ -4145,6 +4310,10 @@ is_direct_callable (MonoAotCompile *acfg, MonoMethod *method, MonoJumpInfo *patc
                                direct_callable = FALSE;
                        }
 
+                       if (callee_cfg->method->wrapper_type == MONO_WRAPPER_ALLOC)
+                               /* sgen does some initialization when the allocator method is created */
+                               direct_callable = FALSE;
+
                        if (direct_callable)
                                return TRUE;
                }
@@ -4190,6 +4359,119 @@ get_pinvoke_import (MonoAotCompile *acfg, MonoMethod *method)
        return import;
 }
 
+static gint
+compare_lne (MonoDebugLineNumberEntry *a, MonoDebugLineNumberEntry *b)
+{
+       if (a->native_offset == b->native_offset)
+               return a->il_offset - b->il_offset;
+       else
+               return a->native_offset - b->native_offset;
+}
+
+/*
+ * compute_line_numbers:
+ *
+ * Returns a sparse array of size CODE_SIZE containing MonoDebugSourceLocation* entries for the native offsets which have a corresponding line number
+ * entry.
+ */
+static MonoDebugSourceLocation**
+compute_line_numbers (MonoMethod *method, int code_size, MonoDebugMethodJitInfo *debug_info)
+{
+       MonoDebugMethodInfo *minfo;
+       MonoDebugLineNumberEntry *ln_array;
+       MonoDebugSourceLocation *loc;
+       int i, prev_line, prev_il_offset;
+       int *native_to_il_offset = NULL;
+       MonoDebugSourceLocation **res;
+       gboolean first;
+
+       minfo = mono_debug_lookup_method (method);
+       if (!minfo)
+               return NULL;
+       // FIXME: This seems to happen when two methods have the same cfg->method_to_register
+       if (debug_info->code_size != code_size)
+               return NULL;
+
+       g_assert (code_size);
+
+       /* Compute the native->IL offset mapping */
+
+       ln_array = g_new0 (MonoDebugLineNumberEntry, debug_info->num_line_numbers);
+       memcpy (ln_array, debug_info->line_numbers, debug_info->num_line_numbers * sizeof (MonoDebugLineNumberEntry));
+
+       qsort (ln_array, debug_info->num_line_numbers, sizeof (MonoDebugLineNumberEntry), (gpointer)compare_lne);
+
+       native_to_il_offset = g_new0 (int, code_size + 1);
+
+       for (i = 0; i < debug_info->num_line_numbers; ++i) {
+               int j;
+               MonoDebugLineNumberEntry *lne = &ln_array [i];
+
+               if (i == 0) {
+                       for (j = 0; j < lne->native_offset; ++j)
+                               native_to_il_offset [j] = -1;
+               }
+
+               if (i < debug_info->num_line_numbers - 1) {
+                       MonoDebugLineNumberEntry *lne_next = &ln_array [i + 1];
+
+                       for (j = lne->native_offset; j < lne_next->native_offset; ++j)
+                               native_to_il_offset [j] = lne->il_offset;
+               } else {
+                       for (j = lne->native_offset; j < code_size; ++j)
+                               native_to_il_offset [j] = lne->il_offset;
+               }
+       }
+       g_free (ln_array);
+
+       /* Compute the native->line number mapping */
+       res = g_new0 (MonoDebugSourceLocation*, code_size);
+       prev_il_offset = -1;
+       prev_line = -1;
+       first = TRUE;
+       for (i = 0; i < code_size; ++i) {
+               int il_offset = native_to_il_offset [i];
+
+               if (il_offset == -1 || il_offset == prev_il_offset)
+                       continue;
+               prev_il_offset = il_offset;
+               loc = mono_debug_symfile_lookup_location (minfo, il_offset);
+               if (!(loc && loc->source_file))
+                       continue;
+               if (loc->row == prev_line) {
+                       mono_debug_symfile_free_location (loc);
+                       continue;
+               }
+               prev_line = loc->row;
+               //printf ("D: %s:%d il=%x native=%x\n", loc->source_file, loc->row, il_offset, i);
+               if (first)
+                       /* This will cover the prolog too */
+                       res [0] = loc;
+               else
+                       res [i] = loc;
+               first = FALSE;
+       }
+       return res;
+}
+
+static int
+get_file_index (MonoAotCompile *acfg, const char *source_file)
+{
+       int findex;
+
+       // FIXME: Free these
+       if (!acfg->dwarf_ln_filenames)
+               acfg->dwarf_ln_filenames = g_hash_table_new (g_str_hash, g_str_equal);
+       findex = GPOINTER_TO_INT (g_hash_table_lookup (acfg->dwarf_ln_filenames, source_file));
+       if (!findex) {
+               findex = g_hash_table_size (acfg->dwarf_ln_filenames) + 1;
+               g_hash_table_insert (acfg->dwarf_ln_filenames, g_strdup (source_file), GINT_TO_POINTER (findex));
+               emit_unset_mode (acfg);
+               fprintf (acfg->fp, ".file %d \"%s\"\n", findex, mono_dwarf_escape_path (source_file));
+       }
+       return findex;
+}
+
 /*
  * emit_and_reloc_code:
  *
@@ -4199,15 +4481,16 @@ get_pinvoke_import (MonoAotCompile *acfg, MonoMethod *method)
  * since trampolines are needed to make PTL work.
  */
 static void
-emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, guint32 code_len, MonoJumpInfo *relocs, gboolean got_only)
+emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, guint32 code_len, MonoJumpInfo *relocs, gboolean got_only, MonoDebugMethodJitInfo *debug_info)
 {
        int i, pindex, start_index, method_index;
        GPtrArray *patches;
        MonoJumpInfo *patch_info;
        MonoMethodHeader *header;
+       MonoDebugSourceLocation **locs = NULL;
        gboolean skip, direct_call, external_call;
        guint32 got_slot;
-       const char *direct_call_target;
+       const char *direct_call_target = 0;
        const char *direct_pinvoke;
 
        if (method) {
@@ -4216,6 +4499,15 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                method_index = get_method_index (acfg, method);
        }
 
+       if (acfg->gas_line_numbers && method && debug_info) {
+               locs = compute_line_numbers (method, code_len, debug_info);
+               if (!locs) {
+                       int findex = get_file_index (acfg, "<unknown>");
+                       emit_unset_mode (acfg);
+                       fprintf (acfg->fp, ".loc %d %d 0\n", findex, 1);
+               }
+       }
+
        /* Collect and sort relocations */
        patches = g_ptr_array_new ();
        for (patch_info = relocs; patch_info; patch_info = patch_info->next)
@@ -4231,8 +4523,18 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                                break;
                }
 
-#ifdef MONO_ARCH_AOT_SUPPORTED
+               if (locs && locs [i]) {
+                       MonoDebugSourceLocation *loc = locs [i];
+                       int findex;
+
+                       findex = get_file_index (acfg, loc->source_file);
+                       emit_unset_mode (acfg);
+                       fprintf (acfg->fp, ".loc %d %d 0\n", findex, loc->row);
+                       mono_debug_symfile_free_location (loc);
+               }
+
                skip = FALSE;
+#ifdef MONO_ARCH_AOT_SUPPORTED
                if (patch_info && (patch_info->ip.i == i) && (pindex < patches->len)) {
                        start_index = pindex;
 
@@ -4248,6 +4550,30 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                                patch_info->type = MONO_PATCH_INFO_NONE;
                                break;
                        }
+                       case MONO_PATCH_INFO_OBJC_SELECTOR_REF: {
+                               int code_size, index;
+                               char *selector = (void*)patch_info->data.target;
+
+                               if (!acfg->objc_selector_to_index)
+                                       acfg->objc_selector_to_index = g_hash_table_new (g_str_hash, g_str_equal);
+                               if (!acfg->objc_selectors)
+                                       acfg->objc_selectors = g_ptr_array_new ();
+                               index = GPOINTER_TO_UINT (g_hash_table_lookup (acfg->objc_selector_to_index, selector));
+                               if (index)
+                                       index --;
+                               else {
+                                       index = acfg->objc_selector_index;
+                                       g_ptr_array_add (acfg->objc_selectors, (void*)patch_info->data.target);
+                                       g_hash_table_insert (acfg->objc_selector_to_index, selector, GUINT_TO_POINTER (index + 1));
+                                       acfg->objc_selector_index ++;
+                               }
+
+                               arch_emit_objc_selector_ref (acfg, code + i, index, &code_size);
+                               i += code_size - 1;
+                               skip = TRUE;
+                               patch_info->type = MONO_PATCH_INFO_NONE;
+                               break;
+                       }
                        default: {
                                /*
                                 * If this patch is a call, try emitting a direct call instead of
@@ -4321,7 +4647,7 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
                                if (direct_call) {
                                        int call_size;
 
-                                       arch_emit_direct_call (acfg, direct_call_target, external_call, &call_size);
+                                       arch_emit_direct_call (acfg, direct_call_target, external_call, patch_info, &call_size);
                                        i += call_size - 1;
                                } else {
                                        int code_size;
@@ -4348,13 +4674,22 @@ emit_and_reloc_code (MonoAotCompile *acfg, MonoMethod *method, guint8 *code, gui
 
                        /* Try to emit multiple bytes at once */
                        if (pindex < patches->len && patch_info->ip.i > i) {
-                               emit_bytes (acfg, code + i, patch_info->ip.i - i);
-                               i = patch_info->ip.i - 1;
+                               int limit;
+
+                               for (limit = i + 1; limit < patch_info->ip.i; ++limit) {
+                                       if (locs && locs [limit])
+                                               break;
+                               }
+
+                               emit_bytes (acfg, code + i, limit - i);
+                               i = limit - 1;
                        } else {
                                emit_bytes (acfg, code + i, 1);
                        }
                }
        }
+
+       g_free (locs);
 }
 
 /*
@@ -4475,7 +4810,7 @@ emit_method_code (MonoAotCompile *acfg, MonoCompile *cfg)
 
        acfg->cfgs [method_index]->got_offset = acfg->got_offset;
 
-       emit_and_reloc_code (acfg, method, code, cfg->code_len, cfg->patch_info, FALSE);
+       emit_and_reloc_code (acfg, method, code, cfg->code_len, cfg->patch_info, FALSE, mono_debug_find_method (cfg->jit_info->d.method, mono_domain_get ()));
 
        emit_line (acfg);
 
@@ -4616,7 +4951,7 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
                }
 
                encode_value (offset, p, &p);
-               g_assert (entry->info_type < 256);
+               g_assert ((int)entry->info_type < 256);
                g_assert (entry->data->type < 256);
                encode_value ((entry->in_mrgctx ? 1 : 0) | (entry->info_type << 1) | (entry->data->type << 9), p, &p);
                encode_patch (acfg, entry->data, p, &p);
@@ -4634,10 +4969,37 @@ encode_patch (MonoAotCompile *acfg, MonoJumpInfo *patch_info, guint8 *buf, guint
        case MONO_PATCH_INFO_SIGNATURE:
                encode_signature (acfg, (MonoMethodSignature*)patch_info->data.target, p, &p);
                break;
+       case MONO_PATCH_INFO_TLS_OFFSET:
+               encode_value (GPOINTER_TO_INT (patch_info->data.target), p, &p);
+               break;
        case MONO_PATCH_INFO_GSHAREDVT_CALL:
                encode_signature (acfg, (MonoMethodSignature*)patch_info->data.gsharedvt->sig, p, &p);
                encode_method_ref (acfg, patch_info->data.gsharedvt->method, p, &p);
                break;
+       case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
+               MonoGSharedVtMethodInfo *info = patch_info->data.gsharedvt_method;
+               int i;
+
+               encode_method_ref (acfg, info->method, p, &p);
+               encode_value (info->entries->len, p, &p);
+               for (i = 0; i < info->entries->len; ++i) {
+                       MonoRuntimeGenericContextInfoTemplate *template = g_ptr_array_index (info->entries, i);
+
+                       encode_value (template->info_type, p, &p);
+                       switch (mini_rgctx_info_type_to_patch_info_type (template->info_type)) {
+                       case MONO_PATCH_INFO_CLASS:
+                               encode_klass_ref (acfg, mono_class_from_mono_type (template->data), p, &p);
+                               break;
+                       case MONO_PATCH_INFO_FIELD:
+                               encode_field_info (acfg, template->data, p, &p);
+                               break;
+                       default:
+                               g_assert_not_reached ();
+                               break;
+                       }
+               }
+               break;
+       }
        default:
                g_warning ("unable to handle jump info %d", patch_info->type);
                g_assert_not_reached ();
@@ -4829,9 +5191,7 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg)
        buf_size = header->num_clauses * 256 + debug_info_size + 2048 + (seq_points ? (seq_points->len * 64) : 0) + cfg->gc_map_size;
        p = buf = g_malloc (buf_size);
 
-#ifdef MONO_ARCH_HAVE_XP_UNWIND
        use_unwind_ops = cfg->unwind_ops != NULL;
-#endif
 
        flags = (jinfo->has_generic_jit_info ? 1 : 0) | (use_unwind_ops ? 2 : 0) | (header->num_clauses ? 4 : 0) | (seq_points ? 8 : 0) | (cfg->compile_llvm ? 16 : 0) | (jinfo->has_try_block_holes ? 32 : 0) | (cfg->gc_map ? 64 : 0) | (jinfo->has_arch_eh_info ? 128 : 0);
 
@@ -4908,8 +5268,18 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg)
                                encode_value ((gint)((guint8*)ei->data.filter - code), p, &p);
                        else {
                                if (ei->data.catch_class) {
-                                       encode_value (1, p, &p);
-                                       encode_klass_ref (acfg, ei->data.catch_class, p, &p);
+                                       guint8 *buf2, *p2;
+                                       int len;
+
+                                       buf2 = g_malloc (4096);
+                                       p2 = buf2;
+                                       encode_klass_ref (acfg, ei->data.catch_class, p2, &p2);
+                                       len = p2 - buf2;
+                                       g_assert (len < 4096);
+                                       encode_value (len, p, &p);
+                                       memcpy (p, buf2, len);
+                                       p += p2 - buf2;
+                                       g_free (buf2);
                                } else {
                                        encode_value (0, p, &p);
                                }
@@ -4921,10 +5291,29 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg)
                }
        }
 
+       if (jinfo->has_try_block_holes) {
+               MonoTryBlockHoleTableJitInfo *table = mono_jit_info_get_try_block_hole_table_info (jinfo);
+               for (i = 0; i < table->num_holes; ++i) {
+                       MonoTryBlockHoleJitInfo *hole = &table->holes [i];
+                       encode_value (hole->clause, p, &p);
+                       encode_value (hole->length, p, &p);
+                       encode_value (hole->offset, p, &p);
+               }
+       }
+
+       if (jinfo->has_arch_eh_info) {
+               MonoArchEHJitInfo *eh_info;
+
+               eh_info = mono_jit_info_get_arch_eh_info (jinfo);
+               encode_value (eh_info->stack_size, p, &p);
+       }
+
        if (jinfo->has_generic_jit_info) {
                MonoGenericJitInfo *gi = mono_jit_info_get_generic_jit_info (jinfo);
                MonoGenericSharingContext* gsctx = gi->generic_sharing_context;
                guint8 *p1;
+               guint8 *buf2, *p2;
+               int len;
 
                p1 = p;
                encode_value (gi->nlocs, p, &p);
@@ -4954,15 +5343,23 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg)
                 * Need to encode jinfo->method too, since it is not equal to 'method'
                 * when using generic sharing.
                 */
-               encode_method_ref (acfg, jinfo->method, p, &p);
+               buf2 = g_malloc (4096);
+               p2 = buf2;
+               encode_method_ref (acfg, jinfo->d.method, p2, &p2);
+               len = p2 - buf2;
+               g_assert (len < 4096);
+               encode_value (len, p, &p);
+               memcpy (p, buf2, len);
+               p += p2 - buf2;
+               g_free (buf2);
 
                if (gsctx && (gsctx->var_is_vt || gsctx->mvar_is_vt)) {
                        MonoMethodInflated *inflated;
                        MonoGenericContext *context;
                        MonoGenericInst *inst;
 
-                       g_assert (jinfo->method->is_inflated);
-                       inflated = (MonoMethodInflated*)jinfo->method;
+                       g_assert (jinfo->d.method->is_inflated);
+                       inflated = (MonoMethodInflated*)jinfo->d.method;
                        context = &inflated->context;
 
                        encode_value (1, p, &p);
@@ -4989,23 +5386,6 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg)
                }
        }
 
-       if (jinfo->has_try_block_holes) {
-               MonoTryBlockHoleTableJitInfo *table = mono_jit_info_get_try_block_hole_table_info (jinfo);
-               for (i = 0; i < table->num_holes; ++i) {
-                       MonoTryBlockHoleJitInfo *hole = &table->holes [i];
-                       encode_value (hole->clause, p, &p);
-                       encode_value (hole->length, p, &p);
-                       encode_value (hole->offset, p, &p);
-               }
-       }
-
-       if (jinfo->has_arch_eh_info) {
-               MonoArchEHJitInfo *eh_info;
-
-               eh_info = mono_jit_info_get_arch_eh_info (jinfo);
-               encode_value (eh_info->stack_size, p, &p);
-       }
-
        if (seq_points) {
                int il_offset, native_offset, last_il_offset, last_native_offset, j;
 
@@ -5020,6 +5400,7 @@ emit_exception_debug_info (MonoAotCompile *acfg, MonoCompile *cfg)
                        last_il_offset = il_offset;
                        last_native_offset = native_offset;
 
+                       encode_value (sp->flags, p, &p);
                        encode_value (sp->next_len, p, &p);
                        for (j = 0; j < sp->next_len; ++j)
                                encode_value (sp->next [j], p, &p);
@@ -5231,11 +5612,12 @@ emit_plt (MonoAotCompile *acfg)
                                if (callee_cfg) {
                                        if (acfg->thumb_mixed && !callee_cfg->compile_llvm) {
                                                /* LLVM calls the PLT entries using bl, so emit a stub */
+                                               emit_set_thumb_mode (acfg);
                                                fprintf (acfg->fp, "\n.thumb_func\n");
                                                emit_label (acfg, plt_entry->llvm_symbol);
                                                fprintf (acfg->fp, "bx pc\n");
                                                fprintf (acfg->fp, "nop\n");
-                                               fprintf (acfg->fp, ".arm\n");
+                                               emit_set_arm_mode (acfg);
                                                fprintf (acfg->fp, "b %s\n", callee_cfg->asm_symbol);
                                        } else {
                                                fprintf (acfg->fp, "\n.set %s, %s\n", plt_entry->llvm_symbol, callee_cfg->asm_symbol);
@@ -5256,7 +5638,7 @@ emit_plt (MonoAotCompile *acfg)
 
                if (debug_sym) {
                        if (acfg->need_no_dead_strip) {
-                               img_writer_emit_unset_mode (acfg->w);
+                               emit_unset_mode (acfg);
                                fprintf (acfg->fp, "    .no_dead_strip %s\n", debug_sym);
                        }
                        emit_local_symbol (acfg, debug_sym, NULL, TRUE);
@@ -5351,6 +5733,8 @@ emit_trampoline_full (MonoAotCompile *acfg, int got_offset, MonoTrampInfo *info,
        MonoJumpInfo *ji;
        GSList *unwind_ops;
 
+       g_assert (info);
+
        name = info->name;
        code = info->code;
        code_size = info->code_size;
@@ -5377,7 +5761,7 @@ emit_trampoline_full (MonoAotCompile *acfg, int got_offset, MonoTrampInfo *info,
         * The code should access everything through the GOT, so we pass
         * TRUE here.
         */
-       emit_and_reloc_code (acfg, NULL, code, code_size, ji, TRUE);
+       emit_and_reloc_code (acfg, NULL, code, code_size, ji, TRUE, NULL);
 
        emit_symbol_size (acfg, start_symbol, ".");
 
@@ -5476,6 +5860,14 @@ emit_trampolines (MonoAotCompile *acfg)
                 */
                for (tramp_type = 0; tramp_type < MONO_TRAMPOLINE_NUM; ++tramp_type) {
                        /* we overload the boolean here to indicate the slightly different trampoline needed, see mono_arch_create_generic_trampoline() */
+#ifdef DISABLE_REMOTING
+                       if (tramp_type == MONO_TRAMPOLINE_GENERIC_VIRTUAL_REMOTING)
+                               continue;
+#endif
+#ifndef MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD
+                       if (tramp_type == MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD)
+                               continue;
+#endif
                        mono_arch_create_generic_trampoline (tramp_type, &info, acfg->aot_opts.use_trampolines_page? 2: TRUE);
                        emit_trampoline (acfg, acfg->got_offset, info);
                }
@@ -5657,6 +6049,7 @@ emit_trampolines (MonoAotCompile *acfg)
                        }
 
                        emit_label (acfg, end_symbol);
+                       emit_int32 (acfg, 0);
                }
 
                arch_emit_specific_trampoline_pages (acfg);
@@ -5928,6 +6321,7 @@ can_encode_method (MonoAotCompile *acfg, MonoMethod *method)
                        case MONO_WRAPPER_DELEGATE_INVOKE:
                        case MONO_WRAPPER_DELEGATE_BEGIN_INVOKE:
                        case MONO_WRAPPER_DELEGATE_END_INVOKE:
+                       case MONO_WRAPPER_SYNCHRONIZED:
                                break;
                        case MONO_WRAPPER_MANAGED_TO_MANAGED:
                        case MONO_WRAPPER_CASTCLASS: {
@@ -6052,6 +6446,8 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
         * does not need to support them by creating a fake GOT etc.
         */
        cfg = mini_method_compile (method, acfg->opts, mono_get_root_domain (), FALSE, TRUE, 0);
+       mono_loader_clear_error ();
+
        if (cfg->exception_type == MONO_EXCEPTION_GENERIC_SHARING_FAILED) {
                if (acfg->aot_opts.print_skipped_methods)
                        printf ("Skip (gshared failure): %s (%s)\n", mono_method_full_name (method, TRUE), cfg->exception_message);
@@ -6072,6 +6468,7 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
                mono_destroy_compile (cfg);
                return;
        }
+       cfg->method_index = index;
 
        /* Nullify patches which need no aot processing */
        for (patch_info = cfg->patch_info; patch_info; patch_info = patch_info->next) {
@@ -6147,7 +6544,7 @@ compile_method (MonoAotCompile *acfg, MonoMethod *method)
                                MonoMethod *m = patch_info->data.method;
                                if (m->is_inflated) {
                                        if (!(mono_class_generic_sharing_enabled (m->klass) &&
-                                                 mono_method_is_generic_sharable_impl_full (m, FALSE, FALSE, FALSE)) &&
+                                                 mono_method_is_generic_sharable_full (m, FALSE, FALSE, FALSE)) &&
                                                !method_has_type_vars (m)) {
                                                if (m->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) {
                                                        if (acfg->aot_opts.full_aot)
@@ -6442,6 +6839,13 @@ mono_aot_get_plt_symbol (MonoJumpInfoType type, gconstpointer data)
 #endif
 }
 
+int
+mono_aot_get_method_index (MonoMethod *method)
+{
+       g_assert (llvm_acfg);
+       return get_method_index (llvm_acfg, method);
+}
+
 MonoJumpInfo*
 mono_aot_patch_info_dup (MonoJumpInfo* ji)
 {
@@ -6507,7 +6911,7 @@ emit_llvm_file (MonoAotCompile *acfg)
        }
 
 
-       tempbc = g_strdup_printf ("%s.bc", acfg->tmpfname);
+       tempbc = g_strdup_printf ("%s.bc", acfg->tmpbasename);
        mono_llvm_emit_aot_module (tempbc, acfg->final_got_size);
        g_free (tempbc);
 
@@ -6523,12 +6927,14 @@ emit_llvm_file (MonoAotCompile *acfg)
         * - 'prune-eh' and 'functionattrs' depend on 'basiccg'.
         * The opt list below was produced by taking the output of:
         * llvm-as < /dev/null | opt -O2 -disable-output -debug-pass=Arguments
-        * then removing tailcallelim + the global opts, and adding a second gvn.
+        * then removing tailcallelim + the global opts.
+        * strip-dead-prototypes deletes unused intrinsics definitions.
         */
        opts = g_strdup ("-instcombine -simplifycfg");
-       opts = g_strdup ("-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -domtree -domfrontier -scalarrepl -simplify-libcalls -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -domfrontier -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-deletion -loop-simplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -simplifycfg -preverify -domtree -verify");
+       //opts = g_strdup ("-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -domtree -domfrontier -scalarrepl -simplify-libcalls -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -domfrontier -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-deletion -loop-simplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -simplifycfg -preverify -domtree -verify");
+       opts = g_strdup ("-targetlibinfo -no-aa -basicaa -notti -instcombine -simplifycfg -sroa -domtree -early-cse -simplify-libcalls -lazy-value-info -correlated-propagation -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -indvars -loop-idiom -loop-deletion -loop-unroll -memdep -gvn -memdep -memcpyopt -sccp -instcombine -lazy-value-info -correlated-propagation -domtree -memdep -dse -adce -simplifycfg -instcombine -strip-dead-prototypes -preverify -domtree -verify");
 #if 1
-       command = g_strdup_printf ("%sopt -f %s -o %s.opt.bc %s.bc", acfg->aot_opts.llvm_path, opts, acfg->tmpfname, acfg->tmpfname);
+       command = g_strdup_printf ("%sopt -f %s -o \"%s.opt.bc\" \"%s.bc\"", acfg->aot_opts.llvm_path, opts, acfg->tmpbasename, acfg->tmpbasename);
        printf ("Executing opt: %s\n", command);
        if (system (command) != 0) {
                exit (1);
@@ -6545,13 +6951,18 @@ emit_llvm_file (MonoAotCompile *acfg)
        if (acfg->aot_opts.mtriple)
                g_string_append_printf (acfg->llc_args, " -mtriple=%s", acfg->aot_opts.mtriple);
 
+#if defined(TARGET_MACH) && defined(TARGET_ARM)
+       /* ios requires PIC code now */
+       g_string_append_printf (acfg->llc_args, " -relocation-model=pic");
+#else
        if (llvm_acfg->aot_opts.static_link)
                g_string_append_printf (acfg->llc_args, " -relocation-model=static");
        else
                g_string_append_printf (acfg->llc_args, " -relocation-model=pic");
+#endif
        unlink (acfg->tmpfname);
 
-       command = g_strdup_printf ("%sllc %s -disable-gnu-eh-frame -enable-mono-eh-frame -o %s %s.opt.bc", acfg->aot_opts.llvm_path, acfg->llc_args->str, acfg->tmpfname, acfg->tmpfname);
+       command = g_strdup_printf ("%sllc %s -disable-gnu-eh-frame -enable-mono-eh-frame -o \"%s\" \"%s.opt.bc\"", acfg->aot_opts.llvm_path, acfg->llc_args->str, acfg->tmpfname, acfg->tmpbasename);
 
        printf ("Executing llc: %s\n", command);
 
@@ -6566,7 +6977,6 @@ emit_code (MonoAotCompile *acfg)
 {
        int oindex, i, prev_index;
        char symbol [256];
-       char end_symbol [256];
 
 #if defined(TARGET_POWERPC64)
        sprintf (symbol, ".Lgot_addr");
@@ -6581,21 +6991,20 @@ emit_code (MonoAotCompile *acfg)
         * code_offsets array. It is also used to compute the memory ranges occupied by
         * AOT code, so it must be equal to the address of the first emitted method.
         */
-       sprintf (symbol, "methods");
        emit_section_change (acfg, ".text", 0);
        emit_alignment (acfg, 8);
        if (acfg->llvm) {
                for (i = 0; i < acfg->nmethods; ++i) {
                        if (acfg->cfgs [i] && acfg->cfgs [i]->compile_llvm) {
-                               fprintf (acfg->fp, "\n.set methods, %s\n", acfg->cfgs [i]->asm_symbol);
+                               acfg->methods_symbol = g_strdup (acfg->cfgs [i]->asm_symbol);
                                break;
                        }
                }
-               if (i == acfg->nmethods)
-                       /* No LLVM compiled methods */
-                       emit_label (acfg, symbol);
-       } else {
+       }
+       if (!acfg->methods_symbol) {
+               sprintf (symbol, "methods");
                emit_label (acfg, symbol);
+               acfg->methods_symbol = g_strdup (symbol);
        }
 
        /* 
@@ -6635,12 +7044,18 @@ emit_code (MonoAotCompile *acfg)
                        emit_alignment (acfg, AOT_FUNC_ALIGNMENT);
 #endif
 
-                       if (acfg->thumb_mixed && cfg->compile_llvm)
+                       if (acfg->thumb_mixed && cfg->compile_llvm) {
+                               emit_set_thumb_mode (acfg);
                                fprintf (acfg->fp, "\n.thumb_func\n");
+                       }
 
                        emit_label (acfg, symbol);
 
                        arch_emit_unbox_trampoline (acfg, cfg, cfg->orig_method, cfg->asm_symbol);
+
+                       if (acfg->thumb_mixed && cfg->compile_llvm) {
+                               emit_set_arm_mode (acfg);
+                       }
                }
 
                if (cfg->compile_llvm)
@@ -6653,6 +7068,8 @@ emit_code (MonoAotCompile *acfg)
        emit_section_change (acfg, ".text", 0);
        emit_alignment (acfg, 8);
        emit_label (acfg, symbol);
+       /* To distinguish it from the next symbol */
+       emit_int32 (acfg, 0);
 
        /* 
         * Add .no_dead_strip directives for all LLVM methods to prevent the OSX linker
@@ -6673,24 +7090,39 @@ emit_code (MonoAotCompile *acfg)
        if (acfg->direct_method_addresses) {
                acfg->flags |= MONO_AOT_FILE_FLAG_DIRECT_METHOD_ADDRESSES;
 
+               /*
+                * To work around linker issues, we emit a table of branches, and disassemble them at runtime.
+                * This is PIE code, and the linker can update it if needed.
+                */
                sprintf (symbol, "method_addresses");
-               emit_section_change (acfg, RODATA_SECT, 1);
+               emit_section_change (acfg, ".text", 1);
                emit_alignment (acfg, 8);
                emit_label (acfg, symbol);
+               emit_local_symbol (acfg, symbol, "method_addresses_end", TRUE);
+               emit_unset_mode (acfg);
+               if (acfg->need_no_dead_strip)
+                       fprintf (acfg->fp, "    .no_dead_strip %s\n", symbol);
 
                for (i = 0; i < acfg->nmethods; ++i) {
                        if (acfg->cfgs [i]) {
-                               emit_pointer (acfg, acfg->cfgs [i]->asm_symbol);
+                               if (acfg->thumb_mixed && acfg->cfgs [i]->compile_llvm)
+                                       fprintf (acfg->fp, "\tblx %s\n", acfg->cfgs [i]->asm_symbol);
+                               else
+                                       fprintf (acfg->fp, "\tbl %s\n", acfg->cfgs [i]->asm_symbol);
                        } else {
-                               emit_pointer (acfg, NULL);
+                               fprintf (acfg->fp, "\tbl method_addresses\n");
                        }
                }
 
+               sprintf (symbol, "method_addresses_end");
+               emit_label (acfg, symbol);
+
                /* Empty */
                sprintf (symbol, "code_offsets");
                emit_section_change (acfg, RODATA_SECT, 1);
                emit_alignment (acfg, 8);
                emit_label (acfg, symbol);
+               emit_int32 (acfg, 0);
        } else {
                sprintf (symbol, "code_offsets");
                emit_section_change (acfg, RODATA_SECT, 1);
@@ -6699,10 +7131,9 @@ emit_code (MonoAotCompile *acfg)
 
                acfg->stats.offsets_size += acfg->nmethods * 4;
 
-               sprintf (end_symbol, "methods");
                for (i = 0; i < acfg->nmethods; ++i) {
                        if (acfg->cfgs [i]) {
-                               emit_symbol_diff (acfg, acfg->cfgs [i]->asm_symbol, end_symbol, 0);
+                               emit_symbol_diff (acfg, acfg->cfgs [i]->asm_symbol, acfg->methods_symbol, 0);
                        } else {
                                emit_int32 (acfg, 0xffffffff);
                        }
@@ -6716,10 +7147,9 @@ emit_code (MonoAotCompile *acfg)
 
        acfg->stats.offsets_size += acfg->nmethods * 4;
 
-       sprintf (end_symbol, "methods");
        for (i = 0; i < acfg->nmethods; ++i) {
                if (acfg->cfgs [i]) {
-                       emit_symbol_diff (acfg, acfg->cfgs [i]->asm_symbol, end_symbol, 0);
+                       emit_symbol_diff (acfg, acfg->cfgs [i]->asm_symbol, acfg->methods_symbol, 0);
                } else {
                        emit_int32 (acfg, 0xffffffff);
                }
@@ -6729,11 +7159,13 @@ emit_code (MonoAotCompile *acfg)
 
        /* Emit a sorted table mapping methods to their unbox trampolines */
        sprintf (symbol, "unbox_trampolines");
-       emit_section_change (acfg, RODATA_SECT, 1);
+       if (acfg->direct_method_addresses)
+               emit_section_change (acfg, ".text", 0);
+       else
+               emit_section_change (acfg, RODATA_SECT, 0);
        emit_alignment (acfg, 8);
        emit_label (acfg, symbol);
 
-       sprintf (end_symbol, "methods");
        prev_index = -1;
        for (i = 0; i < acfg->nmethods; ++i) {
                MonoCompile *cfg;
@@ -6751,10 +7183,15 @@ emit_code (MonoAotCompile *acfg)
                        sprintf (symbol, "ut_%d", index);
 
                        emit_int32 (acfg, index);
-                       if (acfg->direct_method_addresses)
-                               emit_pointer (acfg, symbol);
-                       else
-                               emit_symbol_diff (acfg, symbol, end_symbol, 0);
+                       if (acfg->direct_method_addresses) {
+                               emit_unset_mode (acfg);
+                               if (acfg->thumb_mixed && cfg->compile_llvm)
+                                       fprintf (acfg->fp, "\n\tblx %s\n", symbol);
+                               else
+                                       fprintf (acfg->fp, "\n\tbl %s\n", symbol);
+                       } else {
+                               emit_symbol_diff (acfg, symbol, acfg->methods_symbol, 0);
+                       }
                        /* Make sure the table is sorted by index */
                        g_assert (index > prev_index);
                        prev_index = index;
@@ -6762,6 +7199,7 @@ emit_code (MonoAotCompile *acfg)
        }
        sprintf (symbol, "unbox_trampolines_end");
        emit_label (acfg, symbol);
+       emit_int32 (acfg, 0);
 }
 
 static void
@@ -7045,6 +7483,7 @@ emit_extra_methods (MonoAotCompile *acfg)
                value = get_method_index (acfg, method);
 
                hash = mono_aot_method_hash (method) % table_size;
+               //printf ("X: %s %d\n", mono_method_full_name (method, 1), hash);
 
                chain_lengths [hash] ++;
                max_chain_length = MAX (max_chain_length, chain_lengths [hash]);
@@ -7590,7 +8029,7 @@ emit_file_info (MonoAotCompile *acfg)
         * various problems (i.e. arm/thumb).
         */
        emit_pointer (acfg, acfg->got_symbol);
-       emit_pointer (acfg, "methods");
+       emit_pointer (acfg, acfg->methods_symbol);
        if (acfg->llvm) {
                /*
                 * Emit a reference to the mono_eh_frame table created by our modified LLVM compiler.
@@ -7605,9 +8044,10 @@ emit_file_info (MonoAotCompile *acfg)
        emit_pointer (acfg, "method_info_offsets");
        emit_pointer (acfg, "ex_info_offsets");
        emit_pointer (acfg, "code_offsets");
-#ifdef MONOTOUCH
-       emit_pointer (acfg, "method_addresses");
-#endif
+       if (acfg->direct_method_addresses)
+               emit_pointer (acfg, "method_addresses");
+       else
+               emit_pointer (acfg, NULL);
        emit_pointer (acfg, "extra_method_info_offsets");
        emit_pointer (acfg, "extra_method_table");
        emit_pointer (acfg, "got_info_offsets");
@@ -7669,7 +8109,6 @@ emit_file_info (MonoAotCompile *acfg)
                memset (&t, 0, sizeof (MonoType));
                t.type = MONO_TYPE_R8;
                mono_type_size (&t, &align);
-
                emit_int32 (acfg, align);
 
                memset (&t, 0, sizeof (MonoType));
@@ -7682,6 +8121,10 @@ emit_file_info (MonoAotCompile *acfg)
        emit_int32 (acfg, __alignof__ (double));
        emit_int32 (acfg, __alignof__ (gint64));
 #endif
+       emit_int32 (acfg, MONO_TRAMPOLINE_NUM);
+       emit_int32 (acfg, acfg->tramp_page_size);
+       for (i = 0; i < MONO_AOT_TRAMP_NUM; ++i)
+               emit_int32 (acfg, acfg->tramp_page_code_offsets [i]);
 
        if (acfg->aot_opts.static_link) {
                char *p;
@@ -7701,6 +8144,7 @@ emit_file_info (MonoAotCompile *acfg)
                }
                acfg->static_linking_symbol = g_strdup (symbol);
                emit_global_inner (acfg, symbol, FALSE);
+               emit_alignment (acfg, sizeof (gpointer));
                emit_label (acfg, symbol);
                emit_pointer_2 (acfg, acfg->user_symbol_prefix, "mono_aot_file_info");
        }
@@ -7719,6 +8163,45 @@ emit_blob (MonoAotCompile *acfg)
        emit_bytes (acfg, (guint8*)acfg->blob.data, acfg->blob.index);
 }
 
+static void
+emit_objc_selectors (MonoAotCompile *acfg)
+{
+       int i;
+
+       if (!acfg->objc_selectors || acfg->objc_selectors->len == 0)
+               return;
+
+       /*
+        * From
+        * cat > foo.m << EOF
+        * void *ret ()
+        * {
+        * return @selector(print:);
+        * }
+        * EOF
+        */
+
+       img_writer_emit_unset_mode (acfg->w);
+       g_assert (acfg->fp);
+       fprintf (acfg->fp, ".section    __DATA,__objc_selrefs,literal_pointers,no_dead_strip\n");
+       fprintf (acfg->fp, ".align      2\n");
+       for (i = 0; i < acfg->objc_selectors->len; ++i) {
+               fprintf (acfg->fp, "L_OBJC_SELECTOR_REFERENCES_%d:\n", i);
+               fprintf (acfg->fp, ".long       L_OBJC_METH_VAR_NAME_%d\n", i);
+       }
+       fprintf (acfg->fp, ".section    __TEXT,__cstring,cstring_literals\n");
+       for (i = 0; i < acfg->objc_selectors->len; ++i) {
+               fprintf (acfg->fp, "L_OBJC_METH_VAR_NAME_%d:\n", i);
+               fprintf (acfg->fp, ".asciz \"%s\"\n", (char*)g_ptr_array_index (acfg->objc_selectors, i));
+       }
+
+       fprintf (acfg->fp, ".section    __DATA,__objc_imageinfo,regular,no_dead_strip\n");
+       fprintf (acfg->fp, ".align      2\n");
+       fprintf (acfg->fp, "L_OBJC_IMAGE_INFO:\n");
+       fprintf (acfg->fp, ".long       0\n");
+       fprintf (acfg->fp, ".long       16\n");
+}
+
 static void
 emit_dwarf_info (MonoAotCompile *acfg)
 {
@@ -7739,7 +8222,7 @@ emit_dwarf_info (MonoAotCompile *acfg)
 
                sprintf (symbol2, "%sme_%x", acfg->temp_prefix, i);
 
-               mono_dwarf_writer_emit_method (acfg->dwarf, cfg, cfg->method, cfg->asm_symbol, symbol2, cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, mono_debug_find_method (cfg->jit_info->method, mono_domain_get ()));
+               mono_dwarf_writer_emit_method (acfg->dwarf, cfg, cfg->method, cfg->asm_symbol, symbol2, cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, mono_debug_find_method (cfg->jit_info->d.method, mono_domain_get ()));
        }
 #endif
 }
@@ -7803,6 +8286,14 @@ collect_methods (MonoAotCompile *acfg)
                method = mono_get_method (acfg->image, token, NULL);
                if (!method)
                        continue;
+               /*
+               if (strcmp (method->name, "gshared2"))
+                       continue;
+               */
+               /*
+               if (!strstr (method->klass->image->name, "mini"))
+                       continue;
+               */
                if (method->is_generic || method->klass->generic_container) {
                        MonoMethod *gshared;
 
@@ -7904,6 +8395,8 @@ compile_asm (MonoAotCompile *acfg)
 #else
 #define AS_NAME "nacl-as"
 #endif
+#elif defined(TARGET_OSX)
+#define AS_NAME "clang -c -x assembler"
 #else
 #define AS_NAME "as"
 #endif
@@ -7912,7 +8405,17 @@ compile_asm (MonoAotCompile *acfg)
 #define LD_OPTIONS ""
 #endif
 
-#define EH_LD_OPTIONS ""
+#if defined(sparc)
+#define LD_NAME "ld -shared -G"
+#elif defined(__ppc__) && defined(TARGET_MACH)
+#define LD_NAME "gcc -dynamiclib"
+#elif defined(TARGET_AMD64) && defined(TARGET_MACH)
+#define LD_NAME "clang --shared"
+#elif defined(HOST_WIN32)
+#define LD_NAME "gcc -shared --dll"
+#elif defined(TARGET_X86) && defined(TARGET_MACH) && !defined(__native_client_codegen__)
+#define LD_NAME "clang -m32 -dynamiclib"
+#endif
 
        if (acfg->aot_opts.asm_only) {
                printf ("Output file: '%s'.\n", acfg->tmpfname);
@@ -7953,18 +8456,10 @@ compile_asm (MonoAotCompile *acfg)
 
        tmp_outfile_name = g_strdup_printf ("%s.tmp", outfile_name);
 
-#if defined(sparc)
-       command = g_strdup_printf ("ld -shared -G -o %s %s.o", tmp_outfile_name, acfg->tmpfname);
-#elif defined(__ppc__) && defined(TARGET_MACH)
-       command = g_strdup_printf ("gcc -dynamiclib -o %s %s.o", tmp_outfile_name, acfg->tmpfname);
-#elif defined(TARGET_AMD64) && defined(TARGET_MACH)
-       command = g_strdup_printf ("gcc --shared -o %s %s.o", tmp_outfile_name, acfg->tmpfname);
-#elif defined(HOST_WIN32)
-       command = g_strdup_printf ("gcc -shared --dll -mno-cygwin -o %s %s.o", tmp_outfile_name, acfg->tmpfname);
-#elif defined(TARGET_X86) && defined(TARGET_MACH) && !defined(__native_client_codegen__)
-       command = g_strdup_printf ("gcc -m32 -dynamiclib -o %s %s.o", tmp_outfile_name, acfg->tmpfname);
+#ifdef LD_NAME
+       command = g_strdup_printf ("%s -o %s %s.o", LD_NAME, tmp_outfile_name, acfg->tmpfname);
 #else
-       command = g_strdup_printf ("%sld %s %s -shared -o %s %s.o", tool_prefix, EH_LD_OPTIONS, LD_OPTIONS, tmp_outfile_name, acfg->tmpfname);
+       command = g_strdup_printf ("%sld %s -shared -o %s %s.o", tool_prefix, LD_OPTIONS, tmp_outfile_name, acfg->tmpfname);
 #endif
        printf ("Executing the native linker: %s\n", command);
        if (system (command) != 0) {
@@ -8002,7 +8497,7 @@ compile_asm (MonoAotCompile *acfg)
 
 #if defined(TARGET_MACH)
        command = g_strdup_printf ("dsymutil %s", outfile_name);
-       printf ("Generating debug symbols: %s\n", command);
+       printf ("Executing dsymutil: %s\n", command);
        if (system (command) != 0) {
                return 1;
        }
@@ -8113,9 +8608,17 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        int i, res;
        MonoAotCompile *acfg;
        char *outfile_name, *tmp_outfile_name, *p;
+       char llvm_stats_msg [256];
        TV_DECLARE (atv);
        TV_DECLARE (btv);
 
+#if !defined(MONO_ARCH_GSHAREDVT_SUPPORTED) || (!defined(MONO_EXTENSIONS) && !defined(MONOTOUCH))
+       if (opts & MONO_OPT_GSHAREDVT) {
+               fprintf (stderr, "-O=gsharedvt not supported on this platform.\n");
+               exit (1);
+       }
+#endif
+
        printf ("Mono Ahead of Time compiler - compiling assembly %s\n", image->name);
 
        acfg = acfg_create (ass, opts);
@@ -8128,7 +8631,7 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        acfg->aot_opts.nrgctx_fetch_trampolines = 128;
        acfg->aot_opts.ngsharedvt_arg_trampolines = 128;
        acfg->aot_opts.llvm_path = g_strdup ("");
-#if MONOTOUCH
+#ifdef MONOTOUCH
        acfg->aot_opts.use_trampolines_page = TRUE;
 #endif
 
@@ -8217,6 +8720,12 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 
        acfg->method_index = 1;
 
+       // FIXME:
+       /*
+       if (acfg->aot_opts.full_aot)
+               mono_set_partial_sharing_supported (TRUE);
+       */
+
        collect_methods (acfg);
 
        acfg->cfgs_size = acfg->methods->len + 32;
@@ -8270,12 +8779,16 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 #ifdef ENABLE_LLVM
        if (acfg->llvm) {
                if (acfg->aot_opts.asm_only) {
-                       if (acfg->aot_opts.outfile)
+                       if (acfg->aot_opts.outfile) {
                                acfg->tmpfname = g_strdup_printf ("%s", acfg->aot_opts.outfile);
-                       else
-                               acfg->tmpfname = g_strdup_printf ("%s.s", acfg->image->name);
+                               acfg->tmpbasename = g_strdup (acfg->tmpfname);
+                       } else {
+                               acfg->tmpbasename = g_strdup_printf ("%s", acfg->image->name);
+                               acfg->tmpfname = g_strdup_printf ("%s.s", acfg->tmpbasename);
+                       }
                } else {
-                       acfg->tmpfname = g_strdup ("temp.s");
+                       acfg->tmpbasename = g_strdup_printf ("%s", "temp");
+                       acfg->tmpfname = g_strdup_printf ("%s.s", acfg->tmpbasename);
                }
 
                emit_llvm_file (acfg);
@@ -8318,10 +8831,10 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                                int i = g_file_open_tmp ("mono_aot_XXXXXX", &acfg->tmpfname, NULL);
                                acfg->fp = fdopen (i, "w+");
                        }
-                       if (acfg->fp == 0) {
-                               fprintf (stderr, "Unable to open file '%s': %s\n", acfg->tmpfname, strerror (errno));
-                               return 1;
-                       }
+               }
+               if (acfg->fp == 0) {
+                       fprintf (stderr, "Unable to open file '%s': %s\n", acfg->tmpfname, strerror (errno));
+                       return 1;
                }
                acfg->w = img_writer_create (acfg->fp, FALSE);
                
@@ -8346,12 +8859,19 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                }
        }
 
+       if (acfg->aot_opts.dwarf_debug && acfg->aot_opts.asm_only && acfg->aot_opts.gnu_asm) {
+               /*
+                * CLANG supports GAS .file/.loc directives, so emit line number information this way
+                */
+               acfg->gas_line_numbers = TRUE;
+       }
+
        if (!acfg->aot_opts.nodebug || acfg->aot_opts.dwarf_debug) {
                if (acfg->aot_opts.dwarf_debug && mono_debug_format == MONO_DEBUG_FORMAT_NONE) {
                        fprintf (stderr, "The dwarf AOT option requires the --debug option.\n");
                        return 1;
                }
-               acfg->dwarf = mono_dwarf_writer_create (acfg->w, NULL, 0, FALSE);
+               acfg->dwarf = mono_dwarf_writer_create (acfg->w, NULL, 0, FALSE, !acfg->gas_line_numbers);
        }
 
        img_writer_emit_start (acfg->w);
@@ -8402,6 +8922,8 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
 
        emit_blob (acfg);
 
+       emit_objc_selectors (acfg);
+
        emit_globals (acfg);
 
        emit_autoreg (acfg);
@@ -8427,9 +8949,14 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
        if (acfg->llvm)
                g_assert (acfg->got_offset <= acfg->final_got_size);
 
+       if (acfg->llvm)
+               sprintf (llvm_stats_msg, ", LLVM: %d (%d%%)", acfg->stats.llvm_count, acfg->stats.mcount ? (acfg->stats.llvm_count * 100) / acfg->stats.mcount : 100);
+       else
+               strcpy (llvm_stats_msg, "");
        printf ("Code: %d Info: %d Ex Info: %d Unwind Info: %d Class Info: %d PLT: %d GOT Info: %d GOT: %d Offsets: %d\n", acfg->stats.code_size, acfg->stats.info_size, acfg->stats.ex_info_size, acfg->stats.unwind_info_size, acfg->stats.class_info_size, acfg->plt_offset, acfg->stats.got_info_size, (int)(acfg->got_offset * sizeof (gpointer)), acfg->stats.offsets_size);
-       printf ("Compiled: %d/%d (%d%%), No GOT slots: %d (%d%%), Direct calls: %d (%d%%)\n", 
+       printf ("Compiled: %d/%d (%d%%)%s, No GOT slots: %d (%d%%), Direct calls: %d (%d%%)\n", 
                        acfg->stats.ccount, acfg->stats.mcount, acfg->stats.mcount ? (acfg->stats.ccount * 100) / acfg->stats.mcount : 100,
+                       llvm_stats_msg,
                        acfg->stats.methods_without_got_slots, acfg->stats.mcount ? (acfg->stats.methods_without_got_slots * 100) / acfg->stats.mcount : 100,
                        acfg->stats.direct_calls, acfg->stats.all_calls ? (acfg->stats.direct_calls * 100) / acfg->stats.all_calls : 100);
        if (acfg->stats.genericcount)
@@ -8440,8 +8967,6 @@ mono_compile_assembly (MonoAssembly *ass, guint32 opts, const char *aot_options)
                printf ("%d methods contain lmf pointers (%d%%)\n", acfg->stats.lmfcount, acfg->stats.mcount ? (acfg->stats.lmfcount * 100) / acfg->stats.mcount : 100);
        if (acfg->stats.ocount)
                printf ("%d methods have other problems (%d%%)\n", acfg->stats.ocount, acfg->stats.mcount ? (acfg->stats.ocount * 100) / acfg->stats.mcount : 100);
-       if (acfg->llvm)
-               printf ("Methods compiled with LLVM: %d (%d%%)\n", acfg->stats.llvm_count, acfg->stats.mcount ? (acfg->stats.llvm_count * 100) / acfg->stats.mcount : 100);
 
        TV_GETTIME (atv);
        res = img_writer_emit_writeout (acfg->w);
index accaede79ea41e0ce1f0d65dea1d939c9fcdc1b3..c868a796a03d0f463b28a740ea05cdd2c322a537 100644 (file)
 #define SHARED_EXT ".so"
 #endif
 
+#define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
 #define ALIGN_PTR_TO(ptr,align) (gpointer)((((gssize)(ptr)) + (align - 1)) & (~(align - 1)))
 #define ROUND_DOWN(VALUE,SIZE) ((VALUE) & ~((SIZE) - 1))
 
+typedef struct {
+       int method_index;
+       MonoJitInfo *jinfo;
+} JitInfoMap;
+
 typedef struct MonoAotModule {
        char *aot_name;
        /* Pointer to the Global Offset Table */
@@ -98,9 +104,7 @@ typedef struct MonoAotModule {
        guint8 *plt_end;
        guint8 *blob;
        gint32 *code_offsets;
-#ifdef MONOTOUCH
        gpointer *method_addresses;
-#endif
        /* This contains <offset, index> pairs sorted by offset */
        /* This is needed because LLVM emitted methods can be in any order */
        gint32 *sorted_code_offsets;
@@ -132,6 +136,8 @@ typedef struct MonoAotModule {
 
        gpointer *globals;
        MonoDl *sofile;
+
+       JitInfoMap *async_jit_info_table;
 } MonoAotModule;
 
 typedef struct {
@@ -180,6 +186,9 @@ static guint32 n_pagefaults = 0;
 static gsize aot_code_low_addr = (gssize)-1;
 static gsize aot_code_high_addr = 0;
 
+/* Stats */
+static gint32 async_jit_info_size;
+
 static GHashTable *aot_jit_icall_hash;
 
 #ifdef MONOTOUCH
@@ -908,6 +917,12 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                                if (!m)
                                        return FALSE;
                                ref->method = mono_marshal_get_synchronized_inner_wrapper (m);
+                       } else if (subtype == WRAPPER_SUBTYPE_ARRAY_ACCESSOR) {
+                               MonoMethod *m = decode_resolve_method_ref (module, p, &p);
+
+                               if (!m)
+                                       return FALSE;
+                               ref->method = mono_marshal_get_array_accessor_wrapper (m);
                        } else if (subtype == WRAPPER_SUBTYPE_GSHAREDVT_IN) {
                                ref->method = mono_marshal_get_gsharedvt_in_wrapper ();
                        } else if (subtype == WRAPPER_SUBTYPE_GSHAREDVT_OUT) {
@@ -1042,6 +1057,7 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                case MONO_WRAPPER_DELEGATE_BEGIN_INVOKE:
                case MONO_WRAPPER_DELEGATE_END_INVOKE: {
                        gboolean is_inflated = decode_value (p, &p);
+                       WrapperSubtype subtype;
 
                        if (is_inflated) {
                                MonoClass *klass;
@@ -1079,6 +1095,19 @@ decode_method_ref_with_target (MonoAotModule *module, MethodRef *ref, MonoMethod
                                if (!target)
                                        return FALSE;
 
+                               if (wrapper_type == MONO_WRAPPER_DELEGATE_INVOKE) {
+                                       WrapperInfo *info;
+
+                                       subtype = decode_value (p, &p);
+                                       info = mono_marshal_get_wrapper_info (target);
+                                       if (info) {
+                                               if (info->subtype != subtype)
+                                                       return FALSE;
+                                       } else {
+                                               if (subtype != WRAPPER_SUBTYPE_NONE)
+                                                       return FALSE;
+                                       }
+                               }
                                if (sig_matches_target (module, target, p, &p))
                                        ref->method = target;
                                else
@@ -1491,6 +1520,28 @@ check_usable (MonoAssembly *assembly, MonoAotFileInfo *info, char **out_msg)
        return usable;
 }
 
+/* This returns an interop address */
+static void*
+get_arm_bl_target (guint32 *ins_addr)
+{
+#ifdef TARGET_ARM
+       guint32 ins = *ins_addr;
+       gint32 offset;
+
+       if ((ins >> ARMCOND_SHIFT) == ARMCOND_NV) {
+               /* blx */
+               offset = (((int)(((ins & 0xffffff) << 1) | ((ins >> 24) & 0x1))) << 7) >> 7;
+               return (char*)ins_addr + (offset * 2) + 8 + 1;
+       } else {
+               offset = (((int)ins & 0xffffff) << 8) >> 8;
+               return (char*)ins_addr + (offset * 4) + 8;
+       }
+#else
+       g_assert_not_reached ();
+       return NULL;
+#endif
+}
+
 static void
 load_aot_module (MonoAssembly *assembly, gpointer user_data)
 {
@@ -1505,6 +1556,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
        int i, version;
        guint8 *blob;
        gboolean do_load_image = TRUE;
+       int align_double, align_int64;
 
        if (mono_compile_aot)
                return;
@@ -1545,7 +1597,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                        sofile = mono_dl_open (aot_name, MONO_DL_LAZY, &err);
 
                        if (!sofile) {
-                               mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT failed to load AOT module %s: %s\n", aot_name, err);
+                               mono_trace (G_LOG_LEVEL_INFO, MONO_TRACE_AOT, "AOT module '%s' not found: %s\n", aot_name, err);
                                g_free (err);
                        }
                }
@@ -1595,9 +1647,29 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                return;
        }
 
+#if defined (TARGET_ARM) && defined (TARGET_MACH)
+       {
+               MonoType t;
+               int align = 0;
+
+               memset (&t, 0, sizeof (MonoType));
+               t.type = MONO_TYPE_R8;
+               mono_type_size (&t, &align);
+               align_double = align;
+
+               memset (&t, 0, sizeof (MonoType));
+               t.type = MONO_TYPE_I8;
+               align_int64 = align;
+       }
+#else
+       align_double = __alignof__ (double);
+       align_int64 = __alignof__ (gint64);
+#endif
+
        /* Sanity check */
-       g_assert (info->double_align == __alignof__ (double));
-       g_assert (info->long_align == __alignof__ (gint64));
+       g_assert (info->double_align == align_double);
+       g_assert (info->long_align == align_int64);
+       g_assert (info->generic_tramp_num == MONO_TRAMPOLINE_NUM);
 
        blob = info->blob;
 
@@ -1656,9 +1728,7 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
        }
 
        amodule->code_offsets = info->code_offsets;
-#ifdef MONOTOUCH
        amodule->method_addresses = info->method_addresses;
-#endif
        amodule->code = info->methods;
 #ifdef TARGET_ARM
        /* Mask out thumb interop bit */
@@ -1691,10 +1761,13 @@ load_aot_module (MonoAssembly *assembly, gpointer user_data)
                /* Compute code_offsets from the method addresses */
                amodule->code_offsets = g_malloc0 (amodule->info.nmethods * sizeof (gint32));
                for (i = 0; i < amodule->info.nmethods; ++i) {
-                       if (!amodule->method_addresses [i])
+                       /* method_addresses () contains a table of branches, since the ios linker can update those correctly */
+                       void *addr = get_arm_bl_target ((guint32*)amodule->method_addresses + i);
+
+                       if (addr == amodule->method_addresses)
                                amodule->code_offsets [i] = 0xffffffff;
                        else
-                               amodule->code_offsets [i] = (char*)amodule->method_addresses [i] - (char*)amodule->code;
+                               amodule->code_offsets [i] = (char*)addr - (char*)amodule->code;
                }
        }
 #endif
@@ -1843,6 +1916,7 @@ mono_aot_init (void)
 #ifndef __native_client__
        mono_install_assembly_load_hook (load_aot_module, NULL);
 #endif
+       mono_counters_register ("Async JIT info size", MONO_COUNTER_INT|MONO_COUNTER_JIT, &async_jit_info_size);
 
        if (g_getenv ("MONO_LASTAOT"))
                mono_last_aot_method = atoi (g_getenv ("MONO_LASTAOT"));
@@ -2102,14 +2176,10 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
 
        /* Header */
        version = *p;
-       g_assert (version == 1 || version == 2);
+       g_assert (version == 3);
+       p ++;
+       func_encoding = *p;
        p ++;
-       if (version == 2) {
-               func_encoding = *p;
-               p ++;
-       } else {
-               func_encoding = DW_EH_PE_pcrel;
-       }
        p = ALIGN_PTR_TO (p, 4);
 
        fde_count = *(guint32*)p;
@@ -2120,31 +2190,20 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
        cie = p + ((fde_count + 1) * 8);
 
        /* Binary search in the table to find the entry for code */
-       if (func_encoding == DW_EH_PE_absptr) {
-               /*
-                * Table entries are encoded as DW_EH_PE_absptr, because the ios linker can move functions inside object files to make thumb work,
-                * so the offsets between two symbols in the text segment are not assembler constant.
-                */
-               g_assert (sizeof(gpointer) == 4);
-               offset = GPOINTER_TO_INT (code);
-       } else {
-               /* Table entries are encoded as DW_EH_PE_pcrel relative to mono_eh_frame */
-               offset = code - amodule->mono_eh_frame;
-       }
-
+       offset = code - amodule->code;
        left = 0;
        right = fde_count;
        while (TRUE) {
                pos = (left + right) / 2;
 
-               offset1 = table [(pos * 2)];
+               /* The table contains method index/fde offset pairs */
+               g_assert (table [(pos * 2)] != -1);
+               offset1 = amodule->code_offsets [table [(pos * 2)]];
                if (pos + 1 == fde_count) {
-                       if (func_encoding == DW_EH_PE_absptr)
-                               offset2 = GPOINTER_TO_INT (amodule->code_end);
-                       else
-                               offset2 = amodule->code_end - amodule->code;
+                       offset2 = amodule->code_end - amodule->code;
                } else {
-                       offset2 = table [(pos + 1) * 2];
+                       g_assert (table [(pos + 1) * 2] != -1);
+                       offset2 = amodule->code_offsets [table [(pos + 1) * 2]];
                }
 
                if (offset < offset1)
@@ -2155,13 +2214,13 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
                        break;
        }
 
-       if (func_encoding == DW_EH_PE_absptr) {
-               code_start = (gpointer)(gsize)table [(pos * 2)];
-               code_end = (gpointer)(gsize)table [(pos * 2) + 2];
+       code_start = amodule->code + amodule->code_offsets [table [(pos * 2)]];
+       if (pos + 1 == fde_count) {
+               /* The +1 entry in the table contains the length of the last method */
+               int len = table [(pos + 1) * 2];
+               code_end = code_start + len;
        } else {
-               code_start = amodule->mono_eh_frame + table [(pos * 2)];
-               /* This won't overflow because there is +1 entry in the table */
-               code_end = amodule->mono_eh_frame + table [(pos * 2) + 2];
+               code_end = amodule->code + amodule->code_offsets [table [(pos + 1) * 2]];
        }
        code_len = code_end - code_start;
 
@@ -2206,11 +2265,11 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
         * allocate a new JI.
         */
        jinfo = 
-               mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO + (sizeof (MonoJitExceptionInfo) * (ei_len + nested_len)) + extra_size);
+               mono_domain_alloc0_lock_free (domain, MONO_SIZEOF_JIT_INFO + (sizeof (MonoJitExceptionInfo) * (ei_len + nested_len)) + extra_size);
 
        jinfo->code_size = code_len;
        jinfo->used_regs = mono_cache_unwind_info (info.unw_info, info.unw_info_len);
-       jinfo->method = method;
+       jinfo->d.method = method;
        jinfo->code_start = code;
        jinfo->domain_neutral = 0;
        /* This signals that used_regs points to a normal cached unwind info */
@@ -2270,15 +2329,30 @@ decode_llvm_mono_eh_frame (MonoAotModule *amodule, MonoDomain *domain,
        return jinfo;
 }
 
+static gpointer
+alloc0_jit_info_data (MonoDomain *domain, int size, gboolean async_context)
+{
+       gpointer res;
+
+       if (async_context) {
+               res = mono_domain_alloc0_lock_free (domain, size);
+               InterlockedExchangeAdd (&async_jit_info_size, size);
+       } else {
+               res = mono_domain_alloc0 (domain, size);
+       }
+       return res;
+}
+
 /*
  * LOCKING: Acquires the domain lock.
+ * In async context, this is async safe.
  */
 static MonoJitInfo*
 decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain, 
                                                         MonoMethod *method, guint8* ex_info, guint8 *addr,
                                                         guint8 *code, guint32 code_len)
 {
-       int i, buf_len, num_clauses;
+       int i, buf_len, num_clauses, len;
        MonoJitInfo *jinfo;
        guint used_int_regs, flags;
        gboolean has_generic_jit_info, has_dwarf_unwind_info, has_clauses, has_seq_points, has_try_block_holes, has_arch_eh_jit_info;
@@ -2286,8 +2360,10 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
        guint8 *p;
        int generic_info_size, try_holes_info_size, num_holes, arch_eh_jit_info_size;
        int this_reg = 0, this_offset = 0;
+       gboolean async;
 
        /* Load the method info from the AOT file */
+       async = mono_thread_info_is_async_context ();
 
        p = ex_info;
        flags = decode_value (p, &p);
@@ -2334,6 +2410,9 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
                MonoJitExceptionInfo *clauses;
                GSList **nesting;
 
+               // FIXME: async
+               g_assert (!async);
+
                /*
                 * Part of the info is encoded by the AOT compiler, the rest is in the .eh_frame
                 * section.
@@ -2366,8 +2445,8 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
                        g_slist_free (nesting [i]);
                g_free (nesting);
        } else {
-               jinfo = 
-                       mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO + (sizeof (MonoJitExceptionInfo) * num_clauses) + generic_info_size + try_holes_info_size + arch_eh_jit_info_size);
+               len = MONO_SIZEOF_JIT_INFO + (sizeof (MonoJitExceptionInfo) * num_clauses) + generic_info_size + try_holes_info_size + arch_eh_jit_info_size;
+               jinfo = alloc0_jit_info_data (domain, len, async);
                jinfo->num_clauses = num_clauses;
 
                for (i = 0; i < jinfo->num_clauses; ++i) {
@@ -2380,8 +2459,14 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
                        if (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER || ei->flags == MONO_EXCEPTION_CLAUSE_FINALLY)
                                ei->data.filter = code + decode_value (p, &p);
                        else {
-                               if (decode_value (p, &p))
-                                       ei->data.catch_class = decode_klass_ref (amodule, p, &p);
+                               int len = decode_value (p, &p);
+
+                               if (len > 0) {
+                                       if (async)
+                                               p += len;
+                                       else
+                                               ei->data.catch_class = decode_klass_ref (amodule, p, &p);
+                               }
                        }
 
                        ei->try_start = code + decode_value (p, &p);
@@ -2391,14 +2476,49 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 
                jinfo->code_size = code_len;
                jinfo->used_regs = used_int_regs;
-               jinfo->method = method;
+               jinfo->d.method = method;
                jinfo->code_start = code;
                jinfo->domain_neutral = 0;
                jinfo->from_aot = 1;
        }
 
+       if (has_try_block_holes) {
+               MonoTryBlockHoleTableJitInfo *table;
+
+               jinfo->has_try_block_holes = 1;
+
+               table = mono_jit_info_get_try_block_hole_table_info (jinfo);
+               g_assert (table);
+
+               table->num_holes = (guint16)num_holes;
+               for (i = 0; i < num_holes; ++i) {
+                       MonoTryBlockHoleJitInfo *hole = &table->holes [i];
+                       hole->clause = decode_value (p, &p);
+                       hole->length = decode_value (p, &p);
+                       hole->offset = decode_value (p, &p);
+               }
+       }
+
+       if (has_arch_eh_jit_info) {
+               MonoArchEHJitInfo *eh_info;
+
+               jinfo->has_arch_eh_info = 1;
+
+               eh_info = mono_jit_info_get_arch_eh_info (jinfo);
+               eh_info->stack_size = decode_value (p, &p);
+       }
+
+       if (async) {
+               /* The rest is not needed in async mode */
+               jinfo->async = TRUE;
+               jinfo->d.aot_info = amodule;
+               // FIXME: Cache
+               return jinfo;
+       }
+
        if (has_generic_jit_info) {
                MonoGenericJitInfo *gi;
+               int len;
 
                jinfo->has_generic_jit_info = 1;
 
@@ -2407,7 +2527,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 
                gi->nlocs = decode_value (p, &p);
                if (gi->nlocs) {
-                       gi->locations = mono_domain_alloc0 (domain, gi->nlocs * sizeof (MonoDwarfLocListEntry));
+                       gi->locations = alloc0_jit_info_data (domain, gi->nlocs * sizeof (MonoDwarfLocListEntry), async);
                        for (i = 0; i < gi->nlocs; ++i) {
                                MonoDwarfLocListEntry *entry = &gi->locations [i];
 
@@ -2431,7 +2551,11 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
                        }
                }
 
-               jinfo->method = decode_resolve_method_ref (amodule, p, &p);
+               len = decode_value (p, &p);
+               if (async)
+                       p += len;
+               else
+                       jinfo->d.method = decode_resolve_method_ref (amodule, p, &p);
 
                gi->generic_sharing_context = g_new0 (MonoGenericSharingContext, 1);
                if (decode_value (p, &p)) {
@@ -2441,46 +2565,20 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 
                        n = decode_value (p, &p);
                        if (n) {
-                               gsctx->var_is_vt = g_new0 (gboolean, n);
+                               gsctx->var_is_vt = alloc0_jit_info_data (domain, sizeof (gboolean) * n, async);
                                for (i = 0; i < n; ++i)
                                        gsctx->var_is_vt [i] = decode_value (p, &p);
                        }
                        n = decode_value (p, &p);
                        if (n) {
-                               gsctx->mvar_is_vt = g_new0 (gboolean, n);
+                               gsctx->mvar_is_vt = alloc0_jit_info_data (domain, sizeof (gboolean) * n, async);
                                for (i = 0; i < n; ++i)
                                        gsctx->mvar_is_vt [i] = decode_value (p, &p);
                        }
                }
        }
 
-       if (has_try_block_holes) {
-               MonoTryBlockHoleTableJitInfo *table;
-
-               jinfo->has_try_block_holes = 1;
-
-               table = mono_jit_info_get_try_block_hole_table_info (jinfo);
-               g_assert (table);
-
-               table->num_holes = (guint16)num_holes;
-               for (i = 0; i < num_holes; ++i) {
-                       MonoTryBlockHoleJitInfo *hole = &table->holes [i];
-                       hole->clause = decode_value (p, &p);
-                       hole->length = decode_value (p, &p);
-                       hole->offset = decode_value (p, &p);
-               }
-       }
-
-       if (has_arch_eh_jit_info) {
-               MonoArchEHJitInfo *eh_info;
-
-               jinfo->has_arch_eh_info = 1;
-
-               eh_info = mono_jit_info_get_arch_eh_info (jinfo);
-               eh_info->stack_size = decode_value (p, &p);
-       }
-
-       if (has_seq_points) {
+       if (method && has_seq_points) {
                MonoSeqPointInfo *seq_points;
                int il_offset, native_offset, last_il_offset, last_native_offset, j;
 
@@ -2497,6 +2595,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
                        sp->il_offset = il_offset;
                        sp->native_offset = native_offset;
                        
+                       sp->flags = decode_value (p, &p);
                        sp->next_len = decode_value (p, &p);
                        sp->next = g_new (int, sp->next_len);
                        for (j = 0; j < sp->next_len; ++j)
@@ -2513,7 +2612,8 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 
        /* Load debug info */
        buf_len = decode_value (p, &p);
-       mono_debug_add_aot_method (domain, method, code, p, buf_len);
+       if (!async)
+               mono_debug_add_aot_method (domain, method, code, p, buf_len);
        p += buf_len;
 
        if (has_gc_map) {
@@ -2525,7 +2625,7 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
                p += map_size;
        }
 
-       if (amodule != jinfo->method->klass->image->aot_module) {
+       if (amodule != jinfo->d.method->klass->image->aot_module) {
                mono_aot_lock ();
                if (!ji_to_amodule)
                        ji_to_amodule = g_hash_table_new (NULL, NULL);
@@ -2544,10 +2644,14 @@ decode_exception_debug_info (MonoAotModule *amodule, MonoDomain *domain,
 guint8*
 mono_aot_get_unwind_info (MonoJitInfo *ji, guint32 *unwind_info_len)
 {
-       MonoAotModule *amodule = ji->method->klass->image->aot_module;
+       MonoAotModule *amodule;
        guint8 *p;
        guint8 *code = ji->code_start;
 
+       if (ji->async)
+               amodule = ji->d.aot_info;
+       else
+               amodule = jinfo_get_method (ji)->klass->image->aot_module;
        g_assert (amodule);
        g_assert (ji->from_aot);
 
@@ -2626,6 +2730,13 @@ msort_code_offsets (gint32 *array, int len)
        g_free (scratch);
 }
 
+/*
+ * mono_aot_find_jit_info:
+ *
+ *   In async context, the resulting MonoJitInfo will not have its method field set, and it will not be added
+ * to the jit info tables.
+ * FIXME: Large sizes in the lock free allocator
+ */
 MonoJitInfo *
 mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
 {
@@ -2633,13 +2744,14 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
        int method_index, table_len;
        guint32 token;
        MonoAotModule *amodule = image->aot_module;
-       MonoMethod *method;
+       MonoMethod *method = NULL;
        MonoJitInfo *jinfo;
        guint8 *code, *ex_info, *p;
        guint32 *table;
        int nmethods = amodule->info.nmethods;
        gint32 *code_offsets;
        int offsets_len, i;
+       gboolean async;
 
        if (!amodule)
                return NULL;
@@ -2648,10 +2760,13 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
                /* FIXME: */
                return NULL;
 
+       async = mono_thread_info_is_async_context ();
+
        offset = (guint8*)addr - amodule->code;
 
        /* Compute a sorted table mapping code offsets to method indexes. */
        if (!amodule->sorted_code_offsets) {
+               // FIXME: async
                code_offsets = g_new0 (gint32, nmethods * 2);
                offsets_len = 0;
                for (i = 0; i < nmethods; ++i) {
@@ -2706,6 +2821,20 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
                g_assert (offset < code_offsets [((pos + 1) * 2)]);
        method_index = code_offsets [(pos * 2) + 1];
 
+       /* In async mode, jinfo is not added to the normal jit info table, so have to cache it ourselves */
+       if (async) {
+               JitInfoMap *table = amodule->async_jit_info_table;
+               int len;
+
+               if (table) {
+                       len = table [0].method_index;
+                       for (i = 1; i < len; ++i) {
+                               if (table [i].method_index == method_index)
+                                       return table [i].jinfo;
+                       }
+               }
+       }
+
        code = &amodule->code [amodule->code_offsets [method_index]];
        ex_info = &amodule->blob [mono_aot_get_offset (amodule->ex_info_offsets, method_index)];
 
@@ -2717,54 +2846,55 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
        g_assert ((guint8*)code <= (guint8*)addr && (guint8*)addr < (guint8*)code + code_len);
 
        /* Might be a wrapper/extra method */
-       if (amodule->extra_methods) {
-               mono_aot_lock ();
-               method = g_hash_table_lookup (amodule->extra_methods, GUINT_TO_POINTER (method_index));
-               mono_aot_unlock ();
-       } else {
-               method = NULL;
-       }
-
-       if (!method) {
-               if (method_index >= image->tables [MONO_TABLE_METHOD].rows) {
-                       /* 
-                        * This is hit for extra methods which are called directly, so they are
-                        * not in amodule->extra_methods.
-                        */
-                       table_len = amodule->extra_method_info_offsets [0];
-                       table = amodule->extra_method_info_offsets + 1;
-                       left = 0;
-                       right = table_len;
-                       pos = 0;
-
-                       /* Binary search */
-                       while (TRUE) {
-                               pos = ((left + right) / 2);
+       if (!async) {
+               if (amodule->extra_methods) {
+                       mono_aot_lock ();
+                       method = g_hash_table_lookup (amodule->extra_methods, GUINT_TO_POINTER (method_index));
+                       mono_aot_unlock ();
+               } else {
+                       method = NULL;
+               }
 
-                               g_assert (pos < table_len);
+               if (!method) {
+                       if (method_index >= image->tables [MONO_TABLE_METHOD].rows) {
+                               /*
+                                * This is hit for extra methods which are called directly, so they are
+                                * not in amodule->extra_methods.
+                                */
+                               table_len = amodule->extra_method_info_offsets [0];
+                               table = amodule->extra_method_info_offsets + 1;
+                               left = 0;
+                               right = table_len;
+                               pos = 0;
+
+                               /* Binary search */
+                               while (TRUE) {
+                                       pos = ((left + right) / 2);
+
+                                       g_assert (pos < table_len);
+
+                                       if (table [pos * 2] < method_index)
+                                               left = pos + 1;
+                                       else if (table [pos * 2] > method_index)
+                                               right = pos;
+                                       else
+                                               break;
+                               }
 
-                               if (table [pos * 2] < method_index)
-                                       left = pos + 1;
-                               else if (table [pos * 2] > method_index)
-                                       right = pos;
-                               else
-                                       break;
+                               p = amodule->blob + table [(pos * 2) + 1];
+                               method = decode_resolve_method_ref (amodule, p, &p);
+                               if (!method)
+                                       /* Happens when a random address is passed in which matches a not-yey called wrapper encoded using its name */
+                                       return NULL;
+                       } else {
+                               token = mono_metadata_make_token (MONO_TABLE_METHOD, method_index + 1);
+                               method = mono_get_method (image, token, NULL);
                        }
-
-                       p = amodule->blob + table [(pos * 2) + 1];
-                       method = decode_resolve_method_ref (amodule, p, &p);
-                       if (!method)
-                               /* Happens when a random address is passed in which matches a not-yey called wrapper encoded using its name */
-                               return NULL;
-               } else {
-                       token = mono_metadata_make_token (MONO_TABLE_METHOD, method_index + 1);
-                       method = mono_get_method (image, token, NULL);
                }
+               /* FIXME: */
+               g_assert (method);
        }
 
-       /* FIXME: */
-       g_assert (method);
-
        //printf ("F: %s\n", mono_method_full_name (method, TRUE));
        
        jinfo = decode_exception_debug_info (amodule, domain, method, ex_info, addr, code, code_len);
@@ -2773,7 +2903,35 @@ mono_aot_find_jit_info (MonoDomain *domain, MonoImage *image, gpointer addr)
        g_assert ((guint8*)addr < (guint8*)jinfo->code_start + jinfo->code_size);
 
        /* Add it to the normal JitInfo tables */
-       mono_jit_info_table_add (domain, jinfo);
+       if (async) {
+               JitInfoMap *old_table, *new_table;
+               int len;
+
+               /*
+                * Use a simple inmutable table with linear search to cache async jit info entries.
+                * This assumes that the number of entries is small.
+                */
+               while (TRUE) {
+                       /* Copy the table, adding a new entry at the end */
+                       old_table = amodule->async_jit_info_table;
+                       if (old_table)
+                               len = old_table[0].method_index;
+                       else
+                               len = 1;
+                       new_table = alloc0_jit_info_data (domain, (len + 1) * sizeof (JitInfoMap), async);
+                       if (old_table)
+                               memcpy (new_table, old_table, len * sizeof (JitInfoMap));
+                       new_table [0].method_index = len + 1;
+                       new_table [len].method_index = method_index;
+                       new_table [len].jinfo = jinfo;
+                       /* Publish it */
+                       mono_memory_barrier ();
+                       if (InterlockedCompareExchangePointer ((gpointer)&amodule->async_jit_info_table, new_table, old_table) == old_table)
+                               break;
+               }
+       } else {
+               mono_jit_info_table_add (domain, jinfo);
+       }
        
        return jinfo;
 }
@@ -2958,6 +3116,9 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
        case MONO_PATCH_INFO_SIGNATURE:
                ji->data.target = decode_signature (aot_module, p, &p);
                break;
+       case MONO_PATCH_INFO_TLS_OFFSET:
+               ji->data.target = GINT_TO_POINTER (decode_value (p, &p));
+               break;
        case MONO_PATCH_INFO_GSHAREDVT_CALL: {
                MonoJumpInfoGSharedVtCall *info = g_new0 (MonoJumpInfoGSharedVtCall, 1);
                info->sig = decode_signature (aot_module, p, &p);
@@ -2968,6 +3129,41 @@ decode_patch (MonoAotModule *aot_module, MonoMemPool *mp, MonoJumpInfo *ji, guin
                ji->data.target = info;
                break;
        }
+       case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
+               MonoGSharedVtMethodInfo *info = g_new0 (MonoGSharedVtMethodInfo, 1);
+               int i, nentries;
+               
+               info->method = decode_resolve_method_ref (aot_module, p, &p);
+               g_assert (info->method);
+               nentries = decode_value (p, &p);
+               info->entries = g_ptr_array_new ();
+               for (i = 0; i < nentries; ++i) {
+                       MonoRuntimeGenericContextInfoTemplate *template = g_new0 (MonoRuntimeGenericContextInfoTemplate, 1);
+
+                       template->info_type = decode_value (p, &p);
+                       switch (mini_rgctx_info_type_to_patch_info_type (template->info_type)) {
+                       case MONO_PATCH_INFO_CLASS: {
+                               MonoClass *klass = decode_klass_ref (aot_module, p, &p);
+                               if (!klass)
+                                       goto cleanup;
+                               template->data = &klass->byval_arg;
+                               break;
+                       }
+                       case MONO_PATCH_INFO_FIELD:
+                               template->data = decode_field_info (aot_module, p, &p);
+                               if (!template->data)
+                                       goto cleanup;
+                               break;
+                       default:
+                               g_assert_not_reached ();
+                               break;
+                       }
+
+                       g_ptr_array_add (info->entries, template);
+               }
+               ji->data.target = info;
+               break;
+       }
        default:
                g_warning ("unhandled type %d", ji->type);
                g_assert_not_reached ();
@@ -3418,7 +3614,8 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
        g_assert (klass->inited);
 
        /* Find method index */
-       if (method->is_inflated && !method->wrapper_type && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE)) {
+       method_index = 0xffffff;
+       if (method->is_inflated && !method->wrapper_type && mono_method_is_generic_sharable_full (method, FALSE, FALSE, FALSE)) {
                /* 
                 * For generic methods, we store the fully shared instance in place of the
                 * original method.
@@ -3522,7 +3719,17 @@ mono_aot_get_method (MonoDomain *domain, MonoMethod *method)
                                return code;
                }
 
-               if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE)) {
+               if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_full (method, FALSE, TRUE, FALSE)) {
+                       /* Partial sharing */
+                       MonoMethod *shared;
+
+                       shared = mini_get_shared_method (method);
+                       method_index = find_extra_method (shared, &amodule);
+                       if (method_index != 0xffffff)
+                               method = shared;
+               }
+
+               if (method_index == 0xffffff && method->is_inflated && mono_method_is_generic_sharable_full (method, FALSE, FALSE, TRUE)) {
                        /* gsharedvt */
                        /* Use the all-vt shared method since this is what was AOTed */
                        method_index = find_extra_method (mini_get_shared_method_full (method, TRUE, TRUE), &amodule);
@@ -4068,14 +4275,16 @@ get_new_trampoline_from_page (int tramp_type)
        vm_address_t addr, taddr;
        kern_return_t ret;
        vm_prot_t prot, max_prot;
-       int psize;
+       int psize, specific_trampoline_size;
        unsigned char *code;
 
+       specific_trampoline_size = 2 * sizeof (gpointer);
+
        mono_aot_page_lock ();
        page = trampoline_pages [tramp_type];
        if (page && page->trampolines < page->trampolines_end) {
                code = page->trampolines;
-               page->trampolines += 8;
+               page->trampolines += specific_trampoline_size;
                mono_aot_page_unlock ();
                return code;
        }
@@ -4088,6 +4297,8 @@ get_new_trampoline_from_page (int tramp_type)
        amodule = image->aot_module;
        g_assert (amodule);
 
+       g_assert (amodule->info.tramp_page_size == psize);
+
        if (tramp_type == MONO_AOT_TRAMP_SPECIFIC)
                tpage = load_function (amodule, "specific_trampolines_page");
        else if (tramp_type == MONO_AOT_TRAMP_STATIC_RGCTX)
@@ -4131,7 +4342,7 @@ get_new_trampoline_from_page (int tramp_type)
                /* some other thread already allocated, so use that to avoid wasting memory */
                if (page && page->trampolines < page->trampolines_end) {
                        code = page->trampolines;
-                       page->trampolines += 8;
+                       page->trampolines += specific_trampoline_size;
                        mono_aot_page_unlock ();
                        vm_deallocate (mach_task_self (), addr, psize);
                        vm_deallocate (mach_task_self (), taddr, psize);
@@ -4243,7 +4454,7 @@ get_numerous_trampoline (MonoAotTrampoline tramp_type, int n_got_slots, MonoAotM
        *out_amodule = amodule;
 
 #ifdef MONOTOUCH
-#define        MONOTOUCH_TRAMPOLINES_ERROR ". See http://docs.xamarin.com/ios/troubleshooting for instruction on how to fix this condition"
+#define        MONOTOUCH_TRAMPOLINES_ERROR ". See http://docs.xamarin.com/ios/troubleshooting for instructions on how to fix this condition."
 #else
 #define        MONOTOUCH_TRAMPOLINES_ERROR ""
 #endif
@@ -4347,9 +4558,9 @@ mono_aot_get_unbox_trampoline (MonoMethod *method)
        guint32 *ut, *ut_end, *entry;
        int low, high, entry_index;
 
-       if (method->is_inflated && !mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, FALSE)) {
+       if (method->is_inflated && !mono_method_is_generic_sharable_full (method, FALSE, FALSE, FALSE)) {
                method_index = find_extra_method (method, &amodule);
-               if (method_index == 0xffffff && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE)) {
+               if (method_index == 0xffffff && mono_method_is_generic_sharable_full (method, FALSE, FALSE, TRUE)) {
                        MonoMethod *shared = mini_get_shared_method_full (method, TRUE, TRUE);
                        method_index = find_extra_method (shared, &amodule);
                }
@@ -4375,7 +4586,7 @@ mono_aot_get_unbox_trampoline (MonoMethod *method)
                        high = entry_index;
                } else {
                        if (amodule->info.flags & MONO_AOT_FILE_FLAG_DIRECT_METHOD_ADDRESSES)
-                               code = (gpointer)(gsize)entry [1];
+                               code = get_arm_bl_target (entry + 1);
                        else
                                code = amodule->code + entry [1];
                        break;
index e65e30a203f73d038a0ead499237957e72e07157..55df1662c34358f3bf3fc345dec84b404e7e8a16 100644 (file)
@@ -23,11 +23,18 @@ using System.Reflection;
  * the IL code looks.
  */
 
-class Tests {
-
+#if MOBILE
+class ArrayTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
        
        public static int test_10_create () {
                int[] a = new int [10];
@@ -101,30 +108,31 @@ class Tests {
                return 0;
        }
 
-       private Int32[] m_array = new int [10];
-       
-       void setBit (int bitIndex, bool value) {
-               int index = bitIndex/32;
-               int shift = bitIndex%32;
+       class BitClass {
+               private Int32[] m_array = new int [10];
 
-               Int32 theBit = 1 << shift;
-               if (value)
-                       m_array[index] |= theBit;
-               else
-                       m_array[index] &= ~theBit;
-       }
-       
-       bool getBit (int bitIndex) {
-               int index = bitIndex/32;
-               int shift = bitIndex%32;
+               public void setBit (int bitIndex, bool value) {
+                       int index = bitIndex/32;
+                       int shift = bitIndex%32;
 
-               Int32 theBit = m_array[index] & (1 << shift);
-               return (theBit == 0) ? false : true;
+                       Int32 theBit = 1 << shift;
+                       if (value)
+                               m_array[index] |= theBit;
+                       else
+                               m_array[index] &= ~theBit;
+               }
+       
+               public bool getBit (int bitIndex) {
+                       int index = bitIndex/32;
+                       int shift = bitIndex%32;
 
+                       Int32 theBit = m_array[index] & (1 << shift);
+                       return (theBit == 0) ? false : true;
+               }
        }
        
        public static int test_1_bit_index () {
-               Tests t = new Tests ();
+               var t = new BitClass ();
                t.setBit (0, true);
                t.setBit (3, true);
                if (t.getBit (1))
@@ -499,10 +507,13 @@ class Tests {
                return y;
        }
 
+       class RefClass {
+       }
+
        public static int test_0_stelem_ref_null_opt () {
-               object[] arr = new Tests [1];
+               object[] arr = new RefClass [1];
 
-               arr [0] = new Tests ();
+               arr [0] = new RefClass ();
                arr [0] = null;
 
                return arr [0] == null ? 0 : 1;
@@ -755,7 +766,46 @@ class Tests {
             test[x+100,y+100] = true;
         }
                return 0;
-       }               
+       }
+
+       static bool alloc_long (long l) {
+               try {
+                       var arr = new byte[l];
+                       return false;
+               } catch (Exception e) {
+                       return true;
+               }
+       }
+
+       // #13544
+       public static int test_0_newarr_ovf () {
+               if (!alloc_long (5000000000))
+                       return 1;
+               if (!alloc_long (4000000000))
+                       return 2;
+               if (!alloc_long (-1))
+                       return 3;
+               if (!alloc_long (-4000000000))
+                       return 4;
+               if (!alloc_long (-6000000000))
+                       return 5;
+               return 0;
+       }
+
+       static int llvm_ldlen_licm (int[] arr) {
+               int sum = 0;
+               // The ldlen should be moved out of the loop
+               for (int i = 0; i < arr.Length; ++i)
+                       sum += arr [i];
+               return sum;
+       }
+
+       public static int test_10_llvm_ldlen_licm () {
+               int[] arr = new int [10];
+               for (int i = 0; i < 10; ++i)
+                       arr [i] = 1;
+               return llvm_ldlen_licm (arr);
+       }
 }
 
 
index d6bd503a954367d02848eb1a58c9430118550352..41cb62405cb82a0137e5573c04d5d677786123a4 100644 (file)
@@ -23,11 +23,18 @@ using System.Reflection;
  * the IL code looks.
  */
 
-class Tests {
-
+#if MOBILE
+class CallsTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
 
        static void dummy () {
        }
index bf8c50cb4221eb5183e03fca31a97fe1152f2cf3..11e3e2725b181f350d220009244a4f37b72986ec 100644 (file)
@@ -26,11 +26,18 @@ using System.Reflection;
 /* A comparison made to same variable. */
 #pragma warning disable 1718
 
-class Tests {
-
+#if MOBILE
+class FloatTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
        
        public static int test_0_beq () {
                double a = 2.0;
@@ -73,6 +80,20 @@ class Tests {
                sbyte sb = (sbyte)a;
                if (sb != 2)
                        return 6;
+               /* MS.NET special cases these */
+               double d = Double.NaN;
+               ui = (uint)d;
+               if (ui != 0)
+                       return 7;
+               d = Double.PositiveInfinity;
+               ui = (uint)d;
+               if (ui != 0)
+                       return 8;
+               d = Double.NegativeInfinity;
+               ui = (uint)d;
+               if (ui != 0)
+                       return 9;
+
                return 0;
        }
 
index 45c67fe2c3a49188bf9b38ccfa2b12d9f8f65d86..11fa4e1b63c5689398c243139bac281091b077aa 100644 (file)
@@ -23,11 +23,18 @@ using System.Reflection;
  * the IL code looks.
  */
 
-class Tests {
-
+#if MOBILE
+class LongTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
 
        public static int test_10_simple_cast () {
                long a = 10;
index 4482c913af6f88513c7e0465b2f6b954ce78e6da..854b21e5868870a4ca21709eff65612f6bdfdcde 100644 (file)
@@ -23,11 +23,18 @@ using System.Reflection;
  * the IL code looks.
  */
 
-class Tests {
-
+#if MOBILE
+class MathTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
        
        public static int test_0_sin_precision () {
                double d1 = Math.Sin (1);
index b9cf91347b2cf11ec9c5cbc8f0071809989fec5d..477af333e9b4a8401a8b6ec5ab4e7646e6044ac3 100644 (file)
@@ -23,11 +23,18 @@ using System.Reflection;
  * the IL code looks.
  */
 
-class Tests {
-
+#if MOBILE
+class BasicTests
+#else
+class Tests
+#endif
+{
+
+#if !MOBILE
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
        
        public static int test_0_return () {
                return 0;
index e798aa6a51596194181020b80be6ed42aed57c47..ca1d23bc1934964ed8835b47e73e28090929ba72 100644 (file)
@@ -62,7 +62,6 @@
 #
 
 break: len:2
-jmp: len:120
 tailcall: len:120 clob:c
 br: len:6
 label: len:0
@@ -247,6 +246,9 @@ float_cgt: dest:i src1:f src2:f len:35
 float_cgt_un: dest:i src1:f src2:f len:48
 float_clt: dest:i src1:f src2:f len:35
 float_clt_un: dest:i src1:f src2:f len:42
+float_cneq: dest:i src1:f src2:f len:42
+float_cge: dest:i src1:f src2:f len:35
+float_cle: dest:i src1:f src2:f len:35
 float_ceq_membase: dest:i src1:f src2:b len:35
 float_cgt_membase: dest:i src1:f src2:b len:35
 float_cgt_un_membase: dest:i src1:f src2:b len:48
@@ -292,6 +294,7 @@ amd64_set_xmmreg_r4: dest:f src1:f len:14 clob:m
 amd64_set_xmmreg_r8: dest:f src1:f len:14 clob:m
 amd64_save_sp_to_lmf: len:16
 tls_get: dest:i len:16
+tls_get_reg: dest:i src1:i len:32
 atomic_add_i4: src1:b src2:i dest:i len:32
 atomic_add_new_i4: src1:b src2:i dest:i len:32
 atomic_exchange_i4: src1:b src2:i dest:a len:32
@@ -370,6 +373,13 @@ int_cgt: dest:c len:8
 int_cgt_un: dest:c len:8
 int_clt: dest:c len:8
 int_clt_un: dest:c len:8
+
+int_cneq: dest:c len:8
+int_cge: dest:c len:8
+int_cle: dest:c len:8
+int_cge_un: dest:c len:8
+int_cle_un: dest:c len:8
+
 int_beq: len:8
 int_bne_un: len:8
 int_blt: len:8
index fc873899a61b7bda2fa9e0a2ce23af502b536896..b00f5647876ea9cfa334463decabca8912031ce0 100644 (file)
@@ -194,6 +194,7 @@ float_clt_un: dest:i src1:f src2:f len:20
 float_conv_to_u: dest:i src1:f len:36
 setfret: src1:f len:12
 aot_const: dest:i len:16
+objc_get_selector: dest:i len:32
 sqrt: dest:f src1:f len:4
 adc: dest:i src1:i src2:i len:4
 addcc: dest:i src1:i src2:i len:4
@@ -212,10 +213,10 @@ tls_get: len:8 dest:i clob:c
 int_add: dest:i src1:i src2:i len:4
 int_sub: dest:i src1:i src2:i len:4
 int_mul: dest:i src1:i src2:i len:4
-int_div: dest:i src1:i src2:i len:40
-int_div_un: dest:i src1:i src2:i len:16
-int_rem: dest:i src1:i src2:i len:48
-int_rem_un: dest:i src1:i src2:i len:24
+int_div: dest:i src1:i src2:i len:4
+int_div_un: dest:i src1:i src2:i len:4
+int_rem: dest:i src1:i src2:i len:8
+int_rem_un: dest:i src1:i src2:i len:8
 int_and: dest:i src1:i src2:i len:4
 int_or: dest:i src1:i src2:i len:4
 int_xor: dest:i src1:i src2:i len:4
index 968822a88ce5987e9fd315e4ec6322934fa1c9d8..0fd87c8973fe25fbe5fb5339bb198131affb60db 100644 (file)
@@ -61,7 +61,6 @@ br: len:16
 switch: src1:i len:40
 seq_point: len:24
 
-callvirt: dest:v clob:c len:20
 int_conv_to_r_un: dest:f src1:i len:32
 throw: src1:i len:24
 rethrow: src1:i len:24
@@ -177,7 +176,7 @@ not_null: src1:i len:0
 # 32 bit opcodes
 int_add: dest:i src1:i src2:i len:4
 int_sub: dest:i src1:i src2:i len:4
-int_mul: dest:i src1:i src2:i len:4
+int_mul: dest:i src1:i src2:i len:16
 int_div: dest:i src1:i src2:i len:84
 int_div_un: dest:i src1:i src2:i len:40
 int_rem: dest:i src1:i src2:i len:84
@@ -278,7 +277,7 @@ icompare_imm: src1:i len:12
 # 64 bit opcodes
 long_add: dest:i src1:i src2:i len:4
 long_sub: dest:i src1:i src2:i len:4
-long_mul: dest:i src1:i src2:i len:8
+long_mul: dest:i src1:i src2:i len:32
 long_mul_imm: dest:i src1:i len:4
 long_div: dest:i src1:i src2:i len:40
 long_div_un: dest:i src1:i src2:i len:16
index ff241b62ed3e58529aa78f5d9d9626b2ce85b31b..9f04b4a2c78c3c69724f3509270ceeb8d4b1f66c 100644 (file)
@@ -63,7 +63,6 @@
 # See the code in mini-x86.c for more details on how the specifiers are used.
 #
 break: len:1
-jmp: len:32 clob:c
 call: dest:a clob:c len:17
 tailcall: len:120 clob:c
 br: len:5
@@ -242,6 +241,9 @@ float_cgt: dest:y src1:f src2:f len:25
 float_cgt_un: dest:y src1:f src2:f len:37
 float_clt: dest:y src1:f src2:f len:25
 float_clt_un: dest:y src1:f src2:f len:32
+float_cneq: dest:y src1:f src2:f len:25
+float_cge: dest:y src1:f src2:f len:37
+float_cle: dest:y src1:f src2:f len:37
 float_conv_to_u: dest:i src1:f len:36
 call_handler: len:11 clob:c
 aot_const: dest:i len:5
@@ -300,6 +302,7 @@ bigmul_un: len:2 dest:l src1:a src2:i
 sext_i1: dest:i src1:y len:3
 sext_i2: dest:i src1:y len:3
 tls_get: dest:i len:20
+tls_get_reg: dest:i src1:i len:20
 atomic_add_i4: src1:b src2:i dest:i len:16
 atomic_add_new_i4: src1:b src2:i dest:i len:16
 atomic_exchange_i4: src1:b src2:i dest:a len:24
@@ -347,6 +350,12 @@ int_cgt_un: dest:y len:6
 int_clt: dest:y len:6
 int_clt_un: dest:y len:6
 
+int_cneq: dest:y len:6
+int_cge: dest:y len:6
+int_cle: dest:y len:6
+int_cge_un: dest:y len:6
+int_cle_un: dest:y len:6
+
 cond_exc_ieq: len:6
 cond_exc_ine_un: len:6
 cond_exc_ilt: len:6
index f82bf6a9d5f8749cf84513c7d8312a7a4ffd8c25..25f77b22f4da48452e60c6c8cabc463cd930951b 100644 (file)
@@ -154,10 +154,24 @@ write_variable (MonoInst *inst, MonoDebugVarInfo *var)
                var->index = inst->dreg | MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER;
        else if (inst->flags & MONO_INST_IS_DEAD)
                var->index = MONO_DEBUG_VAR_ADDRESS_MODE_DEAD;
-       else {
+       else if (inst->opcode == OP_REGOFFSET) {
                /* the debug interface needs fixing to allow 0(%base) address */
                var->index = inst->inst_basereg | MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET;
                var->offset = inst->inst_offset;
+       } else if (inst->opcode == OP_GSHAREDVT_ARG_REGOFFSET) {
+               var->index = inst->inst_basereg | MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR;
+               var->offset = inst->inst_offset;
+       } else if (inst->opcode == OP_GSHAREDVT_LOCAL) {
+               var->index = inst->inst_imm | MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL;
+       } else if (inst->opcode == OP_VTARG_ADDR) {
+               MonoInst *vtaddr;
+
+               vtaddr = inst->inst_left;
+               g_assert (vtaddr->opcode == OP_REGOFFSET);
+               var->offset = vtaddr->inst_offset;
+               var->index  = vtaddr->inst_basereg | MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR;
+       } else {
+               g_assert_not_reached ();
        }
 }
 
@@ -307,6 +321,13 @@ mono_debug_close_method (MonoCompile *cfg)
        for (i = 0; i < jit->num_params; i++)
                write_variable (cfg->args [i + sig->hasthis], &jit->params [i]);
 
+       if (cfg->gsharedvt_info_var) {
+               jit->gsharedvt_info_var = g_new0 (MonoDebugVarInfo, 1);
+               jit->gsharedvt_locals_var = g_new0 (MonoDebugVarInfo, 1);
+               write_variable (cfg->gsharedvt_info_var, jit->gsharedvt_info_var);
+               write_variable (cfg->gsharedvt_locals_var, jit->gsharedvt_locals_var);
+       }
+
        jit->num_line_numbers = info->line_numbers->len;
        jit->line_numbers = g_new0 (MonoDebugLineNumberEntry, jit->num_line_numbers);
 
@@ -468,8 +489,11 @@ serialize_variable (MonoDebugVarInfo *var, guint8 *p, guint8 **endbuf)
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER:
                break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET:
+       case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
                encode_value (var->offset, p, &p);
                break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL:
+       case MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR:
        case MONO_DEBUG_VAR_ADDRESS_MODE_DEAD:
                break;
        default:
@@ -508,6 +532,14 @@ mono_debug_serialize_debug_info (MonoCompile *cfg, guint8 **out_buf, guint32 *bu
        for (i = 0; i < jit->num_locals; i++)
                serialize_variable (&jit->locals [i], p, &p);
 
+       if (jit->gsharedvt_info_var) {
+               encode_value (1, p, &p);
+               serialize_variable (jit->gsharedvt_info_var, p, &p);
+               serialize_variable (jit->gsharedvt_locals_var, p, &p);
+       } else {
+               encode_value (0, p, &p);
+       }
+
        encode_value (jit->num_line_numbers, p, &p);
 
        prev_offset = 0;
@@ -540,8 +572,11 @@ deserialize_variable (MonoDebugVarInfo *var, guint8 *p, guint8 **endbuf)
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER:
                break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET:
+       case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
                var->offset = decode_value (p, &p);
                break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL:
+       case MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR:
        case MONO_DEBUG_VAR_ADDRESS_MODE_DEAD:
                break;
        default:
@@ -585,6 +620,13 @@ deserialize_debug_info (MonoMethod *method, guint8 *code_start, guint8 *buf, gui
        for (i = 0; i < jit->num_locals; i++)
                deserialize_variable (&jit->locals [i], p, &p);
 
+       if (decode_value (p, &p)) {
+               jit->gsharedvt_info_var = g_new0 (MonoDebugVarInfo, 1);
+               jit->gsharedvt_locals_var = g_new0 (MonoDebugVarInfo, 1);
+               deserialize_variable (jit->gsharedvt_info_var, p, &p);
+               deserialize_variable (jit->gsharedvt_locals_var, p, &p);
+       }
+
        jit->num_line_numbers = decode_value (p, &p);
        jit->line_numbers = g_new0 (MonoDebugLineNumberEntry, jit->num_line_numbers);
 
@@ -654,6 +696,15 @@ print_var_info (MonoDebugVarInfo *info, int idx, const char *name, const char *t
        case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET:
                g_print ("%s %s (%d) in memory: base register %s + %d\n", type, name, idx, mono_arch_regname (info->index & (~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS)), info->offset);
                break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
+               g_print ("%s %s (%d) in indir memory: base register %s + %d\n", type, name, idx, mono_arch_regname (info->index & (~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS)), info->offset);
+               break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL:
+               g_print ("%s %s (%d) gsharedvt local.\n", type, name, idx);
+               break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR:
+               g_print ("%s %s (%d) vt address: base register %s + %d\n", type, name, idx, mono_arch_regname (info->index & (~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS)), info->offset);
+               break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_TWO_REGISTERS:
        default:
                g_assert_not_reached ();
@@ -682,14 +733,14 @@ mono_debug_print_vars (gpointer ip, gboolean only_arguments)
        if (!ji)
                return;
 
-       jit = mono_debug_find_method (mono_jit_info_get_method (ji), domain);
+       jit = mono_debug_find_method (jinfo_get_method (ji), domain);
        if (!jit)
                return;
 
        if (only_arguments) {
                char **names;
                names = g_new (char *, jit->num_params);
-               mono_method_get_param_names (mono_jit_info_get_method (ji), (const char **) names);
+               mono_method_get_param_names (jinfo_get_method (ji), (const char **) names);
                if (jit->this_var)
                        print_var_info (jit->this_var, 0, "this", "Arg");
                for (i = 0; i < jit->num_params; ++i) {
index b46d75ba4ff4c41134d24df8c375627a76ea1af0..649c30c0fb27da51f9bb041ac6020deb245d6127 100644 (file)
@@ -9,28 +9,28 @@
 typedef struct _MonoDebuggerThreadInfo MonoDebuggerThreadInfo;
 extern MonoDebuggerThreadInfo *mono_debugger_thread_table;
 
-void
+MONO_API void
 mono_debugger_thread_created (gsize tid, MonoThread *thread, MonoJitTlsData *jit_tls, gpointer func);
 
-void
+MONO_API void
 mono_debugger_thread_cleanup (MonoJitTlsData *jit_tls);
 
-void
+MONO_API void
 mono_debugger_extended_notification (MonoDebuggerEvent event, guint64 data, guint64 arg);
 
-void
+MONO_API void
 mono_debugger_trampoline_compiled (const guint8 *trampoline, MonoMethod *method, const guint8 *code);
 
-void
+MONO_API void
 mono_debugger_call_exception_handler (gpointer addr, gpointer stack, MonoObject *exc);
 
-gboolean
+MONO_API gboolean
 mono_debugger_handle_exception (MonoContext *ctx, MonoObject *obj);
 
-MonoObject *
+MONO_API MonoObject *
 mono_debugger_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObject **exc);
 
-gboolean
+MONO_API gboolean
 mono_debugger_abort_runtime_invoke (void);
 
 /*
old mode 100644 (file)
new mode 100755 (executable)
index 1d74a7d..7d53fb4
@@ -74,6 +74,7 @@ int WSAAPI getnameinfo(const struct sockaddr*,socklen_t,char*,DWORD,
 #include <mono/metadata/assembly.h>
 #include <mono/metadata/runtime.h>
 #include <mono/metadata/threadpool.h>
+#include <mono/metadata/verify-internals.h>
 #include <mono/utils/mono-semaphore.h>
 #include <mono/utils/mono-error-internals.h>
 #include <mono/utils/mono-stack-unwinding.h>
@@ -282,7 +283,7 @@ typedef struct {
 #define HEADER_LENGTH 11
 
 #define MAJOR_VERSION 2
-#define MINOR_VERSION 23
+#define MINOR_VERSION 26
 
 typedef enum {
        CMD_SET_VM = 1,
@@ -366,7 +367,8 @@ typedef enum {
 typedef enum {
        STEP_FILTER_NONE = 0,
        STEP_FILTER_STATIC_CTOR = 1,
-       STEP_FILTER_DEBUGGER_HIDDEN = 2
+       STEP_FILTER_DEBUGGER_HIDDEN = 2,
+       STEP_FILTER_DEBUGGER_STEP_THROUGH = 4
 } StepFilter;
 
 typedef enum {
@@ -464,6 +466,7 @@ typedef enum {
        CMD_METHOD_GET_BODY = 7,
        CMD_METHOD_RESOLVE_TOKEN = 8,
        CMD_METHOD_GET_CATTRS = 9,
+       CMD_METHOD_MAKE_GENERIC_METHOD = 10
 } CmdMethod;
 
 typedef enum {
@@ -526,7 +529,7 @@ typedef struct {
                GHashTable *type_names; /* For kind == MONO_KIND_TYPE_NAME_ONLY */
                StepFilter filter; /* For kind == MOD_KIND_STEP */
        } data;
-       gboolean caught, uncaught; /* For kind == MOD_KIND_EXCEPTION_ONLY */
+       gboolean caught, uncaught, subclasses; /* For kind == MOD_KIND_EXCEPTION_ONLY */
 } Modifier;
 
 typedef struct{
@@ -818,14 +821,14 @@ mono_debugger_agent_parse_options (char *options)
        char **args, **ptr;
        char *host;
        int port;
-       char *extra;
+       const char *extra;
 
 #ifndef MONO_ARCH_SOFT_DEBUG_SUPPORTED
        fprintf (stderr, "--debugger-agent is not supported on this platform.\n");
        exit (1);
 #endif
 
-       extra = getenv ("MONO_SDB_ENV_OPTIONS");
+       extra = g_getenv ("MONO_SDB_ENV_OPTIONS");
        if (extra)
                options = g_strdup_printf ("%s,%s", options, extra);
 
@@ -2205,7 +2208,17 @@ buffer_add_ptr_id (Buffer *buf, MonoDomain *domain, IdType type, gpointer val)
 static inline MonoClass*
 decode_typeid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_TYPE, domain, err);
+       MonoClass *klass;
+
+       klass = decode_ptr_id (buf, endbuf, limit, ID_TYPE, domain, err);
+       if (G_UNLIKELY (log_level >= 2) && klass) {
+               char *s;
+
+               s = mono_type_full_name (&klass->byval_arg);
+               DEBUG(2, fprintf (log_file, "[dbg]   recv class [%s]\n", s));
+               g_free (s);
+       }
+       return klass;
 }
 
 static inline MonoAssembly*
@@ -2223,7 +2236,17 @@ decode_moduleid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domai
 static inline MonoMethod*
 decode_methodid (guint8 *buf, guint8 **endbuf, guint8 *limit, MonoDomain **domain, int *err)
 {
-       return decode_ptr_id (buf, endbuf, limit, ID_METHOD, domain, err);
+       MonoMethod *m;
+
+       m = decode_ptr_id (buf, endbuf, limit, ID_METHOD, domain, err);
+       if (G_UNLIKELY (log_level >= 2) && m) {
+               char *s;
+
+               s = mono_method_full_name (m, TRUE);
+               DEBUG(2, fprintf (log_file, "[dbg]   recv method [%s]\n", s));
+               g_free (s);
+       }
+       return m;
 }
 
 static inline MonoClassField*
@@ -2248,12 +2271,29 @@ static inline void
 buffer_add_typeid (Buffer *buf, MonoDomain *domain, MonoClass *klass)
 {
        buffer_add_ptr_id (buf, domain, ID_TYPE, klass);
+       if (G_UNLIKELY (log_level >= 2) && klass) {
+               char *s;
+
+               s = mono_type_full_name (&klass->byval_arg);
+               if (GetCurrentThreadId () == debugger_thread_id)
+                       DEBUG(2, fprintf (log_file, "[dbg]   send class [%s]\n", s));
+               else
+                       DEBUG(2, fprintf (log_file, "[%p]   send class [%s]\n", (gpointer)GetCurrentThreadId (), s));
+               g_free (s);
+       }
 }
 
 static inline void
 buffer_add_methodid (Buffer *buf, MonoDomain *domain, MonoMethod *method)
 {
        buffer_add_ptr_id (buf, domain, ID_METHOD, method);
+       if (G_UNLIKELY (log_level >= 2) && method) {
+               char *s;
+
+               s = mono_method_full_name (method, 1);
+               DEBUG(2, fprintf (log_file, "[dbg]   send method [%s]\n", s));
+               g_free (s);
+       }
 }
 
 static inline void
@@ -2418,7 +2458,7 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, void *sigctx, Mono
 
        if (ji) {
                /* Running managed code, will be suspended by the single step code */
-               DEBUG (1, fprintf (log_file, "[%p] Received interrupt while at %s(%p), continuing.\n", (gpointer)(gsize)tid, ji->method->name, ip));
+               DEBUG (1, fprintf (log_file, "[%p] Received interrupt while at %s(%p), continuing.\n", (gpointer)(gsize)tid, jinfo_get_method (ji)->name, ip));
                return TRUE;
        } else {
                /* 
@@ -2441,8 +2481,6 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, void *sigctx, Mono
                                /* Already terminated */
                                return TRUE;
 
-                       tls->context.valid = FALSE;
-
                        /*
                         * We are in a difficult position: we want to be able to provide stack
                         * traces for this thread, but we can't use the current ctx+lmf, since
@@ -2476,9 +2514,9 @@ thread_interrupt (DebuggerTlsData *tls, MonoThreadInfo *info, void *sigctx, Mono
                                tls->async_state.unwind_data [MONO_UNWIND_DATA_LMF] = data.lmf;
                                tls->async_state.unwind_data [MONO_UNWIND_DATA_JIT_TLS] = tls->thread->jit_data;
                        } else {
-                               /* No managed frames */
                                tls->async_state.valid = FALSE;
                        }
+
                        mono_memory_barrier ();
 
                        tls->suspended = TRUE;
@@ -2617,6 +2655,7 @@ process_suspend (DebuggerTlsData *tls, MonoContext *ctx)
 {
        guint8 *ip = MONO_CONTEXT_GET_IP (ctx);
        MonoJitInfo *ji;
+       MonoMethod *method;
 
        if (mono_loader_lock_is_owned_by_self ()) {
                /*
@@ -2649,7 +2688,8 @@ process_suspend (DebuggerTlsData *tls, MonoContext *ctx)
        ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, NULL);
 
        /* Can't suspend in these methods */
-       if (ji->method->klass == mono_defaults.string_class && (!strcmp (ji->method->name, "memset") || strstr (ji->method->name, "memcpy")))
+       method = jinfo_get_method (ji);
+       if (method->klass == mono_defaults.string_class && (!strcmp (method->name, "memset") || strstr (method->name, "memcpy")))
                return;
 
        save_thread_context (ctx);
@@ -3063,7 +3103,7 @@ process_frame (StackFrameInfo *info, MonoContext *ctx, gpointer user_data)
        }
 
        if (info->ji)
-               method = info->ji->method;
+               method = jinfo_get_method (info->ji);
        else
                method = info->method;
        actual_method = info->actual_method;
@@ -3324,7 +3364,9 @@ create_event_list (EventKind event, GPtrArray *reqs, MonoJitInfo *ji, EventInfo
                                        if (mod->data.thread != mono_thread_internal_current ())
                                                filtered = TRUE;
                                } else if (mod->kind == MOD_KIND_EXCEPTION_ONLY && ei) {
-                                       if (mod->data.exc_class && !mono_class_is_assignable_from (mod->data.exc_class, ei->exc->vtable->klass))
+                                       if (mod->data.exc_class && mod->subclasses && !mono_class_is_assignable_from (mod->data.exc_class, ei->exc->vtable->klass))
+                                               filtered = TRUE;
+                                       if (mod->data.exc_class && !mod->subclasses && mod->data.exc_class != ei->exc->vtable->klass)
                                                filtered = TRUE;
                                        if (ei->caught && !mod->caught)
                                                filtered = TRUE;
@@ -3337,7 +3379,7 @@ create_event_list (EventKind event, GPtrArray *reqs, MonoJitInfo *ji, EventInfo
 
                                        if (assemblies) {
                                                for (k = 0; assemblies [k]; ++k)
-                                                       if (assemblies [k] == ji->method->klass->image->assembly)
+                                                       if (assemblies [k] == jinfo_get_method (ji)->klass->image->assembly)
                                                                found = TRUE;
                                        }
                                        if (!found)
@@ -3390,8 +3432,8 @@ create_event_list (EventKind event, GPtrArray *reqs, MonoJitInfo *ji, EventInfo
                                        g_free (s);
                                } else if (mod->kind == MOD_KIND_STEP) {
                                        if ((mod->data.filter & STEP_FILTER_STATIC_CTOR) && ji &&
-                                               (ji->method->flags & METHOD_ATTRIBUTE_SPECIAL_NAME) &&
-                                               !strcmp (ji->method->name, ".cctor"))
+                                               (jinfo_get_method (ji)->flags & METHOD_ATTRIBUTE_SPECIAL_NAME) &&
+                                               !strcmp (jinfo_get_method (ji)->name, ".cctor"))
                                                filtered = TRUE;
                                        if ((mod->data.filter & STEP_FILTER_DEBUGGER_HIDDEN) && ji) {
                                                MonoCustomAttrInfo *ainfo;
@@ -3402,7 +3444,7 @@ create_event_list (EventKind event, GPtrArray *reqs, MonoJitInfo *ji, EventInfo
                                                        g_assert (klass);
                                                }
                                                if (!ji->dbg_hidden_inited) {
-                                                       ainfo = mono_custom_attrs_from_method (ji->method);
+                                                       ainfo = mono_custom_attrs_from_method (jinfo_get_method (ji));
                                                        if (ainfo) {
                                                                if (mono_custom_attrs_has_attr (ainfo, klass))
                                                                        ji->dbg_hidden = TRUE;
@@ -3413,6 +3455,32 @@ create_event_list (EventKind event, GPtrArray *reqs, MonoJitInfo *ji, EventInfo
                                                if (ji->dbg_hidden)
                                                        filtered = TRUE;
                                        }
+                                       if ((mod->data.filter & STEP_FILTER_DEBUGGER_STEP_THROUGH) && ji) {
+                                               MonoCustomAttrInfo *ainfo;
+                                               static MonoClass *klass;
+
+                                               if (!klass) {
+                                                       klass = mono_class_from_name (mono_defaults.corlib, "System.Diagnostics", "DebuggerStepThroughAttribute");
+                                                       g_assert (klass);
+                                               }
+                                               if (!ji->dbg_step_through_inited) {
+                                                       ainfo = mono_custom_attrs_from_method (jinfo_get_method (ji));
+                                                       if (ainfo) {
+                                                               if (mono_custom_attrs_has_attr (ainfo, klass))
+                                                                       ji->dbg_step_through = TRUE;
+                                                               mono_custom_attrs_free (ainfo);
+                                                       }
+                                                       ainfo = mono_custom_attrs_from_class (jinfo_get_method (ji)->klass);
+                                                       if (ainfo) {
+                                                               if (mono_custom_attrs_has_attr (ainfo, klass))
+                                                                       ji->dbg_step_through = TRUE;
+                                                               mono_custom_attrs_free (ainfo);
+                                                       }
+                                                       ji->dbg_step_through_inited = TRUE;
+                                               }
+                                               if (ji->dbg_step_through)
+                                                       filtered = TRUE;
+                                       }
                                }
                        }
 
@@ -3455,6 +3523,7 @@ event_to_string (EventKind event)
        case EVENT_KIND_USER_LOG: return "USER_LOG";
        default:
                g_assert_not_reached ();
+               return "";
        }
 }
 
@@ -3473,6 +3542,7 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
        GSList *l;
        MonoDomain *domain = mono_domain_get ();
        MonoThread *thread = NULL;
+       MonoObject *keepalive_obj = NULL;
        gboolean send_success = FALSE;
        static int ecount;
        int nevents;
@@ -3575,6 +3645,11 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                case EVENT_KIND_EXCEPTION: {
                        EventInfo *ei = arg;
                        buffer_add_objid (&buf, ei->exc);
+                       /*
+                        * We are not yet suspending, so get_objref () will not keep this object alive. So we need to do it
+                        * later after the suspension. (#12494).
+                        */
+                       keepalive_obj = ei->exc;
                        break;
                }
                case EVENT_KIND_USER_BREAK:
@@ -3616,6 +3691,10 @@ process_event (EventKind event, gpointer arg, gint32 il_offset, MonoContext *ctx
                 */
                save_thread_context (ctx);
                suspend_vm ();
+
+               if (keepalive_obj)
+                       /* This will keep this object alive */
+                       get_objref (keepalive_obj);
        }
 
        send_success = send_packet (CMD_SET_EVENT, CMD_COMPOSITE, &buf);
@@ -4041,7 +4120,7 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
        }
 
        if (i == seq_points->len) {
-               char *s = g_strdup_printf ("Unable to insert breakpoint at %s:%d, seq_points=%d\n", mono_method_full_name (ji->method, TRUE), bp->il_offset, seq_points->len);
+               char *s = g_strdup_printf ("Unable to insert breakpoint at %s:%d, seq_points=%d\n", mono_method_full_name (jinfo_get_method (ji), TRUE), bp->il_offset, seq_points->len);
 
                for (i = 0; i < seq_points->len; ++i)
                        DEBUG (1, fprintf (log_file, "%d\n", seq_points->seq_points [i].il_offset));
@@ -4083,7 +4162,7 @@ insert_breakpoint (MonoSeqPointInfo *seq_points, MonoDomain *domain, MonoJitInfo
 #endif
        }
 
-       DEBUG(1, fprintf (log_file, "[dbg] Inserted breakpoint at %s:0x%x.\n", mono_method_full_name (ji->method, TRUE), (int)sp->il_offset));  
+       DEBUG(1, fprintf (log_file, "[dbg] Inserted breakpoint at %s:0x%x.\n", mono_method_full_name (jinfo_get_method (ji), TRUE), (int)sp->il_offset));       
 }
 
 static void
@@ -4152,6 +4231,7 @@ add_pending_breakpoints (MonoMethod *method, MonoJitInfo *ji)
        int i, j;
        MonoSeqPointInfo *seq_points;
        MonoDomain *domain;
+       MonoMethod *jmethod;
 
        if (!breakpoints)
                return;
@@ -4175,10 +4255,11 @@ add_pending_breakpoints (MonoMethod *method, MonoJitInfo *ji)
                }
 
                if (!found) {
+                       jmethod = jinfo_get_method (ji);
                        mono_domain_lock (domain);
-                       seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, ji->method);
-                       if (!seq_points && ji->method->is_inflated)
-                               seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, mono_method_get_declaring_generic_method (ji->method));
+                       seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, jmethod);
+                       if (!seq_points && jmethod->is_inflated)
+                               seq_points = g_hash_table_lookup (domain_jit_info (domain)->seq_points, mono_method_get_declaring_generic_method (jmethod));
                        mono_domain_unlock (domain);
                        if (!seq_points)
                                /* Could be AOT code */
@@ -4371,6 +4452,55 @@ clear_breakpoints_for_domain (MonoDomain *domain)
        mono_loader_unlock ();
 }
 
+/*
+ * ss_update:
+ *
+ * Return FALSE if single stepping needs to continue.
+ */
+static gboolean
+ss_update (SingleStepReq *req, MonoJitInfo *ji, SeqPoint *sp)
+{
+       MonoDebugMethodInfo *minfo;
+       MonoDebugSourceLocation *loc = NULL;
+       gboolean hit = TRUE;
+       MonoMethod *method;
+
+       if (req->depth == STEP_DEPTH_OVER && (sp->flags & MONO_SEQ_POINT_FLAG_NONEMPTY_STACK)) {
+               /*
+                * These seq points are inserted by the JIT after calls, step over needs to skip them.
+                */
+               DEBUG (1, fprintf (log_file, "[%p] Seq point at nonempty stack %x while stepping over, continuing single stepping.\n", (gpointer)GetCurrentThreadId (), sp->il_offset));
+               return FALSE;
+       }
+
+       if (req->size != STEP_SIZE_LINE)
+               return TRUE;
+
+       /* Have to check whenever a different source line was reached */
+       method = jinfo_get_method (ji);
+       minfo = mono_debug_lookup_method (method);
+
+       if (minfo)
+               loc = mono_debug_symfile_lookup_location (minfo, sp->il_offset);
+
+       if (!loc || (loc && method == ss_req->last_method && loc->row == ss_req->last_line)) {
+               /* Have to continue single stepping */
+               if (!loc)
+                       DEBUG(1, fprintf (log_file, "[%p] No line number info for il offset %x, continuing single stepping.\n", (gpointer)GetCurrentThreadId (), sp->il_offset));
+               else
+                       DEBUG(1, fprintf (log_file, "[%p] Same source line (%d), continuing single stepping.\n", (gpointer)GetCurrentThreadId (), loc->row));
+               hit = FALSE;
+       }
+                               
+       if (loc) {
+               ss_req->last_method = method;
+               ss_req->last_line = loc->row;
+               mono_debug_free_source_location (loc);
+       }
+
+       return hit;
+}
+
 static gboolean
 breakpoint_matches_assembly (MonoBreakpoint *bp, MonoAssembly *assembly)
 {
@@ -4390,6 +4520,7 @@ process_breakpoint_inner (DebuggerTlsData *tls)
        GSList *bp_events = NULL, *ss_events = NULL, *enter_leave_events = NULL;
        EventKind kind = EVENT_KIND_BREAKPOINT;
        MonoContext *ctx = &tls->restore_ctx;
+       MonoMethod *method;
        MonoSeqPointInfo *info;
        SeqPoint *sp;
 
@@ -4398,7 +4529,7 @@ process_breakpoint_inner (DebuggerTlsData *tls)
        ip = MONO_CONTEXT_GET_IP (ctx);
        ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, NULL);
        g_assert (ji);
-       g_assert (ji->method);
+       method = jinfo_get_method (ji);
 
        /* Compute the native offset of the breakpoint from the ip */
        native_offset = ip - (guint8*)ji->code_start;   
@@ -4408,7 +4539,7 @@ process_breakpoint_inner (DebuggerTlsData *tls)
         */
        mono_arch_skip_breakpoint (ctx, ji);
 
-       if (ji->method->wrapper_type || tls->disable_breakpoints)
+       if (method->wrapper_type || tls->disable_breakpoints)
                return;
 
        bp_reqs = g_ptr_array_new ();
@@ -4421,12 +4552,12 @@ process_breakpoint_inner (DebuggerTlsData *tls)
         * The ip points to the instruction causing the breakpoint event, which is after
         * the offset recorded in the seq point map, so find the prev seq point before ip.
         */
-       sp = find_prev_seq_point_for_native_offset (mono_domain_get (), ji->method, native_offset, &info);
+       sp = find_prev_seq_point_for_native_offset (mono_domain_get (), method, native_offset, &info);
        if (!sp)
-               no_seq_points_found (ji->method);
+               no_seq_points_found (method);
        g_assert (sp);
 
-       DEBUG(1, fprintf (log_file, "[%p] Breakpoint hit, method=%s, ip=%p, offset=0x%x, sp il offset=0x%x.\n", (gpointer)GetCurrentThreadId (), ji->method->name, ip, native_offset, sp ? sp->il_offset : -1));
+       DEBUG(1, fprintf (log_file, "[%p] Breakpoint hit, method=%s, ip=%p, offset=0x%x, sp il offset=0x%x.\n", (gpointer)GetCurrentThreadId (), method->name, ip, native_offset, sp ? sp->il_offset : -1));
 
        bp = NULL;
        for (i = 0; i < breakpoints->len; ++i) {
@@ -4458,36 +4589,17 @@ process_breakpoint_inner (DebuggerTlsData *tls)
        for (i = 0; i < ss_reqs_orig->len; ++i) {
                EventRequest *req = g_ptr_array_index (ss_reqs_orig, i);
                SingleStepReq *ss_req = req->info;
-               gboolean hit = TRUE;
-
-               if (ss_req->size == STEP_SIZE_LINE) {
-                       /* Have to check whenever a different source line was reached */
-                       MonoDebugMethodInfo *minfo;
-                       MonoDebugSourceLocation *loc = NULL;
-
-                       minfo = mono_debug_lookup_method (ji->method);
-
-                       if (minfo)
-                               loc = mono_debug_symfile_lookup_location (minfo, sp->il_offset);
+               gboolean hit;
 
-                       if (!loc || (loc && ji->method == ss_req->last_method && loc->row == ss_req->last_line)) {
-                               /* Have to continue single stepping */
-                               DEBUG(1, fprintf (log_file, "[%p] Same source line, continuing single stepping.\n", (gpointer)GetCurrentThreadId ()));
-                               hit = FALSE;
-                       }
-                               
-                       if (loc) {
-                               ss_req->last_method = ji->method;
-                               ss_req->last_line = loc->row;
-                               mono_debug_free_source_location (loc);
-                       }
-               }
+               if (mono_thread_internal_current () != ss_req->thread)
+                       continue;
 
+               hit = ss_update (ss_req, ji, sp);
                if (hit)
                        g_ptr_array_add (ss_reqs, req);
 
                /* Start single stepping again from the current sequence point */
-               ss_start (ss_req, ji->method, sp, info, ctx, tls, FALSE);
+               ss_start (ss_req, method, sp, info, ctx, tls, FALSE);
        }
        
        if (ss_reqs->len > 0)
@@ -4507,11 +4619,11 @@ process_breakpoint_inner (DebuggerTlsData *tls)
         * resume.
         */
        if (ss_events)
-               process_event (EVENT_KIND_STEP, ji->method, 0, ctx, ss_events, suspend_policy);
+               process_event (EVENT_KIND_STEP, method, 0, ctx, ss_events, suspend_policy);
        if (bp_events)
-               process_event (kind, ji->method, 0, ctx, bp_events, suspend_policy);
+               process_event (kind, method, 0, ctx, bp_events, suspend_policy);
        if (enter_leave_events)
-               process_event (kind, ji->method, 0, ctx, enter_leave_events, suspend_policy);
+               process_event (kind, method, 0, ctx, enter_leave_events, suspend_policy);
 }
 
 /* Process a breakpoint/single step event after resuming from a signal handler */
@@ -4520,10 +4632,6 @@ process_signal_event (void (*func) (DebuggerTlsData*))
 {
        DebuggerTlsData *tls;
        MonoContext orig_restore_ctx, ctx;
-       static void (*restore_context) (void *);
-
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
 
        tls = mono_native_tls_get_value (debugger_tls_id);
        /* Have to save/restore the restore_ctx as we can be called recursively during invokes etc. */
@@ -4535,7 +4643,7 @@ process_signal_event (void (*func) (DebuggerTlsData*))
        /* This is called when resuming from a signal handler, so it shouldn't return */
        memcpy (&ctx, &tls->restore_ctx, sizeof (MonoContext));
        memcpy (&tls->restore_ctx, &orig_restore_ctx, sizeof (MonoContext));
-       restore_context (&ctx);
+       mono_restore_context (&ctx);
        g_assert_not_reached ();
 }
 
@@ -4651,6 +4759,7 @@ process_single_step_inner (DebuggerTlsData *tls)
        MonoDomain *domain;
        GSList *events;
        MonoContext *ctx = &tls->restore_ctx;
+       MonoMethod *method;
        SeqPoint *sp;
        MonoSeqPointInfo *info;
 
@@ -4674,75 +4783,43 @@ process_single_step_inner (DebuggerTlsData *tls)
        if (log_level > 0) {
                ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, &domain);
 
-               DEBUG (1, fprintf (log_file, "[%p] Single step event (depth=%s) at %s (%p), sp %p, last sp %p\n", (gpointer)GetCurrentThreadId (), ss_depth_to_string (ss_req->depth), mono_method_full_name (ji->method, TRUE), MONO_CONTEXT_GET_IP (ctx), MONO_CONTEXT_GET_SP (ctx), ss_req->last_sp));
+               DEBUG (1, fprintf (log_file, "[%p] Single step event (depth=%s) at %s (%p), sp %p, last sp %p\n", (gpointer)GetCurrentThreadId (), ss_depth_to_string (ss_req->depth), mono_method_full_name (jinfo_get_method (ji), TRUE), MONO_CONTEXT_GET_IP (ctx), MONO_CONTEXT_GET_SP (ctx), ss_req->last_sp));
        }
 
        ji = mini_jit_info_table_find (mono_domain_get (), (char*)ip, &domain);
        g_assert (ji);
-       g_assert (ji->method);
+       method = jinfo_get_method (ji);
+       g_assert (method);
 
-       if (ji->method->wrapper_type && ji->method->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD)
+       if (method->wrapper_type && method->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD)
                return;
 
        /* 
-        * FIXME: 
+        * FIXME:
         * Stopping in memset makes half-initialized vtypes visible.
         * Stopping in memcpy makes half-copied vtypes visible.
         */
-       if (ji->method->klass == mono_defaults.string_class && (!strcmp (ji->method->name, "memset") || strstr (ji->method->name, "memcpy")))
+       if (method->klass == mono_defaults.string_class && (!strcmp (method->name, "memset") || strstr (method->name, "memcpy")))
                return;
 
        /*
         * The ip points to the instruction causing the single step event, which is before
         * the offset recorded in the seq point map, so find the next seq point after ip.
         */
-       sp = find_next_seq_point_for_native_offset (domain, ji->method, (guint8*)ip - (guint8*)ji->code_start, &info);
+       sp = find_next_seq_point_for_native_offset (domain, method, (guint8*)ip - (guint8*)ji->code_start, &info);
        if (!sp)
                return;
        il_offset = sp->il_offset;
 
-       // FIXME: No tests fail if this is disabled
-#if 0
-       if (ss_req->size == STEP_SIZE_LINE) {
-               // FIXME:
-               NOT_IMPLEMENTED;
-
-               /* Step until a different source line is reached */
-               MonoDebugMethodInfo *minfo;
-
-               minfo = mono_debug_lookup_method (ji->method);
-
-               if (minfo) {
-                       MonoDebugSourceLocation *loc = mono_debug_symfile_lookup_location (minfo, il_offset);
-
-                       if (loc && ji->method == ss_req->last_method && loc->row == ss_req->last_line) {
-                               mono_debug_free_source_location (loc);
-                               return;
-                       }
-                       if (!loc)
-                               /*
-                                * Step until we reach a location with line number info, 
-                                * otherwise the client can't show a location.
-                                * This can happen for example with statics initialized inline
-                                * outside of a cctor.
-                                */
-                               return;
-
-                       if (loc) {
-                               ss_req->last_method = ji->method;
-                               ss_req->last_line = loc->row;
-                               mono_debug_free_source_location (loc);
-                       }
-               }
-       }
-#endif
+       if (!ss_update (ss_req, ji, sp))
+               return;
 
        /* Start single stepping again from the current sequence point */
-       ss_start (ss_req, ji->method, sp, info, ctx, tls, FALSE);
+       ss_start (ss_req, method, sp, info, ctx, tls, FALSE);
 
        if ((ss_req->filter & STEP_FILTER_STATIC_CTOR) &&
-               (ji->method->flags & METHOD_ATTRIBUTE_SPECIAL_NAME) &&
-               !strcmp (ji->method->name, ".cctor"))
+               (method->flags & METHOD_ATTRIBUTE_SPECIAL_NAME) &&
+               !strcmp (method->name, ".cctor"))
                return;
 
        // FIXME: Has to lock earlier
@@ -4759,7 +4836,7 @@ process_single_step_inner (DebuggerTlsData *tls)
 
        mono_loader_unlock ();
 
-       process_event (EVENT_KIND_STEP, ji->method, il_offset, ctx, events, suspend_policy);
+       process_event (EVENT_KIND_STEP, jinfo_get_method (ji), il_offset, ctx, events, suspend_policy);
 }
 
 static void
@@ -4873,6 +4950,8 @@ stop_single_stepping (void)
 
        if (val == 0)
                mono_arch_stop_single_stepping ();
+       if (ss_req != NULL)
+               ss_invoke_addr = NULL;
 #else
        g_assert_not_reached ();
 #endif
@@ -5307,7 +5386,7 @@ mono_debugger_agent_handle_exception (MonoException *exc, MonoContext *throw_ctx
 
                                if (assemblies) {
                                        for (k = 0; assemblies [k]; ++k)
-                                               if (assemblies [k] == catch_ji->method->klass->image->assembly)
+                                               if (assemblies [k] == jinfo_get_method (catch_ji)->klass->image->assembly)
                                                        found = TRUE;
                                }
                                if (!found)
@@ -5567,6 +5646,52 @@ obj_is_of_type (MonoObject *obj, MonoType *t)
 static ErrorCode
 decode_value (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8 **endbuf, guint8 *limit);
 
+static ErrorCode
+decode_vtype (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8 **endbuf, guint8 *limit)
+{
+       gboolean is_enum;
+       MonoClass *klass;
+       MonoClassField *f;
+       int nfields;
+       gpointer iter = NULL;
+       MonoDomain *d;
+       int err;
+
+       is_enum = decode_byte (buf, &buf, limit);
+       /* Enums are sent as a normal vtype */
+       if (is_enum)
+               return ERR_NOT_IMPLEMENTED;
+       klass = decode_typeid (buf, &buf, limit, &d, &err);
+       if (err)
+               return err;
+
+       if (t && klass != mono_class_from_mono_type (t)) {
+               char *name = mono_type_full_name (t);
+               char *name2 = mono_type_full_name (&klass->byval_arg);
+               DEBUG(1, fprintf (log_file, "[%p] Expected value of type %s, got %s.\n", (gpointer)GetCurrentThreadId (), name, name2));
+               g_free (name);
+               g_free (name2);
+               return ERR_INVALID_ARGUMENT;
+       }
+
+       nfields = decode_int (buf, &buf, limit);
+       while ((f = mono_class_get_fields (klass, &iter))) {
+               if (f->type->attrs & FIELD_ATTRIBUTE_STATIC)
+                       continue;
+               if (mono_field_is_deleted (f))
+                       continue;
+               err = decode_value (f->type, domain, (guint8*)addr + f->offset - sizeof (MonoObject), buf, &buf, limit);
+               if (err)
+                       return err;
+               nfields --;
+       }
+       g_assert (nfields == 0);
+
+       *endbuf = buf;
+
+       return 0;
+}
+
 static ErrorCode
 decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8 **endbuf, guint8 *limit)
 {
@@ -5639,38 +5764,11 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                g_assert (type == MONO_TYPE_VALUETYPE);
                /* Fall through */
                handle_vtype:
-       case MONO_TYPE_VALUETYPE: {
-               gboolean is_enum = decode_byte (buf, &buf, limit);
-               MonoClass *klass;
-               MonoClassField *f;
-               int nfields;
-               gpointer iter = NULL;
-               MonoDomain *d;
-
-               /* Enums are sent as a normal vtype */
-               if (is_enum)
-                       return ERR_NOT_IMPLEMENTED;
-               klass = decode_typeid (buf, &buf, limit, &d, &err);
+       case MONO_TYPE_VALUETYPE:
+               err = decode_vtype (t, domain, addr,buf, &buf, limit);
                if (err)
                        return err;
-
-               if (klass != mono_class_from_mono_type (t))
-                       return ERR_INVALID_ARGUMENT;
-
-               nfields = decode_int (buf, &buf, limit);
-               while ((f = mono_class_get_fields (klass, &iter))) {
-                       if (f->type->attrs & FIELD_ATTRIBUTE_STATIC)
-                               continue;
-                       if (mono_field_is_deleted (f))
-                               continue;
-                       err = decode_value (f->type, domain, (guint8*)addr + f->offset - sizeof (MonoObject), buf, &buf, limit);
-                       if (err)
-                               return err;
-                       nfields --;
-               }
-               g_assert (nfields == 0);
                break;
-       }
        handle_ref:
        default:
                if (MONO_TYPE_IS_REFERENCE (t)) {
@@ -5695,7 +5793,44 @@ decode_value_internal (MonoType *t, int type, MonoDomain *domain, guint8 *addr,
                                mono_gc_wbarrier_generic_store (addr, obj);
                        } else if (type == VALUE_TYPE_ID_NULL) {
                                *(MonoObject**)addr = NULL;
+                       } else if (type == MONO_TYPE_VALUETYPE) {
+                               guint8 *buf2;
+                               gboolean is_enum;
+                               MonoClass *klass;
+                               MonoDomain *d;
+                               guint8 *vtype_buf;
+                               int vtype_buf_size;
+
+                               /* This can happen when round-tripping boxed vtypes */
+                               /*
+                                * Obtain vtype class.
+                                * Same as the beginning of the handle_vtype case above.
+                                */
+                               buf2 = buf;
+                               is_enum = decode_byte (buf, &buf, limit);
+                               if (is_enum)
+                                       return ERR_NOT_IMPLEMENTED;
+                               klass = decode_typeid (buf, &buf, limit, &d, &err);
+                               if (err)
+                                       return err;
+
+                               /* Decode the vtype into a temporary buffer, then box it. */
+                               vtype_buf_size = mono_class_value_size (klass, NULL);
+                               vtype_buf = g_malloc0 (vtype_buf_size);
+                               g_assert (vtype_buf);
+
+                               buf = buf2;
+                               err = decode_vtype (NULL, domain, vtype_buf, buf, &buf, limit);
+                               if (err) {
+                                       g_free (vtype_buf);
+                                       return err;
+                               }
+                               *(MonoObject**)addr = mono_value_box (d, klass, vtype_buf);
+                               g_free (vtype_buf);
                        } else {
+                               char *name = mono_type_full_name (t);
+                               DEBUG(1, fprintf (log_file, "[%p] Expected value of type %s, got 0x%0x.\n", (gpointer)GetCurrentThreadId (), name, type));
+                               g_free (name);
                                return ERR_INVALID_ARGUMENT;
                        }
                } else {
@@ -5751,11 +5886,11 @@ decode_value (MonoType *t, MonoDomain *domain, guint8 *addr, guint8 *buf, guint8
 }
 
 static void
-add_var (Buffer *buf, MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domain, gboolean as_vtype)
+add_var (Buffer *buf, MonoDebugMethodJitInfo *jit, MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domain, gboolean as_vtype)
 {
        guint32 flags;
        int reg;
-       guint8 *addr;
+       guint8 *addr, *gaddr;
        mgreg_t reg_val;
 
        flags = var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
@@ -5778,6 +5913,60 @@ add_var (Buffer *buf, MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, Mono
        case MONO_DEBUG_VAR_ADDRESS_MODE_DEAD:
                NOT_IMPLEMENTED;
                break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
+       case MONO_DEBUG_VAR_ADDRESS_MODE_VTADDR:
+               /* Same as regoffset, but with an indirection */
+               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr += (gint32)var->offset;
+
+               gaddr = *(gpointer*)addr;
+               g_assert (gaddr);
+               buffer_add_value_full (buf, t, gaddr, domain, as_vtype);
+               break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_GSHAREDVT_LOCAL: {
+               MonoDebugVarInfo *info_var = jit->gsharedvt_info_var;
+               MonoDebugVarInfo *locals_var = jit->gsharedvt_locals_var;
+               MonoGSharedVtMethodRuntimeInfo *info;
+               guint8 *locals;
+               int idx;
+
+               idx = reg;
+
+               g_assert (info_var);
+               g_assert (locals_var);
+
+               flags = info_var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
+               reg = info_var->index & ~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
+               if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET) {
+                       addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       addr += (gint32)info_var->offset;
+                       info = *(gpointer*)addr;
+               } else if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER) {
+                       info = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               } else {
+                       g_assert_not_reached ();
+               }
+               g_assert (info);
+
+               flags = locals_var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
+               reg = locals_var->index & ~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
+               if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET) {
+                       addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+                       addr += (gint32)locals_var->offset;
+                       locals = *(gpointer*)addr;
+               } else if (flags == MONO_DEBUG_VAR_ADDRESS_MODE_REGISTER) {
+                       locals = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               } else {
+                       g_assert_not_reached ();
+               }
+               g_assert (locals);
+
+               addr = locals + GPOINTER_TO_INT (info->entries [idx]);
+
+               buffer_add_value_full (buf, t, addr, domain, as_vtype);
+               break;
+       }
+
        default:
                g_assert_not_reached ();
        }
@@ -5788,7 +5977,7 @@ set_var (MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domai
 {
        guint32 flags;
        int reg, size;
-       guint8 *addr;
+       guint8 *addr, *gaddr;
 
        flags = var->index & MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
        reg = var->index & ~MONO_DEBUG_VAR_ADDRESS_MODE_FLAGS;
@@ -5862,6 +6051,16 @@ set_var (MonoType *t, MonoDebugVarInfo *var, MonoContext *ctx, MonoDomain *domai
                // FIXME: Write barriers
                mono_gc_memmove (addr, val, size);
                break;
+       case MONO_DEBUG_VAR_ADDRESS_MODE_REGOFFSET_INDIR:
+               /* Same as regoffset, but with an indirection */
+               addr = (gpointer)mono_arch_context_get_int_reg (ctx, reg);
+               addr += (gint32)var->offset;
+
+               gaddr = *(gpointer*)addr;
+               g_assert (gaddr);
+               // FIXME: Write barriers
+               mono_gc_memmove (gaddr, val, size);
+               break;
        case MONO_DEBUG_VAR_ADDRESS_MODE_DEAD:
                NOT_IMPLEMENTED;
                break;
@@ -6024,8 +6223,10 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
        if (m->klass->valuetype && (m->flags & METHOD_ATTRIBUTE_STATIC)) {
                /* Should be null */
                int type = decode_byte (p, &p, end);
-               if (type != VALUE_TYPE_ID_NULL)
+               if (type != VALUE_TYPE_ID_NULL) {
+                       DEBUG (1, fprintf (log_file, "[%p] Error: Static vtype method invoked with this argument.\n", (gpointer)GetCurrentThreadId ()));
                        return ERR_INVALID_ARGUMENT;
+               }
                memset (this_buf, 0, mono_class_instance_size (m->klass));
        } else {
                err = decode_value (&m->klass->byval_arg, domain, this_buf, p, &p, end);
@@ -6038,6 +6239,14 @@ do_invoke_method (DebuggerTlsData *tls, Buffer *buf, InvokeData *invoke, guint8
        else
                this = NULL;
 
+       if (MONO_CLASS_IS_INTERFACE (m->klass)) {
+               if (!this) {
+                       DEBUG (1, fprintf (log_file, "[%p] Error: Interface method invoked without this argument.\n", (gpointer)GetCurrentThreadId ()));
+                       return ERR_INVALID_ARGUMENT;
+               }
+               m = mono_object_get_virtual_method (this, m);
+       }
+
        DEBUG (1, fprintf (log_file, "[%p] Invoking method '%s' on receiver '%s'.\n", (gpointer)GetCurrentThreadId (), mono_method_full_name (m, TRUE), this ? this->vtable->klass->name : "<null>"));
 
        if (this && this->vtable->domain != domain)
@@ -6205,13 +6414,9 @@ invoke_method (void)
        int id;
        int i, err, mindex;
        Buffer buf;
-       static void (*restore_context) (void *);
        MonoContext restore_ctx;
        guint8 *p;
 
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
-
        tls = mono_native_tls_get_value (debugger_tls_id);
        g_assert (tls);
 
@@ -6269,7 +6474,7 @@ invoke_method (void)
                tls->resume_count -= invoke->suspend_count;
        }
 
-       DEBUG (1, fprintf (log_file, "[%p] Invoke finished, resume_count = %d.\n", (gpointer)GetCurrentThreadId (), tls->resume_count));
+       DEBUG (1, fprintf (log_file, "[%p] Invoke finished (%d), resume_count = %d.\n", (gpointer)GetCurrentThreadId (), err, tls->resume_count));
 
        /*
         * Take the loader lock to avoid race conditions with CMD_VM_ABORT_INVOKE:
@@ -6470,7 +6675,8 @@ vm_commands (int command, int id, guint8 *p, guint8 *end, Buffer *buf)
                        while (suspend_count > 0)
                                resume_vm ();
 
-                       mono_runtime_shutdown ();
+                       if (!mono_runtime_try_shutdown ())
+                               break;
 
                        /* Suspend all managed threads since the runtime is going away */
                        DEBUG(1, fprintf (log_file, "Suspending all threads...\n"));
@@ -6797,6 +7003,9 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                                if (CHECK_PROTOCOL_VERSION (2, 16))
                                        filter = decode_int (p, &p, end);
                                req->modifiers [i].data.filter = filter;
+                               if (!CHECK_PROTOCOL_VERSION (2, 26) && (req->modifiers [i].data.filter & STEP_FILTER_DEBUGGER_HIDDEN))
+                                       /* Treat STEP_THOUGH the same as HIDDEN */
+                                       req->modifiers [i].data.filter |= STEP_FILTER_DEBUGGER_STEP_THROUGH;
                        } else if (mod == MOD_KIND_THREAD_ONLY) {
                                int id = decode_id (p, &p, end);
 
@@ -6812,7 +7021,11 @@ event_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                                        return err;
                                req->modifiers [i].caught = decode_byte (p, &p, end);
                                req->modifiers [i].uncaught = decode_byte (p, &p, end);
-                               DEBUG(1, fprintf (log_file, "[dbg] \tEXCEPTION_ONLY filter (%s%s%s).\n", exc_class ? exc_class->name : "all", req->modifiers [i].caught ? ", caught" : "", req->modifiers [i].uncaught ? ", uncaught" : ""));
+                               if (CHECK_PROTOCOL_VERSION (2, 25))
+                                       req->modifiers [i].subclasses = decode_byte (p, &p, end);
+                               else
+                                       req->modifiers [i].subclasses = TRUE;
+                               DEBUG(1, fprintf (log_file, "[dbg] \tEXCEPTION_ONLY filter (%s%s%s%s).\n", exc_class ? exc_class->name : "all", req->modifiers [i].caught ? ", caught" : "", req->modifiers [i].uncaught ? ", uncaught" : "", req->modifiers [i].subclasses ? ", include-subclasses" : ""));
                                if (exc_class) {
                                        req->modifiers [i].data.exc_class = exc_class;
 
@@ -7226,9 +7439,11 @@ buffer_add_cattrs (Buffer *buf, MonoDomain *domain, MonoImage *image, MonoClass
                if (!attr_klass || mono_class_has_parent (attr->ctor->klass, attr_klass)) {
                        MonoArray *typed_args, *named_args;
                        MonoType *t;
-                       CattrNamedArg *arginfo;
+                       CattrNamedArg *arginfo = NULL;
+                       MonoError error;
 
-                       mono_reflection_create_custom_attr_data_args (image, attr->ctor, attr->data, attr->data_size, &typed_args, &named_args, &arginfo);
+                       mono_reflection_create_custom_attr_data_args (image, attr->ctor, attr->data, attr->data_size, &typed_args, &named_args, &arginfo, &error);
+                       g_assert (mono_error_ok (&error));
 
                        buffer_add_methodid (buf, domain, attr->ctor);
 
@@ -7268,6 +7483,7 @@ buffer_add_cattrs (Buffer *buf, MonoDomain *domain, MonoImage *image, MonoClass
                        } else {
                                buffer_add_int (buf, 0);
                        }
+                       g_free (arginfo);
                }
        }
 }
@@ -8084,6 +8300,40 @@ method_commands_internal (int command, MonoMethod *method, MonoDomain *domain, g
                buffer_add_cattrs (buf, domain, method->klass->image, attr_klass, cinfo);
                break;
        }
+       case CMD_METHOD_MAKE_GENERIC_METHOD: {
+               MonoType **type_argv;
+               int i, type_argc;
+               MonoDomain *d;
+               MonoClass *klass;
+               MonoGenericInst *ginst;
+               MonoGenericContext tmp_context;
+               MonoMethod *inflated;
+
+               type_argc = decode_int (p, &p, end);
+               type_argv = g_new0 (MonoType*, type_argc);
+               for (i = 0; i < type_argc; ++i) {
+                       klass = decode_typeid (p, &p, end, &d, &err);
+                       if (err) {
+                               g_free (type_argv);
+                               return err;
+                       }
+                       if (domain != d) {
+                               g_free (type_argv);
+                               return ERR_INVALID_ARGUMENT;
+                       }
+                       type_argv [i] = &klass->byval_arg;
+               }
+               ginst = mono_metadata_get_generic_inst (type_argc, type_argv);
+               g_free (type_argv);
+               tmp_context.class_inst = method->klass->generic_class ? method->klass->generic_class->context.class_inst : NULL;
+               tmp_context.method_inst = ginst;
+
+               inflated = mono_class_inflate_generic_method (method, &tmp_context);
+               if (!mono_verifier_is_method_valid_generic_instantiation (inflated))
+                       return ERR_INVALID_ARGUMENT;
+               buffer_add_methodid (buf, domain, inflated);
+               break;
+       }
        default:
                return ERR_NOT_IMPLEMENTED;
        }
@@ -8253,8 +8503,7 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
        frame = tls->frames [frame_idx];
 
        if (!frame->has_ctx)
-               // FIXME:
-               return ERR_INVALID_FRAMEID;
+               return ERR_ABSENT_INFORMATION;
 
        if (!frame->jit) {
                frame->jit = mono_debug_find_method (frame->api_method, frame->domain);
@@ -8295,13 +8544,13 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
 
                                var = &jit->params [pos];
 
-                               add_var (buf, sig->params [pos], &jit->params [pos], &frame->ctx, frame->domain, FALSE);
+                               add_var (buf, jit, sig->params [pos], &jit->params [pos], &frame->ctx, frame->domain, FALSE);
                        } else {
                                g_assert (pos >= 0 && pos < jit->num_locals);
 
                                var = &jit->locals [pos];
                                
-                               add_var (buf, header->locals [pos], &jit->locals [pos], &frame->ctx, frame->domain, FALSE);
+                               add_var (buf, jit, header->locals [pos], &jit->locals [pos], &frame->ctx, frame->domain, FALSE);
                        }
                }
                mono_metadata_free_mh (header);
@@ -8313,14 +8562,14 @@ frame_commands (int command, guint8 *p, guint8 *end, Buffer *buf)
                                MonoObject *p = NULL;
                                buffer_add_value (buf, &mono_defaults.object_class->byval_arg, &p, frame->domain);
                        } else {
-                               add_var (buf, &frame->actual_method->klass->this_arg, jit->this_var, &frame->ctx, frame->domain, TRUE);
+                               add_var (buf, jit, &frame->actual_method->klass->this_arg, jit->this_var, &frame->ctx, frame->domain, TRUE);
                        }
                } else {
                        if (!sig->hasthis) {
                                MonoObject *p = NULL;
                                buffer_add_value (buf, &frame->actual_method->klass->byval_arg, &p, frame->domain);
                        } else {
-                               add_var (buf, &frame->api_method->klass->byval_arg, jit->this_var, &frame->ctx, frame->domain, TRUE);
+                               add_var (buf, jit, &frame->api_method->klass->byval_arg, jit->this_var, &frame->ctx, frame->domain, TRUE);
                        }
                }
                break;
@@ -8633,41 +8882,188 @@ command_set_to_string (CommandSet command_set)
        }
 }
 
+static const char* vm_cmds_str [] = {
+       "VERSION",
+       "ALL_THREADS",
+       "SUSPEND",
+       "RESUME",
+       "EXIT",
+       "DISPOSE",
+       "INVOKE_METHOD",
+       "SET_PROTOCOL_VERSION",
+       "ABORT_INVOKE",
+       "SET_KEEPALIVE"
+       "GET_TYPES_FOR_SOURCE_FILE",
+       "GET_TYPES",
+       "INVOKE_METHODS"
+};
+
+static const char* thread_cmds_str[] = {
+       "GET_FRAME_INFO",
+       "GET_NAME",
+       "GET_STATE",
+       "GET_INFO",
+       "GET_ID",
+       "GET_TID"
+};
+
+static const char* event_cmds_str[] = {
+       "REQUEST_SET",
+       "REQUEST_CLEAR",
+       "REQUEST_CLEAR_ALL_BREAKPOINTS"
+};
+
+static const char* appdomain_cmds_str[] = {
+       "GET_ROOT_DOMAIN",
+       "GET_FRIENDLY_NAME",
+       "GET_ASSEMBLIES",
+       "GET_ENTRY_ASSEMBLY",
+       "CREATE_STRING",
+       "GET_CORLIB",
+       "CREATE_BOXED_VALUE"
+};
+
+static const char* assembly_cmds_str[] = {
+       "GET_LOCATION",
+       "GET_ENTRY_POINT",
+       "GET_MANIFEST_MODULE",
+       "GET_OBJECT",
+       "GET_TYPE",
+       "GET_NAME"
+};
+
+static const char* module_cmds_str[] = {
+       "GET_INFO",
+};
+
+static const char* method_cmds_str[] = {
+       "GET_NAME",
+       "GET_DECLARING_TYPE",
+       "GET_DEBUG_INFO",
+       "GET_PARAM_INFO",
+       "GET_LOCALS_INFO",
+       "GET_INFO",
+       "GET_BODY",
+       "RESOLVE_TOKEN",
+       "GET_CATTRS ",
+       "MAKE_GENERIC_METHOD"
+};
+
+static const char* type_cmds_str[] = {
+       "GET_INFO",
+       "GET_METHODS",
+       "GET_FIELDS",
+       "GET_VALUES",
+       "GET_OBJECT",
+       "GET_SOURCE_FILES",
+       "SET_VALUES",
+       "IS_ASSIGNABLE_FROM",
+       "GET_PROPERTIES ",
+       "GET_CATTRS",
+       "GET_FIELD_CATTRS",
+       "GET_PROPERTY_CATTRS",
+       "GET_SOURCE_FILES_2",
+       "GET_VALUES_2",
+       "GET_METHODS_BY_NAME_FLAGS",
+       "GET_INTERFACES",
+       "GET_INTERFACE_MAP",
+       "IS_INITIALIZED"
+};
+
+static const char* stack_frame_cmds_str[] = {
+       "GET_VALUES",
+       "GET_THIS",
+       "SET_VALUES"
+};
+
+static const char* array_cmds_str[] = {
+       "GET_LENGTH",
+       "GET_VALUES",
+       "SET_VALUES",
+};
+
+static const char* string_cmds_str[] = {
+       "GET_VALUE",
+       "GET_LENGTH",
+       "GET_CHARS"
+};
+
+static const char* object_cmds_str[] = {
+       "GET_TYPE",
+       "GET_VALUES",
+       "IS_COLLECTED",
+       "GET_ADDRESS",
+       "GET_DOMAIN",
+       "SET_VALUES",
+       "GET_INFO",
+};
+
 static const char*
 cmd_to_string (CommandSet set, int command)
 {
+       const char **cmds;
+       int cmds_len = 0;
+
        switch (set) {
-       case CMD_SET_VM: {
-               switch (command) {
-               case CMD_VM_VERSION:
-                       return "VERSION";
-               case CMD_VM_ALL_THREADS:
-                       return "ALL_THREADS";
-               case CMD_VM_SUSPEND:
-                       return "SUSPEND";
-               case CMD_VM_RESUME:
-                       return "RESUME";
-               case CMD_VM_EXIT:
-                       return "EXIT";
-               case CMD_VM_DISPOSE:
-                       return "DISPOSE";
-               case CMD_VM_INVOKE_METHOD:
-                       return "INVOKE_METHOD";
-               case CMD_VM_SET_PROTOCOL_VERSION:
-                       return "SET_PROTOCOL_VERSION";
-               case CMD_VM_ABORT_INVOKE:
-                       return "ABORT_INVOKE";
-               case CMD_VM_SET_KEEPALIVE:
-                       return "SET_KEEPALIVE";
-               default:
-                       break;
-               }
+       case CMD_SET_VM:
+               cmds = vm_cmds_str;
+               cmds_len = G_N_ELEMENTS (vm_cmds_str);
                break;
-       }
-       default:
+       case CMD_SET_OBJECT_REF:
+               cmds = object_cmds_str;
+               cmds_len = G_N_ELEMENTS (object_cmds_str);
+               break;
+       case CMD_SET_STRING_REF:
+               cmds = string_cmds_str;
+               cmds_len = G_N_ELEMENTS (string_cmds_str);
+               break;
+       case CMD_SET_THREAD:
+               cmds = thread_cmds_str;
+               cmds_len = G_N_ELEMENTS (thread_cmds_str);
+               break;
+       case CMD_SET_ARRAY_REF:
+               cmds = array_cmds_str;
+               cmds_len = G_N_ELEMENTS (array_cmds_str);
+               break;
+       case CMD_SET_EVENT_REQUEST:
+               cmds = event_cmds_str;
+               cmds_len = G_N_ELEMENTS (event_cmds_str);
+               break;
+       case CMD_SET_STACK_FRAME:
+               cmds = stack_frame_cmds_str;
+               cmds_len = G_N_ELEMENTS (stack_frame_cmds_str);
+               break;
+       case CMD_SET_APPDOMAIN:
+               cmds = appdomain_cmds_str;
+               cmds_len = G_N_ELEMENTS (appdomain_cmds_str);
+               break;
+       case CMD_SET_ASSEMBLY:
+               cmds = assembly_cmds_str;
+               cmds_len = G_N_ELEMENTS (assembly_cmds_str);
+               break;
+       case CMD_SET_METHOD:
+               cmds = method_cmds_str;
+               cmds_len = G_N_ELEMENTS (method_cmds_str);
+               break;
+       case CMD_SET_TYPE:
+               cmds = type_cmds_str;
+               cmds_len = G_N_ELEMENTS (type_cmds_str);
+               break;
+       case CMD_SET_MODULE:
+               cmds = module_cmds_str;
+               cmds_len = G_N_ELEMENTS (module_cmds_str);
+               break;
+       case CMD_SET_EVENT:
+               cmds = event_cmds_str;
+               cmds_len = G_N_ELEMENTS (event_cmds_str);
                break;
+       default:
+               return NULL;
        }
-       return NULL;
+       if (command > 0 && command <= cmds_len)
+               return cmds [command - 1];
+       else
+               return NULL;
 }
 
 static gboolean
@@ -8767,7 +9163,7 @@ debugger_thread (void *arg)
                                cmd_str = cmd_num;
                        }
                        
-                       DEBUG (1, fprintf (log_file, "[dbg] Received command %s(%s), id=%d.\n", command_set_to_string (command_set), cmd_str, id));
+                       DEBUG (1, fprintf (log_file, "[dbg] Command %s(%s) [%d].\n", command_set_to_string (command_set), cmd_str, id));
                }
 
                data = g_malloc (len - HEADER_LENGTH);
@@ -8839,7 +9235,7 @@ debugger_thread (void *arg)
                g_free (data);
                buffer_free (&buf);
 
-               if (command_set == CMD_SET_VM && command == CMD_VM_DISPOSE)
+               if (command_set == CMD_SET_VM && (command == CMD_VM_DISPOSE || command == CMD_VM_EXIT))
                        break;
        }
 
index fa06e6efdd9fd43f64e5d1041c4afdc3beb71950..1ece56bdc46111365dcbbd9ddf15afe630da3168 100644 (file)
@@ -47,19 +47,21 @@ void
 mono_declsec_cache_stack_modifiers (MonoJitInfo *jinfo)
 {
        MonoMethodCasInfo *info = mono_jit_info_get_cas_info (jinfo);
+       MonoMethod *method;
        guint32 flags;
 
        if (!info)
                return;
 
+       method = jinfo_get_method (jinfo);
        /* first find the stack modifiers applied to the method */
-       flags = mono_declsec_flags_from_method (jinfo->method);
+       flags = mono_declsec_flags_from_method (method);
        info->cas_method_assert = (flags & MONO_DECLSEC_FLAG_ASSERT) != 0;
        info->cas_method_deny = (flags & MONO_DECLSEC_FLAG_DENY) != 0;
        info->cas_method_permitonly = (flags & MONO_DECLSEC_FLAG_PERMITONLY) != 0;
 
        /* then find the stack modifiers applied to the class */
-       flags = mono_declsec_flags_from_class (jinfo->method->klass);
+       flags = mono_declsec_flags_from_class (method->klass);
        info->cas_class_assert = (flags & MONO_DECLSEC_FLAG_ASSERT) != 0;
        info->cas_class_deny = (flags & MONO_DECLSEC_FLAG_DENY) != 0;
        info->cas_class_permitonly = (flags & MONO_DECLSEC_FLAG_PERMITONLY) != 0;
@@ -71,41 +73,43 @@ mono_declsec_create_frame (MonoDomain *domain, MonoJitInfo *jinfo)
 {
        MonoSecurityFrame *frame = (MonoSecurityFrame*) mono_object_new (domain, mono_defaults.runtimesecurityframe_class);
        MonoMethodCasInfo *info;
+       MonoMethod *method;
 
+       method = jinfo_get_method (jinfo);
        info = mono_jit_info_get_cas_info (jinfo);
        if (info && !info->cas_inited) {
-               if (mono_method_has_declsec (jinfo->method)) {
+               if (mono_method_has_declsec (method)) {
                        /* Cache the stack modifiers into the MonoJitInfo structure to speed up future stack walks */
                        mono_declsec_cache_stack_modifiers (jinfo);
                }
                info->cas_inited = TRUE;
        }
 
-       MONO_OBJECT_SETREF (frame, method, mono_method_get_object (domain, jinfo->method, NULL));
+       MONO_OBJECT_SETREF (frame, method, mono_method_get_object (domain, method, NULL));
        MONO_OBJECT_SETREF (frame, domain, domain->domain);
 
        /* stack modifiers on methods have priority on (i.e. replaces) modifiers on class */
 
        if (info && info->cas_method_assert) {
-               mono_declsec_get_method_action (jinfo->method, SECURITY_ACTION_ASSERT, &frame->assert);
+               mono_declsec_get_method_action (method, SECURITY_ACTION_ASSERT, &frame->assert);
        } else if (info && info->cas_class_assert) {
-               mono_declsec_get_class_action (jinfo->method->klass, SECURITY_ACTION_ASSERT, &frame->assert);
+               mono_declsec_get_class_action (method->klass, SECURITY_ACTION_ASSERT, &frame->assert);
        }
 
        if (info && info->cas_method_deny) {
-               mono_declsec_get_method_action (jinfo->method, SECURITY_ACTION_DENY, &frame->deny);
+               mono_declsec_get_method_action (method, SECURITY_ACTION_DENY, &frame->deny);
        } else if (info && info->cas_class_deny) {
-               mono_declsec_get_class_action (jinfo->method->klass, SECURITY_ACTION_DENY, &frame->deny);
+               mono_declsec_get_class_action (method->klass, SECURITY_ACTION_DENY, &frame->deny);
        }
 
        if (info && info->cas_method_permitonly) {
-               mono_declsec_get_method_action (jinfo->method, SECURITY_ACTION_PERMITONLY, &frame->permitonly);
+               mono_declsec_get_method_action (method, SECURITY_ACTION_PERMITONLY, &frame->permitonly);
        } else if (info && info->cas_class_permitonly) {
-               mono_declsec_get_class_action (jinfo->method->klass, SECURITY_ACTION_PERMITONLY, &frame->permitonly);
+               mono_declsec_get_class_action (method->klass, SECURITY_ACTION_PERMITONLY, &frame->permitonly);
        }
 
        /* g_warning ("FRAME %s A(%p,%d) D(%p,%d) PO(%p,%d)", 
-       jinfo->method->name, frame->assert.blob, frame->assert.size, frame->deny.blob, frame->deny.size, frame->permitonly.blob,frame->permitonly.size); */
+       method->name, frame->assert.blob, frame->assert.size, frame->deny.blob, frame->deny.size, frame->permitonly.blob,frame->permitonly.size); */
 
        return frame;
 }
index c15502818fbd048bd473e1c25b3f31d497bb8688..a14a1b76ca3d5f7e6b51b8c3692bc61d357b3774 100644 (file)
@@ -17,7 +17,7 @@
 #ifndef DISABLE_JIT
 
 /* FIXME: This conflicts with the definition in mini.c, so it cannot be moved to mini.h */
-MonoInst* mono_emit_native_call (MonoCompile *cfg, gconstpointer func, MonoMethodSignature *sig, MonoInst **args);
+MONO_API MonoInst* mono_emit_native_call (MonoCompile *cfg, gconstpointer func, MonoMethodSignature *sig, MonoInst **args);
 void mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *klass, gboolean native);
 void mini_emit_initobj (MonoCompile *cfg, MonoInst *dest, const guchar *ip, MonoClass *klass);
 
@@ -1413,7 +1413,7 @@ mono_decompose_array_access_opts (MonoCompile *cfg)
                                switch (ins->opcode) {
                                case OP_LDLEN:
                                        NEW_LOAD_MEMBASE_FLAGS (cfg, dest, OP_LOADI4_MEMBASE, ins->dreg, ins->sreg1,
-                                                                                       G_STRUCT_OFFSET (MonoArray, max_length), ins->flags | MONO_INST_CONSTANT_LOAD);
+                                                                                       G_STRUCT_OFFSET (MonoArray, max_length), ins->flags | MONO_INST_INVARIANT_LOAD);
                                        MONO_ADD_INS (cfg->cbb, dest);
                                        break;
                                case OP_BOUNDS_CHECK:
@@ -1452,7 +1452,7 @@ mono_decompose_array_access_opts (MonoCompile *cfg)
                                        break;
                                case OP_STRLEN:
                                        MONO_EMIT_NEW_LOAD_MEMBASE_OP_FLAGS (cfg, OP_LOADI4_MEMBASE, ins->dreg,
-                                                                                                                ins->sreg1, G_STRUCT_OFFSET (MonoString, length), ins->flags | MONO_INST_CONSTANT_LOAD);
+                                                                                                                ins->sreg1, G_STRUCT_OFFSET (MonoString, length), ins->flags | MONO_INST_INVARIANT_LOAD);
                                        break;
                                default:
                                        break;
@@ -1483,7 +1483,7 @@ typedef union {
        double vald;
 } DVal;
 
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
 
 /**
  * mono_decompose_soft_float:
index b7574c1e7b45270159751278888efeb023a84e77..1e3c8dea77a6753c0115c58a394b7cd497ae737c 100644 (file)
@@ -47,6 +47,7 @@
 #include <mono/metadata/coree.h>
 #include <mono/metadata/attach.h>
 #include "mono/utils/mono-counters.h"
+#include "mono/utils/mono-hwcap.h"
 
 #include "mini.h"
 #include "jit.h"
@@ -136,6 +137,7 @@ extern char *nacl_mono_path;
     MONO_OPT_CMOV |  \
        MONO_OPT_GSHARED |      \
        MONO_OPT_SIMD | \
+       MONO_OPT_ALIAS_ANALYSIS | \
        MONO_OPT_AOT)
 
 #define EXCLUDED_FROM_ALL (MONO_OPT_SHARED | MONO_OPT_PRECOMP | MONO_OPT_UNSAFE | MONO_OPT_GSHAREDVT)
@@ -149,6 +151,9 @@ parse_optimizations (const char* p)
        const char *n;
        int i, invert, len;
 
+       /* Initialize the hwcap module if necessary. */
+       mono_hwcap_init ();
+
        /* call out to cpu detection code here that sets the defaults ... */
        opt |= mono_arch_cpu_optimizations (&exclude);
        opt &= ~exclude;
@@ -305,16 +310,19 @@ opt_sets [] = {
        MONO_OPT_BRANCH,
        MONO_OPT_CFOLD,
        MONO_OPT_FCMOV,
+       MONO_OPT_ALIAS_ANALYSIS,
 #ifdef MONO_ARCH_SIMD_INTRINSICS
        MONO_OPT_SIMD,
        MONO_OPT_SSE2,
        MONO_OPT_SIMD | MONO_OPT_SSE2,
 #endif
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_INTRINS,
+       MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_INTRINS | MONO_OPT_ALIAS_ANALYSIS,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_CFOLD,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE,
+       MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_ALIAS_ANALYSIS,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_TAILC,
        MONO_OPT_BRANCH | MONO_OPT_PEEPHOLE | MONO_OPT_LINEARS | MONO_OPT_COPYPROP | MONO_OPT_CONSPROP | MONO_OPT_DEADCE | MONO_OPT_LOOP | MONO_OPT_INLINE | MONO_OPT_INTRINS | MONO_OPT_SSA,
@@ -338,19 +346,105 @@ domain_dump_native_code (MonoDomain *domain) {
 }
 #endif
 
+static void
+mini_regression_step (MonoImage *image, int verbose, int *total_run, int *total,
+               guint32 opt_flags,
+               GTimer *timer, MonoDomain *domain)
+{
+       int result, expected, failed, cfailed, run, code_size;
+       TestMethod func;
+       double elapsed, comp_time, start_time;
+       char *n;
+       int i;
+
+       mono_set_defaults (verbose, opt_flags);
+       n = opt_descr (opt_flags);
+       g_print ("Test run: image=%s, opts=%s\n", mono_image_get_filename (image), n);
+       g_free (n);
+       cfailed = failed = run = code_size = 0;
+       comp_time = elapsed = 0.0;
+
+       /* fixme: ugly hack - delete all previously compiled methods */
+       if (domain_jit_info (domain)) {
+               g_hash_table_destroy (domain_jit_info (domain)->jit_trampoline_hash);
+               domain_jit_info (domain)->jit_trampoline_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
+               mono_internal_hash_table_destroy (&(domain->jit_code_hash));
+               mono_jit_code_hash_init (&(domain->jit_code_hash));
+       }
+
+       g_timer_start (timer);
+       if (mini_stats_fd)
+               fprintf (mini_stats_fd, "[");
+       for (i = 0; i < mono_image_get_table_rows (image, MONO_TABLE_METHOD); ++i) {
+               MonoMethod *method = mono_get_method (image, MONO_TOKEN_METHOD_DEF | (i + 1), NULL);
+               if (!method)
+                       continue;
+               if (strncmp (method->name, "test_", 5) == 0) {
+                       MonoCompile *cfg;
+
+                       expected = atoi (method->name + 5);
+                       run++;
+                       start_time = g_timer_elapsed (timer, NULL);
+                       comp_time -= start_time;
+                       cfg = mini_method_compile (method, mono_get_optimizations_for_method (method, opt_flags), mono_get_root_domain (), TRUE, FALSE, 0);
+                       comp_time += g_timer_elapsed (timer, NULL);
+                       if (cfg->exception_type == MONO_EXCEPTION_NONE) {
+                               if (verbose >= 2)
+                                       g_print ("Running '%s' ...\n", method->name);
+#ifdef MONO_USE_AOT_COMPILER
+                               if ((func = mono_aot_get_method (mono_get_root_domain (), method)))
+                                       ;
+                               else
+#endif
+                                       func = (TestMethod)(gpointer)cfg->native_code;
+                               func = (TestMethod)mono_create_ftnptr (mono_get_root_domain (), func);
+                               result = func ();
+                               if (result != expected) {
+                                       failed++;
+                                       g_print ("Test '%s' failed result (got %d, expected %d).\n", method->name, result, expected);
+                               }
+                               code_size += cfg->code_len;
+                               mono_destroy_compile (cfg);
+
+                       } else {
+                               cfailed++;
+                               if (verbose)
+                                       g_print ("Test '%s' failed compilation.\n", method->name);
+                       }
+                       if (mini_stats_fd)
+                               fprintf (mini_stats_fd, "%f, ",
+                                               g_timer_elapsed (timer, NULL) - start_time);
+               }
+       }
+       if (mini_stats_fd)
+               fprintf (mini_stats_fd, "],\n");
+       g_timer_stop (timer);
+       elapsed = g_timer_elapsed (timer, NULL);
+       if (failed > 0 || cfailed > 0){
+               g_print ("Results: total tests: %d, failed: %d, cfailed: %d (pass: %.2f%%)\n",
+                               run, failed, cfailed, 100.0*(run-failed-cfailed)/run);
+       } else {
+               g_print ("Results: total tests: %d, all pass \n",  run);
+       }
+
+       g_print ("Elapsed time: %f secs (%f, %f), Code size: %d\n\n", elapsed,
+                       elapsed - comp_time, comp_time, code_size);
+       *total += failed + cfailed;
+       *total_run += run;
+}
+
 static int
 mini_regression (MonoImage *image, int verbose, int *total_run)
 {
-       guint32 i, opt, opt_flags;
+       guint32 i, opt;
        MonoMethod *method;
-       MonoCompile *cfg;
        char *n;
-       int result, expected, failed, cfailed, run, code_size, total;
-       TestMethod func;
        GTimer *timer = g_timer_new ();
        MonoDomain *domain = mono_domain_get ();
        guint32 exclude = 0;
+       int total;
 
+       /* Note: mono_hwcap_init () called in mono_init () before we get here. */
        mono_arch_cpu_optimizations (&exclude);
 
        if (mini_stats_fd) {
@@ -358,7 +452,7 @@ mini_regression (MonoImage *image, int verbose, int *total_run)
 
                fprintf (mini_stats_fd, "$graph->set_legend(qw(");
                for (opt = 0; opt < G_N_ELEMENTS (opt_sets); opt++) {
-                       opt_flags = opt_sets [opt];
+                       guint32 opt_flags = opt_sets [opt];
                        n = opt_descr (opt_flags);
                        if (!n [0])
                                n = (char *)"none";
@@ -391,80 +485,37 @@ mini_regression (MonoImage *image, int verbose, int *total_run)
 
        total = 0;
        *total_run = 0;
-       for (opt = 0; opt < G_N_ELEMENTS (opt_sets); ++opt) {
-               double elapsed, comp_time, start_time;
-
-               opt_flags = opt_sets [opt] & ~exclude;
-               mono_set_defaults (verbose, opt_flags);
-               n = opt_descr (opt_flags);
-               g_print ("Test run: image=%s, opts=%s\n", mono_image_get_filename (image), n);
-               g_free (n);
-               cfailed = failed = run = code_size = 0;
-               comp_time = elapsed = 0.0;
-
-               /* fixme: ugly hack - delete all previously compiled methods */
-               g_hash_table_destroy (domain_jit_info (domain)->jit_trampoline_hash);
-               domain_jit_info (domain)->jit_trampoline_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
-               mono_internal_hash_table_destroy (&(domain->jit_code_hash));
-               mono_jit_code_hash_init (&(domain->jit_code_hash));
-
-               g_timer_start (timer);
-               if (mini_stats_fd)
-                       fprintf (mini_stats_fd, "[");
-               for (i = 0; i < mono_image_get_table_rows (image, MONO_TABLE_METHOD); ++i) {
-                       method = mono_get_method (image, MONO_TOKEN_METHOD_DEF | (i + 1), NULL);
-                       if (!method)
-                               continue;
-                       if (strncmp (method->name, "test_", 5) == 0) {
-                               expected = atoi (method->name + 5);
-                               run++;
-                               start_time = g_timer_elapsed (timer, NULL);
-                               comp_time -= start_time; 
-                               cfg = mini_method_compile (method, opt_flags, mono_get_root_domain (), TRUE, FALSE, 0);
-                               comp_time += g_timer_elapsed (timer, NULL);
-                               if (cfg->exception_type == MONO_EXCEPTION_NONE) {
-                                       if (verbose >= 2)
-                                               g_print ("Running '%s' ...\n", method->name);
-#ifdef MONO_USE_AOT_COMPILER
-                                       if ((func = mono_aot_get_method (mono_get_root_domain (), method)))
-                                               ;
-                                       else
-#endif
-                                               func = (TestMethod)(gpointer)cfg->native_code;
-                                       func = (TestMethod)mono_create_ftnptr (mono_get_root_domain (), func);
-                                       result = func ();
-                                       if (result != expected) {
-                                               failed++;
-                                               g_print ("Test '%s' failed result (got %d, expected %d).\n", method->name, result, expected);
-                                       }
-                                       code_size += cfg->code_len;
-                                       mono_destroy_compile (cfg);
-
-                               } else {
-                                       cfailed++;
-                                       if (verbose)
-                                               g_print ("Test '%s' failed compilation.\n", method->name);
-                               }
-                               if (mini_stats_fd)
-                                       fprintf (mini_stats_fd, "%f, ", 
-                                                g_timer_elapsed (timer, NULL) - start_time);
-                       }
+       if (mono_do_single_method_regression) {
+               GSList *iter;
+
+               mini_regression_step (image, verbose, total_run, &total,
+                               0,
+                               timer, domain);
+               if (total)
+                       return total;
+               g_print ("Single method regression: %d methods\n", g_slist_length (mono_single_method_list));
+
+               for (iter = mono_single_method_list; iter; iter = g_slist_next (iter)) {
+                       char *method_name;
+
+                       mono_current_single_method = iter->data;
+
+                       method_name = mono_method_full_name (mono_current_single_method, TRUE);
+                       g_print ("Current single method: %s\n", method_name);
+                       g_free (method_name);
+
+                       mini_regression_step (image, verbose, total_run, &total,
+                                       0,
+                                       timer, domain);
+                       if (total)
+                               return total;
                }
-               if (mini_stats_fd)
-                       fprintf (mini_stats_fd, "],\n");
-               g_timer_stop (timer);
-               elapsed = g_timer_elapsed (timer, NULL);
-               if (failed > 0 || cfailed > 0){
-                       g_print ("Results: total tests: %d, failed: %d, cfailed: %d (pass: %.2f%%)\n", 
-                                run, failed, cfailed, 100.0*(run-failed-cfailed)/run);
-               } else {
-                       g_print ("Results: total tests: %d, all pass \n",  run);
+       } else {
+               for (opt = 0; opt < G_N_ELEMENTS (opt_sets); ++opt) {
+                       mini_regression_step (image, verbose, total_run, &total,
+                                       opt_sets [opt] & ~exclude,
+                                       timer, domain);
                }
-               
-               g_print ("Elapsed time: %f secs (%f, %f), Code size: %d\n\n", elapsed, 
-                        elapsed - comp_time, comp_time, code_size);
-               total += failed + cfailed;
-               *total_run += run;
        }
 
        if (mini_stats_fd) {
@@ -590,7 +641,7 @@ alloc_random_data (Region *region)
        g_assert (d->start >= prev_end && d->start + d->length <= next_start);
 
        d->ji = g_new0 (MonoJitInfo, 1);
-       d->ji->method = (MonoMethod*) 0xABadBabe;
+       d->ji->d.method = (MonoMethod*) 0xABadBabe;
        d->ji->code_start = (gpointer)(gulong) d->start;
        d->ji->code_size = d->length;
        d->ji->cas_inited = 1;  /* marks an allocated jit info */
@@ -824,6 +875,7 @@ jit_info_table_test (MonoDomain *domain)
 enum {
        DO_BENCH,
        DO_REGRESSION,
+       DO_SINGLE_METHOD_REGRESSION,
        DO_COMPILE,
        DO_EXEC,
        DO_DRAW,
@@ -883,7 +935,7 @@ compile_all_methods_thread_main_inner (CompileAllThreadArgs *args)
                        g_print ("Compiling %d %s\n", count, desc);
                        g_free (desc);
                }
-               cfg = mini_method_compile (method, args->opts, mono_get_root_domain (), FALSE, FALSE, 0);
+               cfg = mini_method_compile (method, mono_get_optimizations_for_method (method, args->opts), mono_get_root_domain (), FALSE, FALSE, 0);
                if (cfg->exception_type != MONO_EXCEPTION_NONE) {
                        printf ("Compilation of %s failed with exception '%s':\n", mono_method_full_name (cfg->method, TRUE), cfg->exception_message);
                        fail_count ++;
@@ -1095,6 +1147,7 @@ mini_usage_jitdeveloper (void)
                 "    --ncompile N           Number of times to compile METHOD (default: 1)\n"
                 "    --print-vtable         Print the vtable of all used classes\n"
                 "    --regression           Runs the regression test contained in the assembly\n"
+                "    --single-method=OPTS   Runs regressions with only one method optimized with OPTS at any time\n"
                 "    --statfile FILE        Sets the stat file to FILE\n"
                 "    --stats                Print statistics about the JIT operations\n"
                 "    --wapi=hps|semdel|seminfo IO-layer maintenance\n"
@@ -1346,6 +1399,8 @@ mono_jit_parse_options (int argc, char * argv[])
                } else if (strcmp (argv [i], "--llvm") == 0) {
 #ifndef MONO_ARCH_LLVM_SUPPORTED
                        fprintf (stderr, "Mono Warning: --llvm not supported on this platform.\n");
+#elif !defined(ENABLE_LLVM)
+                       fprintf (stderr, "Mono Warning: --llvm not enabled in this runtime.\n");
 #else
                        mono_use_llvm = TRUE;
 #endif
@@ -1383,7 +1438,33 @@ mono_set_use_smp (int use_smp)
        }
 #endif
 }
-       
+
+static void
+switch_gc (char* argv[], const char* target_gc)
+{
+       GString *path;
+
+       if (!strcmp (mono_gc_get_gc_name (), target_gc)) {
+               return;
+       }
+
+       path = g_string_new (argv [0]);
+
+       /*Running mono without any argument*/
+       if (strstr (argv [0], "-sgen"))
+               g_string_truncate (path, path->len - 5);
+       else if (strstr (argv [0], "-boehm"))
+               g_string_truncate (path, path->len - 6);
+
+       g_string_append_c (path, '-');
+       g_string_append (path, target_gc);
+
+#ifdef HAVE_EXECVP
+       execvp (path->str, argv);
+#else
+       fprintf (stderr, "Error: --gc=<NAME> option not supported on this platform.\n");
+#endif
+}
 
 /**
  * mono_main:
@@ -1437,7 +1518,7 @@ mono_main (int argc, char* argv[])
 
        setlocale (LC_ALL, "");
 
-       if (getenv ("MONO_NO_SMP"))
+       if (g_getenv ("MONO_NO_SMP"))
                mono_set_use_smp (FALSE);
        
        if (!g_thread_supported ())
@@ -1453,13 +1534,18 @@ mono_main (int argc, char* argv[])
                        break;
                if (strcmp (argv [i], "--regression") == 0) {
                        action = DO_REGRESSION;
+               } else if (strncmp (argv [i], "--single-method=", 16) == 0) {
+                       char *full_opts = g_strdup_printf ("-all,%s", argv [i] + 16);
+                       action = DO_SINGLE_METHOD_REGRESSION;
+                       mono_single_method_regression_opt = parse_optimizations (full_opts);
+                       g_free (full_opts);
                } else if (strcmp (argv [i], "--verbose") == 0 || strcmp (argv [i], "-v") == 0) {
                        mini_verbose++;
                } else if (strcmp (argv [i], "--version") == 0 || strcmp (argv [i], "-V") == 0) {
                        char *build = mono_get_runtime_build_info ();
                        char *gc_descr;
 
-                       g_print ("Mono JIT compiler version %s\nCopyright (C) 2002-2012 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com\n", build);
+                       g_print ("Mono Runtime Engine version %s\nCopyright (C) 2002-2013 Novell, Inc, Xamarin Inc and Contributors. www.mono-project.com\n", build);
                        g_free (build);
                        g_print (info);
                        gc_descr = mono_gc_get_description ();
@@ -1505,32 +1591,9 @@ mono_main (int argc, char* argv[])
                } else if (strncmp (argv [i], "-O=", 3) == 0) {
                        opt = parse_optimizations (argv [i] + 3);
                } else if (strcmp (argv [i], "--gc=sgen") == 0) {
-                       if (!strcmp (mono_gc_get_gc_name (), "boehm")) {
-                               GString *path = g_string_new (argv [0]);
-                               g_string_append (path, "-sgen");
-                               argv [0] = path->str;
-#ifdef HAVE_EXECVP
-                               execvp (path->str, argv);
-#else
-                               fprintf (stderr, "Error: --gc=<NAME> option not supported on this platform.\n");
-#endif
-                       }
+                       switch_gc (argv, "sgen");
                } else if (strcmp (argv [i], "--gc=boehm") == 0) {
-                       if (!strcmp (mono_gc_get_gc_name (), "sgen")) {
-                               char *copy = g_strdup (argv [0]);
-                               char *p = strstr (copy, "-sgen");
-                               if (p == NULL){
-                                       fprintf (stderr, "Error, this process is not named mono-sgen and the command line option --boehm was passed");
-                                       exit (1);
-                               }
-                               *p = 0;
-                               argv [0] = p;
-#ifdef HAVE_EXECVP
-                               execvp (p, argv);
-#else
-                               fprintf (stderr, "Error: --gc=<NAME> option not supported on this platform.\n");
-#endif
-                       }
+                       switch_gc (argv, "boehm");
                } else if (strcmp (argv [i], "--config") == 0) {
                        if (i +1 >= argc){
                                fprintf (stderr, "error: --config requires a filename argument\n");
@@ -1715,9 +1778,10 @@ mono_main (int argc, char* argv[])
                        }
                } else if (strcmp (argv [i], "--desktop") == 0) {
                        mono_gc_set_desktop_mode ();
-                       /* Put desktop-specific optimizations here */
+                       /* Put more desktop-specific optimizations here */
                } else if (strcmp (argv [i], "--server") == 0){
-                       /* Put server-specific optimizations here */
+                       mono_config_set_server_mode (TRUE);
+                       /* Put more server-specific optimizations here */
                } else if (strcmp (argv [i], "--inside-mdb") == 0) {
                        action = DO_DEBUGGER;
                } else if (strncmp (argv [i], "--wapi=", 7) == 0) {
@@ -1740,6 +1804,8 @@ mono_main (int argc, char* argv[])
                } else if (strcmp (argv [i], "--llvm") == 0) {
 #ifndef MONO_ARCH_LLVM_SUPPORTED
                        fprintf (stderr, "Mono Warning: --llvm not supported on this platform.\n");
+#elif !defined(ENABLE_LLVM)
+                       fprintf (stderr, "Mono Warning: --llvm not enabled in this runtime.\n");
 #else
                        mono_use_llvm = TRUE;
 #endif
@@ -1762,7 +1828,7 @@ mono_main (int argc, char* argv[])
        }
 
 #ifdef __native_client_codegen__
-       if (getenv ("MONO_NACL_ALIGN_MASK_OFF"))
+       if (g_getenv ("MONO_NACL_ALIGN_MASK_OFF"))
        {
                nacl_align_byte = -1; /* 0xff */
        }
@@ -1777,7 +1843,7 @@ mono_main (int argc, char* argv[])
                return 1;
        }
 
-       if (getenv ("MONO_XDEBUG"))
+       if (g_getenv ("MONO_XDEBUG"))
                enable_debugging = TRUE;
 
 #ifdef MONO_CROSS_COMPILE
@@ -1865,6 +1931,8 @@ mono_main (int argc, char* argv[])
        }
        
        switch (action) {
+       case DO_SINGLE_METHOD_REGRESSION:
+               mono_do_single_method_regression = TRUE;
        case DO_REGRESSION:
                if (mini_regression_list (mini_verbose, argc -i, argv + i)) {
                        g_print ("Regression ERRORS!\n");
index 2f216dda226e0456f03c6df7c38fda188a367ed3..d00b7332e32e14199c9f43b69917f49f7c394042 100644 (file)
@@ -35,7 +35,6 @@ typedef struct {
        char *start_symbol, *end_symbol;
        guint8 *code;
        guint32 code_size;
-       MonoDebugMethodJitInfo *debug_info;
 } MethodLineNumberInfo;
 
 struct _MonoDwarfWriter
@@ -73,7 +72,7 @@ emit_line_number_info (MonoDwarfWriter *w, MonoMethod *method,
  * debug information.
  */
 MonoDwarfWriter*
-mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_start_line, gboolean appending)
+mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_start_line, gboolean appending, gboolean emit_line_numbers)
 {
        MonoDwarfWriter *w = g_new0 (MonoDwarfWriter, 1);
        
@@ -105,6 +104,11 @@ mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_st
                w->collect_line_info = TRUE;
        }
 
+       if (!emit_line_numbers) {
+               w->emit_line = FALSE;
+               w->collect_line_info = FALSE;
+       }
+
        w->fp = img_writer_get_fp (w->w);
        w->temp_prefix = img_writer_get_temp_label_prefix (w->w);
 
@@ -737,14 +741,15 @@ emit_line_number_info_begin (MonoDwarfWriter *w)
        emit_label (w, ".Ldebug_line_end");
 }
 
-static char *
-escape_path (char *name)
+char *
+mono_dwarf_escape_path (const char *name)
 {
        if (strchr (name, '\\')) {
-               char *s = g_malloc (strlen (name) * 2);
+               char *s;
                int len, i, j;
 
                len = strlen (name);
+               s = g_malloc0 ((len + 1) * 2);
                j = 0;
                for (i = 0; i < len; ++i) {
                        if (name [i] == '\\') {
@@ -756,7 +761,7 @@ escape_path (char *name)
                }
                return s;
        }
-       return name;
+       return g_strdup (name);
 }
 
 static void
@@ -847,7 +852,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
        for (i = 0; i < w->line_number_dir_index; ++i) {
                char *dir = g_hash_table_lookup (index_to_dir, GUINT_TO_POINTER (i + 1));
 
-               emit_string (w, escape_path (dir));
+               emit_string (w, mono_dwarf_escape_path (dir));
        }
        /* End of Includes */
        emit_byte (w, 0);
@@ -868,7 +873,7 @@ emit_all_line_number_info (MonoDwarfWriter *w)
                if (basename)
                        emit_string (w, basename);
                else
-                       emit_string (w, escape_path (name));
+                       emit_string (w, mono_dwarf_escape_path (name));
                emit_uleb128 (w, dir_index);
                emit_byte (w, 0);
                emit_byte (w, 0);
@@ -882,8 +887,11 @@ emit_all_line_number_info (MonoDwarfWriter *w)
        /* Emit line number table */
        for (l = info_list; l; l = l->next) {
                MethodLineNumberInfo *info = l->data;
+               MonoDebugMethodJitInfo *dmji;
 
-               emit_line_number_info (w, info->method, info->start_symbol, info->end_symbol, info->code, info->code_size, info->debug_info);
+               dmji = mono_debug_find_method (info->method, mono_domain_get ());;
+               emit_line_number_info (w, info->method, info->start_symbol, info->end_symbol, info->code, info->code_size, dmji);
+               mono_debug_free_method_jit_info (dmji);
        }
        g_slist_free (info_list);
 
@@ -1732,6 +1740,7 @@ emit_line_number_info (MonoDwarfWriter *w, MonoMethod *method,
                        //printf ("FIRST: %d %d %d\n", prev_line, loc->row, il_offset);
                        emit_sleb128 (w, (gint32)loc->row - (gint32)prev_line);
                        prev_line = loc->row;
+                       prev_native_offset = i;
                        first = FALSE;
                }
 
@@ -2076,7 +2085,6 @@ mono_dwarf_writer_emit_method (MonoDwarfWriter *w, MonoCompile *cfg, MonoMethod
                        info->end_symbol = g_strdup (end_symbol);
                        info->code = code;
                        info->code_size = code_size;
-                       info->debug_info = debug_info;
                        w->line_info = g_slist_prepend (w->line_info, info);
                } else {
                        emit_line_number_info (w, method, start_symbol, end_symbol, code, code_size, debug_info);
index a6b30ec25138f0e987c6dbb9c7105318271b4bbf..490f821fb7962a7fab679ea03dea9aeff395ee57 100644 (file)
@@ -20,7 +20,7 @@
 
 typedef struct _MonoDwarfWriter MonoDwarfWriter;
 
-MonoDwarfWriter* mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_start_line, gboolean appending) MONO_INTERNAL;
+MonoDwarfWriter* mono_dwarf_writer_create (MonoImageWriter *writer, FILE *il_file, int il_file_start_line, gboolean appending, gboolean emit_line_numbers) MONO_INTERNAL;
 
 void mono_dwarf_writer_destroy (MonoDwarfWriter *w) MONO_INTERNAL;
 
@@ -35,4 +35,7 @@ void mono_dwarf_writer_emit_trampoline (MonoDwarfWriter *w, const char *tramp_na
 void
 mono_dwarf_writer_emit_method (MonoDwarfWriter *w, MonoCompile *cfg, MonoMethod *method, char *start_symbol, char *end_symbol, guint8 *code, guint32 code_size, MonoInst **args, MonoInst **locals, GSList *unwind_info, MonoDebugMethodJitInfo *debug_info) MONO_INTERNAL;
 
+char *
+mono_dwarf_escape_path (const char *name);
+
 #endif
index e5bee78641eba585aedfb69484cfa5fb62ee664b..1e719fae94562a8f601467f1122efdb3b28c8751 100644 (file)
@@ -9,6 +9,13 @@
  */
 
 #include <config.h>
+
+#if _WIN32_WINNT < 0x0501
+/* Required for Vectored Exception Handling. */
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif /* _WIN32_WINNT < 0x0501 */
+
 #include <glib.h>
 #include <signal.h>
 #include <string.h>
@@ -40,24 +47,37 @@ static MonoW32ExceptionHandler ill_handler;
 static MonoW32ExceptionHandler segv_handler;
 
 LPTOP_LEVEL_EXCEPTION_FILTER mono_old_win_toplevel_exception_filter;
-guint64 mono_win_chained_exception_filter_result;
-gboolean mono_win_chained_exception_filter_didrun;
+guint64 mono_win_vectored_exception_handle;
+extern gboolean mono_win_chained_exception_needs_run;
 
 #define W32_SEH_HANDLE_EX(_ex) \
        if (_ex##_handler) _ex##_handler(0, ep, sctx)
 
+LONG CALLBACK seh_unhandled_exception_filter(EXCEPTION_POINTERS* ep)
+{
+#ifndef MONO_CROSS_COMPILE
+       if (mono_old_win_toplevel_exception_filter) {
+               return (*mono_old_win_toplevel_exception_filter)(ep);
+       }
+#endif
+
+       mono_handle_native_sigsegv (SIGSEGV, NULL);
+
+       return EXCEPTION_CONTINUE_SEARCH;
+}
+
 /*
  * Unhandled Exception Filter
  * Top-level per-process exception handler.
  */
-LONG CALLBACK seh_handler(EXCEPTION_POINTERS* ep)
+LONG CALLBACK seh_vectored_exception_handler(EXCEPTION_POINTERS* ep)
 {
        EXCEPTION_RECORD* er;
        CONTEXT* ctx;
        MonoContext* sctx;
        LONG res;
 
-       mono_win_chained_exception_filter_didrun = FALSE;
+       mono_win_chained_exception_needs_run = FALSE;
        res = EXCEPTION_CONTINUE_EXECUTION;
 
        er = ep->ExceptionRecord;
@@ -98,40 +118,55 @@ LONG CALLBACK seh_handler(EXCEPTION_POINTERS* ep)
                break;
        }
 
-       /* Copy context back */
-       /* Nonvolatile */
-       ctx->Rsp = sctx->rsp; 
-       ctx->Rdi = sctx->rdi; 
-       ctx->Rsi = sctx->rsi; 
-       ctx->Rbx = sctx->rbx; 
-       ctx->Rbp = sctx->rbp;
-       ctx->R12 = sctx->r12; 
-       ctx->R13 = sctx->r13; 
-       ctx->R14 = sctx->r14;
-       ctx->R15 = sctx->r15;
-       ctx->Rip = sctx->rip; 
-
-       /* Volatile But should not matter?*/
-       ctx->Rax = sctx->rax; 
-       ctx->Rcx = sctx->rcx; 
-       ctx->Rdx = sctx->rdx;
-
-       g_free (sctx);
-
-       if (mono_win_chained_exception_filter_didrun)
-               res = mono_win_chained_exception_filter_result;
+       if (mono_win_chained_exception_needs_run) {
+               /* Don't copy context back if we chained exception
+               * as the handler may have modfied the EXCEPTION_POINTERS
+               * directly. We don't pass sigcontext to chained handlers.
+               * Return continue search so the UnhandledExceptionFilter
+               * can correctly chain the exception.
+               */
+               res = EXCEPTION_CONTINUE_SEARCH;
+       } else {
+               /* Copy context back */
+               /* Nonvolatile */
+               ctx->Rsp = sctx->rsp;
+               ctx->Rdi = sctx->rdi;
+               ctx->Rsi = sctx->rsi;
+               ctx->Rbx = sctx->rbx;
+               ctx->Rbp = sctx->rbp;
+               ctx->R12 = sctx->r12;
+               ctx->R13 = sctx->r13;
+               ctx->R14 = sctx->r14;
+               ctx->R15 = sctx->r15;
+               ctx->Rip = sctx->rip;
+
+               /* Volatile But should not matter?*/
+               ctx->Rax = sctx->rax;
+               ctx->Rcx = sctx->rcx;
+               ctx->Rdx = sctx->rdx;
+       }
+
+       /* TODO: Find right place to free this in stack overflow case */
+       if (er->ExceptionCode != EXCEPTION_STACK_OVERFLOW)
+               g_free (sctx);
 
        return res;
 }
 
 void win32_seh_init()
 {
-       mono_old_win_toplevel_exception_filter = SetUnhandledExceptionFilter(seh_handler);
+       mono_old_win_toplevel_exception_filter = SetUnhandledExceptionFilter(seh_unhandled_exception_filter);
+       mono_win_vectored_exception_handle = AddVectoredExceptionHandler (1, seh_vectored_exception_handler);
 }
 
 void win32_seh_cleanup()
 {
        if (mono_old_win_toplevel_exception_filter) SetUnhandledExceptionFilter(mono_old_win_toplevel_exception_filter);
+
+       guint32 ret = 0;
+
+       ret = RemoveVectoredExceptionHandler (mono_win_vectored_exception_handle);
+       g_assert (ret);
 }
 
 void win32_seh_set_handler(int type, MonoW32ExceptionHandler handler)
@@ -190,16 +225,17 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
        amd64_mov_reg_membase (code, AMD64_R15, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, r15), 8);
 #endif
 
-       if (mono_running_on_valgrind ()) {
-               /* Prevent 'Address 0x... is just below the stack ptr.' errors */
-               amd64_mov_reg_membase (code, AMD64_R8, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, rsp), 8);
-               amd64_mov_reg_membase (code, AMD64_R11, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, rip), 8);
-               amd64_mov_reg_reg (code, AMD64_RSP, AMD64_R8, 8);
-       } else {
-               amd64_mov_reg_membase (code, AMD64_RSP, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, rsp), 8);
-               /* get return address */
-               amd64_mov_reg_membase (code, AMD64_R11, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, rip), 8);
-       }
+       /*
+        * The context resides on the stack, in the stack frame of the
+        * caller of this function.  The stack pointer that we need to
+        * restore is potentially many stack frames higher up, so the
+        * distance between them can easily be more than the red zone
+        * size.  Hence the stack pointer can be restored only after
+        * we have finished loading everything from the context.
+        */
+       amd64_mov_reg_membase (code, AMD64_R8, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, rsp), 8);
+       amd64_mov_reg_membase (code, AMD64_R11, AMD64_R11,  G_STRUCT_OFFSET (MonoContext, rip), 8);
+       amd64_mov_reg_reg (code, AMD64_RSP, AMD64_R8, 8);
 
        /* jump to the saved IP */
        amd64_jump_reg (code, AMD64_R11);
@@ -209,7 +245,7 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
        mono_arch_flush_icache (start, code - start);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("restore_context"), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create ("restore_context", start, code - start, ji, unwind_ops);
 
        return start;
 }
@@ -296,7 +332,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
        mono_arch_flush_icache (start, code - start);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("call_filter"), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create ("call_filter", start, code - start, ji, unwind_ops);
 
        return start;
 }
@@ -311,12 +347,8 @@ mono_amd64_throw_exception (guint64 dummy1, guint64 dummy2, guint64 dummy3, guin
                                                        mgreg_t *regs, mgreg_t rip,
                                                        MonoObject *exc, gboolean rethrow)
 {
-       static void (*restore_context) (MonoContext *);
        MonoContext ctx;
 
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
-
        ctx.rsp = regs [AMD64_RSP];
        ctx.rip = rip;
        ctx.rbx = regs [AMD64_RBX];
@@ -347,7 +379,7 @@ mono_amd64_throw_exception (guint64 dummy1, guint64 dummy2, guint64 dummy3, guin
                        ctx_cp.rip = rip - 5;
 
                        if (mono_debugger_handle_exception (&ctx_cp, exc)) {
-                               restore_context (&ctx_cp);
+                               mono_restore_context (&ctx_cp);
                                g_assert_not_reached ();
                        }
                }
@@ -357,8 +389,7 @@ mono_amd64_throw_exception (guint64 dummy1, guint64 dummy2, guint64 dummy3, guin
        ctx.rip -= 1;
 
        mono_handle_exception (&ctx, exc);
-       restore_context (&ctx);
-
+       mono_restore_context (&ctx);
        g_assert_not_reached ();
 }
 
@@ -508,7 +539,7 @@ get_throw_trampoline (MonoTrampInfo **info, gboolean rethrow, gboolean corlib, g
        nacl_global_codeman_validate(&start, kMaxCodeSize, &code);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup (tramp_name), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create (tramp_name, start, code - start, ji, unwind_ops);
 
        return start;
 }
@@ -721,10 +752,6 @@ handle_signal_exception (gpointer obj)
 {
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
        MonoContext ctx;
-       static void (*restore_context) (MonoContext *);
-
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
 
        memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext));
 
@@ -733,7 +760,7 @@ handle_signal_exception (gpointer obj)
 
        mono_handle_exception (&ctx, obj);
 
-       restore_context (&ctx);
+       mono_restore_context (&ctx);
 }
 
 void
@@ -748,6 +775,10 @@ mono_arch_setup_async_callback (MonoContext *ctx, void (*async_cb)(void *fun), g
        /* The stack should be unaligned */
        if ((sp % 16) == 0)
                sp -= 8;
+#ifdef __linux__
+       /* Preserve the call chain to prevent crashes in the libgcc unwinder (#15969) */
+       *(guint64*)sp = ctx->rip;
+#endif
        ctx->rsp = sp;
        ctx->rip = (guint64)async_cb;
 }
@@ -849,22 +880,20 @@ prepare_for_guard_pages (MonoContext *mctx)
 static void
 altstack_handle_and_restore (void *sigctx, gpointer obj, gboolean stack_ovf)
 {
-       void (*restore_context) (MonoContext *);
        MonoContext mctx;
 
-       restore_context = mono_get_restore_context ();
        mono_arch_sigctx_to_monoctx (sigctx, &mctx);
 
        if (mono_debugger_handle_exception (&mctx, (MonoObject *)obj)) {
                if (stack_ovf)
                        prepare_for_guard_pages (&mctx);
-               restore_context (&mctx);
+               mono_restore_context (&mctx);
        }
 
        mono_handle_exception (&mctx, obj);
        if (stack_ovf)
                prepare_for_guard_pages (&mctx);
-       restore_context (&mctx);
+       mono_restore_context (&mctx);
 }
 
 void
@@ -1042,7 +1071,7 @@ mono_arch_get_throw_pending_exception (MonoTrampInfo **info, gboolean aot)
        nacl_global_codeman_validate(&start, kMaxCodeSize, &code);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("throw_pending_exception"), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create ("throw_pending_exception", start, code - start, ji, unwind_ops);
 
        return start;
 }
@@ -1125,8 +1154,7 @@ mono_arch_exceptions_init (void)
                        MonoTrampInfo *info = l->data;
 
                        mono_register_jit_icall (info->code, g_strdup (info->name), NULL, TRUE);
-                       mono_save_trampoline_xdebug_info (info);
-                       mono_tramp_info_free (info);
+                       mono_tramp_info_register (info);
                }
                g_slist_free (tramps);
        }
index 575654b67e3ca63724d4f5f70b7201fd356a9277..a76f28207464fdf2a8772202bcd0402a7a6a6b02 100644 (file)
@@ -81,7 +81,7 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
        mono_arch_flush_icache (start, code - start);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("restore_context"), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create ("restore_context", start, code - start, ji, unwind_ops);
 
        return start;
 }
@@ -127,7 +127,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
        mono_arch_flush_icache (start, code - start);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("call_filter"), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create ("call_filter", start, code - start, ji, unwind_ops);
 
        return start;
 }
@@ -135,13 +135,9 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 void
 mono_arm_throw_exception (MonoObject *exc, mgreg_t pc, mgreg_t sp, mgreg_t *int_regs, gdouble *fp_regs)
 {
-       static void (*restore_context) (MonoContext *);
        MonoContext ctx;
        gboolean rethrow = pc & 1;
 
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
-
        pc &= ~1; /* clear the optional rethrow bit */
        /* adjust eip so that it point into the call instruction */
        pc -= 4;
@@ -159,7 +155,7 @@ mono_arm_throw_exception (MonoObject *exc, mgreg_t pc, mgreg_t sp, mgreg_t *int_
                        mono_ex->stack_trace = NULL;
        }
        mono_handle_exception (&ctx, exc);
-       restore_context (&ctx);
+       mono_restore_context (&ctx);
        g_assert_not_reached ();
 }
 
@@ -279,7 +275,7 @@ get_throw_trampoline (int size, gboolean corlib, gboolean rethrow, gboolean llvm
        mono_arch_flush_icache (start, code - start);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf (tramp_name), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create (tramp_name, start, code - start, ji, unwind_ops);
 
        return start;
 }
@@ -371,8 +367,7 @@ mono_arch_exceptions_init (void)
                        MonoTrampInfo *info = l->data;
 
                        mono_register_jit_icall (info->code, g_strdup (info->name), NULL, TRUE);
-                       mono_save_trampoline_xdebug_info (info);
-                       mono_tramp_info_free (info);
+                       mono_tramp_info_register (info);
                }
                g_slist_free (tramps);
        }
@@ -517,16 +512,12 @@ handle_signal_exception (gpointer obj)
 {
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
        MonoContext ctx;
-       static void (*restore_context) (MonoContext *);
-
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
 
        memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext));
 
        mono_handle_exception (&ctx, obj);
 
-       restore_context (&ctx);
+       mono_restore_context (&ctx);
 }
 
 /*
index 85c7792be30fae4b8258fc864f744cab998efead..b8212c684bd3d47b5c3d5b32ca361319def675ad 100644 (file)
@@ -266,7 +266,7 @@ throw_exception (MonoObject *exc, guint64 rethrow)
 
                ji = mini_jit_info_table_find (mono_domain_get (), (gpointer)ip, NULL);
 
-               //printf ("UN: %s %lx %lx\n", ji ? ji->method->name : "", ip, sp);
+               //printf ("UN: %s %lx %lx\n", ji ? jinfo_get_method (ji)->name : "", ip, sp);
 
                if (ji)
                        break;
index ea38a836aab28b452bba4658198d47d4be1369ef..ea58f176176baf50b9be20ef4ddaca1837c268d7 100644 (file)
@@ -174,7 +174,6 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 static void
 throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gboolean rethrow)
 {
-       static void (*restore_context) (MonoContext *);
        MonoContext ctx;
 
 #ifdef DEBUG_EXCEPTIONS
@@ -182,9 +181,6 @@ throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gboolean
                 exc, (void *)eip, (void *) esp, rethrow);
 #endif
 
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
-
        /* adjust eip so that it point into the call instruction */
        eip -= 8;
 
@@ -207,7 +203,7 @@ throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gboolean
                 (void *) ctx.sc_pc, (void *) ctx.sc_regs[mips_sp],
                 (void *) ctx.sc_regs[mips_fp], &ctx);
 #endif
-       restore_context (&ctx);
+       mono_restore_context (&ctx);
 
        g_assert_not_reached ();
 }
@@ -518,16 +514,12 @@ handle_signal_exception (gpointer obj)
 {
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
        MonoContext ctx;
-       static void (*restore_context) (MonoContext *);
-
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
 
        memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext));
 
        mono_handle_exception (&ctx, obj);
 
-       restore_context (&ctx);
+       mono_restore_context (&ctx);
 }
 
 /*
index 7f786d99a3906ba0ad943c0c801d5145e362294a..80bbb3f9190d461b8503ca31569dd93d2ed5c9a6 100644 (file)
@@ -220,7 +220,7 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
        mono_arch_flush_icache (start, code - start);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("restore_context"), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create ("restore_context", start, code - start, ji, unwind_ops);
 
        return start;
 }
@@ -308,7 +308,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
        mono_arch_flush_icache (start, code - start);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("call_filter"), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create ("call_filter", start, code - start, ji, unwind_ops);
 
        return start;
 }
@@ -316,12 +316,8 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
 void
 mono_ppc_throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, mgreg_t *int_regs, gdouble *fp_regs, gboolean rethrow)
 {
-       static void (*restore_context) (MonoContext *);
        MonoContext ctx;
 
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
-
        /* adjust eip so that it point into the call instruction */
        eip -= 4;
 
@@ -339,7 +335,7 @@ mono_ppc_throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp,
                        mono_ex->stack_trace = NULL;
        }
        mono_handle_exception (&ctx, exc);
-       restore_context (&ctx);
+       mono_restore_context (&ctx);
 
        g_assert_not_reached ();
 }
@@ -440,7 +436,7 @@ mono_arch_get_throw_exception_generic (int size, MonoTrampInfo **info, int corli
        mono_arch_flush_icache (start, code - start);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf (corlib ? "throw_corlib_exception" : (rethrow ? "rethrow_exception" : "throw_exception")), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create (corlib ? "throw_corlib_exception" : (rethrow ? "rethrow_exception" : "throw_exception"), start, code - start, ji, unwind_ops);
 
        return start;
 }
@@ -540,7 +536,7 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
                sframe = (MonoPPCStackFrame*)MONO_CONTEXT_GET_SP (ctx);
                MONO_CONTEXT_SET_BP (new_ctx, sframe->sp);
-               if (ji->method->save_lmf) {
+               if (jinfo_get_method (ji)->save_lmf) {
                        /* sframe->sp points just past the end of the LMF */
                        guint8 *lmf_addr = (guint8*)sframe->sp - sizeof (MonoLMF);
                        memcpy (&new_ctx->fregs, lmf_addr + G_STRUCT_OFFSET (MonoLMF, fregs), sizeof (double) * MONO_SAVED_FREGS);
@@ -669,13 +665,11 @@ mono_ppc_set_func_into_sigctx (void *sigctx, void *func)
 static void
 altstack_handle_and_restore (void *sigctx, gpointer obj)
 {
-       void (*restore_context) (MonoContext *);
        MonoContext mctx;
 
-       restore_context = mono_get_restore_context ();
        mono_arch_sigctx_to_monoctx (sigctx, &mctx);
        mono_handle_exception (&mctx, obj);
-       restore_context (&mctx);
+       mono_restore_context (&mctx);
 }
 
 void
@@ -695,8 +689,8 @@ mono_arch_handle_altstack_exception (void *sigctx, gpointer fault_addr, gboolean
                const char *method;
                /* we don't do much now, but we can warn the user with a useful message */
                fprintf (stderr, "Stack overflow: IP: %p, SP: %p\n", mono_arch_ip_from_context (sigctx), (gpointer)UCONTEXT_REG_Rn(uc, 1));
-               if (ji && ji->method)
-                       method = mono_method_full_name (ji->method, TRUE);
+               if (ji && jinfo_get_method (ji))
+                       method = mono_method_full_name (jinfo_get_method (ji), TRUE);
                else
                        method = "Unmanaged";
                fprintf (stderr, "At %s\n", method);
@@ -754,16 +748,12 @@ handle_signal_exception (gpointer obj)
 {
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
        MonoContext ctx;
-       static void (*restore_context) (MonoContext *);
-
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
 
        memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext));
 
        mono_handle_exception (&ctx, obj);
 
-       restore_context (&ctx);
+       mono_restore_context (&ctx);
 }
 
 static void
index c46265b7fe45818adcf2a739abf8958b35d5ea70..17bb8b044d0ea92945ed50c96f4d9c0cf3dfeedc 100644 (file)
@@ -213,7 +213,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
        g_assert ((code - start) < SZ_THROW); 
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf("call_filter"),
+               *info = mono_tramp_info_create ("call_filter",
                                                start, code - start, ji,
                                                unwind_ops);
 
@@ -237,11 +237,7 @@ throw_exception (MonoObject *exc, unsigned long ip, unsigned long sp,
 {
        MonoContext ctx;
        int iReg;
-       static void (*restore_context) (MonoContext *);
 
-       if (!restore_context)
-               restore_context = mono_get_restore_context();
-       
        memset(&ctx, 0, sizeof(ctx));
 
        setup_context(&ctx);
@@ -267,7 +263,7 @@ throw_exception (MonoObject *exc, unsigned long ip, unsigned long sp,
        }
 //     mono_arch_handle_exception (&ctx, exc, FALSE);
        mono_handle_exception (&ctx, exc);
-       restore_context(&ctx);
+       mono_restore_context(&ctx);
 
        g_assert_not_reached ();
 }
@@ -364,9 +360,9 @@ mono_arch_get_throw_exception_generic (int size, MonoTrampInfo **info,
        g_assert ((code - start) < size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf(corlib ? "throw_corlib_exception" 
+               *info = mono_tramp_info_create (corlib ? "throw_corlib_exception" 
                                                                       : (rethrow ? "rethrow_exception" 
-                                                                      : "throw_exception"))
+                                                                      : "throw_exception"), 
                                                start, code - start, ji, unwind_ops);
 
        return start;
index a8c8c0f2bd4c94c129c7645923f4a0668af3a874..2d8742d5d4c0109aa5c80f7dff35bd7e694731ea 100644 (file)
@@ -8,6 +8,13 @@
  */
 
 #include <config.h>
+
+#if _WIN32_WINNT < 0x0501
+/* Required for Vectored Exception Handling. */
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x0501
+#endif /* _WIN32_WINNT < 0x0501 */
+
 #include <glib.h>
 #include <signal.h>
 #include <string.h>
@@ -40,8 +47,9 @@ static MonoW32ExceptionHandler ill_handler;
 static MonoW32ExceptionHandler segv_handler;
 
 LPTOP_LEVEL_EXCEPTION_FILTER mono_old_win_toplevel_exception_filter;
-guint64 mono_win_chained_exception_filter_result;
-gboolean mono_win_chained_exception_filter_didrun;
+gpointer mono_win_vectored_exception_handle;
+extern gboolean mono_win_chained_exception_needs_run;
+extern int (*gUnhandledExceptionHandler)(EXCEPTION_POINTERS*);
 
 #ifndef PROCESS_CALLBACK_FILTER_ENABLED
 #      define PROCESS_CALLBACK_FILTER_ENABLED 1
@@ -50,6 +58,19 @@ gboolean mono_win_chained_exception_filter_didrun;
 #define W32_SEH_HANDLE_EX(_ex) \
        if (_ex##_handler) _ex##_handler(0, ep, sctx)
 
+LONG CALLBACK seh_unhandled_exception_filter(EXCEPTION_POINTERS* ep)
+{
+#ifndef MONO_CROSS_COMPILE
+       if (mono_old_win_toplevel_exception_filter) {
+               return (*mono_old_win_toplevel_exception_filter)(ep);
+       }
+#endif
+
+       mono_handle_native_sigsegv (SIGSEGV, NULL);
+
+       return EXCEPTION_CONTINUE_SEARCH;
+}
+
 /*
  * mono_win32_get_handle_stackoverflow (void):
  *
@@ -170,14 +191,14 @@ win32_handle_stack_overflow (EXCEPTION_POINTERS* ep, struct sigcontext *sctx)
  * Unhandled Exception Filter
  * Top-level per-process exception handler.
  */
-LONG CALLBACK seh_handler(EXCEPTION_POINTERS* ep)
+LONG CALLBACK seh_vectored_exception_handler(EXCEPTION_POINTERS* ep)
 {
        EXCEPTION_RECORD* er;
        CONTEXT* ctx;
        struct sigcontext* sctx;
        LONG res;
 
-       mono_win_chained_exception_filter_didrun = FALSE;
+       mono_win_chained_exception_needs_run = FALSE;
        res = EXCEPTION_CONTINUE_EXECUTION;
 
        er = ep->ExceptionRecord;
@@ -217,21 +238,30 @@ LONG CALLBACK seh_handler(EXCEPTION_POINTERS* ep)
                break;
        }
 
-       /* Copy context back */
-       ctx->Eax = sctx->eax;
-       ctx->Ebx = sctx->ebx;
-       ctx->Ecx = sctx->ecx;
-       ctx->Edx = sctx->edx;
-       ctx->Ebp = sctx->ebp;
-       ctx->Esp = sctx->esp;
-       ctx->Esi = sctx->esi;
-       ctx->Edi = sctx->edi;
-       ctx->Eip = sctx->eip;
-
-       g_free (sctx);
+       if (mono_win_chained_exception_needs_run) {
+               /* Don't copy context back if we chained exception
+               * as the handler may have modfied the EXCEPTION_POINTERS
+               * directly. We don't pass sigcontext to chained handlers.
+               * Return continue search so the UnhandledExceptionFilter
+               * can correctly chain the exception.
+               */
+               res = EXCEPTION_CONTINUE_SEARCH;
+       } else {
+               /* Copy context back */
+               ctx->Eax = sctx->eax;
+               ctx->Ebx = sctx->ebx;
+               ctx->Ecx = sctx->ecx;
+               ctx->Edx = sctx->edx;
+               ctx->Ebp = sctx->ebp;
+               ctx->Esp = sctx->esp;
+               ctx->Esi = sctx->esi;
+               ctx->Edi = sctx->edi;
+               ctx->Eip = sctx->eip;
+       }
 
-       if (mono_win_chained_exception_filter_didrun)
-               res = mono_win_chained_exception_filter_result;
+       /* TODO: Find right place to free this in stack overflow case */
+       if (er->ExceptionCode != EXCEPTION_STACK_OVERFLOW)
+               g_free (sctx);
 
        return res;
 }
@@ -242,12 +272,14 @@ void win32_seh_init()
        if (!restore_stack)
                restore_stack = mono_win32_get_handle_stackoverflow ();
 
-       mono_old_win_toplevel_exception_filter = SetUnhandledExceptionFilter(seh_handler);
+       mono_old_win_toplevel_exception_filter = SetUnhandledExceptionFilter(seh_unhandled_exception_filter);
+       mono_win_vectored_exception_handle = AddVectoredExceptionHandler (1, seh_vectored_exception_handler);
 }
 
 void win32_seh_cleanup()
 {
        if (mono_old_win_toplevel_exception_filter) SetUnhandledExceptionFilter(mono_old_win_toplevel_exception_filter);
+       RemoveVectoredExceptionHandler (seh_unhandled_exception_filter);
 }
 
 void win32_seh_set_handler(int type, MonoW32ExceptionHandler handler)
@@ -289,34 +321,60 @@ mono_arch_get_restore_context (MonoTrampInfo **info, gboolean aot)
        /* load ctx */
        x86_mov_reg_membase (code, X86_EAX, X86_ESP, 4, 4);
 
-       /* get return address, stored in ECX */
-       x86_mov_reg_membase (code, X86_ECX, X86_EAX,  G_STRUCT_OFFSET (MonoContext, eip), 4);
        /* restore EBX */
        x86_mov_reg_membase (code, X86_EBX, X86_EAX,  G_STRUCT_OFFSET (MonoContext, ebx), 4);
+
        /* restore EDI */
        x86_mov_reg_membase (code, X86_EDI, X86_EAX,  G_STRUCT_OFFSET (MonoContext, edi), 4);
+
        /* restore ESI */
        x86_mov_reg_membase (code, X86_ESI, X86_EAX,  G_STRUCT_OFFSET (MonoContext, esi), 4);
-       /* restore ESP */
-       x86_mov_reg_membase (code, X86_ESP, X86_EAX,  G_STRUCT_OFFSET (MonoContext, esp), 4);
-       /* save the return addr to the restored stack */
-       x86_push_reg (code, X86_ECX);
-       /* restore EBP */
-       x86_mov_reg_membase (code, X86_EBP, X86_EAX,  G_STRUCT_OFFSET (MonoContext, ebp), 4);
-       /* restore ECX */
-       x86_mov_reg_membase (code, X86_ECX, X86_EAX,  G_STRUCT_OFFSET (MonoContext, ecx), 4);
+
        /* restore EDX */
        x86_mov_reg_membase (code, X86_EDX, X86_EAX,  G_STRUCT_OFFSET (MonoContext, edx), 4);
-       /* restore EAX */
-       x86_mov_reg_membase (code, X86_EAX, X86_EAX,  G_STRUCT_OFFSET (MonoContext, eax), 4);
 
+       /*
+        * The context resides on the stack, in the stack frame of the
+        * caller of this function.  The stack pointer that we need to
+        * restore is potentially many stack frames higher up, so the
+        * distance between them can easily be more than the red zone
+        * size.  Hence the stack pointer can be restored only after
+        * we have finished loading everything from the context.
+        */
+
+       /* load ESP into EBP */
+       x86_mov_reg_membase (code, X86_EBP, X86_EAX,  G_STRUCT_OFFSET (MonoContext, esp), 4);
+       /* load return address into ECX */
+       x86_mov_reg_membase (code, X86_ECX, X86_EAX,  G_STRUCT_OFFSET (MonoContext, eip), 4);
+       /* save the return addr to the restored stack - 4 */
+       x86_mov_membase_reg (code, X86_EBP, -4, X86_ECX, 4);
+
+       /* load EBP into ECX */
+       x86_mov_reg_membase (code, X86_ECX, X86_EAX,  G_STRUCT_OFFSET (MonoContext, ebp), 4);
+       /* save EBP to the restored stack - 8 */
+       x86_mov_membase_reg (code, X86_EBP, -8, X86_ECX, 4);
+
+       /* load EAX into ECX */
+       x86_mov_reg_membase (code, X86_ECX, X86_EAX,  G_STRUCT_OFFSET (MonoContext, eax), 4);
+       /* save EAX to the restored stack - 12 */
+       x86_mov_membase_reg (code, X86_EBP, -12, X86_ECX, 4);
+
+       /* restore ECX */
+       x86_mov_reg_membase (code, X86_ECX, X86_EAX,  G_STRUCT_OFFSET (MonoContext, ecx), 4);
+
+       /* restore ESP - 12 */
+       x86_lea_membase (code, X86_ESP, X86_EBP, -12);
+       /* restore EAX */
+       x86_pop_reg (code, X86_EAX);
+       /* restore EBP */
+       x86_pop_reg (code, X86_EBP);
        /* jump to the saved IP */
        x86_ret (code);
 
        nacl_global_codeman_validate(&start, 128, &code);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("restore_context"), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create ("restore_context", start, code - start, ji, unwind_ops);
        else {
                GSList *l;
 
@@ -393,7 +451,7 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot)
        nacl_global_codeman_validate(&start, kMaxCodeSize, &code);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("call_filter"), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create ("call_filter", start, code - start, ji, unwind_ops);
        else {
                GSList *l;
 
@@ -415,12 +473,8 @@ void
 mono_x86_throw_exception (mgreg_t *regs, MonoObject *exc, 
                                                  mgreg_t eip, gboolean rethrow)
 {
-       static void (*restore_context) (MonoContext *);
        MonoContext ctx;
 
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
-
        ctx.esp = regs [X86_ESP];
        ctx.eip = eip;
        ctx.ebp = regs [X86_EBP];
@@ -453,7 +507,7 @@ mono_x86_throw_exception (mgreg_t *regs, MonoObject *exc,
                        ctx_cp.eip = eip - 5;
 
                        if (mono_debugger_handle_exception (&ctx_cp, exc)) {
-                               restore_context (&ctx_cp);
+                               mono_restore_context (&ctx_cp);
                                g_assert_not_reached ();
                        }
                }
@@ -464,7 +518,7 @@ mono_x86_throw_exception (mgreg_t *regs, MonoObject *exc,
 
        mono_handle_exception (&ctx, exc);
 
-       restore_context (&ctx);
+       mono_restore_context (&ctx);
 
        g_assert_not_reached ();
 }
@@ -636,7 +690,7 @@ get_throw_trampoline (const char *name, gboolean rethrow, gboolean llvm, gboolea
        g_assert ((code - start) < kMaxCodeSize);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup (name), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create (name, start, code - start, ji, unwind_ops);
        else {
                GSList *l;
 
@@ -801,9 +855,19 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls,
                /* Adjust IP */
                new_ctx->eip --;
 
-               if (*lmf && (MONO_CONTEXT_GET_BP (ctx) >= (gpointer)(*lmf)->ebp)) {
-                       /* remove any unused lmf */
-                       *lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~3);
+               if (*lmf && ((*lmf) != jit_tls->first_lmf)) {
+                       gboolean is_tramp = ((guint32)((*lmf)->previous_lmf) & 1);
+                       gpointer lmf_esp;
+
+                       if (is_tramp)
+                               /* lmf->esp is only set in trampoline frames */
+                               lmf_esp = (gpointer)(*lmf)->esp;
+                       else
+                               /* In non-trampoline frames, ebp is the frame pointer */
+                               lmf_esp = (gpointer)(*lmf)->ebp;
+                       if (MONO_CONTEXT_GET_SP (ctx) >= lmf_esp)
+                               /* remove any unused lmf */
+                               *lmf = (gpointer)(((gsize)(*lmf)->previous_lmf) & ~3);
                }
 
                /* Pop arguments off the stack */
@@ -931,10 +995,6 @@ handle_signal_exception (gpointer obj)
 {
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
        MonoContext ctx;
-       static void (*restore_context) (MonoContext *);
-
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
 
        memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext));
 
@@ -943,7 +1003,7 @@ handle_signal_exception (gpointer obj)
 
        mono_handle_exception (&ctx, obj);
 
-       restore_context (&ctx);
+       mono_restore_context (&ctx);
 }
 
 /*
@@ -981,7 +1041,7 @@ mono_x86_get_signal_exception_trampoline (MonoTrampInfo **info, gboolean aot)
        g_assert ((code - start) < 128);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup ("x86_signal_exception_trampoline"), start, code - start, ji, unwind_ops);
+               *info = mono_tramp_info_create ("x86_signal_exception_trampoline", start, code - start, ji, unwind_ops);
        else {
                GSList *l;
 
@@ -1091,22 +1151,20 @@ prepare_for_guard_pages (MonoContext *mctx)
 static void
 altstack_handle_and_restore (MonoContext *ctx, gpointer obj, gboolean stack_ovf)
 {
-       void (*restore_context) (MonoContext *);
        MonoContext mctx;
 
-       restore_context = mono_get_restore_context ();
        mctx = *ctx;
 
        if (mono_debugger_handle_exception (&mctx, (MonoObject *)obj)) {
                if (stack_ovf)
                        prepare_for_guard_pages (&mctx);
-               restore_context (&mctx);
+               mono_restore_context (&mctx);
        }
 
        mono_handle_exception (&mctx, obj);
        if (stack_ovf)
                prepare_for_guard_pages (&mctx);
-       restore_context (&mctx);
+       mono_restore_context (&mctx);
 }
 
 void
index fb106aa887259fdf924c053645f0e7e6bdf66388..fcf05c0653eae370bd8b6de8e1774c6eea9aad7e 100644 (file)
@@ -5,8 +5,12 @@ using System.Runtime.CompilerServices;
 using System.Threading;
 using System.Threading.Tasks;
 
-class Tests {
-
+#if MOBILE
+class GenericsTests
+#else
+class Tests
+#endif
+{
        struct TestStruct {
                public int i;
                public int j;
@@ -17,6 +21,7 @@ class Tests {
                }
        }
 
+#if !MOBILE
        class Enumerator <T> : MyIEnumerator <T> {
                T MyIEnumerator<T>.Current {
                        get {
@@ -34,11 +39,14 @@ class Tests {
                        return true;
                }
        }
+#endif
 
+#if !MOBILE
        static int Main (string[] args)
        {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
 
        public static int test_1_nullable_unbox ()
        {
@@ -183,7 +191,11 @@ class Tests {
        public static int test_0_constrained_vtype_box () {
                GenericClass<TestStruct> t = new GenericClass<TestStruct> ();
 
+#if MOBILE
+               return t.toString (new TestStruct ()) == "GenericsTests+TestStruct" ? 0 : 1;
+#else
                return t.toString (new TestStruct ()) == "Tests+TestStruct" ? 0 : 1;
+#endif
        }
 
        public static int test_0_constrained_vtype () {
@@ -310,6 +322,16 @@ class Tests {
                public GenericClass<int> class_field;
        }
 
+       public class MRO<T> : MarshalByRefObject {
+               public T gen_field;
+
+               public T stfld_ldfld (T t) {
+                       var m = this;
+                       m.gen_field = t;
+                       return m.gen_field;
+               }
+       }
+
        public static int test_0_ldfld_stfld_mro () {
                MRO m = new MRO ();
                GenericStruct<int> s = new GenericStruct<int> (5);
@@ -332,6 +354,11 @@ class Tests {
                if (m.class_field.t != 5)
                        return 4;
 
+               // gshared
+               var m2 = new MRO<string> ();
+               if (m2.stfld_ldfld ("A") != "A")
+                       return 5;
+
                return 0;
        }
 
@@ -374,6 +401,7 @@ class Tests {
                return 0;
        }
 
+#if !MOBILE
        public static int test_0_variance_reflection () {
                // covariance on IEnumerator
                if (!typeof (MyIEnumerator<object>).IsAssignableFrom (typeof (MyIEnumerator<string>)))
@@ -396,9 +424,10 @@ class Tests {
                        return 6;
                return 0;
        }
+#endif
 
        public static int test_0_ldvirtftn_generic_method () {
-               new Tests ().ldvirtftn<string> ();              
+               new GenericsTests ().ldvirtftn<string> ();
 
                return the_type == typeof (string) ? 0 : 1;
        }
@@ -529,8 +558,8 @@ class Tests {
 
        /* Test that treating arrays as generic collections works with full-aot */
        public static int test_0_fullaot_array_wrappers () {
-               Tests[] arr = new Tests [10];
-               enumerate<Tests> (arr);
+               GenericsTests[] arr = new GenericsTests [10];
+               enumerate<GenericsTests> (arr);
                return 0;
        }
 
@@ -663,9 +692,9 @@ class Tests {
        }
 
        public static int test_0_full_aot_nullable_unbox_from_gshared_code () {
-               if (!new Tests ().IsNull2<FooStruct> (null))
+               if (!new GenericsTests ().IsNull2<FooStruct> (null))
                        return 1;
-               if (new Tests ().IsNull2<FooStruct> (new FooStruct ()))
+               if (new GenericsTests ().IsNull2<FooStruct> (new FooStruct ()))
                        return 2;
                return 0;
        }
@@ -673,11 +702,11 @@ class Tests {
        public static int test_0_partial_sharing () {
                if (PartialShared1 (new List<string> (), 1) != typeof (string))
                        return 1;
-               if (PartialShared1 (new List<Tests> (), 1) != typeof (Tests))
+               if (PartialShared1 (new List<GenericsTests> (), 1) != typeof (GenericsTests))
                        return 2;
                if (PartialShared2 (new List<string> (), 1) != typeof (int))
                        return 3;
-               if (PartialShared2 (new List<Tests> (), 1) != typeof (int))
+               if (PartialShared2 (new List<GenericsTests> (), 1) != typeof (int))
                        return 4;
                return 0;
        }
@@ -877,6 +906,20 @@ class Tests {
                return result;
        }
 
+       class SyncClass<T> {
+               [MethodImpl(MethodImplOptions.Synchronized)]
+               public Type getInstance() {
+                       return typeof (T);
+               }
+       }
+
+       static int test_0_synchronized_gshared () {
+               var c = new SyncClass<string> ();
+               if (c.getInstance () != typeof (string))
+                       return 1;
+               return 0;
+       }
+
        class Response {
        }
 
@@ -1037,3 +1080,9 @@ class Tests {
        }
 #endif
 }
+
+#if !MOBILE
+class GenericsTests : Tests
+{
+}
+#endif
index 09917f93e4b9b8e39a157fc5c540da1bf0ae0d88..d9b0adec2f1341ec9f7a076d8c2231d5bef07b97 100644 (file)
@@ -195,15 +195,15 @@ mono_print_label (FILE *fp, MonoInst *tree) {
                mono_print_label (fp, tree->inst_newa_len);
                break;
        case OP_CALL:
-       case OP_CALLVIRT:
+       case OP_CALL_MEMBASE:
        case OP_FCALL:
-       case OP_FCALLVIRT:
+       case OP_FCALL_MEMBASE:
        case OP_LCALL:
-       case OP_LCALLVIRT:
+       case OP_LCALL_MEMBASE:
        case OP_VCALL:
-       case OP_VCALLVIRT:
+       case OP_VCALL_MEMBASE:
        case OP_VOIDCALL:
-       case OP_VOIDCALLVIRT: {
+       case OP_VOIDCALL_MEMBASE: {
                MonoCallInst *call = (MonoCallInst*)tree;
                if (call->method) {
                        if (mono_method_signature (call->method)->hasthis && tree->inst_left) {
index 5889d6792b8e1266bce15f038f30be3766bd6b1a..913baaf3c7ca84d2070bb19825e83b9c05e695fa 100644 (file)
@@ -1,9 +1,10 @@
 using System;
 using System.Collections.Generic;
 using System.Runtime.CompilerServices;
+using System.Threading.Tasks;
 
 struct Foo {
-       public int i, j;
+       public int i, j, k, l, m, n;
 }
 
 struct GFoo<T> {
@@ -40,11 +41,17 @@ class GFoo3<T> {
 
 // FIXME: Add mixed ref/noref tests, i.e. Dictionary<string, int>
 
+#if MOBILE
+public class GSharedTests
+#else
 public class Tests
+#endif
 {
+#if !MOBILE
        public static int Main (String[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
 
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        static void gshared<T> (T [] array, int i, int j) {
@@ -173,6 +180,9 @@ public class Tests
        }
 
        public static int test_0_vt_unbox_any () {
+               int[] iarr = new int [16];
+               unbox_any<int> (iarr, new object [] { 12 });
+
                Foo[] arr = new Foo [2];
 
                object[] arr2 = new object [16];
@@ -202,6 +212,17 @@ public class Tests
                return 0;
        }
 
+       public static int test_0_unbox_any_enum () {
+               IFaceUnbox iface = new ClassUnbox ();
+               AnEnum res = iface.Unbox<AnEnum, int> (AnEnum.One, 0, 1);
+               if (res != AnEnum.Two)
+                       return 1;
+               res = iface.Unbox<AnEnum, int> (AnEnum.One, 0, AnEnum.Two);
+               if (res != AnEnum.Two)
+                       return 2;
+               return 0;
+       }
+
        [MethodImplAttribute (MethodImplOptions.NoInlining)]
        static void ldfld_nongeneric<T> (GFoo<T>[] foo, int[] arr) {
                arr [0] = foo [0].i;
@@ -405,7 +426,7 @@ public class Tests
                var v2 = return_t<GFoo2<int>> (v);
                if (v2.t != 55 || v2.t2 != 32)
                        return 6;
-               i = new Tests ().return_this_t<int> (42);
+               i = new GSharedTests ().return_this_t<int> (42);
                if (i != 42)
                        return 7;
                return 0;
@@ -650,6 +671,10 @@ public class Tests
                return 0;
        }
 
+       interface IFaceKVP {
+               T do_kvp<T> (T a);
+       }
+
        static KeyValuePair<T1, T2> make_kvp<T1, T2> (T1 t1, T2 t2) {
                return new KeyValuePair<T1, T2> (t1, t2);
        }
@@ -657,16 +682,18 @@ public class Tests
        static T2 use_kvp<T1, T2> (KeyValuePair<T1, T2> kvp) {
                return kvp.Value;
        }
-               
-       [MethodImplAttribute (MethodImplOptions.NoInlining)]
-       static T do_kvp<T> (T a) {
-               var t = make_kvp (a, a);
-               // argument is an instance of a vtype instantiated with gsharedvt type arguments
-               return use_kvp (t);
+
+       class ClassKVP : IFaceKVP {
+               public T do_kvp<T> (T a) {
+                       var t = make_kvp (a, a);
+                       // argument is an instance of a vtype instantiated with gsharedvt type arguments
+                       return use_kvp (t);
+               }
        }
 
        public static int test_0_gsharedvt_ginstvt_constructed_arg () {
-               if (do_kvp<long> (1) != 1)
+               IFaceKVP c = new ClassKVP ();
+               if (c.do_kvp<long> (1) != 1)
                        return 1;
                return 0;
        }
@@ -897,11 +924,18 @@ public class Tests
                return t.ToString ();
        }
 
+       enum AnEnum {
+               One,
+               Two
+       };
+
        public static int test_0_constrained_tostring () {
                if (to_string<int, int> (1, 1) != "1")
                        return 1;
-               if (to_string<string, int> ("A", 1) != "A")
+               if (to_string<AnEnum, int> (AnEnum.One, 1) != "One")
                        return 2;
+               if (to_string<string, int> ("A", 1) != "A")
+                       return 3;
                return 0;
        }
 
@@ -915,8 +949,47 @@ public class Tests
                        return 1;
                if (get_hash<double, int> (1.0, 1) != 1.0.GetHashCode ())
                        return 2;
+               if (get_hash<AnEnum, int> (AnEnum.One, 1) != AnEnum.One.GetHashCode ())
+                       return 3;
                if (get_hash<string, int> ("A", 1) != "A".GetHashCode ())
+                       return 4;
+               return 0;
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       static bool equals<T, T2>(T t, T2 t2) {
+               return t.Equals (t);
+       }
+
+       public static int test_0_constrained_equals () {
+               if (equals<int, int> (1, 1) != true)
+                       return 1;
+               if (equals<double, int> (1.0, 1) != true)
+                       return 2;
+               if (equals<AnEnum, int> (AnEnum.One, 1) != true)
                        return 3;
+               if (equals<string, int> ("A", 1) != true)
+                       return 4;
+               return 0;
+       }
+
+       interface IGetType {
+               Type gettype<T, T2>(T t, T2 t2);
+       }
+
+       public class CGetType : IGetType {
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public Type gettype<T, T2>(T t, T2 t2) {
+                       return t.GetType ();
+               }
+       }
+
+       public static int test_0_constrained_gettype () {
+               IGetType c = new CGetType ();
+               if (c.gettype<int, int> (1, 1) != typeof (int))
+                       return 1;
+               if (c.gettype<string, int> ("A", 1) != typeof (string))
+                       return 2;
                return 0;
        }
 
@@ -1119,4 +1192,248 @@ public class Tests
        TAbstractTableItem<object>.Test ();
           return 0;
        }
+
+       interface IFaceBox {
+               object box<T> (T t);
+       }
+
+       class ClassBox : IFaceBox {
+               public object box<T> (T t) {
+                       object o = t;
+                       return o;
+               }
+       }
+
+       public static int test_0_nullable_box () {
+               IFaceBox c = new ClassBox ();
+               int i = 5;
+               object o = c.box<int?> (i);
+               if ((int)o != i)
+                       return 1;
+               if (c.box<int?> (null) != null)
+                       return 2;
+               long l = Int64.MaxValue - 1;
+               o = c.box<long?> (l);
+               if ((long)o != l)
+                       return 3;
+               if (c.box<long?> (null) != null)
+                       return 4;
+               string s = "A";
+               if (c.box<string> (s) != (object)s)
+                       return 5;
+               return 0;
+       }
+
+       interface IFaceUnbox2 {
+               T unbox<T> (object o);
+       }
+
+       class ClassUnbox2 : IFaceUnbox2 {
+               public T unbox<T> (object o) {
+                       return (T)o;
+               }
+       }
+
+       public static int test_0_nullable_unbox () {    
+               IFaceUnbox2 c = new ClassUnbox2 ();
+               int? i = c.unbox<int?> (5);
+               if (i != 5)
+                       return 1;
+               int? j = c.unbox<int?> (null);
+               if (j != null)
+                       return 2;
+               return 0;
+       }
+
+       interface IConstrained {
+               void foo ();
+               void foo_ref_arg (string s);
+       }
+
+       interface IConstrained<T3> {
+               void foo_gsharedvt_arg (T3 s);
+               T3 foo_gsharedvt_ret (T3 s);
+       }
+
+       static object constrained_res;
+
+       struct ConsStruct : IConstrained {
+               public int i;
+
+               public void foo () {
+                       constrained_res = i;
+               }
+
+               public void foo_ref_arg (string s) {
+                       constrained_res = s == "A" ? 42 : 0;
+               }
+       }
+
+       class ConsClass : IConstrained {
+               public int i;
+
+               public void foo () {
+                       constrained_res = i;
+               }
+
+               public void foo_ref_arg (string s) {
+                       constrained_res = s == "A" ? 43 : 0;
+               }
+       }
+
+       struct ConsStruct<T> : IConstrained<T> {
+               public void foo_gsharedvt_arg (T s) {
+                       constrained_res = s;
+               }
+
+               public T foo_gsharedvt_ret (T s) {
+                       return s;
+               }
+       }
+
+       interface IFaceConstrained {
+               void constrained_void_iface_call<T, T2>(T t, T2 t2) where T2 : IConstrained;
+               void constrained_void_iface_call_ref_arg<T, T2>(T t, T2 t2) where T2 : IConstrained;
+               void constrained_void_iface_call_gsharedvt_arg<T, T2, T3>(T t, T2 t2, T3 t3) where T2 : IConstrained<T>;
+               T constrained_iface_call_gsharedvt_ret<T, T2, T3>(T t, T2 t2, T3 t3) where T2 : IConstrained<T>;
+               T2 constrained_normal_call<T, T2>(T t, T2 t2) where T2 : VClass;
+       }
+
+       class ClassConstrained : IFaceConstrained {
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public void constrained_void_iface_call<T, T2>(T t, T2 t2) where T2 : IConstrained {
+                       t2.foo ();
+               }
+
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public void constrained_void_iface_call_ref_arg<T, T2>(T t, T2 t2) where T2 : IConstrained {
+                       t2.foo_ref_arg ("A");
+               }
+
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public void constrained_void_iface_call_gsharedvt_arg<T, T2, T3>(T t, T2 t2, T3 t3) where T2 : IConstrained<T> {
+                       t2.foo_gsharedvt_arg (t);
+               }
+
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public T constrained_iface_call_gsharedvt_ret<T, T2, T3>(T t, T2 t2, T3 t3) where T2 : IConstrained<T> {
+                       return t2.foo_gsharedvt_ret (t);
+               }
+
+               [MethodImplAttribute (MethodImplOptions.NoInlining)]
+               public T2 constrained_normal_call<T, T2>(T t, T2 t2) where T2 : VClass {
+                       /* This becomes a constrained call even through 't2' is forced to be a reference type by the constraint */
+                       return (T2)t2.foo (5);
+               }
+       }
+
+       class VClass {
+               public virtual VClass foo (int i) {
+                       return this;
+               }
+       }
+
+       public static int test_0_constrained_void_iface_call () {
+               IFaceConstrained c = new ClassConstrained ();
+               var s = new ConsStruct () { i = 42 };
+               constrained_res = null;
+               c.constrained_void_iface_call<int, ConsStruct> (1, s);
+               if (!(constrained_res is int) || ((int)constrained_res) != 42)
+                       return 1;
+               constrained_res = null;
+               c.constrained_void_iface_call_ref_arg<int, ConsStruct> (1, s);
+               if (!(constrained_res is int) || ((int)constrained_res) != 42)
+                       return 2;
+               var s2 = new ConsClass () { i = 43 };
+               constrained_res = null;
+               c.constrained_void_iface_call<int, ConsClass> (1, s2);
+               if (!(constrained_res is int) || ((int)constrained_res) != 43)
+                       return 3;
+               constrained_res = null;
+               c.constrained_void_iface_call_ref_arg<int, ConsClass> (1, s2);
+               if (!(constrained_res is int) || ((int)constrained_res) != 43)
+                       return 4;
+               return 0;
+       }
+
+       public static int test_0_constrained_void_iface_call_gsharedvt_arg () {
+               // This tests constrained calls through interfaces with one gsharedvt arg, like IComparable<T>.CompareTo ()
+               IFaceConstrained c = new ClassConstrained ();
+
+               var s = new ConsStruct<int> ();
+               constrained_res = null;
+               c.constrained_void_iface_call_gsharedvt_arg<int, ConsStruct<int>, int> (42, s, 55);
+               if (!(constrained_res is int) || ((int)constrained_res) != 42)
+                       return 1;
+
+               var s2 = new ConsStruct<string> ();
+               constrained_res = null;
+               c.constrained_void_iface_call_gsharedvt_arg<string, ConsStruct<string>, int> ("A", s2, 55);
+               if (!(constrained_res is string) || ((string)constrained_res) != "A")
+                       return 2;
+
+               return 0;
+       }
+
+       public static int test_0_constrained_iface_call_gsharedvt_ret () {
+               IFaceConstrained c = new ClassConstrained ();
+
+               var s = new ConsStruct<int> ();
+               int ires = c.constrained_iface_call_gsharedvt_ret<int, ConsStruct<int>, int> (42, s, 55);
+               if (ires != 42)
+                       return 1;
+
+               var s2 = new ConsStruct<string> ();
+               string sres = c.constrained_iface_call_gsharedvt_ret<string, ConsStruct<string>, int> ("A", s2, 55);
+               if (sres != "A")
+                       return 2;
+
+               return 0;
+       }
+
+       public static int test_0_constrained_normal_call () {
+               IFaceConstrained c = new ClassConstrained ();
+
+               var o = new VClass ();
+               var res = c.constrained_normal_call<int, VClass> (1, o);
+               return res == o ? 0 : 1;
+       }
+
+       public static async Task<T> FooAsync<T> (int i, int j) {
+               Task<int> t = new Task<int> (delegate () { return 42; });
+               var response = await t;
+               return default(T);
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static void call_async<T> (int i, int j) {
+               Task<T> t = FooAsync<T> (1, 2);
+               t.RunSynchronously ();
+       }
+
+       // In AOT mode, the async infrastructure depends on gsharedvt methods
+       public static int test_0_async_call_from_generic () {
+               call_async<string> (1, 2);
+               return 0;
+       }
+}
+
+// #13191
+public class MobileServiceCollection<TTable, TCol>
+{
+       public async Task<int> LoadMoreItemsAsync(int count = 0) {
+               await Task.Delay (1000);
+               int results = await ProcessQueryAsync ();
+               return results;
+       }
+
+       protected async virtual Task<int> ProcessQueryAsync() {
+               await Task.Delay (1000);
+               throw new Exception ();
+       }
+}
+
+#if !MOBILE
+public class GSharedTests : Tests {
 }
+#endif
index 8ea5c06d27d9cd60facb5d53be76dccae498183f..0809851220f97c8546e771ad822f6388a1557b5c 100644 (file)
@@ -348,7 +348,7 @@ PASS:       ldc.i4.0
         IL_000a:  ret
     }
 
-       // Check that localloc can't be inlined
+       // Check that localloc cannot be inlined
        .method static public int32 test_0_localloc_inline () cil managed {
                .maxstack 16
                .locals init (
index 84a6f7c1292ea4eaaf2176993d40b34dee15bfd0..07ca6378b89b6c15442b2be60c35efcbc39691e4 100644 (file)
@@ -44,13 +44,13 @@ alloc_lreg (MonoCompile *cfg)
 static inline guint32
 alloc_freg (MonoCompile *cfg)
 {
-#ifdef MONO_ARCH_SOFT_FLOAT
-       /* Allocate an lvreg so float ops can be decomposed into long ops */
-       return alloc_lreg (cfg);
-#else
-       /* Allocate these from the same pool as the int regs */
-       return cfg->next_vreg ++;
-#endif
+       if (mono_arch_is_soft_float ()) {
+               /* Allocate an lvreg so float ops can be decomposed into long ops */
+               return alloc_lreg (cfg);
+       } else {
+               /* Allocate these from the same pool as the int regs */
+               return cfg->next_vreg ++;
+       }
 }
 
 static inline guint32
@@ -261,7 +261,16 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 
 #define NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.monotype_class)
 
-#define NEW_LDTOKENCONST(cfg,dest,image,token) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), NULL, STACK_PTR, NULL)
+#define NEW_LDTOKENCONST(cfg,dest,image,token,generic_context) NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), (generic_context), STACK_PTR, NULL)
+
+#define NEW_TLS_OFFSETCONST(cfg,dest,key) do { \
+       if (cfg->compile_aot) { \
+               NEW_AOTCONST ((cfg), (dest), MONO_PATCH_INFO_TLS_OFFSET, GINT_TO_POINTER (key)); \
+       } else {                                                                                                                        \
+               int _offset = mini_get_tls_offset ((key));                                                      \
+               NEW_PCONST ((cfg), (dest), GINT_TO_POINTER (_offset)); \
+               } \
+       } while (0)
 
 #define NEW_DECLSECCONST(cfg,dest,image,entry) do { \
                if (cfg->compile_aot) { \
@@ -305,11 +314,21 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
         if ((dest)->opcode == OP_VMOVE) (dest)->klass = mono_class_from_mono_type ((vartype)); \
        } while (0)
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-#define DECOMPOSE_INTO_REGPAIR(stack_type) ((stack_type) == STACK_I8 || (stack_type) == STACK_R8)
-#else
-#define DECOMPOSE_INTO_REGPAIR(stack_type) ((stack_type) == STACK_I8)
-#endif
+#define DECOMPOSE_INTO_REGPAIR(stack_type) (mono_arch_is_soft_float () ? ((stack_type) == STACK_I8 || (stack_type) == STACK_R8) : ((stack_type) == STACK_I8))
+
+static inline void
+handle_gsharedvt_ldaddr (MonoCompile *cfg)
+{
+       /* The decomposition of ldaddr makes use of these two variables, so add uses for them */
+       MonoInst *use;
+
+       MONO_INST_NEW (cfg, use, OP_DUMMY_USE);
+       use->sreg1 = cfg->gsharedvt_info_var->dreg;
+       MONO_ADD_INS (cfg->cbb, use);
+       MONO_INST_NEW (cfg, use, OP_DUMMY_USE);
+       use->sreg1 = cfg->gsharedvt_locals_var->dreg;
+       MONO_ADD_INS (cfg->cbb, use);
+}
 
 #define NEW_VARLOADA(cfg,dest,var,vartype) do {        \
         MONO_INST_NEW ((cfg), (dest), OP_LDADDR); \
@@ -318,6 +337,8 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
                (dest)->type = STACK_MP;        \
                (dest)->klass = (var)->klass;   \
         (dest)->dreg = alloc_dreg ((cfg), STACK_MP); \
+               (cfg)->has_indirection = TRUE;  \
+                         if (G_UNLIKELY (cfg->gsharedvt) && mini_is_gsharedvt_variable_type ((cfg), (var)->inst_vtype)) { handle_gsharedvt_ldaddr ((cfg)); } \
                if (SIZEOF_REGISTER == 4 && DECOMPOSE_INTO_REGPAIR ((var)->type)) { MonoInst *var1 = get_vreg_to_inst (cfg, (var)->dreg + 1); MonoInst *var2 = get_vreg_to_inst (cfg, (var)->dreg + 2); g_assert (var1); g_assert (var2); var1->flags |= MONO_INST_INDIRECT; var2->flags |= MONO_INST_INDIRECT; } \
        } while (0)
 
@@ -426,7 +447,9 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 
 #define EMIT_NEW_TYPE_FROM_HANDLE_CONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_TYPE_FROM_HANDLE, (image), (token), (generic_context), STACK_OBJ, mono_defaults.monotype_class); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
 
-#define EMIT_NEW_LDTOKENCONST(cfg,dest,image,token) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), NULL, STACK_PTR, NULL); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
+#define EMIT_NEW_LDTOKENCONST(cfg,dest,image,token,generic_context) do { NEW_AOTCONST_TOKEN ((cfg), (dest), MONO_PATCH_INFO_LDTOKEN, (image), (token), (generic_context), STACK_PTR, NULL); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
+
+#define EMIT_NEW_TLS_OFFSETCONST(cfg,dest,key) do { NEW_TLS_OFFSETCONST ((cfg), (dest), (key)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
 
 #define EMIT_NEW_DOMAINCONST(cfg,dest) do { NEW_DOMAINCONST ((cfg), (dest)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
 
@@ -442,7 +465,7 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
 
 #define EMIT_NEW_VARLOADA(cfg,dest,var,vartype) do { NEW_VARLOADA ((cfg), (dest), (var), (vartype)); MONO_ADD_INS ((cfg)->cbb, (dest)); } while (0)
 
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
 
 /*
  * Since the IL stack (and our vregs) contain double values, we have to do a conversion
@@ -450,33 +473,61 @@ alloc_dreg (MonoCompile *cfg, MonoStackType stack_type)
  */
 
 #define EMIT_NEW_VARLOAD_SFLOAT(cfg,dest,var,vartype) do { \
-               if (COMPILE_SOFT_FLOAT ((cfg)) && !(vartype)->byref && (vartype)->type == MONO_TYPE_R4) { \
-             MonoInst *iargs [1]; \
-             EMIT_NEW_VARLOADA (cfg, iargs [0], (var), (vartype)); \
-             (dest) = mono_emit_jit_icall (cfg, mono_fload_r4, iargs); \
-        } else { \
-             EMIT_NEW_VARLOAD ((cfg), (dest), (var), (vartype)); \
-        } \
-    } while (0)
+               if (!COMPILE_LLVM ((cfg)) && !(vartype)->byref && (vartype)->type == MONO_TYPE_R4) { \
+                       MonoInst *iargs [1]; \
+                       EMIT_NEW_VARLOADA (cfg, iargs [0], (var), (vartype)); \
+                       (dest) = mono_emit_jit_icall (cfg, mono_fload_r4, iargs); \
+               } else { \
+                       EMIT_NEW_VARLOAD ((cfg), (dest), (var), (vartype)); \
+               } \
+       } while (0)
 
 #define EMIT_NEW_VARSTORE_SFLOAT(cfg,dest,var,vartype,inst) do {       \
                if (COMPILE_SOFT_FLOAT ((cfg)) && !(vartype)->byref && (vartype)->type == MONO_TYPE_R4) { \
-             MonoInst *iargs [2]; \
-             iargs [0] = (inst); \
-             EMIT_NEW_VARLOADA (cfg, iargs [1], (var), (vartype)); \
-             mono_emit_jit_icall (cfg, mono_fstore_r4, iargs); \
-        } else { \
-             EMIT_NEW_VARSTORE ((cfg), (dest), (var), (vartype), (inst)); \
-        } \
-    } while (0)
+                       MonoInst *iargs [2]; \
+                       iargs [0] = (inst); \
+                       EMIT_NEW_VARLOADA (cfg, iargs [1], (var), (vartype)); \
+                       mono_emit_jit_icall (cfg, mono_fstore_r4, iargs); \
+               } else { \
+                       EMIT_NEW_VARSTORE ((cfg), (dest), (var), (vartype), (inst)); \
+               } \
+       } while (0)
 
-#define EMIT_NEW_ARGLOAD(cfg,dest,num) EMIT_NEW_VARLOAD_SFLOAT ((cfg), (dest), cfg->args [(num)], cfg->arg_types [(num)])
+#define EMIT_NEW_ARGLOAD(cfg,dest,num) do {    \
+               if (mono_arch_is_soft_float ()) {       \
+                       EMIT_NEW_VARLOAD_SFLOAT ((cfg), (dest), cfg->args [(num)], cfg->arg_types [(num)]);     \
+               } else {        \
+                       NEW_ARGLOAD ((cfg), (dest), (num));     \
+                       MONO_ADD_INS ((cfg)->cbb, (dest));      \
+               }       \
+       } while (0)
 
-#define EMIT_NEW_LOCLOAD(cfg,dest,num) EMIT_NEW_VARLOAD_SFLOAT ((cfg), (dest), cfg->locals [(num)], header->locals [(num)])
+#define EMIT_NEW_LOCLOAD(cfg,dest,num) do {    \
+               if (mono_arch_is_soft_float ()) {       \
+                       EMIT_NEW_VARLOAD_SFLOAT ((cfg), (dest), cfg->locals [(num)], header->locals [(num)]);   \
+               } else {        \
+                       NEW_LOCLOAD ((cfg), (dest), (num));     \
+                       MONO_ADD_INS ((cfg)->cbb, (dest));      \
+               }       \
+       } while (0)
 
-#define EMIT_NEW_LOCSTORE(cfg,dest,num,inst) EMIT_NEW_VARSTORE_SFLOAT ((cfg), (dest), (cfg)->locals [(num)], (cfg)->locals [(num)]->inst_vtype, (inst))
+#define EMIT_NEW_LOCSTORE(cfg,dest,num,inst) do {      \
+               if (mono_arch_is_soft_float ()) {       \
+                       EMIT_NEW_VARSTORE_SFLOAT ((cfg), (dest), (cfg)->locals [(num)], (cfg)->locals [(num)]->inst_vtype, (inst));     \
+               } else {        \
+                       NEW_LOCSTORE ((cfg), (dest), (num), (inst));    \
+                       MONO_ADD_INS ((cfg)->cbb, (dest));      \
+               }       \
+       } while (0)
 
-#define EMIT_NEW_ARGSTORE(cfg,dest,num,inst) EMIT_NEW_VARSTORE_SFLOAT ((cfg), (dest), cfg->args [(num)], cfg->arg_types [(num)], (inst))
+#define EMIT_NEW_ARGSTORE(cfg,dest,num,inst) do {      \
+               if (mono_arch_is_soft_float ()) {       \
+                       EMIT_NEW_VARSTORE_SFLOAT ((cfg), (dest), cfg->args [(num)], cfg->arg_types [(num)], (inst));    \
+               } else {        \
+                       NEW_ARGSTORE ((cfg), (dest), (num), (inst));    \
+                       MONO_ADD_INS ((cfg)->cbb, (dest));      \
+               }       \
+       } while (0)
 
 #else
 
@@ -717,8 +768,8 @@ static int ccount = 0;
             ins->inst_false_bb = NULL; \
             mono_link_bblock ((cfg), (cfg)->cbb, (truebb)); \
             MONO_ADD_INS ((cfg)->cbb, ins); \
-            if (getenv ("COUNT2") && ccount == atoi (getenv ("COUNT2")) - 1) { printf ("HIT: %d\n", cfg->cbb->block_num); } \
-            if (getenv ("COUNT2") && ccount < atoi (getenv ("COUNT2"))) { \
+            if (g_getenv ("COUNT2") && ccount == atoi (g_getenv ("COUNT2")) - 1) { printf ("HIT: %d\n", cfg->cbb->block_num); } \
+            if (g_getenv ("COUNT2") && ccount < atoi (g_getenv ("COUNT2"))) { \
                  cfg->cbb->extended = TRUE; \
             } else { NEW_BBLOCK ((cfg), falsebb); ins->inst_false_bb = (falsebb); mono_link_bblock ((cfg), (cfg)->cbb, (falsebb)); MONO_START_BB ((cfg), falsebb); } \
         } \
@@ -784,8 +835,6 @@ static int ccount = 0;
 
 /* Loads/Stores which can fault are handled correctly by the LLVM mono branch */
 #define MONO_EMIT_NEW_IMPLICIT_EXCEPTION_LOAD_STORE(cfg) do { \
-       if (COMPILE_LLVM (cfg) && !IS_LLVM_MONO_BRANCH)                 \
-               MONO_EMIT_NEW_IMPLICIT_EXCEPTION ((cfg));                       \
     } while (0)
 
 /* Emit an explicit null check which doesn't depend on SIGSEGV signal handling */
@@ -847,6 +896,12 @@ static int ccount = 0;
 
 #define MONO_EMIT_NEW_LOAD_MEMBASE_FAULT(cfg,dr,base,offset) MONO_EMIT_NEW_LOAD_MEMBASE_OP_FAULT ((cfg), (OP_LOAD_MEMBASE), (dr), (base), (offset))
 
+#define NEW_LOAD_MEMBASE_INVARIANT(cfg,dest,op,dr,base,offset) NEW_LOAD_MEMBASE_FLAGS ((cfg), (dest), (op), (dr), (base), (offset), MONO_INST_INVARIANT_LOAD)
+
+#define MONO_EMIT_NEW_LOAD_MEMBASE_OP_INVARIANT(cfg,op,dr,base,offset) MONO_EMIT_NEW_LOAD_MEMBASE_OP_FLAGS ((cfg), (op), (dr), (base), (offset), MONO_INST_INVARIANT_LOAD)
+
+#define MONO_EMIT_NEW_LOAD_MEMBASE_INVARIANT(cfg,dr,base,offset) MONO_EMIT_NEW_LOAD_MEMBASE_OP_INVARIANT ((cfg), (OP_LOAD_MEMBASE), (dr), (base), (offset))
+
 /*Object Model related macros*/
 
 /* Default bounds check implementation for most architectures + llvm */
@@ -855,7 +910,7 @@ static int ccount = 0;
                        if (fault) \
                                MONO_EMIT_NEW_LOAD_MEMBASE_OP_FAULT (cfg, OP_LOADI4_MEMBASE, _length_reg, array_reg, offset); \
                        else \
-                               MONO_EMIT_NEW_LOAD_MEMBASE_OP_FLAGS (cfg, OP_LOADI4_MEMBASE, _length_reg, array_reg, offset, MONO_INST_CONSTANT_LOAD); \
+                               MONO_EMIT_NEW_LOAD_MEMBASE_OP_FLAGS (cfg, OP_LOADI4_MEMBASE, _length_reg, array_reg, offset, MONO_INST_INVARIANT_LOAD); \
                        MONO_EMIT_NEW_BIALU (cfg, OP_COMPARE, -1, _length_reg, index_reg); \
                        MONO_EMIT_NEW_COND_EXC (cfg, LE_UN, "IndexOutOfRangeException"); \
        } while (0)
index 0b1f2e2662949ab62a45cb485ffedbbdadff0e1b..45c7689a58ab09bf9e100b53049471ffabae6ab5 100644 (file)
@@ -82,7 +82,7 @@ mono_helper_stelem_ref_check (MonoArray *array, MonoObject *val)
                mono_raise_exception (mono_get_exception_array_type_mismatch ());
 }
 
-#ifndef MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS
+#if !defined(MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS) || defined(MONO_ARCH_EMULATE_LONG_MUL_OVF_OPTS)
 
 gint64 
 mono_llmult (gint64 a, gint64 b)
@@ -429,7 +429,7 @@ mono_imul_ovf_un (guint32 a, guint32 b)
 }
 #endif
 
-#if defined(MONO_ARCH_EMULATE_MUL_DIV) || defined(MONO_ARCH_SOFT_FLOAT)
+#if defined(MONO_ARCH_EMULATE_MUL_DIV) || defined(MONO_ARCH_SOFT_FLOAT_FALLBACK)
 double
 mono_fdiv (double a, double b)
 {
@@ -439,7 +439,7 @@ mono_fdiv (double a, double b)
 }
 #endif
 
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
 
 double
 mono_fsub (double a, double b)
@@ -871,6 +871,13 @@ guint32
 mono_fconv_u4 (double v)
 {
        /* no need, no exceptions: MONO_ARCH_SAVE_REGS;*/
+
+       /* MS.NET behaves like this for some reason */
+#ifdef HAVE_ISINF
+       if (isinf (v) || isnan (v))
+               return 0;
+#endif
+
        return (guint32)v;
 }
 
@@ -915,7 +922,7 @@ mono_fconv_ovf_u8 (double v)
  * 
  * To work around this issue we test for value boundaries instead. 
  */
-#if defined(__arm__) && MONO_ARCH_SOFT_FLOAT 
+#if defined(__arm__) && defined(MONO_ARCH_SOFT_FLOAT_FALLBACK)
        if (isnan (v) || !(v >= -0.5 && v <= ULLONG_MAX+0.5)) {
                mono_raise_exception (mono_get_exception_overflow ());
        }
@@ -989,8 +996,7 @@ mono_helper_compile_generic_method (MonoObject *obj, MonoMethod *method, gpointe
 
        addr = mono_compile_method (vmethod);
 
-       if (mono_method_needs_static_rgctx_invoke (vmethod, FALSE))
-               addr = mono_create_static_rgctx_trampoline (vmethod, addr);
+       addr = mini_add_method_trampoline (NULL, vmethod, addr, mono_method_needs_static_rgctx_invoke (vmethod, FALSE), FALSE);
 
        /* Since this is a virtual call, have to unbox vtypes */
        if (obj->vtable->klass->valuetype)
@@ -1052,7 +1058,7 @@ mono_create_corlib_exception_2 (guint32 token, MonoString *arg1, MonoString *arg
 }
 
 MonoObject*
-mono_object_castclass (MonoObject *obj, MonoClass *klass)
+mono_object_castclass_unbox (MonoObject *obj, MonoClass *klass)
 {
        MonoJitTlsData *jit_tls = NULL;
 
@@ -1064,6 +1070,8 @@ mono_object_castclass (MonoObject *obj, MonoClass *klass)
        if (!obj)
                return NULL;
 
+       if (klass->enumtype && obj->vtable->klass == klass->element_class)
+               return obj;
        if (mono_object_isinst (obj, klass))
                return obj;
 
@@ -1154,46 +1162,82 @@ mono_get_native_calli_wrapper (MonoImage *image, MonoMethodSignature *sig, gpoin
        return mono_compile_method (m);
 }
 
-MonoObject*
-mono_object_tostring_gsharedvt (gpointer mp, MonoMethod *cmethod, MonoClass *klass)
+static MonoMethod*
+constrained_gsharedvt_call_setup (gpointer mp, MonoMethod *cmethod, MonoClass *klass, gpointer *this_arg)
 {
        MonoMethod *m;
        int vt_slot;
-       gpointer this_arg;
 
-       /* Lookup the virtual method */
-       mono_class_setup_vtable (klass);
-       g_assert (klass->vtable);
-       vt_slot = mono_method_get_vtable_slot (cmethod);
-       m = klass->vtable [vt_slot];
-       if (klass->valuetype)
-               this_arg = mp;
+       if (klass->flags & TYPE_ATTRIBUTE_INTERFACE)
+               mono_raise_exception (mono_get_exception_execution_engine ("Not yet supported."));
+
+       if (mono_method_signature (cmethod)->pinvoke) {
+               /* Object.GetType () */
+               m = mono_marshal_get_native_wrapper (cmethod, TRUE, FALSE);
+       } else {
+               /* Lookup the virtual method */
+               mono_class_setup_vtable (klass);
+               g_assert (klass->vtable);
+               vt_slot = mono_method_get_vtable_slot (cmethod);
+               if (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE) {
+                       int iface_offset;
+
+                       iface_offset = mono_class_interface_offset (klass, cmethod->klass);
+                       g_assert (iface_offset != -1);
+                       vt_slot += iface_offset;
+               }
+               m = klass->vtable [vt_slot];
+       }
+       if (klass->valuetype && (m->klass == mono_defaults.object_class || m->klass == mono_defaults.enum_class->parent || m->klass == mono_defaults.enum_class))
+               /*
+                * Calling a non-vtype method with a vtype receiver, has to box.
+                */
+               *this_arg = mono_value_box (mono_domain_get (), klass, mp);
+       else if (klass->valuetype)
+               /*
+                * Calling a vtype method with a vtype receiver
+                */
+               *this_arg = mp;
        else
-               this_arg = *(gpointer*)mp;
-       return mono_runtime_invoke (m, this_arg, NULL, NULL);
+               /*
+                * Calling a non-vtype method
+                */
+               *this_arg = *(gpointer*)mp;
+       return m;
 }
 
-int
-mono_object_gethashcode_gsharedvt (gpointer mp, MonoMethod *cmethod, MonoClass *klass)
+/*
+ * mono_gsharedvt_constrained_call:
+ *
+ *   Make a call to CMETHOD using the receiver MP, which is assumed to be of type KLASS. ARGS contains
+ * the arguments to the method in the format used by mono_runtime_invoke ().
+ */
+MonoObject*
+mono_gsharedvt_constrained_call (gpointer mp, MonoMethod *cmethod, MonoClass *klass, gboolean deref_arg, gpointer *args)
 {
        MonoMethod *m;
-       int vt_slot;
        gpointer this_arg;
-       MonoObject *res;
-       gpointer p;
-
-       /* Lookup the virtual method */
-       mono_class_setup_vtable (klass);
-       g_assert (klass->vtable);
-       vt_slot = mono_method_get_vtable_slot (cmethod);
-       m = klass->vtable [vt_slot];
+       gpointer new_args [16];
+
+       m = constrained_gsharedvt_call_setup (mp, cmethod, klass, &this_arg);
+       if (args && deref_arg) {
+               new_args [0] = *(gpointer*)args [0];
+               args = new_args;
+       }
+       if (m->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE) {
+               /* Object.GetType () */
+               args = new_args;
+               args [0] = this_arg;
+               this_arg = NULL;
+       }
+       return mono_runtime_invoke (m, this_arg, args, NULL);
+}
+
+void
+mono_gsharedvt_value_copy (gpointer dest, gpointer src, MonoClass *klass)
+{
        if (klass->valuetype)
-               this_arg = mp;
+               mono_value_copy (dest, src, klass);
        else
-               this_arg = *(gpointer*)mp;
-       // FIXME: This boxes the result
-       res = mono_runtime_invoke (m, this_arg, NULL, NULL);
-       p = mono_object_unbox (res);
-       return *(int*)p;
+        mono_gc_wbarrier_generic_store (dest, *(MonoObject**)src);
 }
-
index 04e6d44f9c24839ff755b9f2c6ee2db46419b640..dd99e7c763559c3834f0076a69fc2090930fcccf 100644 (file)
@@ -165,7 +165,7 @@ MonoException *mono_create_corlib_exception_1 (guint32 token, MonoString *arg) M
 
 MonoException *mono_create_corlib_exception_2 (guint32 token, MonoString *arg1, MonoString *arg2) MONO_INTERNAL;
 
-MonoObject* mono_object_castclass (MonoObject *obj, MonoClass *klass) MONO_INTERNAL;
+MonoObject* mono_object_castclass_unbox (MonoObject *obj, MonoClass *klass) MONO_INTERNAL;
 
 gpointer mono_get_native_calli_wrapper (MonoImage *image, MonoMethodSignature *sig, gpointer func) MONO_INTERNAL;
 
@@ -175,9 +175,10 @@ mono_object_isinst_with_cache (MonoObject *obj, MonoClass *klass, gpointer *cach
 MonoObject*
 mono_object_castclass_with_cache (MonoObject *obj, MonoClass *klass, gpointer *cache);
 
-MonoObject* mono_object_tostring_gsharedvt (gpointer mp, MonoMethod *cmethod, MonoClass *klass) MONO_INTERNAL;
+MonoObject*
+mono_gsharedvt_constrained_call (gpointer mp, MonoMethod *cmethod, MonoClass *klass, gboolean deref_arg, gpointer *args) MONO_INTERNAL;
 
-int mono_object_gethashcode_gsharedvt (gpointer mp, MonoMethod *cmethod, MonoClass *klass) MONO_INTERNAL;
+void mono_gsharedvt_value_copy (gpointer dest, gpointer src, MonoClass *klass) MONO_INTERNAL;
 
 #endif /* __MONO_JIT_ICALLS_H__ */
 
index 080531b607606fb3cff37f9b19f1366bf77e3efb..95e690159ee2cfaa87e4032ea8f9e8aeb2164678 100644 (file)
 
 MONO_BEGIN_DECLS
 
-MonoDomain * 
+MONO_API MonoDomain * 
 mono_jit_init              (const char *file);
 
-MonoDomain * 
+MONO_API MonoDomain * 
 mono_jit_init_version      (const char *root_domain_name, const char *runtime_version);
 
-int
+MONO_API int
 mono_jit_exec              (MonoDomain *domain, MonoAssembly *assembly, 
                            int argc, char *argv[]);
-void        
+MONO_API void        
 mono_jit_cleanup           (MonoDomain *domain);
 
-mono_bool
+MONO_API mono_bool
 mono_jit_set_trace_options (const char* options);
 
-void
+MONO_API void
 mono_set_signal_chaining   (mono_bool chain_signals);
 
-void
+MONO_API void
 mono_jit_set_aot_only      (mono_bool aot_only);
 
 /* Allow embedders to decide wherther to actually obey breakpoint instructions
@@ -50,12 +50,12 @@ typedef enum {
 } MonoBreakPolicy;
 
 typedef MonoBreakPolicy (*MonoBreakPolicyFunc) (MonoMethod *method);
-void mono_set_break_policy (MonoBreakPolicyFunc policy_callback);
+MONO_API void mono_set_break_policy (MonoBreakPolicyFunc policy_callback);
 
-void
+MONO_API void
 mono_jit_parse_options     (int argc, char * argv[]);
 
-char*       mono_get_runtime_build_info    (void);
+MONO_API char*       mono_get_runtime_build_info    (void);
 
 MONO_END_DECLS
 
index a1c0cbd4468ea41f67b0a8fc6bc81637937c4ffa..02e3c0857f49698c9b8bfb351c1032bebc9fff9c 100644 (file)
@@ -848,7 +848,7 @@ mono_analyze_liveness2 (MonoCompile *cfg)
        MonoInst **reverse;
 
        if (disabled == -1)
-               disabled = getenv ("DISABLED") != NULL;
+               disabled = g_getenv ("DISABLED") != NULL;
 
        if (disabled)
                return;
diff --git a/mono/mini/main-sgen.c b/mono/mini/main-sgen.c
new file mode 100644 (file)
index 0000000..8c7190e
--- /dev/null
@@ -0,0 +1,5 @@
+
+#include "buildver-sgen.h"
+#define BUILDVER_INCLUDED
+
+#include "main.c"
old mode 100644 (file)
new mode 100755 (executable)
index 808dda0..84c6f39
@@ -1,10 +1,8 @@
 #include <config.h>
 #include "mini.h"
 #ifndef HOST_WIN32
-#ifdef HAVE_SGEN_GC
-#include "buildver-sgen.h"
-#else
-#include "buildver.h"
+#ifndef BUILDVER_INCLUDED
+#include "buildver-boehm.h"
 #endif
 #endif
 
@@ -16,7 +14,7 @@
 static int
 mono_main_with_options (int argc, char *argv [])
 {
-       const char *env_options = getenv ("MONO_ENV_OPTIONS");
+       const char *env_options = g_getenv ("MONO_ENV_OPTIONS");
        if (env_options != NULL){
                GPtrArray *array = g_ptr_array_new ();
                GString *buffer = g_string_new ("");
@@ -96,7 +94,7 @@ mono_main_with_options (int argc, char *argv [])
 #ifdef HOST_WIN32
 
 int
-main ()
+main (void)
 {
        int argc;
        gunichar2** argvw;
index b7427cc8ad21ad0d8dbd5fddf0da0c5e34f19bf0..f83899e92a4855f548995918a468b79f2ce71a58 100644 (file)
@@ -130,7 +130,7 @@ static int stind_to_store_membase (int opcode);
 int mono_op_to_op_imm (int opcode);
 int mono_op_to_op_imm_noemul (int opcode);
 
-MonoInst* mono_emit_native_call (MonoCompile *cfg, gconstpointer func, MonoMethodSignature *sig, MonoInst **args);
+MONO_API MonoInst* mono_emit_native_call (MonoCompile *cfg, gconstpointer func, MonoMethodSignature *sig, MonoInst **args);
 
 /* helper methods signatures */
 static MonoMethodSignature *helper_sig_class_init_trampoline = NULL;
@@ -608,7 +608,7 @@ mono_create_spvar_for_region (MonoCompile *cfg, int region)
 
        var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
        /* prevent it from being register allocated */
-       var->flags |= MONO_INST_INDIRECT;
+       var->flags |= MONO_INST_VOLATILE;
 
        g_hash_table_insert (cfg->spvars, GINT_TO_POINTER (region), var);
 }
@@ -630,7 +630,7 @@ mono_create_exvar_for_offset (MonoCompile *cfg, int offset)
 
        var = mono_compile_create_var (cfg, &mono_defaults.object_class->byval_arg, OP_LOCAL);
        /* prevent it from being register allocated */
-       var->flags |= MONO_INST_INDIRECT;
+       var->flags |= MONO_INST_VOLATILE;
 
        g_hash_table_insert (cfg->exvars, GINT_TO_POINTER (offset), var);
 
@@ -1155,7 +1155,7 @@ mono_get_vtable_var (MonoCompile *cfg)
        if (!cfg->rgctx_var) {
                cfg->rgctx_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
                /* force the var to be stack allocated */
-               cfg->rgctx_var->flags |= MONO_INST_INDIRECT;
+               cfg->rgctx_var->flags |= MONO_INST_VOLATILE;
        }
 
        return cfg->rgctx_var;
@@ -1868,17 +1868,129 @@ mini_emit_memcpy (MonoCompile *cfg, int destreg, int doffset, int srcreg, int so
        }
 }
 
+static void
+emit_tls_set (MonoCompile *cfg, int sreg1, int tls_key)
+{
+       MonoInst *ins, *c;
+
+       if (cfg->compile_aot) {
+               EMIT_NEW_TLS_OFFSETCONST (cfg, c, tls_key);
+               MONO_INST_NEW (cfg, ins, OP_TLS_SET_REG);
+               ins->sreg1 = sreg1;
+               ins->sreg2 = c->dreg;
+               MONO_ADD_INS (cfg->cbb, ins);
+       } else {
+               MONO_INST_NEW (cfg, ins, OP_TLS_SET);
+               ins->sreg1 = sreg1;
+               ins->inst_offset = mini_get_tls_offset (tls_key);
+               MONO_ADD_INS (cfg->cbb, ins);
+       }
+}
+
+/*
+ * emit_push_lmf:
+ *
+ *   Emit IR to push the current LMF onto the LMF stack.
+ */
+static void
+emit_push_lmf (MonoCompile *cfg)
+{
+       /*
+        * Emit IR to push the LMF:
+        * lmf_addr = <lmf_addr from tls>
+        * lmf->lmf_addr = lmf_addr
+        * lmf->prev_lmf = *lmf_addr
+        * *lmf_addr = lmf
+        */
+       int lmf_reg, lmf_addr_reg, prev_lmf_reg;
+       MonoInst *ins, *lmf_ins;
+
+       if (!cfg->lmf_ir)
+               return;
+
+       if (cfg->lmf_ir_mono_lmf) {
+               /* Load current lmf */
+               lmf_ins = mono_get_lmf_intrinsic (cfg);
+               g_assert (lmf_ins);
+               MONO_ADD_INS (cfg->cbb, lmf_ins);
+               EMIT_NEW_VARLOADA (cfg, ins, cfg->lmf_var, NULL);
+               lmf_reg = ins->dreg;
+               /* Save previous_lmf */
+               EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_reg, G_STRUCT_OFFSET (MonoLMF, previous_lmf), lmf_ins->dreg);
+               /* Set new LMF */
+               emit_tls_set (cfg, lmf_reg, OP_TLS_SET_REG);
+       } else {
+               lmf_ins = mono_get_lmf_addr_intrinsic (cfg);
+               if (lmf_ins)
+                       MONO_ADD_INS (cfg->cbb, lmf_ins);
+               else
+                       lmf_ins = mono_emit_jit_icall (cfg, mono_get_lmf_addr, NULL);
+               lmf_addr_reg = lmf_ins->dreg;
+
+               EMIT_NEW_VARLOADA (cfg, ins, cfg->lmf_var, NULL);
+               lmf_reg = ins->dreg;
+               /* Save lmf_addr */
+               if (!cfg->lmf_addr_var)
+                       cfg->lmf_addr_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+               EMIT_NEW_UNALU (cfg, ins, OP_MOVE, cfg->lmf_addr_var->dreg, lmf_ins->dreg);
+               prev_lmf_reg = alloc_preg (cfg);
+               /* Save previous_lmf */
+               EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, prev_lmf_reg, lmf_addr_reg, 0);
+               EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_reg, G_STRUCT_OFFSET (MonoLMF, previous_lmf), prev_lmf_reg);
+               /* Set new lmf */
+               EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_addr_reg, 0, lmf_reg);
+       }
+}
+
+/*
+ * emit_pop_lmf:
+ *
+ *   Emit IR to pop the current LMF from the LMF stack.
+ */
+static void
+emit_pop_lmf (MonoCompile *cfg)
+{
+       int lmf_reg, lmf_addr_reg, prev_lmf_reg;
+       MonoInst *ins;
+
+       if (!cfg->lmf_ir)
+               return;
+
+       EMIT_NEW_VARLOADA (cfg, ins, cfg->lmf_var, NULL);
+       lmf_reg = ins->dreg;
+
+       if (cfg->lmf_ir_mono_lmf) {
+               /* Load previous_lmf */
+               prev_lmf_reg = alloc_preg (cfg);
+               EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, prev_lmf_reg, lmf_reg, G_STRUCT_OFFSET (MonoLMF, previous_lmf));
+               /* Set new LMF */
+               emit_tls_set (cfg, prev_lmf_reg, OP_TLS_SET_REG);
+       } else {
+               /*
+                * Emit IR to pop the LMF:
+                * *(lmf->lmf_addr) = lmf->prev_lmf
+                */
+               /* This could be called before emit_push_lmf () */
+               if (!cfg->lmf_addr_var)
+                       cfg->lmf_addr_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+               lmf_addr_reg = cfg->lmf_addr_var->dreg;
+               prev_lmf_reg = alloc_preg (cfg);
+               EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, prev_lmf_reg, lmf_reg, G_STRUCT_OFFSET (MonoLMF, previous_lmf));
+               EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, lmf_addr_reg, 0, prev_lmf_reg);
+       }
+}
+
 static int
 ret_type_to_call_opcode (MonoType *type, int calli, int virt, MonoGenericSharingContext *gsctx)
 {
        if (type->byref)
-               return calli? OP_CALL_REG: virt? OP_CALLVIRT: OP_CALL;
+               return calli? OP_CALL_REG: virt? OP_CALL_MEMBASE: OP_CALL;
 
 handle_enum:
        type = mini_get_basic_type_from_generic (gsctx, type);
        switch (type->type) {
        case MONO_TYPE_VOID:
-               return calli? OP_VOIDCALL_REG: virt? OP_VOIDCALLVIRT: OP_VOIDCALL;
+               return calli? OP_VOIDCALL_REG: virt? OP_VOIDCALL_MEMBASE: OP_VOIDCALL;
        case MONO_TYPE_I1:
        case MONO_TYPE_U1:
        case MONO_TYPE_BOOLEAN:
@@ -1887,35 +1999,39 @@ handle_enum:
        case MONO_TYPE_CHAR:
        case MONO_TYPE_I4:
        case MONO_TYPE_U4:
-               return calli? OP_CALL_REG: virt? OP_CALLVIRT: OP_CALL;
+               return calli? OP_CALL_REG: virt? OP_CALL_MEMBASE: OP_CALL;
        case MONO_TYPE_I:
        case MONO_TYPE_U:
        case MONO_TYPE_PTR:
        case MONO_TYPE_FNPTR:
-               return calli? OP_CALL_REG: virt? OP_CALLVIRT: OP_CALL;
+               return calli? OP_CALL_REG: virt? OP_CALL_MEMBASE: OP_CALL;
        case MONO_TYPE_CLASS:
        case MONO_TYPE_STRING:
        case MONO_TYPE_OBJECT:
        case MONO_TYPE_SZARRAY:
        case MONO_TYPE_ARRAY:    
-               return calli? OP_CALL_REG: virt? OP_CALLVIRT: OP_CALL;
+               return calli? OP_CALL_REG: virt? OP_CALL_MEMBASE: OP_CALL;
        case MONO_TYPE_I8:
        case MONO_TYPE_U8:
-               return calli? OP_LCALL_REG: virt? OP_LCALLVIRT: OP_LCALL;
+               return calli? OP_LCALL_REG: virt? OP_LCALL_MEMBASE: OP_LCALL;
        case MONO_TYPE_R4:
        case MONO_TYPE_R8:
-               return calli? OP_FCALL_REG: virt? OP_FCALLVIRT: OP_FCALL;
+               return calli? OP_FCALL_REG: virt? OP_FCALL_MEMBASE: OP_FCALL;
        case MONO_TYPE_VALUETYPE:
                if (type->data.klass->enumtype) {
                        type = mono_class_enum_basetype (type->data.klass);
                        goto handle_enum;
                } else
-                       return calli? OP_VCALL_REG: virt? OP_VCALLVIRT: OP_VCALL;
+                       return calli? OP_VCALL_REG: virt? OP_VCALL_MEMBASE: OP_VCALL;
        case MONO_TYPE_TYPEDBYREF:
-               return calli? OP_VCALL_REG: virt? OP_VCALLVIRT: OP_VCALL;
+               return calli? OP_VCALL_REG: virt? OP_VCALL_MEMBASE: OP_VCALL;
        case MONO_TYPE_GENERICINST:
                type = &type->data.generic_class->container_class->byval_arg;
                goto handle_enum;
+       case MONO_TYPE_VAR:
+       case MONO_TYPE_MVAR:
+               /* gsharedvt */
+               return calli? OP_VCALL_REG: virt? OP_VCALL_MEMBASE: OP_VCALL;
        default:
                g_error ("unknown type 0x%02x in ret_type_to_call_opcode", type->type);
        }
@@ -2126,7 +2242,12 @@ handle_enum:
                case MONO_TYPE_GENERICINST:
                        simple_type = &simple_type->data.generic_class->container_class->byval_arg;
                        goto handle_enum;
-
+               case MONO_TYPE_VAR:
+               case MONO_TYPE_MVAR:
+                       /* gsharedvt */
+                       if (args [i]->type != STACK_VTYPE)
+                               return 1;
+                       continue;
                default:
                        g_error ("unknown type 0x%02x in check_call_signature",
                                 simple_type->type);
@@ -2139,15 +2260,15 @@ static int
 callvirt_to_call (int opcode)
 {
        switch (opcode) {
-       case OP_CALLVIRT:
+       case OP_CALL_MEMBASE:
                return OP_CALL;
-       case OP_VOIDCALLVIRT:
+       case OP_VOIDCALL_MEMBASE:
                return OP_VOIDCALL;
-       case OP_FCALLVIRT:
+       case OP_FCALL_MEMBASE:
                return OP_FCALL;
-       case OP_VCALLVIRT:
+       case OP_VCALL_MEMBASE:
                return OP_VCALL;
-       case OP_LCALLVIRT:
+       case OP_LCALL_MEMBASE:
                return OP_LCALL;
        default:
                g_assert_not_reached ();
@@ -2156,27 +2277,6 @@ callvirt_to_call (int opcode)
        return -1;
 }
 
-static int
-callvirt_to_call_membase (int opcode)
-{
-       switch (opcode) {
-       case OP_CALLVIRT:
-               return OP_CALL_MEMBASE;
-       case OP_VOIDCALLVIRT:
-               return OP_VOIDCALL_MEMBASE;
-       case OP_FCALLVIRT:
-               return OP_FCALL_MEMBASE;
-       case OP_LCALLVIRT:
-               return OP_LCALL_MEMBASE;
-       case OP_VCALLVIRT:
-               return OP_VCALL_MEMBASE;
-       default:
-               g_assert_not_reached ();
-       }
-
-       return -1;
-}
-
 #ifdef MONO_ARCH_HAVE_IMT
 /* Either METHOD or IMT_ARG needs to be set */
 static void
@@ -2263,12 +2363,73 @@ mini_method_check_context_used (MonoCompile *cfg, MonoMethod *method)
                return 0;
 }
 
+/*
+ * check_method_sharing:
+ *
+ *   Check whenever the vtable or an mrgctx needs to be passed when calling CMETHOD.
+ */
+static void
+check_method_sharing (MonoCompile *cfg, MonoMethod *cmethod, gboolean *out_pass_vtable, gboolean *out_pass_mrgctx)
+{
+       gboolean pass_vtable = FALSE;
+       gboolean pass_mrgctx = FALSE;
+
+       if (((cmethod->flags & METHOD_ATTRIBUTE_STATIC) || cmethod->klass->valuetype) &&
+               (cmethod->klass->generic_class || cmethod->klass->generic_container)) {
+               gboolean sharable = FALSE;
+
+               if (mono_method_is_generic_sharable (cmethod, TRUE)) {
+                       sharable = TRUE;
+               } else {
+                       gboolean sharing_enabled = mono_class_generic_sharing_enabled (cmethod->klass);
+                       MonoGenericContext *context = mini_class_get_context (cmethod->klass);
+                       gboolean context_sharable = mono_generic_context_is_sharable (context, TRUE);
+
+                       sharable = sharing_enabled && context_sharable;
+               }
+
+               /*
+                * Pass vtable iff target method might
+                * be shared, which means that sharing
+                * is enabled for its class and its
+                * context is sharable (and it's not a
+                * generic method).
+                */
+               if (sharable && !(mini_method_get_context (cmethod) && mini_method_get_context (cmethod)->method_inst))
+                       pass_vtable = TRUE;
+       }
+
+       if (mini_method_get_context (cmethod) &&
+               mini_method_get_context (cmethod)->method_inst) {
+               g_assert (!pass_vtable);
+
+               if (mono_method_is_generic_sharable (cmethod, TRUE)) {
+                       pass_mrgctx = TRUE;
+               } else {
+                       gboolean sharing_enabled = mono_class_generic_sharing_enabled (cmethod->klass);
+                       MonoGenericContext *context = mini_method_get_context (cmethod);
+                       gboolean context_sharable = mono_generic_context_is_sharable (context, TRUE);
+
+                       if (sharing_enabled && context_sharable)
+                               pass_mrgctx = TRUE;
+                       if (cfg->gsharedvt && mini_is_gsharedvt_signature (cfg, mono_method_signature (cmethod)))
+                               pass_mrgctx = TRUE;
+               }
+       }
+
+       if (out_pass_vtable)
+               *out_pass_vtable = pass_vtable;
+       if (out_pass_mrgctx)
+               *out_pass_mrgctx = pass_mrgctx;
+}
+
 inline static MonoCallInst *
 mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig, 
                                         MonoInst **args, int calli, int virtual, int tail, int rgctx, int unbox_trampoline)
 {
+       MonoType *sig_ret;
        MonoCallInst *call;
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
        int i;
 #endif
 
@@ -2280,16 +2441,17 @@ mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig,
        call->args = args;
        call->signature = sig;
        call->rgctx_reg = rgctx;
+       sig_ret = sig->ret;
 
-       type_to_eval_stack_type ((cfg), sig->ret, &call->inst);
+       type_to_eval_stack_type ((cfg), sig_ret, &call->inst);
 
        if (tail) {
-               if (mini_type_is_vtype (cfg, sig->ret)) {
+               if (mini_type_is_vtype (cfg, sig_ret)) {
                        call->vret_var = cfg->vret_addr;
                        //g_assert_not_reached ();
                }
-       } else if (mini_type_is_vtype (cfg, sig->ret)) {
-               MonoInst *temp = mono_compile_create_var (cfg, sig->ret, OP_LOCAL);
+       } else if (mini_type_is_vtype (cfg, sig_ret)) {
+               MonoInst *temp = mono_compile_create_var (cfg, sig_ret, OP_LOCAL);
                MonoInst *loada;
 
                temp->backend.is_pinvoke = sig->pinvoke;
@@ -2312,10 +2474,10 @@ mono_emit_call_args (MonoCompile *cfg, MonoMethodSignature *sig,
                call->inst.dreg = temp->dreg;
 
                call->vret_var = loada;
-       } else if (!MONO_TYPE_IS_VOID (sig->ret))
+       } else if (!MONO_TYPE_IS_VOID (sig_ret))
                call->inst.dreg = alloc_dreg (cfg, call->inst.type);
 
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
        if (COMPILE_SOFT_FLOAT (cfg)) {
                /* 
                 * If the call has a float argument, we would need to do an r8->r4 conversion using 
@@ -2404,13 +2566,16 @@ mono_emit_calli (MonoCompile *cfg, MonoMethodSignature *sig, MonoInst **args, Mo
        return (MonoInst*)call;
 }
 
+static MonoInst*
+emit_get_gsharedvt_info_klass (MonoCompile *cfg, MonoClass *klass, MonoRgctxInfoType rgctx_type);
+
 static MonoInst*
 emit_get_rgctx_method (MonoCompile *cfg, int context_used, MonoMethod *cmethod, MonoRgctxInfoType rgctx_type);
 static MonoInst*
 emit_get_rgctx_klass (MonoCompile *cfg, int context_used, MonoClass *klass, MonoRgctxInfoType rgctx_type);
 
 static MonoInst*
-mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSignature *sig,
+mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSignature *sig, gboolean tail,
                                                        MonoInst **args, MonoInst *this, MonoInst *imt_arg, MonoInst *rgctx_arg)
 {
 #ifndef DISABLE_REMOTING
@@ -2423,6 +2588,9 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
        int rgctx_reg = 0;
        gboolean need_unbox_trampoline;
 
+       if (!sig)
+               sig = mono_method_signature (method);
+
        if (rgctx_arg) {
                rgctx_reg = mono_alloc_preg (cfg);
                MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, rgctx_reg, rgctx_arg->dreg);
@@ -2457,7 +2625,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 
        need_unbox_trampoline = method->klass == mono_defaults.object_class || (method->klass->flags & TYPE_ATTRIBUTE_INTERFACE);
 
-       call = mono_emit_call_args (cfg, sig, args, FALSE, virtual, FALSE, rgctx_arg ? TRUE : FALSE, need_unbox_trampoline);
+       call = mono_emit_call_args (cfg, sig, args, FALSE, virtual, tail, rgctx_arg ? TRUE : FALSE, need_unbox_trampoline);
 
 #ifndef DISABLE_REMOTING
        if (might_be_remote)
@@ -2467,20 +2635,20 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
                call->method = method;
        call->inst.flags |= MONO_INST_HAS_METHOD;
        call->inst.inst_left = this;
+       call->tail_call = tail;
 
        if (virtual) {
                int vtable_reg, slot_reg, this_reg;
+               int offset;
 
                this_reg = this->dreg;
 
-#ifdef MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE
-               if ((method->klass->parent == mono_defaults.multicastdelegate_class) && (!strcmp (method->name, "Invoke"))) {
+               if (ARCH_HAVE_DELEGATE_TRAMPOLINES && (method->klass->parent == mono_defaults.multicastdelegate_class) && !strcmp (method->name, "Invoke")) {
                        MonoInst *dummy_use;
 
                        MONO_EMIT_NULL_CHECK (cfg, this_reg);
 
                        /* Make a call to delegate->invoke_impl */
-                       call->inst.opcode = callvirt_to_call_membase (call->inst.opcode);
                        call->inst.inst_basereg = this_reg;
                        call->inst.inst_offset = G_STRUCT_OFFSET (MonoDelegate, invoke_impl);
                        MONO_ADD_INS (cfg->cbb, (MonoInst*)call);
@@ -2501,7 +2669,6 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 
                        return (MonoInst*)call;
                }
-#endif
 
                if ((!cfg->compile_aot || enable_for_aot) && 
                        (!(method->flags & METHOD_ATTRIBUTE_VIRTUAL) || 
@@ -2536,8 +2703,6 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 
                        call->inst.opcode = callvirt_to_call (call->inst.opcode);
                } else {
-                       call->inst.opcode = callvirt_to_call_membase (call->inst.opcode);
-
                        vtable_reg = alloc_preg (cfg);
                        MONO_EMIT_NEW_LOAD_MEMBASE_FAULT (cfg, vtable_reg, this_reg, G_STRUCT_OFFSET (MonoObject, vtable));
                        if (method->klass->flags & TYPE_ATTRIBUTE_INTERFACE) {
@@ -2547,17 +2712,17 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
                                        guint32 imt_slot = mono_method_get_imt_slot (method);
                                        emit_imt_argument (cfg, call, call->method, imt_arg);
                                        slot_reg = vtable_reg;
-                                       call->inst.inst_offset = ((gint32)imt_slot - MONO_IMT_SIZE) * SIZEOF_VOID_P;
+                                       offset = ((gint32)imt_slot - MONO_IMT_SIZE) * SIZEOF_VOID_P;
                                }
 #endif
                                if (slot_reg == -1) {
                                        slot_reg = alloc_preg (cfg);
                                        mini_emit_load_intf_reg_vtable (cfg, slot_reg, vtable_reg, method->klass);
-                                       call->inst.inst_offset = mono_method_get_vtable_index (method) * SIZEOF_VOID_P;
+                                       offset = mono_method_get_vtable_index (method) * SIZEOF_VOID_P;
                                }
                        } else {
                                slot_reg = vtable_reg;
-                               call->inst.inst_offset = G_STRUCT_OFFSET (MonoVTable, vtable) +
+                               offset = G_STRUCT_OFFSET (MonoVTable, vtable) +
                                        ((mono_method_get_vtable_index (method)) * (SIZEOF_VOID_P));
 #ifdef MONO_ARCH_HAVE_IMT
                                if (imt_arg) {
@@ -2568,6 +2733,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
                        }
 
                        call->inst.sreg1 = slot_reg;
+                       call->inst.inst_offset = offset;
                        call->virtual = TRUE;
                }
        }
@@ -2583,7 +2749,7 @@ mono_emit_method_call_full (MonoCompile *cfg, MonoMethod *method, MonoMethodSign
 MonoInst*
 mono_emit_method_call (MonoCompile *cfg, MonoMethod *method, MonoInst **args, MonoInst *this)
 {
-       return mono_emit_method_call_full (cfg, method, mono_method_signature (method), args, this, NULL, NULL);
+       return mono_emit_method_call_full (cfg, method, mono_method_signature (method), FALSE, args, this, NULL, NULL);
 }
 
 MonoInst*
@@ -2714,7 +2880,7 @@ create_write_barrier_bitmap (MonoCompile *cfg, MonoClass *klass, unsigned *wb_bi
 }
 
 static void
-emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value, int value_reg)
+emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value)
 {
        int card_table_shift_bits;
        gpointer card_table_mask;
@@ -2735,15 +2901,12 @@ emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value, int value_
        has_card_table_wb = TRUE;
 #endif
 
-       if (has_card_table_wb && !cfg->compile_aot && card_table && nursery_shift_bits > 0) {
+       if (has_card_table_wb && !cfg->compile_aot && card_table && nursery_shift_bits > 0 && !COMPILE_LLVM (cfg)) {
                MonoInst *wbarrier;
 
                MONO_INST_NEW (cfg, wbarrier, OP_CARD_TABLE_WBARRIER);
                wbarrier->sreg1 = ptr->dreg;
-               if (value)
-                       wbarrier->sreg2 = value->dreg;
-               else
-                       wbarrier->sreg2 = value_reg;
+               wbarrier->sreg2 = value->dreg;
                MONO_ADD_INS (cfg->cbb, wbarrier);
        } else if (card_table) {
                int offset_reg = alloc_preg (cfg);
@@ -2773,13 +2936,7 @@ emit_write_barrier (MonoCompile *cfg, MonoInst *ptr, MonoInst *value, int value_
                mono_emit_method_call (cfg, write_barrier, &ptr, NULL);
        }
 
-       if (value) {
-               EMIT_NEW_DUMMY_USE (cfg, dummy_use, value);
-       } else {
-               MONO_INST_NEW (cfg, dummy_use, OP_DUMMY_USE);
-               dummy_use->sreg1 = value_reg;
-               MONO_ADD_INS (cfg->cbb, dummy_use);
-       }
+       EMIT_NEW_DUMMY_USE (cfg, dummy_use, value);
 }
 
 static gboolean
@@ -2824,11 +2981,17 @@ mono_emit_wb_aware_memcpy (MonoCompile *cfg, MonoClass *klass, MonoInst *iargs[4
        EMIT_NEW_UNALU (cfg, iargs [0], OP_MOVE, dest_ptr_reg, destreg);
 
        while (size >= SIZEOF_VOID_P) {
-               MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOAD_MEMBASE, tmp_reg, srcreg, offset);
+               MonoInst *load_inst;
+               MONO_INST_NEW (cfg, load_inst, OP_LOAD_MEMBASE);
+               load_inst->dreg = tmp_reg;
+               load_inst->inst_basereg = srcreg;
+               load_inst->inst_offset = offset;
+               MONO_ADD_INS (cfg->cbb, load_inst);
+
                MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STOREP_MEMBASE_REG, dest_ptr_reg, 0, tmp_reg);
 
                if (need_wb & 0x1)
-                       emit_write_barrier (cfg, iargs [0], NULL, tmp_reg);
+                       emit_write_barrier (cfg, iargs [0], load_inst);
 
                offset += SIZEOF_VOID_P;
                size -= SIZEOF_VOID_P;
@@ -2878,6 +3041,7 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
        guint32 align = 0;
        MonoMethod *memcpy_method;
        MonoInst *size_ins = NULL;
+       MonoInst *memcpy_ins = NULL;
 
        g_assert (klass);
        /*
@@ -2888,7 +3052,8 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
        if (mini_is_gsharedvt_klass (cfg, klass)) {
                g_assert (!native);
                context_used = mini_class_check_context_used (cfg, klass);
-               size_ins = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_VALUE_SIZE);
+               size_ins = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_VALUE_SIZE);
+               memcpy_ins = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_MEMCPY);
        }
 
        if (native)
@@ -2897,7 +3062,7 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
                n = mono_class_value_size (klass, &align);
 
        /* if native is true there should be no references in the struct */
-       if (cfg->gen_write_barriers && klass->has_references && !native) {
+       if (cfg->gen_write_barriers && (klass->has_references || size_ins) && !native) {
                /* Avoid barriers when storing to the stack */
                if (!((dest->opcode == OP_ADD_IMM && dest->sreg1 == cfg->frame_reg) ||
                          (dest->opcode == OP_LDADDR))) {
@@ -2922,7 +3087,10 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
                                }
                        }
 
-                       mono_emit_jit_icall (cfg, mono_value_copy, iargs);
+                       if (size_ins)
+                               mono_emit_jit_icall (cfg, mono_gsharedvt_value_copy, iargs);
+                       else
+                               mono_emit_jit_icall (cfg, mono_value_copy, iargs);
                        return;
                }
        }
@@ -2939,7 +3107,10 @@ mini_emit_stobj (MonoCompile *cfg, MonoInst *dest, MonoInst *src, MonoClass *kla
                        EMIT_NEW_ICONST (cfg, iargs [2], n);
                
                memcpy_method = get_memcpy_method ();
-               mono_emit_method_call (cfg, memcpy_method, iargs, NULL);
+               if (memcpy_ins)
+                       mono_emit_calli (cfg, mono_method_signature (memcpy_method), iargs, memcpy_ins, NULL, NULL);
+               else
+                       mono_emit_method_call (cfg, memcpy_method, iargs, NULL);
        }
 }
 
@@ -2963,29 +3134,35 @@ mini_emit_initobj (MonoCompile *cfg, MonoInst *dest, const guchar *ip, MonoClass
        guint32 align;
        MonoMethod *memset_method;
        MonoInst *size_ins = NULL;
+       MonoInst *bzero_ins = NULL;
+       static MonoMethod *bzero_method;
 
        /* FIXME: Optimize this for the case when dest is an LDADDR */
 
        mono_class_init (klass);
        if (mini_is_gsharedvt_klass (cfg, klass)) {
                context_used = mini_class_check_context_used (cfg, klass);
-               size_ins = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_VALUE_SIZE);
-               n = -1;
-       } else {
-               n = mono_class_value_size (klass, &align);
+               size_ins = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_VALUE_SIZE);
+               bzero_ins = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_BZERO);
+               if (!bzero_method)
+                       bzero_method = mono_class_get_method_from_name (mono_defaults.string_class, "bzero_aligned_1", 2);
+               g_assert (bzero_method);
+               iargs [0] = dest;
+               iargs [1] = size_ins;
+               mono_emit_calli (cfg, mono_method_signature (bzero_method), iargs, bzero_ins, NULL, NULL);
+               return;
        }
 
-       if (!size_ins && n <= sizeof (gpointer) * 5) {
+       n = mono_class_value_size (klass, &align);
+
+       if (n <= sizeof (gpointer) * 5) {
                mini_emit_memset (cfg, dest->dreg, 0, n, 0, align);
        }
        else {
                memset_method = get_memset_method ();
                iargs [0] = dest;
                EMIT_NEW_ICONST (cfg, iargs [1], 0);
-               if (size_ins)
-                       iargs [2] = size_ins;
-               else
-                       EMIT_NEW_ICONST (cfg, iargs [2], n);
+               EMIT_NEW_ICONST (cfg, iargs [2], n);
                mono_emit_method_call (cfg, memset_method, iargs, NULL);
        }
 }
@@ -3098,6 +3275,20 @@ emit_get_rgctx_gsharedvt_call (MonoCompile *cfg, int context_used,
        return emit_rgctx_fetch (cfg, rgctx, entry);
 }
 
+
+static MonoInst*
+emit_get_rgctx_gsharedvt_method (MonoCompile *cfg, int context_used,
+                                                                MonoMethod *cmethod, MonoGSharedVtMethodInfo *info)
+{
+       MonoJumpInfoRgctxEntry *entry;
+       MonoInst *rgctx;
+
+       entry = mono_patch_info_rgctx_entry_new (cfg->mempool, cfg->current_method, context_used & MONO_GENERIC_CONTEXT_USED_METHOD, MONO_PATCH_INFO_GSHAREDVT_METHOD, info, MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO);
+       rgctx = emit_get_rgctx (cfg, cfg->current_method, context_used);
+
+       return emit_rgctx_fetch (cfg, rgctx, entry);
+}
+
 /*
  * emit_get_rgctx_method:
  *
@@ -3139,6 +3330,58 @@ emit_get_rgctx_field (MonoCompile *cfg, int context_used,
        return emit_rgctx_fetch (cfg, rgctx, entry);
 }
 
+static int
+get_gsharedvt_info_slot (MonoCompile *cfg, gpointer data, MonoRgctxInfoType rgctx_type)
+{
+       MonoGSharedVtMethodInfo *info = cfg->gsharedvt_info;
+       MonoRuntimeGenericContextInfoTemplate *template;
+       int i, idx;
+
+       g_assert (info);
+
+       for (i = 0; i < info->entries->len; ++i) {
+               MonoRuntimeGenericContextInfoTemplate *otemplate = g_ptr_array_index (info->entries, i);
+
+               if (otemplate->info_type == rgctx_type && otemplate->data == data && rgctx_type != MONO_RGCTX_INFO_LOCAL_OFFSET)
+                       return i;
+       }
+
+       template = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoRuntimeGenericContextInfoTemplate));
+       template->info_type = rgctx_type;
+       template->data = data;
+
+       idx = info->entries->len;
+
+       g_ptr_array_add (info->entries, template);
+
+       return idx;
+}
+
+/*
+ * emit_get_gsharedvt_info:
+ *
+ *   This is similar to emit_get_rgctx_.., but loads the data from the gsharedvt info var instead of calling an rgctx fetch trampoline.
+ */
+static MonoInst*
+emit_get_gsharedvt_info (MonoCompile *cfg, gpointer data, MonoRgctxInfoType rgctx_type)
+{
+       MonoInst *ins;
+       int idx, dreg;
+
+       idx = get_gsharedvt_info_slot (cfg, data, rgctx_type);
+       /* Load info->entries [idx] */
+       dreg = alloc_preg (cfg);
+       EMIT_NEW_LOAD_MEMBASE (cfg, ins, OP_LOAD_MEMBASE, dreg, cfg->gsharedvt_info_var->dreg, G_STRUCT_OFFSET (MonoGSharedVtMethodRuntimeInfo, entries) + (idx * sizeof (gpointer)));
+
+       return ins;
+}
+
+static MonoInst*
+emit_get_gsharedvt_info_klass (MonoCompile *cfg, MonoClass *klass, MonoRgctxInfoType rgctx_type)
+{
+       return emit_get_gsharedvt_info (cfg, &klass->byval_arg, rgctx_type);
+}
+
 /*
  * On return the caller must check @klass for load errors.
  */
@@ -3175,25 +3418,36 @@ emit_generic_class_init (MonoCompile *cfg, MonoClass *klass)
 }
 
 static void
-emit_seq_point (MonoCompile *cfg, MonoMethod *method, guint8* ip, gboolean intr_loc)
+emit_seq_point (MonoCompile *cfg, MonoMethod *method, guint8* ip, gboolean intr_loc, gboolean nonempty_stack)
 {
        MonoInst *ins;
 
        if (cfg->gen_seq_points && cfg->method == method) {
                NEW_SEQ_POINT (cfg, ins, ip - cfg->header->code, intr_loc);
+               if (nonempty_stack)
+                       ins->flags |= MONO_INST_NONEMPTY_STACK;
                MONO_ADD_INS (cfg->cbb, ins);
        }
 }
 
 static void
-save_cast_details (MonoCompile *cfg, MonoClass *klass, int obj_reg)
+save_cast_details (MonoCompile *cfg, MonoClass *klass, int obj_reg, gboolean null_check, MonoBasicBlock **out_bblock)
 {
        if (mini_get_debug_options ()->better_cast_details) {
                int to_klass_reg = alloc_preg (cfg);
                int vtable_reg = alloc_preg (cfg);
                int klass_reg = alloc_preg (cfg);
-               MonoInst *tls_get = mono_get_jit_tls_intrinsic (cfg);
+               MonoBasicBlock *is_null_bb = NULL;
+               MonoInst *tls_get;
+
+               if (null_check) {
+                       NEW_BBLOCK (cfg, is_null_bb);
 
+                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, obj_reg, 0);
+                       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBEQ, is_null_bb);
+               }
+
+               tls_get = mono_get_jit_tls_intrinsic (cfg);
                if (!tls_get) {
                        fprintf (stderr, "error: --debug=casts not supported on this platform.\n.");
                        exit (1);
@@ -3206,6 +3460,12 @@ save_cast_details (MonoCompile *cfg, MonoClass *klass, int obj_reg)
                MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, tls_get->dreg, G_STRUCT_OFFSET (MonoJitTlsData, class_cast_from), klass_reg);
                MONO_EMIT_NEW_PCONST (cfg, to_klass_reg, klass);
                MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, tls_get->dreg, G_STRUCT_OFFSET (MonoJitTlsData, class_cast_to), to_klass_reg);
+
+               if (null_check) {
+                       MONO_START_BB (cfg, is_null_bb);
+                       if (out_bblock)
+                               *out_bblock = cfg->cbb;
+               }
        }
 }
 
@@ -3233,7 +3493,7 @@ mini_emit_check_array_type (MonoCompile *cfg, MonoInst *obj, MonoClass *array_cl
 
        context_used = mini_class_check_context_used (cfg, array_class);
 
-       save_cast_details (cfg, array_class, obj->dreg);
+       save_cast_details (cfg, array_class, obj->dreg, FALSE, NULL);
 
        MONO_EMIT_NEW_LOAD_MEMBASE_FAULT (cfg, vtable_reg, obj->dreg, G_STRUCT_OFFSET (MonoObject, vtable));
 
@@ -3297,7 +3557,20 @@ handle_unbox_nullable (MonoCompile* cfg, MonoInst* val, MonoClass* klass, int co
 
                return mono_emit_calli (cfg, mono_method_signature (method), &val, addr, NULL, rgctx);
        } else {
-               return mono_emit_method_call (cfg, method, &val, NULL);
+               gboolean pass_vtable, pass_mrgctx;
+               MonoInst *rgctx_arg = NULL;
+
+               check_method_sharing (cfg, method, &pass_vtable, &pass_mrgctx);
+               g_assert (!pass_mrgctx);
+
+               if (pass_vtable) {
+                       MonoVTable *vtable = mono_class_vtable (cfg->domain, method->klass);
+
+                       g_assert (vtable);
+                       EMIT_NEW_VTABLECONST (cfg, rgctx_arg, vtable);
+               }
+
+               return mono_emit_method_call_full (cfg, method, NULL, FALSE, &val, NULL, NULL, rgctx_arg);
        }
 }
 
@@ -3337,7 +3610,7 @@ handle_unbox (MonoCompile *cfg, MonoClass *klass, MonoInst **sp, int context_use
                MONO_EMIT_NEW_BIALU (cfg, OP_COMPARE, -1, eclass_reg, element_class->dreg);
                MONO_EMIT_NEW_COND_EXC (cfg, NE_UN, "InvalidCastException");
        } else {
-               save_cast_details (cfg, klass->element_class, obj_reg);
+               save_cast_details (cfg, klass->element_class, obj_reg, FALSE, NULL);
                mini_emit_class_check (cfg, eclass_reg, klass->element_class);
                reset_cast_details (cfg);
        }
@@ -3350,6 +3623,89 @@ handle_unbox (MonoCompile *cfg, MonoClass *klass, MonoInst **sp, int context_use
        return add;
 }
 
+static MonoInst*
+handle_unbox_gsharedvt (MonoCompile *cfg, MonoClass *klass, MonoInst *obj, MonoBasicBlock **out_cbb)
+{
+       MonoInst *addr, *klass_inst, *is_ref, *args[16];
+       MonoBasicBlock *is_ref_bb, *is_nullable_bb, *end_bb;
+       MonoInst *ins;
+       int dreg, addr_reg;
+
+       klass_inst = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_KLASS);
+
+       /* obj */
+       args [0] = obj;
+
+       /* klass */
+       args [1] = klass_inst;
+
+       /* CASTCLASS */
+       obj = mono_emit_jit_icall (cfg, mono_object_castclass_unbox, args);
+
+       NEW_BBLOCK (cfg, is_ref_bb);
+       NEW_BBLOCK (cfg, is_nullable_bb);
+       NEW_BBLOCK (cfg, end_bb);
+       is_ref = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_CLASS_BOX_TYPE);
+       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 1);
+       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_ref_bb);
+
+       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 2);
+       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_nullable_bb);
+
+       /* This will contain either the address of the unboxed vtype, or an address of the temporary where the ref is stored */
+       addr_reg = alloc_dreg (cfg, STACK_MP);
+
+       /* Non-ref case */
+       /* UNBOX */
+       NEW_BIALU_IMM (cfg, addr, OP_ADD_IMM, addr_reg, obj->dreg, sizeof (MonoObject));
+       MONO_ADD_INS (cfg->cbb, addr);
+
+       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+       /* Ref case */
+       MONO_START_BB (cfg, is_ref_bb);
+
+       /* Save the ref to a temporary */
+       dreg = alloc_ireg (cfg);
+       EMIT_NEW_VARLOADA_VREG (cfg, addr, dreg, &klass->byval_arg);
+       addr->dreg = addr_reg;
+       MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, addr->dreg, 0, obj->dreg);
+       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+       /* Nullable case */
+       MONO_START_BB (cfg, is_nullable_bb);
+
+       {
+               MonoInst *addr = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX);
+               MonoInst *unbox_call;
+               MonoMethodSignature *unbox_sig;
+               MonoInst *var;
+
+               var = mono_compile_create_var (cfg, &klass->byval_arg, OP_LOCAL);
+
+               unbox_sig = mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
+               unbox_sig->ret = &klass->byval_arg;
+               unbox_sig->param_count = 1;
+               unbox_sig->params [0] = &mono_defaults.object_class->byval_arg;
+               unbox_call = mono_emit_calli (cfg, unbox_sig, &obj, addr, NULL, NULL);
+
+               EMIT_NEW_VARLOADA_VREG (cfg, addr, unbox_call->dreg, &klass->byval_arg);
+               addr->dreg = addr_reg;
+       }
+
+       MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
+       /* End */
+       MONO_START_BB (cfg, end_bb);
+
+       /* LDOBJ */
+       EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &klass->byval_arg, addr_reg, 0);
+
+       *out_cbb = cfg->cbb;
+
+       return ins;
+}
+
 /*
  * Returns NULL and set the cfg exception on error.
  */
@@ -3364,13 +3720,7 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
                int rgctx_info;
                MonoInst *iargs [2];
 
-               /*
-                 FIXME: we cannot get managed_alloc here because we can't get
-                 the class's vtable (because it's not a closed class)
-
-                 MonoVTable *vtable = mono_class_vtable (cfg->domain, klass);
-                 MonoMethod *managed_alloc = mono_gc_get_managed_allocator (vtable, for_box);
-               */
+               MonoMethod *managed_alloc = mono_gc_get_managed_allocator (klass, for_box);
 
                if (cfg->opt & MONO_OPT_SHARED)
                        rgctx_info = MONO_RGCTX_INFO_KLASS;
@@ -3387,6 +3737,9 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
                        alloc_ftn = mono_object_new_specific;
                }
 
+               if (managed_alloc && !(cfg->opt & MONO_OPT_SHARED))
+                       return mono_emit_method_call (cfg, managed_alloc, iargs, NULL);
+
                return mono_emit_jit_icall (cfg, alloc_ftn, iargs);
        }
 
@@ -3412,7 +3765,7 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
                }
 
 #ifndef MONO_CROSS_COMPILE
-               managed_alloc = mono_gc_get_managed_allocator (vtable, for_box);
+               managed_alloc = mono_gc_get_managed_allocator (klass, for_box);
 #endif
 
                if (managed_alloc) {
@@ -3438,10 +3791,12 @@ handle_alloc (MonoCompile *cfg, MonoClass *klass, gboolean for_box, int context_
  * Returns NULL and set the cfg exception on error.
  */    
 static MonoInst*
-handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
+handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used, MonoBasicBlock **out_cbb)
 {
        MonoInst *alloc, *ins;
 
+       *out_cbb = cfg->cbb;
+
        if (mono_class_is_nullable (klass)) {
                MonoMethod* method = mono_class_get_method_from_name (klass, "Box", 1);
 
@@ -3454,24 +3809,40 @@ handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
 
                        return mono_emit_calli (cfg, mono_method_signature (method), &val, addr, NULL, rgctx);
                } else {
-                       return mono_emit_method_call (cfg, method, &val, NULL);
+                       gboolean pass_vtable, pass_mrgctx;
+                       MonoInst *rgctx_arg = NULL;
+
+                       check_method_sharing (cfg, method, &pass_vtable, &pass_mrgctx);
+                       g_assert (!pass_mrgctx);
+
+                       if (pass_vtable) {
+                               MonoVTable *vtable = mono_class_vtable (cfg->domain, method->klass);
+
+                               g_assert (vtable);
+                               EMIT_NEW_VTABLECONST (cfg, rgctx_arg, vtable);
+                       }
+
+                       return mono_emit_method_call_full (cfg, method, NULL, FALSE, &val, NULL, NULL, rgctx_arg);
                }
        }
 
        if (mini_is_gsharedvt_klass (cfg, klass)) {
-               MonoBasicBlock *is_ref_bb, *end_bb;
+               MonoBasicBlock *is_ref_bb, *is_nullable_bb, *end_bb;
                MonoInst *res, *is_ref, *src_var, *addr;
                int addr_reg, dreg;
 
                dreg = alloc_ireg (cfg);
 
                NEW_BBLOCK (cfg, is_ref_bb);
+               NEW_BBLOCK (cfg, is_nullable_bb);
                NEW_BBLOCK (cfg, end_bb);
-               is_ref = emit_get_rgctx_klass (cfg, context_used, klass,
-                                                                          MONO_RGCTX_INFO_CLASS_IS_REF);
+               is_ref = emit_get_gsharedvt_info_klass (cfg, klass, MONO_RGCTX_INFO_CLASS_BOX_TYPE);
                MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 1);
                MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_ref_bb);
 
+               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 2);
+               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_nullable_bb);
+
                /* Non-ref case */
                alloc = handle_alloc (cfg, klass, TRUE, context_used);
                if (!alloc)
@@ -3496,8 +3867,35 @@ handle_box (MonoCompile *cfg, MonoInst *val, MonoClass *klass, int context_used)
                MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, addr->dreg, 0);
                MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
 
+               /* Nullable case */
+               MONO_START_BB (cfg, is_nullable_bb);
+
+               {
+                       MonoInst *addr = emit_get_gsharedvt_info_klass (cfg, klass,
+                                                                                                       MONO_RGCTX_INFO_NULLABLE_CLASS_BOX);
+                       MonoInst *box_call;
+                       MonoMethodSignature *box_sig;
+
+                       /*
+                        * klass is Nullable<T>, need to call Nullable<T>.Box () using a gsharedvt signature, but we cannot
+                        * construct that method at JIT time, so have to do things by hand.
+                        */
+                       box_sig = mono_mempool_alloc0 (cfg->mempool, MONO_SIZEOF_METHOD_SIGNATURE + (1 * sizeof (MonoType *)));
+                       box_sig->ret = &mono_defaults.object_class->byval_arg;
+                       box_sig->param_count = 1;
+                       box_sig->params [0] = &klass->byval_arg;
+                       box_call = mono_emit_calli (cfg, box_sig, &val, addr, NULL, NULL);
+                       EMIT_NEW_UNALU (cfg, res, OP_MOVE, dreg, box_call->dreg);
+                       res->type = STACK_OBJ;
+                       res->klass = klass;
+               }
+
+               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
+
                MONO_START_BB (cfg, end_bb);
 
+               *out_cbb = cfg->cbb;
+
                return res;
        } else {
                alloc = handle_alloc (cfg, klass, TRUE, context_used);
@@ -3555,7 +3953,7 @@ handle_castclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context
        if (context_used) {
                MonoInst *args [3];
 
-               if(mini_class_has_reference_variant_generic_argument (cfg, klass, context_used)) {
+               if(mini_class_has_reference_variant_generic_argument (cfg, klass, context_used) || is_complex_isinst (klass)) {
                        MonoMethod *mono_castclass = mono_marshal_get_castclass_with_cache ();
                        MonoInst *cache_ins;
 
@@ -3574,20 +3972,6 @@ handle_castclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context
                }
 
                klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_KLASS);
-
-               if (is_complex_isinst (klass)) {
-                       /* Complex case, handle by an icall */
-
-                       /* obj */
-                       args [0] = src;
-
-                       /* klass */
-                       args [1] = klass_inst;
-
-                       return mono_emit_jit_icall (cfg, mono_object_castclass, args);
-               } else {
-                       /* Simple case, handled by the code below */
-               }
        }
 
        NEW_BBLOCK (cfg, is_null_bb);
@@ -3595,7 +3979,7 @@ handle_castclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context
        MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, obj_reg, 0);
        MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBEQ, is_null_bb);
 
-       save_cast_details (cfg, klass, obj_reg);
+       save_cast_details (cfg, klass, obj_reg, FALSE, NULL);
 
        if (klass->flags & TYPE_ATTRIBUTE_INTERFACE) {
                MONO_EMIT_NEW_LOAD_MEMBASE (cfg, vtable_reg, obj_reg, G_STRUCT_OFFSET (MonoObject, vtable));
@@ -3649,7 +4033,7 @@ handle_isinst (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context_us
        if (context_used) {
                MonoInst *args [3];
 
-               if(mini_class_has_reference_variant_generic_argument (cfg, klass, context_used)) {
+               if(mini_class_has_reference_variant_generic_argument (cfg, klass, context_used) || is_complex_isinst (klass)) {
                        MonoMethod *mono_isinst = mono_marshal_get_isinst_with_cache ();
                        MonoInst *cache_ins;
 
@@ -3668,20 +4052,6 @@ handle_isinst (MonoCompile *cfg, MonoClass *klass, MonoInst *src, int context_us
                }
 
                klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_KLASS);
-
-               if (is_complex_isinst (klass)) {
-                       /* Complex case, handle by an icall */
-
-                       /* obj */
-                       args [0] = src;
-
-                       /* klass */
-                       args [1] = klass_inst;
-
-                       return mono_emit_jit_icall (cfg, mono_object_isinst, args);
-               } else {
-                       /* Simple case, the code below can handle it */
-               }
        }
 
        NEW_BBLOCK (cfg, is_null_bb);
@@ -3919,7 +4289,7 @@ handle_ccastclass (MonoCompile *cfg, MonoClass *klass, MonoInst *src)
        MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, obj_reg, 0);
        MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBEQ, ok_result_bb);
 
-       save_cast_details (cfg, klass, obj_reg);
+       save_cast_details (cfg, klass, obj_reg, FALSE, NULL);
 
        if (klass->flags & TYPE_ATTRIBUTE_INTERFACE) {
 #ifndef DISABLE_REMOTING
@@ -4020,7 +4390,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
                if (cfg->gen_write_barriers) {
                        dreg = alloc_preg (cfg);
                        EMIT_NEW_BIALU_IMM (cfg, ptr, OP_PADD_IMM, dreg, obj->dreg, G_STRUCT_OFFSET (MonoDelegate, target));
-                       emit_write_barrier (cfg, ptr, target, 0);
+                       emit_write_barrier (cfg, ptr, target);
                }
        }
 
@@ -4030,7 +4400,7 @@ handle_delegate_ctor (MonoCompile *cfg, MonoClass *klass, MonoInst *target, Mono
        if (cfg->gen_write_barriers) {
                dreg = alloc_preg (cfg);
                EMIT_NEW_BIALU_IMM (cfg, ptr, OP_PADD_IMM, dreg, obj->dreg, G_STRUCT_OFFSET (MonoDelegate, method));
-               emit_write_barrier (cfg, ptr, method_ins, 0);
+               emit_write_barrier (cfg, ptr, method_ins);
        }
        /* 
         * To avoid looking up the compiled code belonging to the target method
@@ -4133,7 +4503,7 @@ mono_method_check_inlining (MonoCompile *cfg, MonoMethod *method)
 {
        MonoMethodHeaderSummary header;
        MonoVTable *vtable;
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
        MonoMethodSignature *sig = mono_method_signature (method);
        int i;
 #endif
@@ -4165,8 +4535,8 @@ mono_method_check_inlining (MonoCompile *cfg, MonoMethod *method)
        /* also consider num_locals? */
        /* Do the size check early to avoid creating vtables */
        if (!inline_limit_inited) {
-               if (getenv ("MONO_INLINELIMIT"))
-                       inline_limit = atoi (getenv ("MONO_INLINELIMIT"));
+               if (g_getenv ("MONO_INLINELIMIT"))
+                       inline_limit = atoi (g_getenv ("MONO_INLINELIMIT"));
                else
                        inline_limit = INLINE_LENGTH_LIMIT;
                inline_limit_inited = TRUE;
@@ -4181,7 +4551,13 @@ mono_method_check_inlining (MonoCompile *cfg, MonoMethod *method)
         * inside the inlined code
         */
        if (!(cfg->opt & MONO_OPT_SHARED)) {
-               if (method->klass->flags & TYPE_ATTRIBUTE_BEFORE_FIELD_INIT) {
+               /* The AggressiveInlining hint is a good excuse to force that cctor to run. */
+               if (method->iflags & METHOD_IMPL_ATTRIBUTE_AGGRESSIVE_INLINING) {
+                       vtable = mono_class_vtable (cfg->domain, method->klass);
+                       if (!vtable)
+                               return FALSE;
+                       mono_runtime_class_init (vtable);
+               } else if (method->klass->flags & TYPE_ATTRIBUTE_BEFORE_FIELD_INIT) {
                        if (cfg->run_cctors && method->klass->has_cctor) {
                                /*FIXME it would easier and lazier to just use mono_class_try_get_vtable */
                                if (!method->klass->runtime_info)
@@ -4224,31 +4600,36 @@ mono_method_check_inlining (MonoCompile *cfg, MonoMethod *method)
        if (mono_security_method_has_declsec (method))
                return FALSE;
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-       /* FIXME: */
-       if (sig->ret && sig->ret->type == MONO_TYPE_R4)
-               return FALSE;
-       for (i = 0; i < sig->param_count; ++i)
-               if (!sig->params [i]->byref && sig->params [i]->type == MONO_TYPE_R4)
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+       if (mono_arch_is_soft_float ()) {
+               /* FIXME: */
+               if (sig->ret && sig->ret->type == MONO_TYPE_R4)
                        return FALSE;
+               for (i = 0; i < sig->param_count; ++i)
+                       if (!sig->params [i]->byref && sig->params [i]->type == MONO_TYPE_R4)
+                               return FALSE;
+       }
 #endif
 
        return TRUE;
 }
 
 static gboolean
-mini_field_access_needs_cctor_run (MonoCompile *cfg, MonoMethod *method, MonoVTable *vtable)
+mini_field_access_needs_cctor_run (MonoCompile *cfg, MonoMethod *method, MonoClass *klass, MonoVTable *vtable)
 {
-       if (vtable->initialized && !cfg->compile_aot)
-               return FALSE;
+       if (!cfg->compile_aot) {
+               g_assert (vtable);
+               if (vtable->initialized)
+                       return FALSE;
+       }
 
-       if (vtable->klass->flags & TYPE_ATTRIBUTE_BEFORE_FIELD_INIT)
+       if (klass->flags & TYPE_ATTRIBUTE_BEFORE_FIELD_INIT)
                return FALSE;
 
-       if (!mono_class_needs_cctor_run (vtable->klass, method))
+       if (!mono_class_needs_cctor_run (klass, method))
                return FALSE;
 
-       if (! (method->flags & METHOD_ATTRIBUTE_STATIC) && (vtable->klass == method->klass))
+       if (! (method->flags & METHOD_ATTRIBUTE_STATIC) && (klass == method->klass))
                /* The initialization is already done before the method is called */
                return FALSE;
 
@@ -4316,7 +4697,7 @@ mini_emit_ldelema_1_ins (MonoCompile *cfg, MonoClass *klass, MonoInst *arr, Mono
                g_assert (cfg->generic_sharing_context);
                context_used = mini_class_check_context_used (cfg, klass);
                g_assert (context_used);
-               rgctx_ins = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE);
+               rgctx_ins = emit_get_gsharedvt_info (cfg, &klass->byval_arg, MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE);
                MONO_EMIT_NEW_BIALU (cfg, OP_IMUL, mult_reg, index2_reg, rgctx_ins->dreg);
        } else {
                MONO_EMIT_NEW_BIALU_IMM (cfg, OP_MUL_IMM, mult_reg, index2_reg, size);
@@ -4493,7 +4874,7 @@ emit_array_generic_access (MonoCompile *cfg, MonoMethodSignature *fsig, MonoInst
                EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, load, &eklass->byval_arg, args [2]->dreg, 0);
                EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, &eklass->byval_arg, addr->dreg, 0, load->dreg);
                if (mini_type_is_reference (cfg, fsig->params [2]))
-                       emit_write_barrier (cfg, addr, load, -1);
+                       emit_write_barrier (cfg, addr, load);
        } else {
                EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, load, &eklass->byval_arg, addr->dreg, 0);
                EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, &eklass->byval_arg, args [2]->dreg, 0, load->dreg);
@@ -4553,7 +4934,7 @@ emit_array_store (MonoCompile *cfg, MonoClass *klass, MonoInst **sp, gboolean sa
                        MonoInst *addr = mini_emit_ldelema_1_ins (cfg, klass, sp [0], sp [1], safety_checks);
                        EMIT_NEW_STORE_MEMBASE_TYPE (cfg, ins, &klass->byval_arg, addr->dreg, 0, sp [2]->dreg);
                        if (generic_class_is_reference_type (cfg, klass))
-                               emit_write_barrier (cfg, addr, sp [2], -1);
+                               emit_write_barrier (cfg, addr, sp [2]);
                }
                return ins;
        }
@@ -4769,7 +5150,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                } else
                        return NULL;
        } else if (cmethod->klass == mono_defaults.array_class) {
-               if (strcmp (cmethod->name + 1, "etGenericValueImpl") == 0)
+               if (!cfg->gsharedvt && strcmp (cmethod->name + 1, "etGenericValueImpl") == 0)
                        return emit_array_generic_access (cfg, fsig, args, *cmethod->name == 'S');
 
 #ifndef MONO_BIG_ARRAYS
@@ -5050,7 +5431,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                        }
 
                        if (cfg->gen_write_barriers && is_ref)
-                               emit_write_barrier (cfg, args [0], args [1], -1);
+                               emit_write_barrier (cfg, args [0], args [1]);
                }
 #endif /* MONO_ARCH_HAVE_ATOMIC_EXCHANGE */
  
@@ -5084,7 +5465,7 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                                /* g_assert_not_reached (); */
                        }
                        if (cfg->gen_write_barriers && is_ref)
-                               emit_write_barrier (cfg, args [0], args [1], -1);
+                               emit_write_barrier (cfg, args [0], args [1]);
                }
 #endif /* MONO_ARCH_HAVE_ATOMIC_CAS */
 
@@ -5119,6 +5500,35 @@ mini_emit_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSign
                 * all inputs:
                 * http://everything2.com/?node_id=1051618
                 */
+       } else if ((!strcmp (cmethod->klass->image->assembly->aname.name, "MonoMac") || !strcmp (cmethod->klass->image->assembly->aname.name, "monotouch")) && !strcmp (cmethod->klass->name, "Selector") && !strcmp (cmethod->name, "GetHandle") && cfg->compile_aot && (args [0]->opcode == OP_GOT_ENTRY || args[0]->opcode == OP_AOTCONST)) {
+#ifdef MONO_ARCH_HAVE_OBJC_GET_SELECTOR
+               MonoInst *pi;
+               MonoJumpInfoToken *ji;
+               MonoString *s;
+
+               cfg->disable_llvm = TRUE;
+
+               if (args [0]->opcode == OP_GOT_ENTRY) {
+                       pi = args [0]->inst_p1;
+                       g_assert (pi->opcode == OP_PATCH_INFO);
+                       g_assert ((int)pi->inst_p1 == MONO_PATCH_INFO_LDSTR);
+                       ji = pi->inst_p0;
+               } else {
+                       g_assert ((int)args [0]->inst_p1 == MONO_PATCH_INFO_LDSTR);
+                       ji = args [0]->inst_p0;
+               }
+
+               NULLIFY_INS (args [0]);
+
+               // FIXME: Ugly
+               s = mono_ldstr (cfg->domain, ji->image, mono_metadata_token_index (ji->token));
+               MONO_INST_NEW (cfg, ins, OP_OBJC_GET_SELECTOR);
+               ins->dreg = mono_alloc_ireg (cfg);
+               // FIXME: Leaks
+               ins->inst_p0 = mono_string_to_utf8 (s);
+               MONO_ADD_INS (cfg->cbb, ins);
+               return ins;
+#endif
        }
 
 #ifdef MONO_ARCH_SIMD_INTRINSICS
@@ -5155,7 +5565,7 @@ mini_redirect_call (MonoCompile *cfg, MonoMethod *method,
 
                        g_assert (vtable); /*Should not fail since it System.String*/
 #ifndef MONO_CROSS_COMPILE
-                       managed_alloc = mono_gc_get_managed_allocator (vtable, FALSE);
+                       managed_alloc = mono_gc_get_managed_allocator (method->klass, FALSE);
 #endif
                        if (!managed_alloc)
                                return NULL;
@@ -5201,15 +5611,15 @@ static gboolean
 check_inline_called_method_name_limit (MonoMethod *called_method)
 {
        int strncmp_result;
-       static char *limit = NULL;
+       static const char *limit = NULL;
        
        if (limit == NULL) {
-               char *limit_string = getenv ("MONO_INLINE_CALLED_METHOD_NAME_LIMIT");
+               const char *limit_string = g_getenv ("MONO_INLINE_CALLED_METHOD_NAME_LIMIT");
 
                if (limit_string != NULL)
                        limit = limit_string;
                else
-                       limit = (char *) "";
+                       limit = "";
        }
 
        if (limit [0] != '\0') {
@@ -5231,14 +5641,14 @@ static gboolean
 check_inline_caller_method_name_limit (MonoMethod *caller_method)
 {
        int strncmp_result;
-       static char *limit = NULL;
+       static const char *limit = NULL;
        
        if (limit == NULL) {
-               char *limit_string = getenv ("MONO_INLINE_CALLER_METHOD_NAME_LIMIT");
+               const char *limit_string = g_getenv ("MONO_INLINE_CALLER_METHOD_NAME_LIMIT");
                if (limit_string != NULL) {
                        limit = limit_string;
                } else {
-                       limit = (char *) "";
+                       limit = "";
                }
        }
 
@@ -5257,35 +5667,48 @@ check_inline_caller_method_name_limit (MonoMethod *caller_method)
 #endif
 
 static void
-emit_init_rvar (MonoCompile *cfg, MonoInst *rvar, MonoType *rtype)
+emit_init_rvar (MonoCompile *cfg, int dreg, MonoType *rtype)
 {
        static double r8_0 = 0.0;
        MonoInst *ins;
 
-       switch (rvar->type) {
-       case STACK_I4:
-               MONO_EMIT_NEW_ICONST (cfg, rvar->dreg, 0);
-               break;
-       case STACK_I8:
-               MONO_EMIT_NEW_I8CONST (cfg, rvar->dreg, 0);
-               break;
-       case STACK_PTR:
-       case STACK_MP:
-       case STACK_OBJ:
-               MONO_EMIT_NEW_PCONST (cfg, rvar->dreg, 0);
-               break;
-       case STACK_R8:
+       int t = rtype->type;
+
+       if (t == MONO_TYPE_VALUETYPE && rtype->data.klass->enumtype)
+               t = mono_class_enum_basetype (rtype->data.klass)->type;
+       if (rtype->byref) {
+               MONO_EMIT_NEW_PCONST (cfg, dreg, NULL);
+       } else if (t >= MONO_TYPE_BOOLEAN && t <= MONO_TYPE_U4) {
+               MONO_EMIT_NEW_ICONST (cfg, dreg, 0);
+       } else if (t == MONO_TYPE_I8 || t == MONO_TYPE_U8) {
+               MONO_EMIT_NEW_I8CONST (cfg, dreg, 0);
+       } else if (t == MONO_TYPE_R4 || t == MONO_TYPE_R8) {
                MONO_INST_NEW (cfg, ins, OP_R8CONST);
                ins->type = STACK_R8;
                ins->inst_p0 = (void*)&r8_0;
-               ins->dreg = rvar->dreg;
+               ins->dreg = dreg;
                MONO_ADD_INS (cfg->cbb, ins);
-               break;
-       case STACK_VTYPE:
-               MONO_EMIT_NEW_VZERO (cfg, rvar->dreg, mono_class_from_mono_type (rtype));
-               break;
-       default:
-               g_assert_not_reached ();
+       } else if ((t == MONO_TYPE_VALUETYPE) || (t == MONO_TYPE_TYPEDBYREF) ||
+                  ((t == MONO_TYPE_GENERICINST) && mono_type_generic_inst_is_valuetype (rtype))) {
+               MONO_EMIT_NEW_VZERO (cfg, dreg, mono_class_from_mono_type (rtype));
+       } else if (((t == MONO_TYPE_VAR) || (t == MONO_TYPE_MVAR)) && mini_type_var_is_vt (cfg, rtype)) {
+               MONO_EMIT_NEW_VZERO (cfg, dreg, mono_class_from_mono_type (rtype));
+       } else {
+               MONO_EMIT_NEW_PCONST (cfg, dreg, NULL);
+       }
+}
+
+static void
+emit_init_local (MonoCompile *cfg, int local, MonoType *type)
+{
+       MonoInst *var = cfg->locals [local];
+       if (COMPILE_SOFT_FLOAT (cfg)) {
+               MonoInst *store;
+               int reg = alloc_dreg (cfg, var->type);
+               emit_init_rvar (cfg, reg, type);
+               EMIT_NEW_LOCSTORE (cfg, store, local, cfg->cbb->last_ins);
+       } else {
+               emit_init_rvar (cfg, var->dreg, type);
        }
 }
 
@@ -5450,7 +5873,7 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
                                        if (bb->last_ins && bb->last_ins->opcode == OP_NOT_REACHED) {
                                                cfg->cbb = bb;
 
-                                               emit_init_rvar (cfg, rvar, fsig->ret);
+                                               emit_init_rvar (cfg, rvar->dreg, fsig->ret);
                                        }
                                }
                        }
@@ -5464,7 +5887,7 @@ inline_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig,
                         * set, so set it to a dummy value.
                         */
                        if (!ret_var_set)
-                               emit_init_rvar (cfg, rvar, fsig->ret);
+                               emit_init_rvar (cfg, rvar->dreg, fsig->ret);
 
                        EMIT_NEW_TEMPLOAD (cfg, ins, rvar->inst_c0);
                        *sp++ = ins;
@@ -5832,9 +6255,6 @@ initialize_array_data (MonoMethod *method, gboolean aot, unsigned char *ip, Mono
                case MONO_TYPE_R4:
                        size = 4; break;
                case MONO_TYPE_R8:
-#ifdef ARM_FPU_FPA
-                       return NULL; /* stupid ARM FP swapped format */
-#endif
                case MONO_TYPE_I8:
                case MONO_TYPE_U8:
                        size = 8; break;
@@ -5918,6 +6338,7 @@ emit_optimized_ldloca_ir (MonoCompile *cfg, unsigned char *ip, unsigned char *en
 {
        int local, token;
        MonoClass *klass;
+       MonoType *type;
 
        if (size == 1) {
                local = ip [1];
@@ -5928,22 +6349,13 @@ emit_optimized_ldloca_ir (MonoCompile *cfg, unsigned char *ip, unsigned char *en
        }
        
        if (ip + 6 < end && (ip [0] == CEE_PREFIX1) && (ip [1] == CEE_INITOBJ) && ip_in_bb (cfg, cfg->cbb, ip + 1)) {
-               gboolean skip = FALSE;
-
                /* From the INITOBJ case */
                token = read32 (ip + 2);
                klass = mini_get_class (cfg->current_method, token, cfg->generic_context);
                CHECK_TYPELOAD (klass);
-               if (mini_type_is_reference (cfg, &klass->byval_arg)) {
-                       MONO_EMIT_NEW_PCONST (cfg, cfg->locals [local]->dreg, NULL);
-               } else if (MONO_TYPE_ISSTRUCT (&klass->byval_arg)) {
-                       MONO_EMIT_NEW_VZERO (cfg, cfg->locals [local]->dreg, klass);
-               } else {
-                       skip = TRUE;
-               }
-                       
-               if (!skip)
-                       return ip + 6;
+               type = &klass->byval_arg;
+               emit_init_local (cfg, local, type);
+               return ip + 6;
        }
 load_error:
        return NULL;
@@ -6024,13 +6436,13 @@ is_jit_optimizer_disabled (MonoMethod *m)
 }
 
 static gboolean
-is_supported_tail_call (MonoCompile *cfg, MonoMethod *method, MonoMethod *cmethod, MonoMethodSignature *fsig)
+is_supported_tail_call (MonoCompile *cfg, MonoMethod *method, MonoMethod *cmethod, MonoMethodSignature *fsig, int call_opcode)
 {
        gboolean supported_tail_call;
        int i;
 
-#ifdef MONO_ARCH_USE_OP_TAIL_CALL
-       supported_tail_call = MONO_ARCH_USE_OP_TAIL_CALL (mono_method_signature (method), mono_method_signature (cmethod));
+#ifdef MONO_ARCH_HAVE_OP_TAIL_CALL
+       supported_tail_call = mono_arch_tail_call_supported (mono_method_signature (method), mono_method_signature (cmethod));
 #else
        supported_tail_call = mono_metadata_signature_equal (mono_method_signature (method), mono_method_signature (cmethod)) && !MONO_TYPE_ISSTRUCT (mono_method_signature (cmethod)->ret);
 #endif
@@ -6049,6 +6461,8 @@ is_supported_tail_call (MonoCompile *cfg, MonoMethod *method, MonoMethod *cmetho
                supported_tail_call = FALSE;
        if (cmethod->wrapper_type && cmethod->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD)
                supported_tail_call = FALSE;
+       if (call_opcode != CEE_CALL)
+               supported_tail_call = FALSE;
 
        /* Debugging support */
 #if 0
@@ -6162,7 +6576,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
        MonoClass *klass;
        MonoClass *constrained_call = NULL;
        unsigned char *ip, *end, *target, *err_pos;
-       static double r8_0 = 0.0;
        MonoMethodSignature *sig;
        MonoGenericContext *generic_context = NULL;
        MonoGenericContainer *generic_container = NULL;
@@ -6249,6 +6662,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if (il_offsets [i] < header->code_size)
                                        mono_bitset_set_fast (seq_point_locs, il_offsets [i]);
                        }
+                       g_free (il_offsets);
+                       g_free (line_numbers);
                }
        }
 
@@ -6353,7 +6768,12 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        tblock->real_offset = clause->handler_offset;
                        tblock->flags |= BB_EXCEPTION_HANDLER;
 
-                       link_bblock (cfg, try_bb, tblock);
+                       /*
+                        * Linking the try block with the EH block hinders inlining as we won't be able to 
+                        * merge the bblocks from inlining and produce an artificial hole for no good reason.
+                        */
+                       if (COMPILE_LLVM (cfg))
+                               link_bblock (cfg, try_bb, tblock);
 
                        if (*(ip + clause->handler_offset) == CEE_POP)
                                tblock->flags |= BB_EXCEPTION_DEAD_OBJ;
@@ -6516,6 +6936,47 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                link_bblock (cfg, start_bblock, bblock);
        }
 
+       if (cfg->gsharedvt && cfg->method == method) {
+               MonoGSharedVtMethodInfo *info;
+               MonoInst *var, *locals_var;
+               int dreg;
+
+               info = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoGSharedVtMethodInfo));
+               info->method = cfg->method;
+               // FIXME: Free this
+               info->entries = g_ptr_array_new ();
+               cfg->gsharedvt_info = info;
+
+               var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+               /* prevent it from being register allocated */
+               //var->flags |= MONO_INST_VOLATILE;
+               cfg->gsharedvt_info_var = var;
+
+               ins = emit_get_rgctx_gsharedvt_method (cfg, mini_method_check_context_used (cfg, method), method, info);
+               MONO_EMIT_NEW_UNALU (cfg, OP_MOVE, var->dreg, ins->dreg);
+
+               /* Allocate locals */
+               locals_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+               /* prevent it from being register allocated */
+               //locals_var->flags |= MONO_INST_VOLATILE;
+               cfg->gsharedvt_locals_var = locals_var;
+
+               dreg = alloc_ireg (cfg);
+               MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADI4_MEMBASE, dreg, var->dreg, G_STRUCT_OFFSET (MonoGSharedVtMethodRuntimeInfo, locals_size));
+
+               MONO_INST_NEW (cfg, ins, OP_LOCALLOC);
+               ins->dreg = locals_var->dreg;
+               ins->sreg1 = dreg;
+               MONO_ADD_INS (cfg->cbb, ins);
+               cfg->gsharedvt_locals_var_ins = ins;
+               
+               cfg->flags |= MONO_CFG_HAS_ALLOCA;
+               /*
+               if (init_locals)
+                       ins->flags |= MONO_INST_INIT;
+               */
+       }
+
        /* at this point we know, if security is TRUE, that some code needs to be generated */
        if (security && (cfg->method == method)) {
                MonoInst *args [2];
@@ -6571,6 +7032,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                }
        }
 
+       CHECK_CFG_EXCEPTION;
+
        if (header->code_size == 0)
                UNVERIFIED;
 
@@ -6600,7 +7063,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        /* FIXME: Is there a better way to do this?
                           We need the variable live for the duration
                           of the whole method. */
-                       cfg->args [0]->flags |= MONO_INST_INDIRECT;
+                       cfg->args [0]->flags |= MONO_INST_VOLATILE;
                }
        }
 
@@ -6722,6 +7185,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        // FIXME: Enable this
                        //if (!(cfg->cbb->last_ins && cfg->cbb->last_ins->opcode == OP_SEQ_POINT)) {
                        NEW_SEQ_POINT (cfg, ins, ip - header->code, intr_loc);
+                       if (sp != stack_start)
+                               ins->flags |= MONO_INST_NONEMPTY_STACK;
                        MONO_ADD_INS (cfg->cbb, ins);
 
                        if (sym_seq_points)
@@ -7060,8 +7525,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (mono_security_cas_enabled ())
                                CHECK_CFG_EXCEPTION;
 
-#ifdef MONO_ARCH_USE_OP_TAIL_CALL
-                       {
+                       if (ARCH_HAVE_OP_TAIL_CALL) {
                                MonoMethodSignature *fsig = mono_method_signature (cmethod);
                                int i, n;
 
@@ -7079,17 +7543,16 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                mono_arch_emit_call (cfg, call);
                                MONO_ADD_INS (bblock, (MonoInst*)call);
-                       }
-#else
-                       for (i = 0; i < num_args; ++i)
-                               /* Prevent arguments from being optimized away */
-                               arg_array [i]->flags |= MONO_INST_VOLATILE;
+                       } else {
+                               for (i = 0; i < num_args; ++i)
+                                       /* Prevent arguments from being optimized away */
+                                       arg_array [i]->flags |= MONO_INST_VOLATILE;
 
-                       MONO_INST_NEW_CALL (cfg, call, OP_JMP);
-                       ins = (MonoInst*)call;
-                       ins->inst_p0 = cmethod;
-                       MONO_ADD_INS (bblock, ins);
-#endif
+                               MONO_INST_NEW_CALL (cfg, call, OP_JMP);
+                               ins = (MonoInst*)call;
+                               ins->inst_p0 = cmethod;
+                               MONO_ADD_INS (bblock, ins);
+                       }
 
                        ip += 5;
                        start_new_bblock = 1;
@@ -7111,6 +7574,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        MonoInst *vtable_arg = NULL;
                        gboolean check_this = FALSE;
                        gboolean supported_tail_call = FALSE;
+                       gboolean tail_call = FALSE;
                        gboolean need_seq_point = FALSE;
                        guint32 call_opcode = *ip;
                        gboolean emit_widen = TRUE;
@@ -7228,7 +7692,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                        if (fsig->pinvoke) {
                                                MonoMethod *wrapper = mono_marshal_get_native_wrapper (cmethod,
-                                                       check_for_pending_exc, FALSE);
+                                                       check_for_pending_exc, cfg->compile_aot);
                                                fsig = mono_method_signature (wrapper);
                                        } else if (constrained_call) {
                                                fsig = mono_method_signature (cmethod);
@@ -7239,7 +7703,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                mono_save_token_info (cfg, image, token, cil_method);
 
-                               if (!MONO_TYPE_IS_VOID (fsig->ret) && !sym_seq_points) {
+                               if (!MONO_TYPE_IS_VOID (fsig->ret)) {
                                        /*
                                         * Need to emit an implicit seq point after every non-void call so single stepping through nested calls like
                                         * foo (bar (), baz ())
@@ -7250,7 +7714,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                         * int i = foo ();
                                         */
                                        /* Special case a few common successor opcodes */
-                                       if (!(ip + 5 < end && ip [5] == CEE_POP))
+                                       if (!(ip + 5 < end && (ip [5] == CEE_POP || ip [5] == CEE_NOP)) && !(seq_point_locs && mono_bitset_test_fast (seq_point_locs, ip + 5 - header->code)))
                                                need_seq_point = TRUE;
                                }
 
@@ -7291,25 +7755,73 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        /*
                                         * Constrained calls need to behave differently at runtime dependending on whenever the receiver is instantiated as ref type or as a vtype.
                                         */
-                                       /* Special case Object:ToString () as its easy to implement */
-                                       if (cmethod->klass == mono_defaults.object_class && !strcmp (cmethod->name, "ToString")) {
-                                               MonoInst *args [3];
+                                       if ((cmethod->klass != mono_defaults.object_class) && constrained_call->valuetype && cmethod->klass->valuetype) {
+                                               /* The 'Own method' case below */
+                                       } else if (cmethod->klass->image != mono_defaults.corlib && !(cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE) && !cmethod->klass->valuetype) {
+                                               /* 'The type parameter is instantiated as a reference type' case below. */
+                                       } else if (((cmethod->klass == mono_defaults.object_class) || (cmethod->klass->flags & TYPE_ATTRIBUTE_INTERFACE) || (!cmethod->klass->valuetype && cmethod->klass->image != mono_defaults.corlib)) &&
+                                                          (MONO_TYPE_IS_VOID (fsig->ret) || MONO_TYPE_IS_PRIMITIVE (fsig->ret) || MONO_TYPE_IS_REFERENCE (fsig->ret) || mini_is_gsharedvt_type (cfg, fsig->ret)) &&
+                                                          (fsig->param_count == 0 || (!fsig->hasthis && fsig->param_count == 1) || (fsig->param_count == 1 && (MONO_TYPE_IS_REFERENCE (fsig->params [0]) || mini_is_gsharedvt_type (cfg, fsig->params [0]))))) {
+                                               MonoInst *args [16];
+
+                                               /*
+                                                * This case handles calls to
+                                                * - object:ToString()/Equals()/GetHashCode(),
+                                                * - System.IComparable<T>:CompareTo()
+                                                * - System.IEquatable<T>:Equals ()
+                                                * plus some simple interface calls enough to support AsyncTaskMethodBuilder.
+                                                */
 
                                                args [0] = sp [0];
-                                               EMIT_NEW_METHODCONST (cfg, args [1], cmethod);
+                                               if (mono_method_check_context_used (cmethod))
+                                                       args [1] = emit_get_rgctx_method (cfg, mono_method_check_context_used (cmethod), cmethod, MONO_RGCTX_INFO_METHOD);
+                                               else
+                                                       EMIT_NEW_METHODCONST (cfg, args [1], cmethod);
                                                args [2] = emit_get_rgctx_klass (cfg, mono_class_check_context_used (constrained_call), constrained_call, MONO_RGCTX_INFO_KLASS);
-                                               ins = mono_emit_jit_icall (cfg, mono_object_tostring_gsharedvt, args);
-                                               goto call_end;
-                                       } else if (cmethod->klass == mono_defaults.object_class && !strcmp (cmethod->name, "GetHashCode")) {
-                                               MonoInst *args [3];
 
-                                               args [0] = sp [0];
-                                               EMIT_NEW_METHODCONST (cfg, args [1], cmethod);
-                                               args [2] = emit_get_rgctx_klass (cfg, mono_class_check_context_used (constrained_call), constrained_call, MONO_RGCTX_INFO_KLASS);
-                                               ins = mono_emit_jit_icall (cfg, mono_object_gethashcode_gsharedvt, args);
+                                               /* !fsig->hasthis is for the wrapper for the Object.GetType () icall */
+                                               if (fsig->hasthis && fsig->param_count) {
+                                                       /* Pass the arguments using a localloc-ed array using the format expected by runtime_invoke () */
+                                                       MONO_INST_NEW (cfg, ins, OP_LOCALLOC_IMM);
+                                                       ins->dreg = alloc_preg (cfg);
+                                                       ins->inst_imm = fsig->param_count * sizeof (mgreg_t);
+                                                       MONO_ADD_INS (cfg->cbb, ins);
+                                                       args [4] = ins;
+
+                                                       if (mini_is_gsharedvt_type (cfg, fsig->params [0])) {
+                                                               int addr_reg;
+
+                                                               args [3] = emit_get_gsharedvt_info_klass (cfg, mono_class_from_mono_type (fsig->params [0]), MONO_RGCTX_INFO_CLASS_BOX_TYPE);
+
+                                                               EMIT_NEW_VARLOADA_VREG (cfg, ins, sp [1]->dreg, fsig->params [0]);
+                                                               addr_reg = ins->dreg;
+                                                               EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, args [4]->dreg, 0, addr_reg);
+                                                       } else {
+                                                               EMIT_NEW_ICONST (cfg, args [3], 0);
+                                                               EMIT_NEW_STORE_MEMBASE (cfg, ins, OP_STORE_MEMBASE_REG, args [4]->dreg, 0, sp [1]->dreg);
+                                                       }
+                                               } else {
+                                                       EMIT_NEW_ICONST (cfg, args [3], 0);
+                                                       EMIT_NEW_ICONST (cfg, args [4], 0);
+                                               }
+                                               ins = mono_emit_jit_icall (cfg, mono_gsharedvt_constrained_call, args);
+                                               emit_widen = FALSE;
+
+                                               if (mini_is_gsharedvt_type (cfg, fsig->ret)) {
+                                                       ins = handle_unbox_gsharedvt (cfg, mono_class_from_mono_type (fsig->ret), ins, &bblock);
+                                               } else if (MONO_TYPE_IS_PRIMITIVE (fsig->ret)) {
+                                                       MonoInst *add;
+
+                                                       /* Unbox */
+                                                       NEW_BIALU_IMM (cfg, add, OP_ADD_IMM, alloc_dreg (cfg, STACK_MP), ins->dreg, sizeof (MonoObject));
+                                                       MONO_ADD_INS (cfg->cbb, add);
+                                                       /* Load value */
+                                                       NEW_LOAD_MEMBASE_TYPE (cfg, ins, fsig->ret, add->dreg, 0);
+                                                       MONO_ADD_INS (cfg->cbb, ins);
+                                                       /* ins represents the call result */
+                                               }
+
                                                goto call_end;
-                                       } else if (constrained_call->valuetype && cmethod->klass->valuetype) {
-                                               /* The 'Own method' case below */
                                        } else {
                                                GSHAREDVT_FAILURE (*ip);
                                        }
@@ -7325,8 +7837,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                         */
                                        EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &constrained_call->byval_arg, sp [0]->dreg, 0);
                                        ins->klass = constrained_call;
-                                       sp [0] = handle_box (cfg, ins, constrained_call, mono_class_check_context_used (constrained_call));
-                                       bblock = cfg->cbb;
+                                       sp [0] = handle_box (cfg, ins, constrained_call, mono_class_check_context_used (constrained_call), &bblock);
                                        CHECK_CFG_EXCEPTION;
                                } else if (!constrained_call->valuetype) {
                                        int dreg = alloc_ireg_ref (cfg);
@@ -7360,8 +7871,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        /* Enum implements some interfaces, so treat this as the first case */
                                                        EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &constrained_call->byval_arg, sp [0]->dreg, 0);
                                                        ins->klass = constrained_call;
-                                                       sp [0] = handle_box (cfg, ins, constrained_call, mono_class_check_context_used (constrained_call));
-                                                       bblock = cfg->cbb;
+                                                       sp [0] = handle_box (cfg, ins, constrained_call, mono_class_check_context_used (constrained_call), &bblock);
                                                        CHECK_CFG_EXCEPTION;
                                                }
                                        }
@@ -7392,53 +7902,13 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                         * If the callee is a shared method, then its static cctor
                         * might not get called after the call was patched.
                         */
-                       if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable_impl (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
+                       if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
                                emit_generic_class_init (cfg, cmethod->klass);
                                CHECK_TYPELOAD (cmethod->klass);
                        }
 
-                       if (cmethod && ((cmethod->flags & METHOD_ATTRIBUTE_STATIC) || cmethod->klass->valuetype) &&
-                                       (cmethod->klass->generic_class || cmethod->klass->generic_container)) {
-                               gboolean sharable = FALSE;
-
-                               if (mono_method_is_generic_sharable_impl (cmethod, TRUE)) {
-                                       sharable = TRUE;
-                               } else {
-                                       gboolean sharing_enabled = mono_class_generic_sharing_enabled (cmethod->klass);
-                                       MonoGenericContext *context = mini_class_get_context (cmethod->klass);
-                                       gboolean context_sharable = mono_generic_context_is_sharable (context, TRUE);
-
-                                       sharable = sharing_enabled && context_sharable;
-                               }
-
-                               /*
-                                * Pass vtable iff target method might
-                                * be shared, which means that sharing
-                                * is enabled for its class and its
-                                * context is sharable (and it's not a
-                                * generic method).
-                                */
-                               if (sharable && !(mini_method_get_context (cmethod) && mini_method_get_context (cmethod)->method_inst))
-                                       pass_vtable = TRUE;
-                       }
-
-                       if (cmethod && mini_method_get_context (cmethod) &&
-                                       mini_method_get_context (cmethod)->method_inst) {
-                               g_assert (!pass_vtable);
-
-                               if (mono_method_is_generic_sharable_impl (cmethod, TRUE)) {
-                                       pass_mrgctx = TRUE;
-                               } else {
-                                       gboolean sharing_enabled = mono_class_generic_sharing_enabled (cmethod->klass);
-                                       MonoGenericContext *context = mini_method_get_context (cmethod);
-                                       gboolean context_sharable = mono_generic_context_is_sharable (context, TRUE);
-
-                                       if (sharing_enabled && context_sharable)
-                                               pass_mrgctx = TRUE;
-                                       if (cfg->gsharedvt && mini_is_gsharedvt_signature (cfg, fsig))
-                                               pass_mrgctx = TRUE;
-                               }
-                       }
+                       if (cmethod)
+                               check_method_sharing (cfg, cmethod, &pass_vtable, &pass_mrgctx);
 
                        if (cfg->generic_sharing_context && cmethod) {
                                MonoGenericContext *cmethod_context = mono_method_get_context (cmethod);
@@ -7546,7 +8016,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                g_assert (cmethod->is_inflated);
                                        imt_arg = emit_get_rgctx_method (cfg, context_used,
                                                                                                         cmethod, MONO_RGCTX_INFO_METHOD);
-                                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, sp, sp [0], imt_arg, NULL);
+                                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, FALSE, sp, sp [0], imt_arg, NULL);
                                } else {
                                        this_temp = mono_compile_create_var (cfg, type_from_stack_type (sp [0]), OP_LOCAL);
                                        NEW_TEMPSTORE (cfg, store, this_temp->inst_c0, sp [0]);
@@ -7733,7 +8203,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        /* FIXME: only do this for generic methods if
                           they are not shared! */
                        if (context_used && !imt_arg && !array_rank && !delegate_invoke &&
-                               (!mono_method_is_generic_sharable_impl (cmethod, TRUE) ||
+                               (!mono_method_is_generic_sharable (cmethod, TRUE) ||
                                 !mono_class_generic_sharing_enabled (cmethod->klass)) &&
                                (!virtual || MONO_METHOD_IS_FINAL (cmethod) ||
                                 !(cmethod->flags & METHOD_ATTRIBUTE_VIRTUAL))) {
@@ -7816,7 +8286,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, TRUE);
                                        EMIT_NEW_STORE_MEMBASE_TYPE (cfg, ins, fsig->params [fsig->param_count - 1], addr->dreg, 0, val->dreg);
                                        if (cfg->gen_write_barriers && val->type == STACK_OBJ && !(val->opcode == OP_PCONST && val->inst_c0 == 0))
-                                               emit_write_barrier (cfg, addr, val, 0);
+                                               emit_write_barrier (cfg, addr, val);
                                } else if (strcmp (cmethod->name, "Get") == 0) { /* array Get */
                                        addr = mini_emit_ldelema_ins (cfg, cmethod, sp, ip, FALSE);
 
@@ -7846,11 +8316,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        /* FIXME: Enabling TAILC breaks some inlining/stack trace/etc tests */
                        /* FIXME: runtime generic context pointer for jumps? */
                        /* FIXME: handle this for generic sharing eventually */
-                       if (cmethod && 
-                               ((((ins_flag & MONO_INST_TAILCALL) && (call_opcode == CEE_CALL))
-                                 ))//|| ((cfg->opt & MONO_OPT_TAILC) && *ip == CEE_CALL && ip [5] == CEE_RET))
-                               && !vtable_arg && !cfg->generic_sharing_context && is_supported_tail_call (cfg, method, cmethod, fsig))
+                       if (cmethod && (ins_flag & MONO_INST_TAILCALL) &&
+                               !vtable_arg && !cfg->generic_sharing_context && is_supported_tail_call (cfg, method, cmethod, fsig, call_opcode))
                                supported_tail_call = TRUE;
+
                        if (supported_tail_call) {
                                MonoCallInst *call;
 
@@ -7859,45 +8328,44 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                //printf ("HIT: %s -> %s\n", mono_method_full_name (cfg->method, TRUE), mono_method_full_name (cmethod, TRUE));
 
-#ifdef MONO_ARCH_USE_OP_TAIL_CALL
-                               /* Handle tail calls similarly to calls */
-                               call = mono_emit_call_args (cfg, mono_method_signature (cmethod), sp, FALSE, FALSE, TRUE, FALSE, FALSE);
-#else
-                               MONO_INST_NEW_CALL (cfg, call, OP_JMP);
-                               call->tail_call = TRUE;
-                               call->method = cmethod;
-                               call->signature = mono_method_signature (cmethod);
-
-                               /*
-                                * We implement tail calls by storing the actual arguments into the 
-                                * argument variables, then emitting a CEE_JMP.
-                                */
-                               for (i = 0; i < n; ++i) {
-                                       /* Prevent argument from being register allocated */
-                                       arg_array [i]->flags |= MONO_INST_VOLATILE;
-                                       EMIT_NEW_ARGSTORE (cfg, ins, i, sp [i]);
-                               }
-#endif
+                               if (ARCH_HAVE_OP_TAIL_CALL) {
+                                       /* Handle tail calls similarly to normal calls */
+                                       tail_call = TRUE;
+                               } else {
+                                       MONO_INST_NEW_CALL (cfg, call, OP_JMP);
+                                       call->tail_call = TRUE;
+                                       call->method = cmethod;
+                                       call->signature = mono_method_signature (cmethod);
 
-                               ins = (MonoInst*)call;
-                               ins->inst_p0 = cmethod;
-                               ins->inst_p1 = arg_array [0];
-                               MONO_ADD_INS (bblock, ins);
-                               link_bblock (cfg, bblock, end_bblock);                  
-                               start_new_bblock = 1;
+                                       /*
+                                        * We implement tail calls by storing the actual arguments into the 
+                                        * argument variables, then emitting a CEE_JMP.
+                                        */
+                                       for (i = 0; i < n; ++i) {
+                                               /* Prevent argument from being register allocated */
+                                               arg_array [i]->flags |= MONO_INST_VOLATILE;
+                                               EMIT_NEW_ARGSTORE (cfg, ins, i, sp [i]);
+                                       }
+                                       ins = (MonoInst*)call;
+                                       ins->inst_p0 = cmethod;
+                                       ins->inst_p1 = arg_array [0];
+                                       MONO_ADD_INS (bblock, ins);
+                                       link_bblock (cfg, bblock, end_bblock);                  
+                                       start_new_bblock = 1;
 
-                               // FIXME: Eliminate unreachable epilogs
+                                       // FIXME: Eliminate unreachable epilogs
 
-                               /*
-                                * OP_TAILCALL has no return value, so skip the CEE_RET if it is
-                                * only reachable from this call.
-                                */
-                               GET_BBLOCK (cfg, tblock, ip + 5);
-                               if (tblock == bblock || tblock->in_count == 0)
-                                       skip_ret = TRUE;
-                               push_res = FALSE;
+                                       /*
+                                        * OP_TAILCALL has no return value, so skip the CEE_RET if it is
+                                        * only reachable from this call.
+                                        */
+                                       GET_BBLOCK (cfg, tblock, ip + 5);
+                                       if (tblock == bblock || tblock->in_count == 0)
+                                               skip_ret = TRUE;
+                                       push_res = FALSE;
 
-                               goto call_end;
+                                       goto call_end;
+                               }
                        }
 
                        /* 
@@ -7908,14 +8376,33 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                         * change the called method to a dummy wrapper, and resolve that wrapper
                         * to the real method in mono_jit_compile_method ().
                         */
-                       if (cfg->method->wrapper_type == MONO_WRAPPER_SYNCHRONIZED && mono_marshal_method_from_wrapper (cfg->method) == cmethod)
-                               cmethod = mono_marshal_get_synchronized_inner_wrapper (cmethod);
+                       if (cfg->method->wrapper_type == MONO_WRAPPER_SYNCHRONIZED) {
+                               MonoMethod *orig = mono_marshal_method_from_wrapper (cfg->method);
+                               if (cmethod == orig || (cmethod->is_inflated && mono_method_get_declaring_generic_method (cmethod) == orig))
+                                       cmethod = mono_marshal_get_synchronized_inner_wrapper (cmethod);
+                       }
 
                        /* Common call */
                        INLINE_FAILURE ("call");
-                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, sp, virtual ? sp [0] : NULL,
+                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, tail_call, sp, virtual ? sp [0] : NULL,
                                                                                          imt_arg, vtable_arg);
 
+                       if (tail_call) {
+                               link_bblock (cfg, bblock, end_bblock);                  
+                               start_new_bblock = 1;
+
+                               // FIXME: Eliminate unreachable epilogs
+
+                               /*
+                                * OP_TAILCALL has no return value, so skip the CEE_RET if it is
+                                * only reachable from this call.
+                                */
+                               GET_BBLOCK (cfg, tblock, ip + 5);
+                               if (tblock == bblock || tblock->in_count == 0)
+                                       skip_ret = TRUE;
+                               push_res = FALSE;
+                       }
+
                        call_end:
 
                        /* End of call, INS should contain the result of the call, if any */
@@ -7945,7 +8432,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        ins_flag = 0;
                        constrained_call = NULL;
                        if (need_seq_point)
-                               emit_seq_point (cfg, method, ip, FALSE);
+                               emit_seq_point (cfg, method, ip, FALSE, TRUE);
                        break;
                }
                case CEE_RET:
@@ -7972,6 +8459,9 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        cfg->ret_var_set = TRUE;
                                } 
                        } else {
+                               if (cfg->lmf_var && cfg->cbb->in_count)
+                                       emit_pop_lmf (cfg);
+
                                if (cfg->ret) {
                                        MonoType *ret_type = mono_method_signature (method)->ret;
 
@@ -8008,7 +8498,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        ins->klass = mono_class_from_mono_type (ret_type);
                                                }
                                        } else {
-#ifdef MONO_ARCH_SOFT_FLOAT
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
                                                if (COMPILE_SOFT_FLOAT (cfg) && !ret_type->byref && ret_type->type == MONO_TYPE_R4) {
                                                        MonoInst *iargs [1];
                                                        MonoInst *conv;
@@ -8354,7 +8844,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        MONO_ADD_INS (bblock, ins);
 
                        if (cfg->gen_write_barriers && *ip == CEE_STIND_REF && method->wrapper_type != MONO_WRAPPER_WRITE_BARRIER && !((sp [1]->opcode == OP_PCONST) && (sp [1]->inst_p0 == 0)))
-                               emit_write_barrier (cfg, sp [0], sp [1], -1);
+                               emit_write_barrier (cfg, sp [0], sp [1]);
 
                        inline_costs += 1;
                        ++ip;
@@ -8565,7 +9055,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                MONO_ADD_INS (cfg->cbb, store);
 
                                if (cfg->gen_write_barriers && cfg->method->wrapper_type != MONO_WRAPPER_WRITE_BARRIER)
-                                       emit_write_barrier (cfg, sp [0], sp [1], -1);
+                                       emit_write_barrier (cfg, sp [0], sp [1]);
                        } else {
                                mini_emit_stobj (cfg, sp [0], sp [1], klass, FALSE);
                        }
@@ -8730,7 +9220,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ensure_method_is_allowed_to_call_method (cfg, method, cmethod, bblock, ip);
                        }
 
-                       if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable_impl (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
+                       if (cfg->generic_sharing_context && cmethod && cmethod->klass != method->klass && cmethod->klass->generic_class && mono_method_is_generic_sharable (cmethod, TRUE) && mono_class_needs_cctor_run (cmethod->klass, method)) {
                                emit_generic_class_init (cfg, cmethod->klass);
                                CHECK_TYPELOAD (cmethod->klass);
                        }
@@ -8743,7 +9233,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        */
 
                        if (cmethod->klass->valuetype && mono_class_generic_sharing_enabled (cmethod->klass) &&
-                                       mono_method_is_generic_sharable_impl (cmethod, TRUE)) {
+                                       mono_method_is_generic_sharable (cmethod, TRUE)) {
                                if (cmethod->is_inflated && mono_method_get_context (cmethod)->method_inst) {
                                        mono_class_vtable (cfg->domain, cmethod->klass);
                                        CHECK_TYPELOAD (cmethod->klass);
@@ -8840,13 +9330,13 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                /* we simply pass a null pointer */
                                EMIT_NEW_PCONST (cfg, *sp, NULL); 
                                /* now call the string ctor */
-                               alloc = mono_emit_method_call_full (cfg, cmethod, fsig, sp, NULL, NULL, NULL);
+                               alloc = mono_emit_method_call_full (cfg, cmethod, fsig, FALSE, sp, NULL, NULL, NULL);
                        } else {
                                MonoInst* callvirt_this_arg = NULL;
                                
                                if (cmethod->klass->valuetype) {
                                        iargs [0] = mono_compile_create_var (cfg, &cmethod->klass->byval_arg, OP_LOCAL);
-                                       MONO_EMIT_NEW_VZERO (cfg, iargs [0]->dreg, cmethod->klass);
+                                       emit_init_rvar (cfg, iargs [0]->dreg, &cmethod->klass->byval_arg);
                                        EMIT_NEW_TEMPLOADA (cfg, *sp, iargs [0]->inst_c0);
 
                                        alloc = NULL;
@@ -8860,8 +9350,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        alloc = handle_alloc (cfg, cmethod->klass, FALSE, context_used);
                                        *sp = alloc;
                                } else {
-                                       MonoVTable *vtable = mono_class_vtable (cfg->domain, cmethod->klass);
+                                       MonoVTable *vtable = NULL;
 
+                                       if (!cfg->compile_aot)
+                                               vtable = mono_class_vtable (cfg->domain, cmethod->klass);
                                        CHECK_TYPELOAD (cmethod->klass);
 
                                        /*
@@ -8869,11 +9361,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                         * call in mono_jit_runtime_invoke () can abort the finalizer thread.
                                         * As a workaround, we call class cctors before allocating objects.
                                         */
-                                       if (mini_field_access_needs_cctor_run (cfg, method, vtable) && !(g_slist_find (class_inits, vtable))) {
-                                               mono_emit_abs_call (cfg, MONO_PATCH_INFO_CLASS_INIT, vtable->klass, helper_sig_class_init_trampoline, NULL);
+                                       if (mini_field_access_needs_cctor_run (cfg, method, cmethod->klass, vtable) && !(g_slist_find (class_inits, cmethod->klass))) {
+                                               mono_emit_abs_call (cfg, MONO_PATCH_INFO_CLASS_INIT, cmethod->klass, helper_sig_class_init_trampoline, NULL);
                                                if (cfg->verbose_level > 2)
                                                        printf ("class %s.%s needs init call for ctor\n", cmethod->klass->name_space, cmethod->klass->name);
-                                               class_inits = g_slist_prepend (class_inits, vtable);
+                                               class_inits = g_slist_prepend (class_inits, cmethod->klass);
                                        }
 
                                        alloc = handle_alloc (cfg, cmethod->klass, FALSE, 0);
@@ -8914,7 +9406,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                // FIXME-VT: Clean this up
                                                if (cfg->gsharedvt && mini_is_gsharedvt_signature (cfg, fsig))
                                                        GSHAREDVT_FAILURE(*ip);
-                                               mono_emit_method_call_full (cfg, cmethod, fsig, sp, callvirt_this_arg, NULL, NULL);
+                                               mono_emit_method_call_full (cfg, cmethod, fsig, FALSE, sp, callvirt_this_arg, NULL, NULL);
                                        }
                                } else if (cfg->gsharedvt && mini_is_gsharedvt_signature (cfg, fsig)) {
                                        MonoInst *addr;
@@ -8922,7 +9414,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        addr = emit_get_rgctx_gsharedvt_call (cfg, context_used, fsig, cmethod, MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE);
                                        mono_emit_calli (cfg, fsig, sp, addr, NULL, vtable_arg);
                                } else if (context_used &&
-                                               (!mono_method_is_generic_sharable_impl (cmethod, TRUE) ||
+                                               (!mono_method_is_generic_sharable (cmethod, TRUE) ||
                                                        !mono_class_generic_sharing_enabled (cmethod->klass))) {
                                        MonoInst *cmethod_addr;
 
@@ -8932,7 +9424,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        mono_emit_calli (cfg, fsig, sp, cmethod_addr, NULL, vtable_arg);
                                } else {
                                        INLINE_FAILURE ("ctor call");
-                                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, sp,
+                                       ins = mono_emit_method_call_full (cfg, cmethod, fsig, FALSE, sp,
                                                                                                          callvirt_this_arg, NULL, vtable_arg);
                                }
                        }
@@ -8979,7 +9471,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        EMIT_NEW_PCONST (cfg, args [2], mono_domain_alloc0 (cfg->domain, sizeof (gpointer)));
 
                                /*The wrapper doesn't inline well so the bloat of inlining doesn't pay off.*/
+
+                               save_cast_details (cfg, klass, sp [0]->dreg, TRUE, &bblock);
                                *sp++ = mono_emit_method_call (cfg, mono_castclass, args, NULL);
+                               reset_cast_details (cfg);
                                ip += 5;
                                inline_costs += 2;
                        } else if (!context_used && (mono_class_is_marshalbyref (klass) || klass->flags & TYPE_ATTRIBUTE_INTERFACE)) {
@@ -8990,8 +9485,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                mono_castclass = mono_marshal_get_castclass (klass); 
                                iargs [0] = sp [0];
                                
+                               save_cast_details (cfg, klass, sp [0]->dreg, TRUE, &bblock);
                                costs = inline_method (cfg, mono_castclass, mono_method_signature (mono_castclass), 
                                                           iargs, ip, cfg->real_offset, dont_inline, TRUE);
+                               reset_cast_details (cfg);
                                CHECK_CFG_EXCEPTION;
                                g_assert (costs > 0);
                                
@@ -9085,60 +9582,8 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        context_used = mini_class_check_context_used (cfg, klass);
 
                        if (mini_is_gsharedvt_klass (cfg, klass)) {
-                               MonoInst *obj, *addr, *klass_inst, *is_ref, *args[16];
-                               MonoBasicBlock *is_ref_bb, *end_bb;
-                               int dreg, addr_reg;
-
-                               /* Need to check for nullable types at runtime, but those are disabled in mini_is_gsharedvt_sharable_method*/
-                               if (mono_class_is_nullable (klass))
-                                       GSHAREDVT_FAILURE (*ip);
-
-                               obj = *sp;
-
-                               klass_inst = emit_get_rgctx_klass (cfg, context_used, klass, MONO_RGCTX_INFO_KLASS);
-
-                               /* obj */
-                               args [0] = obj;
-
-                               /* klass */
-                               args [1] = klass_inst;
-
-                               /* CASTCLASS */
-                               obj = mono_emit_jit_icall (cfg, mono_object_castclass, args);
-
-                               NEW_BBLOCK (cfg, is_ref_bb);
-                               NEW_BBLOCK (cfg, end_bb);
-                               is_ref = emit_get_rgctx_klass (cfg, context_used, klass,
-                                                                                          MONO_RGCTX_INFO_CLASS_IS_REF);
-                               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, is_ref->dreg, 1);
-                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_IBEQ, is_ref_bb);
-
-                               /* This will contain either the address of the unboxed vtype, or an address of the temporary where the ref is stored */
-                               addr_reg = alloc_dreg (cfg, STACK_MP);
-
-                               /* Non-ref case */
-                               /* UNBOX */
-                               NEW_BIALU_IMM (cfg, addr, OP_ADD_IMM, addr_reg, obj->dreg, sizeof (MonoObject));
-                               MONO_ADD_INS (cfg->cbb, addr);
-
-                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
-
-                               /* Ref case */
-                               MONO_START_BB (cfg, is_ref_bb);
-
-                               /* Save the ref to a temporary */
-                               dreg = alloc_ireg (cfg);
-                               EMIT_NEW_VARLOADA_VREG (cfg, addr, dreg, &klass->byval_arg);
-                               addr->dreg = addr_reg;
-                               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, addr->dreg, 0, obj->dreg);
-                               MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_BR, end_bb);
-
-                               MONO_START_BB (cfg, end_bb);
-                               bblock = cfg->cbb;
-
-                               /* LDOBJ */
-                               EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, ins, &klass->byval_arg, addr_reg, 0);
-                               *sp++ = ins;
+                               *sp = handle_unbox_gsharedvt (cfg, klass, *sp, &bblock);
+                               sp ++;
 
                                ip += 5;
                                inline_costs += 2;
@@ -9316,8 +9761,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                break;
                        }
 
-                       *sp++ = handle_box (cfg, val, klass, context_used);
-                       bblock = cfg->cbb;
+                       *sp++ = handle_box (cfg, val, klass, context_used, &bblock);
 
                        CHECK_CFG_EXCEPTION;
                        ip += 5;
@@ -9488,11 +9932,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                                context_used = mini_class_check_context_used (cfg, klass);
 
-                                               offset_ins = emit_get_rgctx_field (cfg, context_used, field, MONO_RGCTX_INFO_FIELD_OFFSET);
+                                               offset_ins = emit_get_gsharedvt_info (cfg, field, MONO_RGCTX_INFO_FIELD_OFFSET);
                                                dreg = alloc_ireg_mp (cfg);
                                                EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, sp [0]->dreg, offset_ins->dreg);
+                                               /* The decomposition will call mini_emit_stobj () which will emit a wbarrier if needed */
                                                EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, field->type, dreg, 0, sp [1]->dreg);
-                                               // FIXME-VT: wbarriers ?
                                        } else {
                                                EMIT_NEW_STORE_MEMBASE_TYPE (cfg, store, field->type, sp [0]->dreg, foffset, sp [1]->dreg);
                                        }
@@ -9506,7 +9950,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
 
                                        dreg = alloc_ireg_mp (cfg);
                                        EMIT_NEW_BIALU_IMM (cfg, ptr, OP_PADD_IMM, dreg, sp [0]->dreg, foffset);
-                                       emit_write_barrier (cfg, ptr, sp [1], -1);
+                                       emit_write_barrier (cfg, ptr, sp [1]);
                                }
 
                                        store->flags |= ins_flag;
@@ -9577,7 +10021,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                if (mini_is_gsharedvt_klass (cfg, klass)) {
                                                        MonoInst *offset_ins;
 
-                                                       offset_ins = emit_get_rgctx_field (cfg, context_used, field, MONO_RGCTX_INFO_FIELD_OFFSET);
+                                                       offset_ins = emit_get_gsharedvt_info (cfg, field, MONO_RGCTX_INFO_FIELD_OFFSET);
                                                        EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, sp [0]->dreg, offset_ins->dreg);
                                                } else {
                                                        EMIT_NEW_BIALU_IMM (cfg, ins, OP_PADD_IMM, dreg, sp [0]->dreg, foffset);
@@ -9594,7 +10038,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        if (mini_is_gsharedvt_klass (cfg, klass)) {
                                                MonoInst *offset_ins;
 
-                                               offset_ins = emit_get_rgctx_field (cfg, context_used, field, MONO_RGCTX_INFO_FIELD_OFFSET);
+                                               offset_ins = emit_get_gsharedvt_info (cfg, field, MONO_RGCTX_INFO_FIELD_OFFSET);
                                                dreg = alloc_ireg_mp (cfg);
                                                EMIT_NEW_BIALU (cfg, ins, OP_PADD, dreg, sp [0]->dreg, offset_ins->dreg);
                                                EMIT_NEW_LOAD_MEMBASE_TYPE (cfg, load, field->type, dreg, 0);
@@ -9750,16 +10194,19 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                EMIT_NEW_FIELDCONST (cfg, iargs [1], field);
                                ins = mono_emit_jit_icall (cfg, mono_class_static_field_address, iargs);
                        } else {
-                               MonoVTable *vtable = mono_class_vtable (cfg->domain, klass);
+                               MonoVTable *vtable = NULL;
 
+                               if (!cfg->compile_aot)
+                                       vtable = mono_class_vtable (cfg->domain, klass);
                                CHECK_TYPELOAD (klass);
+
                                if (!addr) {
-                                       if (mini_field_access_needs_cctor_run (cfg, method, vtable)) {
-                                               if (!(g_slist_find (class_inits, vtable))) {
-                                                       mono_emit_abs_call (cfg, MONO_PATCH_INFO_CLASS_INIT, vtable->klass, helper_sig_class_init_trampoline, NULL);
+                                       if (mini_field_access_needs_cctor_run (cfg, method, klass, vtable)) {
+                                               if (!(g_slist_find (class_inits, klass))) {
+                                                       mono_emit_abs_call (cfg, MONO_PATCH_INFO_CLASS_INIT, klass, helper_sig_class_init_trampoline, NULL);
                                                        if (cfg->verbose_level > 2)
                                                                printf ("class %s.%s needs init call for %s\n", klass->name_space, klass->name, mono_field_get_name (field));
-                                                       class_inits = g_slist_prepend (class_inits, vtable);
+                                                       class_inits = g_slist_prepend (class_inits, klass);
                                                }
                                        } else {
                                                if (cfg->run_cctors) {
@@ -9767,6 +10214,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        /* This makes so that inline cannot trigger */
                                                        /* .cctors: too many apps depend on them */
                                                        /* running with a specific order... */
+                                                       g_assert (vtable);
                                                        if (! vtable->initialized)
                                                                INLINE_FAILURE ("class init");
                                                        ex = mono_runtime_class_init_full (vtable, FALSE);
@@ -9776,12 +10224,13 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        }
                                                }
                                        }
-                                       addr = (char*)mono_vtable_get_static_field_data (vtable) + field->offset;
-
                                        if (cfg->compile_aot)
                                                EMIT_NEW_SFLDACONST (cfg, ins, field);
-                                       else
+                                       else {
+                                               g_assert (vtable);
+                                               addr = (char*)mono_vtable_get_static_field_data (vtable) + field->offset;
                                                EMIT_NEW_PCONST (cfg, ins, addr);
+                                       }
                                } else {
                                        MonoInst *iargs [1];
                                        EMIT_NEW_ICONST (cfg, iargs [0], GPOINTER_TO_UINT (addr));
@@ -9912,7 +10361,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        if (cfg->gen_write_barriers && cfg->method->wrapper_type != MONO_WRAPPER_WRITE_BARRIER &&
                                        generic_class_is_reference_type (cfg, klass)) {
                                /* insert call to write barrier */
-                               emit_write_barrier (cfg, sp [0], sp [1], -1);
+                               emit_write_barrier (cfg, sp [0], sp [1]);
                        }
                        ins_flag = 0;
                        ip += 5;
@@ -9940,7 +10389,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                        context_used = mini_class_check_context_used (cfg, klass);
 
                        if (sp [0]->type == STACK_I8 || (SIZEOF_VOID_P == 8 && sp [0]->type == STACK_PTR)) {
-                               MONO_INST_NEW (cfg, ins, OP_LCONV_TO_I4);
+                               MONO_INST_NEW (cfg, ins, OP_LCONV_TO_OVF_U4);
                                ins->sreg1 = sp [0]->dreg;
                                ins->type = STACK_I4;
                                ins->dreg = alloc_ireg (cfg);
@@ -10340,7 +10789,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if ((ip + 5 < end) && ip_in_bb (cfg, bblock, ip + 5) && 
                                        ((ip [5] == CEE_CALL) || (ip [5] == CEE_CALLVIRT)) && 
                                        (cmethod = mini_get_method (cfg, method, read32 (ip + 6), NULL, generic_context)) &&
-                                       (cmethod->klass == mono_defaults.monotype_class->parent) &&
+                                       (cmethod->klass == mono_defaults.systemtype_class) &&
                                        (strcmp (cmethod->name, "GetTypeFromHandle") == 0)) {
                                        MonoClass *tclass = mono_class_from_mono_type (handle);
 
@@ -10387,7 +10836,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                                        g_assert_not_reached ();
                                                }
                                        } else if (cfg->compile_aot) {
-                                               EMIT_NEW_LDTOKENCONST (cfg, ins, image, n);
+                                               EMIT_NEW_LDTOKENCONST (cfg, ins, image, n, generic_context);
                                        } else {
                                                EMIT_NEW_PCONST (cfg, ins, handle);
                                        }
@@ -10419,7 +10868,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                case CEE_ENDFINALLY:
                        /* mono_save_seq_point_info () depends on this */
                        if (sp != stack_start)
-                               emit_seq_point (cfg, method, ip, FALSE);
+                               emit_seq_point (cfg, method, ip, FALSE, FALSE);
                        MONO_INST_NEW (cfg, ins, OP_ENDFINALLY);
                        MONO_ADD_INS (bblock, ins);
                        ip++;
@@ -10775,17 +11224,31 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                bblock->out_of_line = TRUE;
                                ip += 2;
                                break;
-                       case CEE_MONO_TLS:
+                       case CEE_MONO_TLS: {
+                               int key;
+
                                CHECK_STACK_OVF (1);
                                CHECK_OPSIZE (6);
-                               MONO_INST_NEW (cfg, ins, OP_TLS_GET);
-                               ins->dreg = alloc_preg (cfg);
-                               ins->inst_offset = (gint32)read32 (ip + 2);
+                               key = (gint32)read32 (ip + 2);
+                               g_assert (key < TLS_KEY_NUM);
+
+                               ins = mono_create_tls_get (cfg, key);
+                               if (!ins) {
+                                       if (cfg->compile_aot) {
+                                               cfg->disable_aot = TRUE;
+                                               MONO_INST_NEW (cfg, ins, OP_TLS_GET);
+                                               ins->dreg = alloc_preg (cfg);
+                                               ins->type = STACK_PTR;
+                                       } else {
+                                               g_assert_not_reached ();
+                                       }
+                               }
                                ins->type = STACK_PTR;
                                MONO_ADD_INS (bblock, ins);
                                *sp++ = ins;
                                ip += 6;
                                break;
+                       }
                        case CEE_MONO_DYN_CALL: {
                                MonoCallInst *call;
 
@@ -10797,7 +11260,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                if (!cfg->dyn_call_var) {
                                        cfg->dyn_call_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
                                        /* prevent it from being register allocated */
-                                       cfg->dyn_call_var->flags |= MONO_INST_INDIRECT;
+                                       cfg->dyn_call_var->flags |= MONO_INST_VOLATILE;
                                }
 
                                /* Has to use a call inst since it local regalloc expects it */
@@ -10808,9 +11271,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                ins->sreg2 = sp [1]->dreg;
                                MONO_ADD_INS (bblock, ins);
 
-#ifdef MONO_ARCH_DYN_CALL_PARAM_AREA
                                cfg->param_area = MAX (cfg->param_area, MONO_ARCH_DYN_CALL_PARAM_AREA);
-#endif
 
                                ip += 2;
                                inline_costs += 10 * num_calls++;
@@ -10841,7 +11302,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                lmf_ins = mono_get_lmf_intrinsic (cfg);
 #endif
 
-#ifdef MONO_ARCH_HAVE_TLS_GET
                                if (MONO_ARCH_HAVE_TLS_GET && ad_ins && lmf_ins) {
                                        NEW_BBLOCK (cfg, next_bb);
 
@@ -10853,7 +11313,6 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                                        MONO_EMIT_NEW_BIALU_IMM (cfg, OP_COMPARE_IMM, -1, lmf_ins->dreg, 0);
                                        MONO_EMIT_NEW_BRANCH_BLOCK (cfg, OP_PBNE_UN, next_bb);
                                }
-#endif
 
                                if (cfg->compile_aot) {
                                        /* AOT code is only used in the root domain */
@@ -11388,6 +11847,11 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                bblock->next_bb = end_bblock;
        }
 
+       if (cfg->lmf_var) {
+               cfg->cbb = init_localsbb;
+               emit_push_lmf (cfg);
+       }
+
        if (cfg->method == method && cfg->domainvar) {
                MonoInst *store;
                MonoInst *get_domain;
@@ -11415,38 +11879,10 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b
                mono_emit_load_got_addr (cfg);
 
        if (init_locals) {
-               MonoInst *store;
-
                cfg->cbb = init_localsbb;
                cfg->ip = NULL;
                for (i = 0; i < header->num_locals; ++i) {
-                       MonoType *ptype = header->locals [i];
-                       int t = ptype->type;
-                       dreg = cfg->locals [i]->dreg;
-
-                       if (t == MONO_TYPE_VALUETYPE && ptype->data.klass->enumtype)
-                               t = mono_class_enum_basetype (ptype->data.klass)->type;
-                       if (ptype->byref) {
-                               MONO_EMIT_NEW_PCONST (cfg, dreg, NULL);
-                       } else if (t >= MONO_TYPE_BOOLEAN && t <= MONO_TYPE_U4) {
-                               MONO_EMIT_NEW_ICONST (cfg, cfg->locals [i]->dreg, 0);
-                       } else if (t == MONO_TYPE_I8 || t == MONO_TYPE_U8) {
-                               MONO_EMIT_NEW_I8CONST (cfg, cfg->locals [i]->dreg, 0);
-                       } else if (t == MONO_TYPE_R4 || t == MONO_TYPE_R8) {
-                               MONO_INST_NEW (cfg, ins, OP_R8CONST);
-                               ins->type = STACK_R8;
-                               ins->inst_p0 = (void*)&r8_0;
-                               ins->dreg = alloc_dreg (cfg, STACK_R8);
-                               MONO_ADD_INS (init_localsbb, ins);
-                               EMIT_NEW_LOCSTORE (cfg, store, i, ins);
-                       } else if ((t == MONO_TYPE_VALUETYPE) || (t == MONO_TYPE_TYPEDBYREF) ||
-                                  ((t == MONO_TYPE_GENERICINST) && mono_type_generic_inst_is_valuetype (ptype))) {
-                               MONO_EMIT_NEW_VZERO (cfg, dreg, mono_class_from_mono_type (ptype));
-                       } else if (((t == MONO_TYPE_VAR) || (t == MONO_TYPE_MVAR)) && mini_type_var_is_vt (cfg, ptype)) {
-                               MONO_EMIT_NEW_VZERO (cfg, dreg, mono_class_from_mono_type (ptype));
-                       } else {
-                               MONO_EMIT_NEW_PCONST (cfg, dreg, NULL);
-                       }
+                       emit_init_local (cfg, i, header->locals [i]);
                }
        }
 
@@ -12174,13 +12610,17 @@ mono_handle_global_vregs (MonoCompile *cfg)
 #if SIZEOF_REGISTER == 8
                case STACK_I8:
 #endif
-#if !defined(TARGET_X86) && !defined(MONO_ARCH_SOFT_FLOAT)
+#if !defined(TARGET_X86)
                /* Enabling this screws up the fp stack on x86 */
                case STACK_R8:
 #endif
+                       if (mono_arch_is_soft_float ())
+                               break;
+
                        /* Arguments are implicitly global */
                        /* Putting R4 vars into registers doesn't work currently */
-                       if ((var->opcode != OP_ARG) && (var != cfg->ret) && !(var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)) && (vreg_to_bb [var->dreg] != -1) && (var->klass->byval_arg.type != MONO_TYPE_R4) && !cfg->disable_vreg_to_lvreg) {
+                       /* The gsharedvt vars are implicitly referenced by ldaddr opcodes, but those opcodes are only generated later */
+                       if ((var->opcode != OP_ARG) && (var != cfg->ret) && !(var->flags & (MONO_INST_VOLATILE|MONO_INST_INDIRECT)) && (vreg_to_bb [var->dreg] != -1) && (var->klass->byval_arg.type != MONO_TYPE_R4) && !cfg->disable_vreg_to_lvreg && var != cfg->gsharedvt_info_var && var != cfg->gsharedvt_locals_var) {
                                /* 
                                 * Make that the variable's liveness interval doesn't contain a call, since
                                 * that would cause the lvreg to be spilled, making the whole optimization
@@ -12285,6 +12725,7 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
        guint32 stacktypes [128];
        MonoInst **live_range_start, **live_range_end;
        MonoBasicBlock **live_range_start_bb, **live_range_end_bb;
+       int *gsharedvt_vreg_to_idx = NULL;
 
        *need_local_opts = FALSE;
 
@@ -12343,6 +12784,29 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                ins->flags |= MONO_INST_GC_TRACK;
                }
        }
+
+       if (cfg->gsharedvt) {
+               gsharedvt_vreg_to_idx = g_new0 (int, cfg->next_vreg);
+
+               for (i = 0; i < cfg->num_varinfo; ++i) {
+                       MonoInst *ins = cfg->varinfo [i];
+                       int idx;
+
+                       if (mini_is_gsharedvt_variable_type (cfg, ins->inst_vtype)) {
+                               if (i >= cfg->locals_start) {
+                                       /* Local */
+                                       idx = get_gsharedvt_info_slot (cfg, ins->inst_vtype, MONO_RGCTX_INFO_LOCAL_OFFSET);
+                                       gsharedvt_vreg_to_idx [ins->dreg] = idx + 1;
+                                       ins->opcode = OP_GSHAREDVT_LOCAL;
+                                       ins->inst_imm = idx;
+                               } else {
+                                       /* Arg */
+                                       gsharedvt_vreg_to_idx [ins->dreg] = -1;
+                                       ins->opcode = OP_GSHAREDVT_ARG_REGOFFSET;
+                               }
+                       }
+               }
+       }
                
        /* FIXME: widening and truncation */
 
@@ -12419,6 +12883,63 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
                                                ins->inst_offset = vtaddr->inst_offset;
                                        } else
                                                NOT_IMPLEMENTED;
+                               } else if (cfg->gsharedvt && gsharedvt_vreg_to_idx [var->dreg] < 0) {
+                                       /* gsharedvt arg passed by ref */
+                                       g_assert (var->opcode == OP_GSHAREDVT_ARG_REGOFFSET);
+
+                                       ins->opcode = OP_LOAD_MEMBASE;
+                                       ins->inst_basereg = var->inst_basereg;
+                                       ins->inst_offset = var->inst_offset;
+                               } else if (cfg->gsharedvt && gsharedvt_vreg_to_idx [var->dreg]) {
+                                       MonoInst *load, *load2, *load3;
+                                       int idx = gsharedvt_vreg_to_idx [var->dreg] - 1;
+                                       int reg1, reg2, reg3;
+                                       MonoInst *info_var = cfg->gsharedvt_info_var;
+                                       MonoInst *locals_var = cfg->gsharedvt_locals_var;
+
+                                       /*
+                                        * gsharedvt local.
+                                        * Compute the address of the local as gsharedvt_locals_var + gsharedvt_info_var->locals_offsets [idx].
+                                        */
+
+                                       g_assert (var->opcode == OP_GSHAREDVT_LOCAL);
+
+                                       g_assert (info_var);
+                                       g_assert (locals_var);
+
+                                       /* Mark the instruction used to compute the locals var as used */
+                                       cfg->gsharedvt_locals_var_ins = NULL;
+
+                                       /* Load the offset */
+                                       if (info_var->opcode == OP_REGOFFSET) {
+                                               reg1 = alloc_ireg (cfg);
+                                               NEW_LOAD_MEMBASE (cfg, load, OP_LOAD_MEMBASE, reg1, info_var->inst_basereg, info_var->inst_offset);
+                                       } else if (info_var->opcode == OP_REGVAR) {
+                                               load = NULL;
+                                               reg1 = info_var->dreg;
+                                       } else {
+                                               g_assert_not_reached ();
+                                       }
+                                       reg2 = alloc_ireg (cfg);
+                                       NEW_LOAD_MEMBASE (cfg, load2, OP_LOADI4_MEMBASE, reg2, reg1, G_STRUCT_OFFSET (MonoGSharedVtMethodRuntimeInfo, entries) + (idx * sizeof (gpointer)));
+                                       /* Load the locals area address */
+                                       reg3 = alloc_ireg (cfg);
+                                       if (locals_var->opcode == OP_REGOFFSET) {
+                                               NEW_LOAD_MEMBASE (cfg, load3, OP_LOAD_MEMBASE, reg3, locals_var->inst_basereg, locals_var->inst_offset);
+                                       } else if (locals_var->opcode == OP_REGVAR) {
+                                               NEW_UNALU (cfg, load3, OP_MOVE, reg3, locals_var->dreg);
+                                       } else {
+                                               g_assert_not_reached ();
+                                       }
+                                       /* Compute the address */
+                                       ins->opcode = OP_PADD;
+                                       ins->sreg1 = reg3;
+                                       ins->sreg2 = reg2;
+
+                                       mono_bblock_insert_before_ins (bb, ins, load3);
+                                       mono_bblock_insert_before_ins (bb, load3, load2);
+                                       if (load)
+                                               mono_bblock_insert_before_ins (bb, load2, load);
                                } else {
                                        g_assert (var->opcode == OP_REGOFFSET);
 
@@ -12804,6 +13325,12 @@ mono_spill_global_vars (MonoCompile *cfg, gboolean *need_local_opts)
        }
 #endif
 
+       if (cfg->gsharedvt_locals_var_ins) {
+               /* Nullify if unused */
+               cfg->gsharedvt_locals_var_ins->opcode = OP_PCONST;
+               cfg->gsharedvt_locals_var_ins->inst_imm = 0;
+       }
+
        g_free (live_range_start);
        g_free (live_range_end);
        g_free (live_range_start_bb);
index 979cb899203caf1cc1312f9be875d931eba03e81..a1c7872e9ec39b271aa979a9e363aee4c31200cf 100644 (file)
@@ -30,6 +30,7 @@
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-memory-model.h>
 #include <mono/utils/mono-tls.h>
+#include <mono/utils/mono-hwcap-x86.h>
 
 #include "trace.h"
 #include "ir-emit.h"
@@ -677,8 +678,6 @@ merge_argument_class_from_type (MonoType *type, ArgumentClass class1)
        return class1;
 }
 #ifdef __native_client_codegen__
-const guint kNaClAlignment = kNaClAlignmentAMD64;
-const guint kNaClAlignmentMask = kNaClAlignmentMaskAMD64;
 
 /* Default alignment for Native Client is 32-byte. */
 gint8 nacl_align_byte = -32; /* signed version of 0xe0 */
@@ -1005,7 +1004,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                case MONO_TYPE_VALUETYPE: {
                        guint32 tmp_gr = 0, tmp_fr = 0, tmp_stacksize = 0;
 
-                       add_valuetype (gsctx, sig, &cinfo->ret, sig->ret, TRUE, &tmp_gr, &tmp_fr, &tmp_stacksize);
+                       add_valuetype (gsctx, sig, &cinfo->ret, ret_type, TRUE, &tmp_gr, &tmp_fr, &tmp_stacksize);
                        if (cinfo->ret.storage == ArgOnStack) {
                                cinfo->vtype_retaddr = TRUE;
                                /* The caller passes the address where the value is stored */
@@ -1021,7 +1020,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                case MONO_TYPE_VOID:
                        break;
                default:
-                       g_error ("Can't handle as return value 0x%x", sig->ret->type);
+                       g_error ("Can't handle as return value 0x%x", ret_type->type);
                }
        }
 
@@ -1205,15 +1204,17 @@ mono_arch_get_argument_info (MonoGenericSharingContext *gsctx, MonoMethodSignatu
 }
 
 gboolean
-mono_amd64_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig)
+mono_arch_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig)
 {
        CallInfo *c1, *c2;
        gboolean res;
+       MonoType *callee_ret;
 
        c1 = get_call_info (NULL, NULL, caller_sig);
        c2 = get_call_info (NULL, NULL, callee_sig);
        res = c1->stack_usage >= c2->stack_usage;
-       if (callee_sig->ret && MONO_TYPE_ISSTRUCT (callee_sig->ret) && c2->ret.storage != ArgValuetypeInReg)
+       callee_ret = callee_sig->ret;
+       if (callee_ret && MONO_TYPE_ISSTRUCT (callee_ret) && c2->ret.storage != ArgValuetypeInReg)
                /* An address on the callee's stack is passed as the first argument */
                res = FALSE;
 
@@ -1223,28 +1224,6 @@ mono_amd64_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSigna
        return res;
 }
 
-static int 
-cpuid (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx)
-{
-#if defined(MONO_CROSS_COMPILE)
-       return 0;
-#else
-#ifndef _MSC_VER
-       __asm__ __volatile__ ("cpuid"
-               : "=a" (*p_eax), "=b" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
-               : "a" (id));
-#else
-       int info[4];
-       __cpuid(info, id);
-       *p_eax = info[0];
-       *p_ebx = info[1];
-       *p_ecx = info[2];
-       *p_edx = info[3];
-#endif
-       return 1;
-#endif
-}
-
 /*
  * Initialize the cpu to execute managed code.
  */
@@ -1327,20 +1306,19 @@ mono_arch_cleanup (void)
 guint32
 mono_arch_cpu_optimizations (guint32 *exclude_mask)
 {
-       int eax, ebx, ecx, edx;
        guint32 opts = 0;
 
        *exclude_mask = 0;
-       /* Feature Flags function, flags returned in EDX. */
-       if (cpuid (1, &eax, &ebx, &ecx, &edx)) {
-               if (edx & (1 << 15)) {
-                       opts |= MONO_OPT_CMOV;
-                       if (edx & 1)
-                               opts |= MONO_OPT_FCMOV;
-                       else
-                               *exclude_mask |= MONO_OPT_FCMOV;
-               } else
-                       *exclude_mask |= MONO_OPT_CMOV;
+
+       if (mono_hwcap_x86_has_cmov) {
+               opts |= MONO_OPT_CMOV;
+
+               if (mono_hwcap_x86_has_fcmov)
+                       opts |= MONO_OPT_FCMOV;
+               else
+                       *exclude_mask |= MONO_OPT_FCMOV;
+       } else {
+               *exclude_mask |= MONO_OPT_CMOV;
        }
 
        return opts;
@@ -1355,37 +1333,30 @@ mono_arch_cpu_optimizations (guint32 *exclude_mask)
 guint32
 mono_arch_cpu_enumerate_simd_versions (void)
 {
-       int eax, ebx, ecx, edx;
        guint32 sse_opts = 0;
 
-       if (cpuid (1, &eax, &ebx, &ecx, &edx)) {
-               if (edx & (1 << 25))
-                       sse_opts |= SIMD_VERSION_SSE1;
-               if (edx & (1 << 26))
-                       sse_opts |= SIMD_VERSION_SSE2;
-               if (ecx & (1 << 0))
-                       sse_opts |= SIMD_VERSION_SSE3;
-               if (ecx & (1 << 9))
-                       sse_opts |= SIMD_VERSION_SSSE3;
-               if (ecx & (1 << 19))
-                       sse_opts |= SIMD_VERSION_SSE41;
-               if (ecx & (1 << 20))
-                       sse_opts |= SIMD_VERSION_SSE42;
-       }
-
-       /* Yes, all this needs to be done to check for sse4a.
-          See: "Amd: CPUID Specification"
-        */
-       if (cpuid (0x80000000, &eax, &ebx, &ecx, &edx)) {
-               /* eax greater or equal than 0x80000001, ebx = 'htuA', ecx = DMAc', edx = 'itne'*/
-               if ((((unsigned int) eax) >= 0x80000001) && (ebx == 0x68747541) && (ecx == 0x444D4163) && (edx == 0x69746E65)) {
-                       cpuid (0x80000001, &eax, &ebx, &ecx, &edx);
-                       if (ecx & (1 << 6))
-                               sse_opts |= SIMD_VERSION_SSE4a;
-               }
-       }
+       if (mono_hwcap_x86_has_sse1)
+               sse_opts |= SIMD_VERSION_SSE1;
+
+       if (mono_hwcap_x86_has_sse2)
+               sse_opts |= SIMD_VERSION_SSE2;
+
+       if (mono_hwcap_x86_has_sse3)
+               sse_opts |= SIMD_VERSION_SSE3;
+
+       if (mono_hwcap_x86_has_ssse3)
+               sse_opts |= SIMD_VERSION_SSSE3;
+
+       if (mono_hwcap_x86_has_sse41)
+               sse_opts |= SIMD_VERSION_SSE41;
 
-       return sse_opts;        
+       if (mono_hwcap_x86_has_sse42)
+               sse_opts |= SIMD_VERSION_SSE42;
+
+       if (mono_hwcap_x86_has_sse4a)
+               sse_opts |= SIMD_VERSION_SSE4a;
+
+       return sse_opts;
 }
 
 #ifndef DISABLE_JIT
@@ -1639,6 +1610,7 @@ mono_arch_regalloc_cost (MonoCompile *cfg, MonoMethodVar *vmv)
 void
 mono_arch_fill_argument_info (MonoCompile *cfg)
 {
+       MonoType *sig_ret;
        MonoMethodSignature *sig;
        MonoMethodHeader *header;
        MonoInst *ins;
@@ -1650,19 +1622,19 @@ mono_arch_fill_argument_info (MonoCompile *cfg)
        sig = mono_method_signature (cfg->method);
 
        cinfo = cfg->arch.cinfo;
-
+       sig_ret = sig->ret;
        /*
         * Contrary to mono_arch_allocate_vars (), the information should describe
         * where the arguments are at the beginning of the method, not where they can be 
         * accessed during the execution of the method. The later makes no sense for the 
         * global register allocator, since a variable can be in more than one location.
         */
-       if (sig->ret->type != MONO_TYPE_VOID) {
+       if (sig_ret->type != MONO_TYPE_VOID) {
                switch (cinfo->ret.storage) {
                case ArgInIReg:
                case ArgInFloatSSEReg:
                case ArgInDoubleSSEReg:
-                       if ((MONO_TYPE_ISSTRUCT (sig->ret) && !mono_class_from_mono_type (sig->ret)->enumtype) || ((sig->ret->type == MONO_TYPE_TYPEDBYREF) && cinfo->vtype_retaddr)) {
+                       if ((MONO_TYPE_ISSTRUCT (sig_ret) && !mono_class_from_mono_type (sig_ret)->enumtype) || ((sig_ret->type == MONO_TYPE_TYPEDBYREF) && cinfo->vtype_retaddr)) {
                                cfg->vret_addr->opcode = OP_REGVAR;
                                cfg->vret_addr->inst_c0 = cinfo->ret.reg;
                        }
@@ -1717,6 +1689,7 @@ mono_arch_fill_argument_info (MonoCompile *cfg)
 void
 mono_arch_allocate_vars (MonoCompile *cfg)
 {
+       MonoType *sig_ret;
        MonoMethodSignature *sig;
        MonoMethodHeader *header;
        MonoInst *ins;
@@ -1730,6 +1703,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
        sig = mono_method_signature (cfg->method);
 
        cinfo = cfg->arch.cinfo;
+       sig_ret = sig->ret;
 
        mono_arch_compute_omit_fp (cfg);
 
@@ -1771,12 +1745,12 @@ mono_arch_allocate_vars (MonoCompile *cfg)
                        }
        }
 
-       if (sig->ret->type != MONO_TYPE_VOID) {
+       if (sig_ret->type != MONO_TYPE_VOID) {
                switch (cinfo->ret.storage) {
                case ArgInIReg:
                case ArgInFloatSSEReg:
                case ArgInDoubleSSEReg:
-                       if ((MONO_TYPE_ISSTRUCT (sig->ret) && !mono_class_from_mono_type (sig->ret)->enumtype) || ((sig->ret->type == MONO_TYPE_TYPEDBYREF) && cinfo->vtype_retaddr)) {
+                       if ((MONO_TYPE_ISSTRUCT (sig_ret) && !mono_class_from_mono_type (sig_ret)->enumtype) || ((sig_ret->type == MONO_TYPE_TYPEDBYREF) && cinfo->vtype_retaddr)) {
                                if (cfg->globalra) {
                                        cfg->vret_addr->opcode = OP_REGVAR;
                                        cfg->vret_addr->inst_c0 = cinfo->ret.reg;
@@ -2167,10 +2141,10 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
        ArgInfo *ainfo;
        int j;
        LLVMCallInfo *linfo;
-       MonoType *t;
+       MonoType *t, *sig_ret;
 
        n = sig->param_count + sig->hasthis;
-
+       sig_ret = sig->ret;
        cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
        linfo = mono_mempool_alloc0 (cfg->mempool, sizeof (LLVMCallInfo) + (sizeof (LLVMArgInfo) * n));
@@ -2193,7 +2167,7 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
                        linfo->ret.pair_storage [j] = arg_storage_to_llvm_arg_storage (cfg, cinfo->ret.pair_storage [j]);
        }
 
-       if (MONO_TYPE_ISSTRUCT (sig->ret) && cinfo->ret.storage == ArgInIReg) {
+       if (MONO_TYPE_ISSTRUCT (sig_ret) && cinfo->ret.storage == ArgInIReg) {
                /* Vtype returned using a hidden argument */
                linfo->ret.storage = LLVMArgVtypeRetAddr;
                linfo->vret_arg_index = cinfo->vret_arg_index;
@@ -2257,6 +2231,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 {
        MonoInst *arg, *in;
        MonoMethodSignature *sig;
+       MonoType *sig_ret;
        int i, n, stack_size;
        CallInfo *cinfo;
        ArgInfo *ainfo;
@@ -2268,6 +2243,8 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 
        cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
+       sig_ret = sig->ret;
+
        if (COMPILE_LLVM (cfg)) {
                /* We shouldn't be called in the llvm case */
                cfg->disable_llvm = TRUE;
@@ -2425,7 +2402,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
        if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG) && (n == sig->sentinelpos))
                emit_sig_cookie (cfg, call, cinfo);
 
-       if (sig->ret && MONO_TYPE_ISSTRUCT (sig->ret)) {
+       if (sig_ret && MONO_TYPE_ISSTRUCT (sig_ret)) {
                MonoInst *vtarg;
 
                if (cinfo->ret.storage == ArgValuetypeInReg) {
@@ -2470,7 +2447,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
        }
 
 #ifdef HOST_WIN32
-       if (call->inst.opcode != OP_JMP && OP_TAILCALL != call->inst.opcode) {
+       if (call->inst.opcode != OP_TAILCALL) {
                MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SUB_IMM, X86_ESP, X86_ESP, 0x20);
        }
 #endif
@@ -2525,6 +2502,7 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
                g_assert (!cfg->arch.no_pushes);
 
                MONO_INST_NEW (cfg, load, OP_LDADDR);
+               cfg->has_indirection = TRUE;
                load->inst_p0 = vtaddr;
                vtaddr->flags |= MONO_INST_INDIRECT;
                load->type = STACK_MP;
@@ -2864,8 +2842,9 @@ mono_arch_finish_dyn_call (MonoDynCallInfo *info, guint8 *buf)
        MonoMethodSignature *sig = dinfo->sig;
        guint8 *ret = ((DynCallArgs*)buf)->ret;
        mgreg_t res = ((DynCallArgs*)buf)->res;
+       MonoType *sig_ret = mono_type_get_underlying_type (sig->ret);
 
-       switch (mono_type_get_underlying_type (sig->ret)->type) {
+       switch (sig_ret->type) {
        case MONO_TYPE_VOID:
                *(gpointer*)ret = NULL;
                break;
@@ -2906,7 +2885,7 @@ mono_arch_finish_dyn_call (MonoDynCallInfo *info, guint8 *buf)
                *(guint64*)ret = res;
                break;
        case MONO_TYPE_GENERICINST:
-               if (MONO_TYPE_IS_REFERENCE (sig->ret)) {
+               if (MONO_TYPE_IS_REFERENCE (sig_ret)) {
                        *(gpointer*)ret = GREG_TO_PTR(res);
                        break;
                } else {
@@ -3009,7 +2988,8 @@ emit_call_body (MonoCompile *cfg, guint8 *code, guint32 patch_type, gconstpointe
                                jinfo = g_hash_table_lookup (cfg->abs_patches, data);
                        if (jinfo) {
                                if (jinfo->type == MONO_PATCH_INFO_JIT_ICALL_ADDR) {
-                                       if ((((guint64)data) >> 32) == 0)
+                                       MonoJitICallInfo *mi = mono_find_jit_icall_by_name (jinfo->data.name);
+                                       if (mi && (((guint64)mi->func) >> 32) == 0)
                                                near_call = TRUE;
                                        no_patch = TRUE;
                                } else {
@@ -3632,6 +3612,17 @@ mono_amd64_have_tls_get (void)
 #endif
 }
 
+int
+mono_amd64_get_tls_gs_offset (void)
+{
+#ifdef TARGET_OSX
+       return tls_gs_offset;
+#else
+       g_assert_not_reached ();
+       return -1;
+#endif
+}
+
 /*
  * mono_amd64_emit_tls_get:
  * @code: buffer to store code to
@@ -3667,6 +3658,39 @@ mono_amd64_emit_tls_get (guint8* code, int dreg, int tls_offset)
        return code;
 }
 
+static guint8*
+emit_tls_get_reg (guint8* code, int dreg, int offset_reg)
+{
+#ifdef TARGET_OSX
+       // FIXME: tls_gs_offset can change too, do these when calculating the tls offset
+       if (dreg != offset_reg)
+               amd64_mov_reg_reg (code, dreg, offset_reg, sizeof (gpointer));
+       amd64_shift_reg_imm (code, X86_SHL, dreg, 3);
+       if (tls_gs_offset)
+               amd64_alu_reg_imm (code, X86_ADD, dreg, tls_gs_offset);
+       x86_prefix (code, X86_GS_PREFIX);
+       amd64_mov_reg_membase (code, dreg, dreg, 0, sizeof (gpointer));
+#elif defined(__linux__)
+       int tmpreg = -1;
+
+       if (dreg == offset_reg) {
+               /* Use a temporary reg by saving it to the redzone */
+               tmpreg = dreg == AMD64_RAX ? AMD64_RCX : AMD64_RAX;
+               amd64_mov_membase_reg (code, AMD64_RSP, -8, tmpreg, 8);
+               amd64_mov_reg_reg (code, tmpreg, offset_reg, sizeof (gpointer));
+               offset_reg = tmpreg;
+       }
+       x86_prefix (code, X86_FS_PREFIX);
+       amd64_mov_reg_mem (code, dreg, 0, 8);
+       amd64_mov_reg_memindex (code, dreg, dreg, 0, offset_reg, 0, 8);
+       if (tmpreg != -1)
+               amd64_mov_reg_membase (code, tmpreg, AMD64_RSP, -8, 8);
+#else
+       g_assert_not_reached ();
+#endif
+       return code;
+}
+
 /*
  * emit_setup_lmf:
  *
@@ -4819,7 +4843,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
 
                        offset = code - cfg->native_code;
-                       mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, ins->inst_p0);
+                       mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, call->method);
                        if (cfg->compile_aot)
                                amd64_mov_reg_membase (code, AMD64_R11, AMD64_RIP, 0, 8);
                        else
@@ -5133,6 +5157,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_BR_REG:
                        amd64_jump_reg (code, ins->sreg1);
                        break;
+               case OP_ICNEQ:
+               case OP_ICGE:
+               case OP_ICLE:
+               case OP_ICGE_UN:
+               case OP_ICLE_UN:
+
                case OP_CEQ:
                case OP_LCEQ:
                case OP_ICEQ:
@@ -5401,6 +5431,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                         */
                        amd64_sse_comisd_reg_reg (code, ins->sreg2, ins->sreg1);
                        break;
+               case OP_FCNEQ:
                case OP_FCEQ: {
                        /* zeroing the register at the start results in 
                         * shorter and faster code (we can also remove the widening op)
@@ -5410,8 +5441,19 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        amd64_sse_comisd_reg_reg (code, ins->sreg1, ins->sreg2);
                        unordered_check = code;
                        x86_branch8 (code, X86_CC_P, 0, FALSE);
-                       amd64_set_reg (code, X86_CC_EQ, ins->dreg, FALSE);
-                       amd64_patch (unordered_check, code);
+
+                       if (ins->opcode == OP_FCEQ) {
+                               amd64_set_reg (code, X86_CC_EQ, ins->dreg, FALSE);
+                               amd64_patch (unordered_check, code);
+                       } else {
+                               guchar *jump_to_end;
+                               amd64_set_reg (code, X86_CC_NE, ins->dreg, FALSE);
+                               jump_to_end = code;
+                               x86_jump8 (code, 0);
+                               amd64_patch (unordered_check, code);
+                               amd64_inc_reg (code, ins->dreg);
+                               amd64_patch (jump_to_end, code);
+                       }
                        break;
                }
                case OP_FCLT:
@@ -5435,6 +5477,16 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                amd64_set_reg (code, X86_CC_GT, ins->dreg, FALSE);
                        }
                        break;
+               case OP_FCLE: {
+                       guchar *unordered_check;
+                       amd64_alu_reg_reg (code, X86_XOR, ins->dreg, ins->dreg);
+                       amd64_sse_comisd_reg_reg (code, ins->sreg2, ins->sreg1);
+                       unordered_check = code;
+                       x86_branch8 (code, X86_CC_P, 0, FALSE);
+                       amd64_set_reg (code, X86_CC_NB, ins->dreg, FALSE);
+                       amd64_patch (unordered_check, code);
+                       break;
+               }
                case OP_FCGT:
                case OP_FCGT_UN: {
                        /* zeroing the register at the start results in 
@@ -5453,6 +5505,17 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
                        break;
                }
+               case OP_FCGE: {
+                       guchar *unordered_check;
+                       amd64_alu_reg_reg (code, X86_XOR, ins->dreg, ins->dreg);
+                       amd64_sse_comisd_reg_reg (code, ins->sreg2, ins->sreg1);
+                       unordered_check = code;
+                       x86_branch8 (code, X86_CC_P, 0, FALSE);
+                       amd64_set_reg (code, X86_CC_NA, ins->dreg, FALSE);
+                       amd64_patch (unordered_check, code);
+                       break;
+               }
+               
                case OP_FCLT_MEMBASE:
                case OP_FCGT_MEMBASE:
                case OP_FCLT_UN_MEMBASE:
@@ -5593,6 +5656,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        code = mono_amd64_emit_tls_get (code, ins->dreg, ins->inst_offset);
                        break;
                }
+               case OP_TLS_GET_REG:
+                       code = emit_tls_get_reg (code, ins->dreg, ins->sreg1);
+                       break;
+                       break;
                case OP_MEMORY_BARRIER: {
                        switch (ins->backend.memory_barrier_kind) {
                        case StoreLoadBarrier:
@@ -5729,7 +5796,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_CARD_TABLE_WBARRIER: {
                        int ptr = ins->sreg1;
                        int value = ins->sreg2;
-                       guchar *br;
+                       guchar *br = 0;
                        int nursery_shift, card_table_shift;
                        gpointer card_table_mask;
                        size_t nursery_size;
@@ -5794,6 +5861,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        amd64_alu_reg_membase (code, X86_ADD, AMD64_RDX, AMD64_RIP, 0);
 
                        amd64_mov_membase_imm (code, AMD64_RDX, 0, 1, 1);
+
                        if (mono_gc_card_table_nursery_check ())
                                x86_patch (br, code);
                        break;
@@ -6479,8 +6547,6 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, Mono
                unsigned char *ip = patch_info->ip.i + code;
                unsigned char *target;
 
-               target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors);
-
                if (compile_aot) {
                        switch (patch_info->type) {
                        case MONO_PATCH_INFO_BB:
@@ -6492,6 +6558,8 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, Mono
                        }
                }
 
+               target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors);
+
                switch (patch_info->type) {
                case MONO_PATCH_INFO_NONE:
                        continue;
@@ -7156,7 +7224,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
                code = mono_arch_instrument_epilog (cfg, mono_trace_leave_method, code, TRUE);
 
-       /* the code restoring the registers must be kept in sync with OP_JMP */
+       /* the code restoring the registers must be kept in sync with OP_TAILCALL */
        pos = 0;
        
        if (method->save_lmf) {
@@ -7943,13 +8011,16 @@ mono_arch_get_delegate_invoke_impls (void)
        guint8 *code;
        guint32 code_len;
        int i;
+       char *tramp_name;
 
        code = get_delegate_invoke_impl (TRUE, 0, &code_len);
-       res = g_slist_prepend (res, mono_tramp_info_create (g_strdup ("delegate_invoke_impl_has_target"), code, code_len, NULL, NULL));
+       res = g_slist_prepend (res, mono_tramp_info_create ("delegate_invoke_impl_has_target", code, code_len, NULL, NULL));
 
        for (i = 0; i < MAX_ARCH_DELEGATE_PARAMS; ++i) {
                code = get_delegate_invoke_impl (FALSE, i, &code_len);
-               res = g_slist_prepend (res, mono_tramp_info_create (g_strdup_printf ("delegate_invoke_impl_target_%d", i), code, code_len, NULL, NULL));
+               tramp_name = g_strdup_printf ("delegate_invoke_impl_target_%d", i);
+               res = g_slist_prepend (res, mono_tramp_info_create (tramp_name, code, code_len, NULL, NULL));
+               g_free (tramp_name);
        }
 
        return res;
@@ -8371,12 +8442,7 @@ mono_arch_context_get_int_reg (MonoContext *ctx, int reg)
        case AMD64_RBP: return ctx->rbp;
        case AMD64_RSP: return ctx->rsp;
        default:
-               if (reg < 8)
-                       return _CTX_REG (ctx, rax, reg);
-               else if (reg >= 12)
-                       return _CTX_REG (ctx, r12, reg - 12);
-               else
-                       g_assert_not_reached ();
+               return _CTX_REG (ctx, rax, reg);
        }
 }
 
@@ -8400,12 +8466,7 @@ mono_arch_context_set_int_reg (MonoContext *ctx, int reg, mgreg_t val)
                ctx->rsp = val;
                break;
        default:
-               if (reg < 8)
-                       _CTX_REG (ctx, rax, reg) = val;
-               else if (reg >= 12)
-                       _CTX_REG (ctx, r12, reg - 12) = val;
-               else
-                       g_assert_not_reached ();
+               _CTX_REG (ctx, rax, reg) = val;
        }
 }
 
index 6efc0c7b605226a82a3bde920aef57c73ed78598..cb590add880220f05469ba8c72600c118c0e4ef1 100644 (file)
@@ -396,11 +396,11 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_HAVE_CONTEXT_SET_INT_REG 1
 #define MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK 1
 #define MONO_ARCH_HAVE_CREATE_LLVM_NATIVE_THUNK 1
+#define MONO_ARCH_HAVE_OP_TAIL_CALL 1
 
-gboolean
-mono_amd64_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig) MONO_INTERNAL;
-
-#define MONO_ARCH_USE_OP_TAIL_CALL(caller_sig, callee_sig) mono_amd64_tail_call_supported (caller_sig, callee_sig)
+#if defined(TARGET_OSX) || defined(__linux__)
+#define MONO_ARCH_HAVE_TLS_GET_REG 1
+#endif
 
 /* Used for optimization, not complete */
 #define MONO_ARCH_IS_OP_MEMBASE(opcode) ((opcode) == OP_X86_PUSH_MEMBASE)
@@ -442,6 +442,9 @@ mono_amd64_have_tls_get (void) MONO_INTERNAL;
 GSList*
 mono_amd64_get_exception_trampolines (gboolean aot) MONO_INTERNAL;
 
+int
+mono_amd64_get_tls_gs_offset (void) MONO_INTERNAL;
+
 typedef struct {
        guint8 *address;
        guint8 saved_byte;
index e4fb334c932987b2181a6e12a5ac754166aa642a..8e69537f14d96097ac12b5eb8b44b3150a321b31 100644 (file)
@@ -15,6 +15,7 @@
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-hwcap-arm.h>
 
 #include "mini-arm.h"
 #include "cpu-arm.h"
 #include "ir-emit.h"
 #include "debugger-agent.h"
 #include "mini-gc.h"
-#include "mono/arch/arm/arm-fpa-codegen.h"
 #include "mono/arch/arm/arm-vfp-codegen.h"
 
-#if defined(__ARM_EABI__) && defined(__linux__) && !defined(PLATFORM_ANDROID) && !defined(__native_client__)
-#define HAVE_AEABI_READ_TP 1
-#endif
-
-#ifdef ARM_FPU_VFP_HARD
-#define ARM_FPU_VFP 1
+/* Sanity check: This makes no sense */
+#if defined(ARM_FPU_NONE) && (defined(ARM_FPU_VFP) || defined(ARM_FPU_VFP_HARD))
+#error "ARM_FPU_NONE is defined while one of ARM_FPU_VFP/ARM_FPU_VFP_HARD is defined"
 #endif
 
-#ifdef ARM_FPU_FPA
-#define IS_FPA 1
+#if defined(MONO_ARCH_SOFT_FLOAT_FALLBACK)
+#define IS_SOFT_FLOAT (mono_arch_is_soft_float ())
+#define IS_VFP (!mono_arch_is_soft_float ())
 #else
-#define IS_FPA 0
+#define IS_SOFT_FLOAT (FALSE)
+#define IS_VFP (TRUE)
 #endif
 
-#ifdef ARM_FPU_VFP
-#define IS_VFP 1
-#else
-#define IS_VFP 0
-#endif
-
-#ifdef MONO_ARCH_SOFT_FLOAT
-#define IS_SOFT_FLOAT 1
-#else
-#define IS_SOFT_FLOAT 0
+#if defined(__ARM_EABI__) && defined(__linux__) && !defined(PLATFORM_ANDROID) && !defined(__native_client__)
+#define HAVE_AEABI_READ_TP 1
 #endif
 
 #ifdef __native_client_codegen__
@@ -88,21 +79,17 @@ static gint lmf_addr_tls_offset = -1;
 #define mono_mini_arch_unlock() LeaveCriticalSection (&mini_arch_mutex)
 static CRITICAL_SECTION mini_arch_mutex;
 
-static int v5_supported = 0;
-static int v6_supported = 0;
-static int v7_supported = 0;
-static int v7s_supported = 0;
-static int thumb_supported = 0;
-static int thumb2_supported = 0;
+static gboolean v5_supported = FALSE;
+static gboolean v6_supported = FALSE;
+static gboolean v7_supported = FALSE;
+static gboolean v7s_supported = FALSE;
+static gboolean thumb_supported = FALSE;
+static gboolean thumb2_supported = FALSE;
 /*
  * Whenever to use the ARM EABI
  */
-static int eabi_supported = 0;
+static gboolean eabi_supported = FALSE;
 
-/*
- * Whenever we are on arm/darwin aka the iphone.
- */
-static int darwin = 0;
 /* 
  * Whenever to use the iphone ABI extensions:
  * http://developer.apple.com/library/ios/documentation/Xcode/Conceptual/iPhoneOSABIReference/index.html
@@ -110,7 +97,7 @@ static int darwin = 0;
  * This is required for debugging/profiling tools to work, but it has some overhead so it should
  * only be turned on in debug builds.
  */
-static int iphone_abi = 0;
+static gboolean iphone_abi = FALSE;
 
 /*
  * The FPU we are generating code for. This is NOT runtime configurable right now,
@@ -153,7 +140,7 @@ typedef struct {
  * 3) VFP: the new and actually sensible and useful FP support. Implemented
  *    in HW or kernel-emulated, requires new tools. I think this is what symbian uses.
  *
- * The plan is to write the FPA support first. softfloat can be tested in a chroot.
+ * We do not care about FPA. We will support soft float and VFP.
  */
 int mono_exc_esp_offset = 0;
 
@@ -375,10 +362,7 @@ emit_move_return_value (MonoCompile *cfg, MonoInst *ins, guint8 *code)
        case OP_FCALL:
        case OP_FCALL_REG:
        case OP_FCALL_MEMBASE:
-               if (IS_FPA) {
-                       if (ins->dreg != ARM_FPA_F0)
-                               ARM_FPA_MVFD (code, ins->dreg, ARM_FPA_F0);
-               } else if (IS_VFP) {
+               if (IS_VFP) {
                        if (((MonoCallInst*)ins)->signature->ret->type == MONO_TYPE_R4) {
                                ARM_FMSR (code, ins->dreg, ARMREG_R0);
                                ARM_CVTS (code, ins->dreg, ins->dreg);
@@ -624,13 +608,16 @@ mono_arch_get_delegate_invoke_impls (void)
        guint8 *code;
        guint32 code_len;
        int i;
+       char *tramp_name;
 
        code = get_delegate_invoke_impl (TRUE, 0, &code_len);
-       res = g_slist_prepend (res, mono_tramp_info_create (g_strdup ("delegate_invoke_impl_has_target"), code, code_len, NULL, NULL));
+       res = g_slist_prepend (res, mono_tramp_info_create ("delegate_invoke_impl_has_target", code, code_len, NULL, NULL));
 
        for (i = 0; i <= MAX_ARCH_DELEGATE_PARAMS; ++i) {
                code = get_delegate_invoke_impl (FALSE, i, &code_len);
-               res = g_slist_prepend (res, mono_tramp_info_create (g_strdup_printf ("delegate_invoke_impl_target_%d", i), code, code_len, NULL, NULL));
+               tramp_name = g_strdup_printf ("delegate_invoke_impl_target_%d", i);
+               res = g_slist_prepend (res, mono_tramp_info_create (tramp_name, code, code_len, NULL, NULL));
+               g_free (tramp_name);
        }
 
        return res;
@@ -704,13 +691,10 @@ mono_arch_get_this_arg_from_call (mgreg_t *regs, guint8 *code)
 void
 mono_arch_cpu_init (void)
 {
-#if defined(__ARM_EABI__)
-       eabi_supported = TRUE;
-#endif
-#if defined(__APPLE__) && defined(MONO_CROSS_COMPILE)
-               i8_align = 4;
+#if defined(__APPLE__)
+       i8_align = 4;
 #else
-               i8_align = __alignof__ (gint64);
+       i8_align = __alignof__ (gint64);
 #endif
 }
 
@@ -786,6 +770,8 @@ create_function_wrapper (gpointer function)
 void
 mono_arch_init (void)
 {
+       const char *cpu_arch;
+
        InitializeCriticalSection (&mini_arch_mutex);
 #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
        if (mini_get_debug_options ()->soft_breakpoints) {
@@ -807,15 +793,55 @@ mono_arch_init (void)
        mono_aot_register_jit_icall ("mono_arm_start_gsharedvt_call", mono_arm_start_gsharedvt_call);
 #endif
 
-#ifdef ARM_FPU_FPA
-       arm_fpu = MONO_ARM_FPU_FPA;
-#elif defined(ARM_FPU_VFP_HARD)
+#if defined(__ARM_EABI__)
+       eabi_supported = TRUE;
+#endif
+
+#if defined(ARM_FPU_VFP_HARD)
        arm_fpu = MONO_ARM_FPU_VFP_HARD;
-#elif defined(ARM_FPU_VFP)
+#else
        arm_fpu = MONO_ARM_FPU_VFP;
+
+#if defined(ARM_FPU_NONE) && !defined(__APPLE__)
+       /* If we're compiling with a soft float fallback and it
+          turns out that no VFP unit is available, we need to
+          switch to soft float. We don't do this for iOS, since
+          iOS devices always have a VFP unit. */
+       if (!mono_hwcap_arm_has_vfp)
+               arm_fpu = MONO_ARM_FPU_NONE;
+#endif
+#endif
+
+       v5_supported = mono_hwcap_arm_is_v5;
+       v6_supported = mono_hwcap_arm_is_v6;
+       v7_supported = mono_hwcap_arm_is_v7;
+       v7s_supported = mono_hwcap_arm_is_v7s;
+
+#if defined(__APPLE__)
+       /* iOS is special-cased here because we don't yet
+          have a way to properly detect CPU features on it. */
+       thumb_supported = TRUE;
+       iphone_abi = TRUE;
 #else
-       arm_fpu = MONO_ARM_FPU_NONE;
+       thumb_supported = mono_hwcap_arm_has_thumb;
+       thumb2_supported = mono_hwcap_arm_has_thumb2;
 #endif
+
+       /* Format: armv(5|6|7[s])[-thumb[2]] */
+       cpu_arch = g_getenv ("MONO_CPU_ARCH");
+
+       /* Do this here so it overrides any detection. */
+       if (cpu_arch) {
+               if (strncmp (cpu_arch, "armv", 4) == 0) {
+                       v5_supported = cpu_arch [4] >= '5';
+                       v6_supported = cpu_arch [4] >= '6';
+                       v7_supported = cpu_arch [4] >= '7';
+                       v7s_supported = strncmp (cpu_arch, "armv7s", 6) == 0;
+               }
+
+               thumb_supported = strstr (cpu_arch, "thumb") != NULL;
+               thumb2_supported = strstr (cpu_arch, "thumb2") != NULL;
+       }
 }
 
 /*
@@ -832,56 +858,9 @@ mono_arch_cleanup (void)
 guint32
 mono_arch_cpu_optimizations (guint32 *exclude_mask)
 {
-       guint32 opts = 0;
-       const char *cpu_arch = getenv ("MONO_CPU_ARCH");
-       if (cpu_arch != NULL) {
-               thumb_supported = strstr (cpu_arch, "thumb") != NULL;
-               if (strncmp (cpu_arch, "armv", 4) == 0) {
-                       v5_supported = cpu_arch [4] >= '5';
-                       v6_supported = cpu_arch [4] >= '6';
-                       v7_supported = cpu_arch [4] >= '7';
-               }
-       } else {
-#if __APPLE__
-       thumb_supported = TRUE;
-       v5_supported = TRUE;
-       darwin = TRUE;
-       iphone_abi = TRUE;
-#else
-       char buf [512];
-       char *line;
-       FILE *file = fopen ("/proc/cpuinfo", "r");
-       if (file) {
-               while ((line = fgets (buf, 512, file))) {
-                       if (strncmp (line, "Processor", 9) == 0) {
-                               char *ver = strstr (line, "(v");
-                               if (ver && (ver [2] == '5' || ver [2] == '6' || ver [2] == '7'))
-                                       v5_supported = TRUE;
-                               if (ver && (ver [2] == '6' || ver [2] == '7'))
-                                       v6_supported = TRUE;
-                               if (ver && (ver [2] == '7'))
-                                       v7_supported = TRUE;
-                               continue;
-                       }
-                       if (strncmp (line, "Features", 8) == 0) {
-                               char *th = strstr (line, "thumb");
-                               if (th) {
-                                       thumb_supported = TRUE;
-                                       if (v5_supported)
-                                               break;
-                               }
-                               continue;
-                       }
-               }
-               fclose (file);
-               /*printf ("features: v5: %d, thumb: %d\n", v5_supported, thumb_supported);*/
-       }
-#endif
-       }
-
        /* no arm-specific optimizations yet */
        *exclude_mask = 0;
-       return opts;
+       return 0;
 }
 
 /*
@@ -903,7 +882,7 @@ mono_arch_cpu_enumerate_simd_versions (void)
 gboolean
 mono_arch_opcode_needs_emulation (MonoCompile *cfg, int opcode)
 {
-       if (COMPILE_LLVM (cfg) && v7s_supported && thumb2_supported) {
+       if (v7s_supported) {
                switch (opcode) {
                case OP_IDIV:
                case OP_IREM:
@@ -917,6 +896,14 @@ mono_arch_opcode_needs_emulation (MonoCompile *cfg, int opcode)
        return TRUE;
 }
 
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+gboolean
+mono_arch_is_soft_float (void)
+{
+       return arm_fpu == MONO_ARM_FPU_NONE;
+}
+#endif
+
 static gboolean
 is_regsize_var (MonoGenericSharingContext *gsctx, MonoType *t) {
        if (t->byref)
@@ -996,7 +983,7 @@ mono_arch_get_global_int_regs (MonoCompile *cfg)
        regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V1));
        regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V2));
        regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V3));
-       if (darwin)
+       if (iphone_abi)
                /* V4=R7 is used as a frame pointer, but V7=R10 is preserved */
                regs = g_list_prepend (regs, GUINT_TO_POINTER (ARMREG_V7));
        else
@@ -1075,7 +1062,11 @@ typedef enum {
        RegTypeBaseGen,
        RegTypeFP,
        RegTypeStructByVal,
-       RegTypeStructByAddr
+       RegTypeStructByAddr,
+       /* gsharedvt argument passed by addr in greg */
+       RegTypeGSharedVtInReg,
+       /* gsharedvt argument passed by addr on stack */
+       RegTypeGSharedVtOnStack,
 } ArgStorage;
 
 typedef struct {
@@ -1180,7 +1171,6 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
        cinfo->nargs = n;
        gr = ARMREG_R0;
 
-       /* FIXME: handle returning a struct */
        t = mini_type_get_underlying_type (gsctx, sig->ret);
        if (MONO_TYPE_ISSTRUCT (t)) {
                guint32 align;
@@ -1190,6 +1180,8 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                } else {
                        cinfo->vtype_retaddr = TRUE;
                }
+       } else if (!(t->type == MONO_TYPE_GENERICINST && !mono_type_generic_inst_is_valuetype (t)) && mini_is_gsharedvt_type_gsctx (gsctx, t)) {
+               cinfo->vtype_retaddr = TRUE;
        }
 
        pstart = 0;
@@ -1224,6 +1216,8 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
 
        DEBUG(printf("params: %d\n", sig->param_count));
        for (i = pstart; i < sig->param_count; ++i) {
+               ArgInfo *ainfo = &cinfo->args [n];
+
                if ((sig->call_convention == MONO_CALL_VARARG) && (i == sig->sentinelpos)) {
                        /* Prevent implicit arguments and sig_cookie from
                           being passed in registers */
@@ -1234,7 +1228,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                DEBUG(printf("param %d: ", i));
                if (sig->params [i]->byref) {
                         DEBUG(printf("byref\n"));
-                       add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                       add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        continue;
                }
@@ -1244,20 +1238,20 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                case MONO_TYPE_I1:
                case MONO_TYPE_U1:
                        cinfo->args [n].size = 1;
-                       add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                       add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        break;
                case MONO_TYPE_CHAR:
                case MONO_TYPE_I2:
                case MONO_TYPE_U2:
                        cinfo->args [n].size = 2;
-                       add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                       add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        break;
                case MONO_TYPE_I4:
                case MONO_TYPE_U4:
                        cinfo->args [n].size = 4;
-                       add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                       add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        break;
                case MONO_TYPE_I:
@@ -1271,13 +1265,30 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                case MONO_TYPE_ARRAY:
                case MONO_TYPE_R4:
                        cinfo->args [n].size = sizeof (gpointer);
-                       add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                       add_general (&gr, &stack_size, ainfo, TRUE);
                        n++;
                        break;
                case MONO_TYPE_GENERICINST:
                        if (!mono_type_generic_inst_is_valuetype (simpletype)) {
                                cinfo->args [n].size = sizeof (gpointer);
-                               add_general (&gr, &stack_size, cinfo->args + n, TRUE);
+                               add_general (&gr, &stack_size, ainfo, TRUE);
+                               n++;
+                               break;
+                       }
+                       if (mini_is_gsharedvt_type_gsctx (gsctx, simpletype)) {
+                               /* gsharedvt arguments are passed by ref */
+                               g_assert (mini_is_gsharedvt_type_gsctx (gsctx, simpletype));
+                               add_general (&gr, &stack_size, ainfo, TRUE);
+                               switch (ainfo->storage) {
+                               case RegTypeGeneral:
+                                       ainfo->storage = RegTypeGSharedVtInReg;
+                                       break;
+                               case RegTypeBase:
+                                       ainfo->storage = RegTypeGSharedVtOnStack;
+                                       break;
+                               default:
+                                       g_assert_not_reached ();
+                               }
                                n++;
                                break;
                        }
@@ -1305,27 +1316,27 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                        align_size += (sizeof (gpointer) - 1);
                        align_size &= ~(sizeof (gpointer) - 1);
                        nwords = (align_size + sizeof (gpointer) -1 ) / sizeof (gpointer);
-                       cinfo->args [n].storage = RegTypeStructByVal;
-                       cinfo->args [n].struct_size = size;
+                       ainfo->storage = RegTypeStructByVal;
+                       ainfo->struct_size = size;
                        /* FIXME: align stack_size if needed */
                        if (eabi_supported) {
                                if (align >= 8 && (gr & 1))
                                        gr ++;
                        }
                        if (gr > ARMREG_R3) {
-                               cinfo->args [n].size = 0;
-                               cinfo->args [n].vtsize = nwords;
+                               ainfo->size = 0;
+                               ainfo->vtsize = nwords;
                        } else {
                                int rest = ARMREG_R3 - gr + 1;
                                int n_in_regs = rest >= nwords? nwords: rest;
 
-                               cinfo->args [n].size = n_in_regs;
-                               cinfo->args [n].vtsize = nwords - n_in_regs;
-                               cinfo->args [n].reg = gr;
+                               ainfo->size = n_in_regs;
+                               ainfo->vtsize = nwords - n_in_regs;
+                               ainfo->reg = gr;
                                gr += n_in_regs;
                                nwords -= n_in_regs;
                        }
-                       cinfo->args [n].offset = stack_size;
+                       ainfo->offset = stack_size;
                        /*g_print ("offset for arg %d at %d\n", n, stack_size);*/
                        stack_size += nwords * sizeof (gpointer);
                        n++;
@@ -1334,8 +1345,25 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                case MONO_TYPE_U8:
                case MONO_TYPE_I8:
                case MONO_TYPE_R8:
-                       cinfo->args [n].size = 8;
-                       add_general (&gr, &stack_size, cinfo->args + n, FALSE);
+                       ainfo->size = 8;
+                       add_general (&gr, &stack_size, ainfo, FALSE);
+                       n++;
+                       break;
+               case MONO_TYPE_VAR:
+               case MONO_TYPE_MVAR:
+                       /* gsharedvt arguments are passed by ref */
+                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, simpletype));
+                       add_general (&gr, &stack_size, ainfo, TRUE);
+                       switch (ainfo->storage) {
+                       case RegTypeGeneral:
+                               ainfo->storage = RegTypeGSharedVtInReg;
+                               break;
+                       case RegTypeBase:
+                               ainfo->storage = RegTypeGSharedVtOnStack;
+                               break;
+                       default:
+                               g_assert_not_reached ();
+                       }
                        n++;
                        break;
                default:
@@ -1393,12 +1421,24 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMemPool *mp, MonoMethodSign
                                cinfo->ret.reg = ARMREG_R0;
                                break;
                        }
+                       // FIXME: Only for variable types
+                       if (mini_is_gsharedvt_type_gsctx (gsctx, simpletype)) {
+                               cinfo->ret.storage = RegTypeStructByAddr;
+                               g_assert (cinfo->vtype_retaddr);
+                               break;
+                       }
                        /* Fall through */
                case MONO_TYPE_VALUETYPE:
                case MONO_TYPE_TYPEDBYREF:
                        if (cinfo->ret.storage != RegTypeStructByVal)
                                cinfo->ret.storage = RegTypeStructByAddr;
                        break;
+               case MONO_TYPE_VAR:
+               case MONO_TYPE_MVAR:
+                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, simpletype));
+                       cinfo->ret.storage = RegTypeStructByAddr;
+                       g_assert (cinfo->vtype_retaddr);
+                       break;
                case MONO_TYPE_VOID:
                        break;
                default:
@@ -1666,7 +1706,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 
                t = ins->inst_vtype;
                if (cfg->gsharedvt && mini_is_gsharedvt_variable_type (cfg, t))
-                       t = mini_get_gsharedvt_alloc_type_for_type (cfg, t);
+                       continue;
 
                /* inst->backend.is_pinvoke indicates native sized value types, this is used by the
                * pinvoke wrappers when they call functions returning structure */
@@ -2010,6 +2050,8 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 #endif
                        break;
                case RegTypeStructByVal:
+               case RegTypeGSharedVtInReg:
+               case RegTypeGSharedVtOnStack:
                        MONO_INST_NEW (cfg, ins, OP_OUTARG_VT);
                        ins->opcode = OP_OUTARG_VT;
                        ins->sreg1 = in->dreg;
@@ -2115,6 +2157,17 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
        int struct_size = ainfo->struct_size;
        int i, soffset, dreg, tmpreg;
 
+       if (ainfo->storage == RegTypeGSharedVtInReg) {
+               /* Pass by addr */
+               mono_call_inst_add_outarg_reg (cfg, call, src->dreg, ainfo->reg, FALSE);
+               return;
+       }
+       if (ainfo->storage == RegTypeGSharedVtOnStack) {
+               /* Pass by addr on stack */
+               MONO_EMIT_NEW_STORE_MEMBASE (cfg, OP_STORE_MEMBASE_REG, ARMREG_SP, ainfo->offset, src->dreg);
+               return;
+       }
+
        soffset = 0;
        for (i = 0; i < ainfo->size; ++i) {
                dreg = mono_alloc_ireg (cfg);
@@ -2195,12 +2248,6 @@ mono_arch_emit_setret (MonoCompile *cfg, MonoMethod *method, MonoInst *val)
                                return;
                        }
                        break;
-               case MONO_ARM_FPU_FPA:
-                       if (ret->type == MONO_TYPE_R4 || ret->type == MONO_TYPE_R8) {
-                               MONO_EMIT_NEW_UNALU (cfg, OP_FMOVE, cfg->ret->dreg, val->dreg);
-                               return;
-                       }
-                       break;
                default:
                        g_assert_not_reached ();
                }
@@ -2245,9 +2292,7 @@ dyn_call_supported (CallInfo *cinfo, MonoMethodSignature *sig)
        case RegTypeStructByAddr:
                break;
        case RegTypeFP:
-               if (IS_FPA)
-                       return FALSE;
-               else if (IS_VFP)
+               if (IS_VFP)
                        break;
                else
                        return FALSE;
@@ -2967,6 +3012,16 @@ loop_start:
                                /* ARM sets the C flag to 1 if there was _no_ overflow */
                                ins->next->opcode = OP_COND_EXC_NC;
                        break;
+               case OP_IDIV_IMM:
+               case OP_IDIV_UN_IMM:
+               case OP_IREM_IMM:
+               case OP_IREM_UN_IMM:
+                       ADD_NEW_INS (cfg, temp, OP_ICONST);
+                       temp->inst_c0 = ins->inst_imm;
+                       temp->dreg = mono_alloc_ireg (cfg);
+                       ins->sreg2 = temp->dreg;
+                       ins->opcode = mono_op_imm_to_op (ins->opcode);
+                       break;
                case OP_LOCALLOC_IMM:
                        ADD_NEW_INS (cfg, temp, OP_ICONST);
                        temp->inst_c0 = ins->inst_imm;
@@ -3152,9 +3207,7 @@ static guchar*
 emit_float_to_int (MonoCompile *cfg, guchar *code, int dreg, int sreg, int size, gboolean is_signed)
 {
        /* sreg is a float, dreg is an integer reg  */
-       if (IS_FPA)
-               ARM_FPA_FIXZ (code, dreg, sreg);
-       else if (IS_VFP) {
+       if (IS_VFP) {
                if (is_signed)
                        ARM_TOSIZD (code, ARM_VFP_F0, sreg);
                else
@@ -3990,15 +4043,19 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                ARM_LDR_IMM (code, dreg, info_var->inst_basereg, info_var->inst_offset);
                                /* Add the offset */
                                val = ((offset / 4) * sizeof (guint8*)) + G_STRUCT_OFFSET (SeqPointInfo, bp_addrs);
-                               ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF), 0);
-                               if (val & 0xFF00)
-                                       ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF00) >> 8, 24);
-                               if (val & 0xFF0000)
-                                       ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF0000) >> 16, 16);
-                               g_assert (!(val & 0xFF000000));
                                /* Load the info->bp_addrs [offset], which is either 0 or the address of a trigger page */
-                               ARM_LDR_IMM (code, dreg, dreg, 0);
+                               if (arm_is_imm12 ((int)val)) {
+                                       ARM_LDR_IMM (code, dreg, dreg, val);
+                               } else {
+                                       ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF), 0);
+                                       if (val & 0xFF00)
+                                               ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF00) >> 8, 24);
+                                       if (val & 0xFF0000)
+                                               ARM_ADD_REG_IMM (code, dreg, dreg, (val & 0xFF0000) >> 16, 16);
+                                       g_assert (!(val & 0xFF000000));
 
+                                       ARM_LDR_IMM (code, dreg, dreg, 0);
+                               }
                                /* What is faster, a branch or a load ? */
                                ARM_CMP_REG_IMM (code, dreg, 0, 0);
                                /* The breakpoint instruction */
@@ -4121,12 +4178,25 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ARM_AND_REG_IMM (code, ins->dreg, ins->sreg1, imm8, rot_amount);
                        break;
                case OP_IDIV:
+                       g_assert (v7s_supported);
+                       ARM_SDIV (code, ins->dreg, ins->sreg1, ins->sreg2);
+                       break;
                case OP_IDIV_UN:
-               case OP_DIV_IMM:
+                       g_assert (v7s_supported);
+                       ARM_UDIV (code, ins->dreg, ins->sreg1, ins->sreg2);
+                       break;
                case OP_IREM:
+                       g_assert (v7s_supported);
+                       ARM_SDIV (code, ARMREG_LR, ins->sreg1, ins->sreg2);
+                       ARM_MLS (code, ins->dreg, ARMREG_LR, ins->sreg2, ins->sreg1);
+                       break;
                case OP_IREM_UN:
+                       g_assert (v7s_supported);
+                       ARM_UDIV (code, ARMREG_LR, ins->sreg1, ins->sreg2);
+                       ARM_MLS (code, ins->dreg, ARMREG_LR, ins->sreg2, ins->sreg1);
+                       break;
+               case OP_DIV_IMM:
                case OP_REM_IMM:
-                       /* crappy ARM arch doesn't have a DIV instruction */
                        g_assert_not_reached ();
                case OP_IOR:
                        ARM_ORR_REG_REG (code, ins->dreg, ins->sreg1, ins->sreg2);
@@ -4214,6 +4284,14 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        /* Load the value from the GOT */
                        ARM_LDR_REG_REG (code, ins->dreg, ARMREG_PC, ins->dreg);
                        break;
+               case OP_OBJC_GET_SELECTOR:
+                       mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_OBJC_SELECTOR_REF, ins->inst_p0);
+                       ARM_LDR_IMM (code, ins->dreg, ARMREG_PC, 0);
+                       ARM_B (code, 0);
+                       *(gpointer*)code = NULL;
+                       code += 4;
+                       ARM_LDR_REG_REG (code, ins->dreg, ARMREG_PC, ins->dreg);
+                       break;
                case OP_ICONV_TO_I4:
                case OP_ICONV_TO_U4:
                case OP_MOVE:
@@ -4233,15 +4311,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
                }
                case OP_FMOVE:
-                       if (IS_FPA)
-                               ARM_FPA_MVFD (code, ins->dreg, ins->sreg1);
-                       else if (IS_VFP)
+                       if (IS_VFP)
                                ARM_CPYD (code, ins->dreg, ins->sreg1);
                        break;
                case OP_FCONV_TO_R4:
-                       if (IS_FPA)
-                               ARM_FPA_MVFS (code, ins->dreg, ins->sreg1);
-                       else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CVTD (code, ins->dreg, ins->sreg1);
                                ARM_CVTS (code, ins->dreg, ins->dreg);
                        }
@@ -4645,114 +4719,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
 
                /* floating point opcodes */
-#ifdef ARM_FPU_FPA
-               case OP_R8CONST:
-                       if (cfg->compile_aot) {
-                               ARM_FPA_LDFD (code, ins->dreg, ARMREG_PC, 0);
-                               ARM_B (code, 1);
-                               *(guint32*)code = ((guint32*)(ins->inst_p0))[0];
-                               code += 4;
-                               *(guint32*)code = ((guint32*)(ins->inst_p0))[1];
-                               code += 4;
-                       } else {
-                               /* FIXME: we can optimize the imm load by dealing with part of 
-                                * the displacement in LDFD (aligning to 512).
-                                */
-                               code = mono_arm_emit_load_imm (code, ARMREG_LR, (guint32)ins->inst_p0);
-                               ARM_FPA_LDFD (code, ins->dreg, ARMREG_LR, 0);
-                       }
-                       break;
-               case OP_R4CONST:
-                       if (cfg->compile_aot) {
-                               ARM_FPA_LDFS (code, ins->dreg, ARMREG_PC, 0);
-                               ARM_B (code, 0);
-                               *(guint32*)code = ((guint32*)(ins->inst_p0))[0];
-                               code += 4;
-                       } else {
-                               code = mono_arm_emit_load_imm (code, ARMREG_LR, (guint32)ins->inst_p0);
-                               ARM_FPA_LDFS (code, ins->dreg, ARMREG_LR, 0);
-                       }
-                       break;
-               case OP_STORER8_MEMBASE_REG:
-                       /* This is generated by the local regalloc pass which runs after the lowering pass */
-                       if (!arm_is_fpimm8 (ins->inst_offset)) {
-                               code = mono_arm_emit_load_imm (code, ARMREG_LR, ins->inst_offset);
-                               ARM_ADD_REG_REG (code, ARMREG_LR, ARMREG_LR, ins->inst_destbasereg);
-                               ARM_FPA_STFD (code, ins->sreg1, ARMREG_LR, 0);
-                       } else {
-                               ARM_FPA_STFD (code, ins->sreg1, ins->inst_destbasereg, ins->inst_offset);
-                       }
-                       break;
-               case OP_LOADR8_MEMBASE:
-                       /* This is generated by the local regalloc pass which runs after the lowering pass */
-                       if (!arm_is_fpimm8 (ins->inst_offset)) {
-                               code = mono_arm_emit_load_imm (code, ARMREG_LR, ins->inst_offset);
-                               ARM_ADD_REG_REG (code, ARMREG_LR, ARMREG_LR, ins->inst_basereg);
-                               ARM_FPA_LDFD (code, ins->dreg, ARMREG_LR, 0);
-                       } else {
-                               ARM_FPA_LDFD (code, ins->dreg, ins->inst_basereg, ins->inst_offset);
-                       }
-                       break;
-               case OP_STORER4_MEMBASE_REG:
-                       g_assert (arm_is_fpimm8 (ins->inst_offset));
-                       ARM_FPA_STFS (code, ins->sreg1, ins->inst_destbasereg, ins->inst_offset);
-                       break;
-               case OP_LOADR4_MEMBASE:
-                       g_assert (arm_is_fpimm8 (ins->inst_offset));
-                       ARM_FPA_LDFS (code, ins->dreg, ins->inst_basereg, ins->inst_offset);
-                       break;
-               case OP_ICONV_TO_R_UN: {
-                       int tmpreg;
-#ifdef USE_JUMP_TABLES
-                       gpointer *jte = mono_jumptable_add_entries (2);
-#define SKIP_INSTRUCTIONS 5
-#else
-#define SKIP_INSTRUCTIONS 8
-#endif
-                       tmpreg = ins->dreg == 0? 1: 0;
-                       ARM_CMP_REG_IMM8 (code, ins->sreg1, 0);
-                       ARM_FPA_FLTD (code, ins->dreg, ins->sreg1);
-                       ARM_B_COND (code, ARMCOND_GE, SKIP_INSTRUCTIONS);
-                       /* save the temp register */
-                       ARM_SUB_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, 8);
-                       ARM_FPA_STFD (code, tmpreg, ARMREG_SP, 0);
-#ifdef USE_JUMP_TABLES
-                       code = mono_arm_load_jumptable_entry_addr (code, jte, ARMREG_IP);
-                       ARM_FPA_LDFD (code, tmpreg, ARMREG_IP, 0);
-#else
-                       ARM_FPA_LDFD (code, tmpreg, ARMREG_PC, 12);
-#endif
-                       ARM_FPA_ADFD (code, ins->dreg, ins->dreg, tmpreg);
-                       ARM_FPA_LDFD (code, tmpreg, ARMREG_SP, 0);
-                       ARM_ADD_REG_IMM8 (code, ARMREG_SP, ARMREG_SP, 8);
-#ifdef USE_JUMP_TABLES
-                       jte [0] = GUINT_TO_POINTER (0x41f00000);
-                       jte [1] = GUINT_TO_POINTER (0);
-#else
-                       /* skip the constant pool */
-                       ARM_B (code, 8);
-                       code += 4;
-                       *(int*)code = 0x41f00000;
-                       code += 4;
-                       *(int*)code = 0;
-                       code += 4;
-                       /* FIXME: adjust:
-                        * ldfltd  ftemp, [pc, #8] 0x41f00000 0x00000000
-                        * adfltd  fdest, fdest, ftemp
-                        */
-#endif
-#undef SKIP_INSTRUCTIONS
-                       break;
-               }
-               case OP_ICONV_TO_R4:
-                       ARM_FPA_FLTS (code, ins->dreg, ins->sreg1);
-                       break;
-               case OP_ICONV_TO_R8:
-                       ARM_FPA_FLTD (code, ins->dreg, ins->sreg1);
-                       break;
-
-#elif defined(ARM_FPU_VFP)
-
                case OP_R8CONST:
                        if (cfg->compile_aot) {
                                ARM_FLDD (code, ins->dreg, ARMREG_PC, 0);
@@ -4834,9 +4800,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                ARM_FMRRD (code, ARMREG_R0, ARMREG_R1, ins->sreg1);
                        }
                        break;
-
-#endif
-
                case OP_FCONV_TO_I1:
                        code = emit_float_to_int (cfg, code, ins->dreg, ins->sreg1, 1, TRUE);
                        break;
@@ -4898,23 +4861,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                ARM_MOV_REG_REG (code, ins->dreg, ins->sreg1);
                        break;
                }
-#ifdef ARM_FPU_FPA
-               case OP_FADD:
-                       ARM_FPA_ADFD (code, ins->dreg, ins->sreg1, ins->sreg2);
-                       break;
-               case OP_FSUB:
-                       ARM_FPA_SUFD (code, ins->dreg, ins->sreg1, ins->sreg2);
-                       break;          
-               case OP_FMUL:
-                       ARM_FPA_MUFD (code, ins->dreg, ins->sreg1, ins->sreg2);
-                       break;          
-               case OP_FDIV:
-                       ARM_FPA_DVFD (code, ins->dreg, ins->sreg1, ins->sreg2);
-                       break;          
-               case OP_FNEG:
-                       ARM_FPA_MNFD (code, ins->dreg, ins->sreg1);
-                       break;
-#elif defined(ARM_FPU_VFP)
                case OP_FADD:
                        ARM_VFP_ADDD (code, ins->dreg, ins->sreg1, ins->sreg2);
                        break;
@@ -4930,23 +4876,18 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_FNEG:
                        ARM_NEGD (code, ins->dreg, ins->sreg1);
                        break;
-#endif
                case OP_FREM:
                        /* emulated */
                        g_assert_not_reached ();
                        break;
                case OP_FCOMPARE:
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg1, ins->sreg2);
                                ARM_FMSTAT (code);
                        }
                        break;
                case OP_FCEQ:
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg1, ins->sreg2);
                                ARM_FMSTAT (code);
                        }
@@ -4954,9 +4895,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_EQ);
                        break;
                case OP_FCLT:
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
-                       } else {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg1, ins->sreg2);
                                ARM_FMSTAT (code);
                        }
@@ -4964,9 +4903,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_MI);
                        break;
                case OP_FCLT_UN:
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg1, ins->sreg2);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg1, ins->sreg2);
                                ARM_FMSTAT (code);
                        }
@@ -4975,10 +4912,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_VS);
                        break;
                case OP_FCGT:
-                       /* swapped */
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg2, ins->sreg1);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg2, ins->sreg1);
                                ARM_FMSTAT (code);
                        }
@@ -4986,10 +4920,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        ARM_MOV_REG_IMM8_COND (code, ins->dreg, 1, ARMCOND_MI);
                        break;
                case OP_FCGT_UN:
-                       /* swapped */
-                       if (IS_FPA) {
-                               ARM_FPA_FCMP (code, ARM_FPA_CMF, ins->sreg2, ins->sreg1);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
                                ARM_CMPD (code, ins->sreg2, ins->sreg1);
                                ARM_FMSTAT (code);
                        }
@@ -5037,10 +4968,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        break;
 
                case OP_CKFINITE: {
-                       if (IS_FPA) {
-                               if (ins->dreg != ins->sreg1)
-                                       ARM_FPA_MVFD (code, ins->dreg, ins->sreg1);
-                       } else if (IS_VFP) {
+                       if (IS_VFP) {
 #ifdef USE_JUMP_TABLES
                                {
                                        gpointer *jte = mono_jumptable_add_entries (2);
@@ -5150,7 +5078,6 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, Mono
                                jt [i] = code + (int)patch_info->data.table->table [i];
                        continue;
                }
-               target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors);
 
                if (compile_aot) {
                        switch (patch_info->type) {
@@ -5163,6 +5090,8 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, Mono
                        }
                }
 
+               target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors);
+
                switch (patch_info->type) {
                case MONO_PATCH_INFO_IP:
                        g_assert_not_reached ();
@@ -5251,25 +5180,26 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        pos = 0;
        prev_sp_offset = 0;
 
+       if (iphone_abi) {
+               /* 
+                * The iphone uses R7 as the frame pointer, and it points at the saved
+                * r7+lr:
+                *         <lr>
+                * r7 ->   <r7>
+                *         <rest of frame>
+                * We can't use r7 as a frame pointer since it points into the middle of
+                * the frame, so we keep using our own frame pointer.
+                * FIXME: Optimize this.
+                */
+               ARM_PUSH (code, (1 << ARMREG_R7) | (1 << ARMREG_LR));
+               ARM_MOV_REG_REG (code, ARMREG_R7, ARMREG_SP);
+               prev_sp_offset += 8; /* r7 and lr */
+               mono_emit_unwind_op_def_cfa_offset (cfg, code, prev_sp_offset);
+               mono_emit_unwind_op_offset (cfg, code, ARMREG_R7, (- prev_sp_offset) + 0);
+       }
+
        if (!method->save_lmf) {
                if (iphone_abi) {
-                       /* 
-                        * The iphone uses R7 as the frame pointer, and it points at the saved
-                        * r7+lr:
-                        *         <lr>
-                        * r7 ->   <r7>
-                        *         <rest of frame>
-                        * We can't use r7 as a frame pointer since it points into the middle of
-                        * the frame, so we keep using our own frame pointer.
-                        * FIXME: Optimize this.
-                        */
-                       g_assert (darwin);
-                       ARM_PUSH (code, (1 << ARMREG_R7) | (1 << ARMREG_LR));
-                       ARM_MOV_REG_REG (code, ARMREG_R7, ARMREG_SP);
-                       prev_sp_offset += 8; /* r7 and lr */
-                       mono_emit_unwind_op_def_cfa_offset (cfg, code, prev_sp_offset);
-                       mono_emit_unwind_op_offset (cfg, code, ARMREG_R7, (- prev_sp_offset) + 0);
-
                        /* No need to push LR again */
                        if (cfg->used_int_regs)
                                ARM_PUSH (code, cfg->used_int_regs);
@@ -5305,11 +5235,14 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                reg_offset = 0;
                for (i = 0; i < 16; ++i) {
                        if ((i > ARMREG_R3) && (i != ARMREG_SP) && (i != ARMREG_PC)) {
-                               mono_emit_unwind_op_offset (cfg, code, i, (- prev_sp_offset) + reg_offset);
+                               /* The original r7 is saved at the start */
+                               if (!(iphone_abi && i == ARMREG_R7))
+                                       mono_emit_unwind_op_offset (cfg, code, i, (- prev_sp_offset) + reg_offset);
                                reg_offset += 4;
                        }
                }
-               pos += sizeof (MonoLMF) - prev_sp_offset;
+               g_assert (reg_offset == 4 * 10);
+               pos += sizeof (MonoLMF) - (4 * 10);
                lmf_offset = pos;
        }
        alloc_size += pos;
@@ -5422,7 +5355,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                g_print ("Argument %d assigned to register %s\n", pos, mono_arch_regname (inst->dreg));
                } else {
                        /* the argument should be put on the stack: FIXME handle size != word  */
-                       if (ainfo->storage == RegTypeGeneral || ainfo->storage == RegTypeIRegPair) {
+                       if (ainfo->storage == RegTypeGeneral || ainfo->storage == RegTypeIRegPair || ainfo->storage == RegTypeGSharedVtInReg) {
                                switch (ainfo->size) {
                                case 1:
                                        if (arm_is_imm12 (inst->inst_offset))
@@ -5469,7 +5402,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                                ARM_LDR_IMM (code, ARMREG_LR, ARMREG_SP, (prev_sp_offset + ainfo->offset));
                                ARM_STR_IMM (code, ARMREG_LR, inst->inst_basereg, inst->inst_offset + 4);
                                ARM_STR_IMM (code, ARMREG_R3, inst->inst_basereg, inst->inst_offset);
-                       } else if (ainfo->storage == RegTypeBase) {
+                       } else if (ainfo->storage == RegTypeBase || ainfo->storage == RegTypeGSharedVtOnStack) {
                                if (arm_is_imm12 (prev_sp_offset + ainfo->offset)) {
                                        ARM_LDR_IMM (code, ARMREG_LR, ARMREG_SP, (prev_sp_offset + ainfo->offset));
                                } else {
@@ -5720,10 +5653,19 @@ mono_arch_emit_epilog (MonoCompile *cfg)
                        sp_adj += 4;
                        reg ++;
                }
+               if (iphone_abi)
+                       /* Restored later */
+                       regmask &= ~(1 << ARMREG_PC);
                /* point sp at the registers to restore: 10 is 14 -4, because we skip r0-r3 */
                code = emit_big_add (code, ARMREG_SP, cfg->frame_reg, cfg->stack_usage - lmf_offset + sp_adj);
                /* restore iregs */
                ARM_POP (code, regmask); 
+               if (iphone_abi) {
+                       /* Restore saved r7, restore LR to PC */
+                       /* Skip lr from the lmf */
+                       ARM_ADD_REG_IMM (code, ARMREG_SP, ARMREG_SP, sizeof (gpointer), 0);
+                       ARM_POP (code, (1 << ARMREG_R7) | (1 << ARMREG_PC));
+               }
        } else {
                if ((i = mono_arm_is_rotated_imm8 (cfg->stack_usage, &rot_amount)) >= 0) {
                        ARM_ADD_REG_IMM (code, ARMREG_SP, cfg->frame_reg, i, rot_amount);
@@ -5749,30 +5691,6 @@ mono_arch_emit_epilog (MonoCompile *cfg)
 
 }
 
-/* remove once throw_exception_by_name is eliminated */
-static int
-exception_id_by_name (const char *name)
-{
-       if (strcmp (name, "IndexOutOfRangeException") == 0)
-               return MONO_EXC_INDEX_OUT_OF_RANGE;
-       if (strcmp (name, "OverflowException") == 0)
-               return MONO_EXC_OVERFLOW;
-       if (strcmp (name, "ArithmeticException") == 0)
-               return MONO_EXC_ARITHMETIC;
-       if (strcmp (name, "DivideByZeroException") == 0)
-               return MONO_EXC_DIVIDE_BY_ZERO;
-       if (strcmp (name, "InvalidCastException") == 0)
-               return MONO_EXC_INVALID_CAST;
-       if (strcmp (name, "NullReferenceException") == 0)
-               return MONO_EXC_NULL_REF;
-       if (strcmp (name, "ArrayTypeMismatchException") == 0)
-               return MONO_EXC_ARRAY_TYPE_MISMATCH;
-       if (strcmp (name, "ArgumentException") == 0)
-               return MONO_EXC_ARGUMENT;
-       g_error ("Unknown intrinsic exception %s\n", name);
-       return -1;
-}
-
 void
 mono_arch_emit_exceptions (MonoCompile *cfg)
 {
@@ -5795,7 +5713,7 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
         */
        for (patch_info = cfg->patch_info; patch_info; patch_info = patch_info->next) {
                if (patch_info->type == MONO_PATCH_INFO_EXC) {
-                       i = exception_id_by_name (patch_info->data.target);
+                       i = mini_exception_id_by_name (patch_info->data.target);
                        if (!exc_throw_found [i]) {
                                max_epilog_size += 32;
                                exc_throw_found [i] = TRUE;
@@ -5818,7 +5736,7 @@ mono_arch_emit_exceptions (MonoCompile *cfg)
                        MonoClass *exc_class;
                        unsigned char *ip = patch_info->ip.i + cfg->native_code;
 
-                       i = exception_id_by_name (patch_info->data.target);
+                       i = mini_exception_id_by_name (patch_info->data.target);
                        if (exc_throw_pos [i]) {
                                arm_patch (ip, exc_throw_pos [i]);
                                patch_info->type = MONO_PATCH_INFO_NONE;
@@ -5894,12 +5812,16 @@ mono_arch_print_tree (MonoInst *tree, int arity)
        return 0;
 }
 
+#ifndef DISABLE_JIT
+
 MonoInst*
 mono_arch_get_domain_intrinsic (MonoCompile* cfg)
 {
        return mono_get_domain_intrinsic (cfg);
 }
 
+#endif
+
 guint32
 mono_arch_get_patch_offset (guint8 *code)
 {
@@ -6641,20 +6563,29 @@ mono_arch_set_target (char *mtriple)
 {
        /* The GNU target triple format is not very well documented */
        if (strstr (mtriple, "armv7")) {
+               v5_supported = TRUE;
                v6_supported = TRUE;
                v7_supported = TRUE;
        }
        if (strstr (mtriple, "armv6")) {
+               v5_supported = TRUE;
                v6_supported = TRUE;
        }
+       if (strstr (mtriple, "armv7s")) {
+               v7s_supported = TRUE;
+       }
        if (strstr (mtriple, "thumbv7s")) {
+               v5_supported = TRUE;
+               v6_supported = TRUE;
+               v7_supported = TRUE;
                v7s_supported = TRUE;
+               thumb_supported = TRUE;
                thumb2_supported = TRUE;
        }
        if (strstr (mtriple, "darwin") || strstr (mtriple, "ios")) {
                v5_supported = TRUE;
+               v6_supported = TRUE;
                thumb_supported = TRUE;
-               darwin = TRUE;
                iphone_abi = TRUE;
        }
        if (strstr (mtriple, "gnueabi"))
index 4d0eb4525ced37850e36417d36c178edb3fbf6f6..93a256b56329708045ada86d42417a32cabb3663 100644 (file)
@@ -15,8 +15,8 @@
 #define kNaClLengthOfCallImm 4
 #endif
 
-#if defined(ARM_FPU_NONE) || (defined(__ARM_EABI__) && !defined(ARM_FPU_VFP) && !defined(ARM_FPU_VFP_HARD))
-#define MONO_ARCH_SOFT_FLOAT 1
+#if defined(ARM_FPU_NONE)
+#define MONO_ARCH_SOFT_FLOAT_FALLBACK 1
 #endif
 
 #ifdef ARM_FPU_VFP_HARD
 #define ARM_ARCHITECTURE "arm"
 #endif
 
-#if defined(ARM_FPU_FPA)
-#define ARM_FP_MODEL "fpa"
-#elif defined(ARM_FPU_VFP)
+#if defined(ARM_FPU_VFP)
 #define ARM_FP_MODEL "vfp"
 #elif defined(ARM_FPU_NONE)
-#define ARM_FP_MODEL "soft-float"
+#define ARM_FP_MODEL "vfp+fallback"
 #elif defined(ARM_FPU_VFP_HARD)
-#define ARM_FP_MODEL "vfp(hardfp-abi)"
+#define ARM_FP_MODEL "vfp+hard"
 #else
-#error "At least one of ARM_FPU_NONE, ARM_FPU_FPA, ARM_FPU_VFP or ARM_FPU_VFP_HARD must be defined."
+#error "At least one of ARM_FPU_NONE, ARM_FPU_VFP or ARM_FPU_VFP_HARD must be defined."
 #endif
 
 #define MONO_ARCH_ARCHITECTURE ARM_ARCHITECTURE "," ARM_FP_MODEL
 #define MONO_ARCH_CALLEE_REGS ((1<<ARMREG_R0) | (1<<ARMREG_R1) | (1<<ARMREG_R2) | (1<<ARMREG_R3) | (1<<ARMREG_IP))
 #define MONO_ARCH_CALLEE_SAVED_REGS ((1<<ARMREG_V1) | (1<<ARMREG_V2) | (1<<ARMREG_V3) | (1<<ARMREG_V4) | (1<<ARMREG_V5) | (1<<ARMREG_V6) | (1<<ARMREG_V7))
 
-#if defined(ARM_FPU_VFP) || defined(ARM_FPU_VFP_HARD)
 /* Every double precision vfp register, d0/d1 is reserved for a scratch reg */
 #define MONO_ARCH_CALLEE_FREGS 0x55555550
-#else
-#define MONO_ARCH_CALLEE_FREGS 0xf
-#endif
 #define MONO_ARCH_CALLEE_SAVED_FREGS 0
 
 #define MONO_ARCH_USE_FPSTACK FALSE
 
 #define MONO_ARCH_INST_SREG2_MASK(ins) (0)
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-#define MONO_ARCH_INST_FIXED_REG(desc) (((desc) == 'l' || (desc == 'f') || (desc == 'g')) ? ARM_LSW_REG: (((desc) == 'a') ? ARMREG_R0 : -1))
-#define MONO_ARCH_INST_IS_REGPAIR(desc) ((desc) == 'l' || (desc) == 'L' || (desc) == 'f' || (desc) == 'g')
-#define MONO_ARCH_INST_IS_FLOAT(desc) (FALSE)
-#else
-#define MONO_ARCH_INST_FIXED_REG(desc) (((desc) == 'l')? ARM_LSW_REG: (((desc) == 'a') ? ARMREG_R0 : -1))
-#define MONO_ARCH_INST_IS_REGPAIR(desc) (desc == 'l' || desc == 'L')
-#define MONO_ARCH_INST_IS_FLOAT(desc) ((desc == 'f') || (desc == 'g'))
-#endif
-#define MONO_ARCH_INST_REGPAIR_REG2(desc,hreg1) (desc == 'l'  || (desc == 'f') || (desc == 'g')? ARM_MSW_REG : -1)
+#define MONO_ARCH_INST_FIXED_REG(desc) \
+       (mono_arch_is_soft_float () ? \
+       ((desc) == 'l' || (desc) == 'f' || (desc) == 'g' ? ARM_LSW_REG : (desc) == 'a' ? ARMREG_R0 : -1) : \
+       ((desc) == 'l' ? ARM_LSW_REG : (desc) == 'a' ? ARMREG_R0 : -1))
+
+#define MONO_ARCH_INST_IS_REGPAIR(desc) \
+       (mono_arch_is_soft_float () ? \
+       ((desc) == 'l' || (desc) == 'L' || (desc) == 'f' || (desc) == 'g') : \
+       ((desc) == 'l' || (desc) == 'L'))
+
+#define MONO_ARCH_INST_IS_FLOAT(desc) \
+       (mono_arch_is_soft_float () ? \
+       (FALSE) : \
+       ((desc) == 'f' || (desc) == 'g'))
+
+#define MONO_ARCH_INST_REGPAIR_REG2(desc,hreg1) ((desc) == 'l' || (desc) == 'f' || (desc) == 'g' ? ARM_MSW_REG : -1)
 
 #define MONO_ARCH_FRAME_ALIGNMENT 8
 
  * reproduceable results for benchmarks */
 #define MONO_ARCH_CODE_ALIGNMENT 32
 
-
 /* Return value marshalling for calls between gsharedvt and normal code */
 typedef enum {
        GSHAREDVT_RET_NONE = 0,
-       GSHAREDVT_RET_IREGS = 1,
-       GSHAREDVT_RET_I1 = 5,
-       GSHAREDVT_RET_U1 = 6,
-       GSHAREDVT_RET_I2 = 7,
-       GSHAREDVT_RET_U2 = 8
+       GSHAREDVT_RET_IREG = 1,
+       GSHAREDVT_RET_IREGS = 2,
+       GSHAREDVT_RET_I1 = 3,
+       GSHAREDVT_RET_U1 = 4,
+       GSHAREDVT_RET_I2 = 5,
+       GSHAREDVT_RET_U2 = 6
 } GSharedVtRetMarshal;
 
 typedef struct {
@@ -143,13 +143,12 @@ void
 mono_arm_throw_exception_by_token (guint32 type_token, mgreg_t pc, mgreg_t sp, mgreg_t *int_regs, gdouble *fp_regs);
 
 gpointer
-mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpointer *callee, gpointer *caller_regs, gpointer *callee_regs, gpointer mrgctx_reg) MONO_INTERNAL;
+mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpointer *callee, gpointer mrgctx_reg) MONO_INTERNAL;
 
 typedef enum {
        MONO_ARM_FPU_NONE = 0,
-       MONO_ARM_FPU_FPA = 1,
-       MONO_ARM_FPU_VFP = 2,
-       MONO_ARM_FPU_VFP_HARD = 3
+       MONO_ARM_FPU_VFP = 1,
+       MONO_ARM_FPU_VFP_HARD = 2
 } MonoArmFPU;
 
 /* keep the size of the structure a multiple of 8 */
@@ -232,6 +231,7 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_GSHAREDVT_SUPPORTED 1
 #define MONO_ARCH_HAVE_GENERAL_RGCTX_LAZY_FETCH_TRAMPOLINE 1
 #define MONO_ARCH_HAVE_OPCODE_NEEDS_EMULATION 1
+#define MONO_ARCH_HAVE_OBJC_GET_SELECTOR 1
 
 #if defined(__native_client__)
 #undef MONO_ARCH_SOFT_DEBUG_SUPPORTED
index 4e4c783d622c681aa69580ac4086bb6ebada79c2..ccb3c7986532fa0761368ded8fa1dfb307824f41 100644 (file)
@@ -409,7 +409,7 @@ typedef struct {
        regmask_t preferred_mask; /* the hreg where the register should be allocated, or 0 */
 } RegTrack;
 
-#ifndef DISABLE_LOGGING
+#if !defined(DISABLE_LOGGING) && !defined(DISABLE_JIT)
 
 static const char* const patch_info_str[] = {
 #define PATCH_INFO(a,b) "" #a,
@@ -498,6 +498,7 @@ mono_print_ins_index (int i, MonoInst *ins)
                        printf (" R%d", ((MonoInst*)ins->inst_p0)->dreg);
                        break;
                case OP_REGOFFSET:
+               case OP_GSHAREDVT_ARG_REGOFFSET:
                        printf (" + 0x%lx", (long)ins->inst_offset);
                        break;
                default:
@@ -583,11 +584,8 @@ mono_print_ins_index (int i, MonoInst *ins)
        case OP_CALL_MEMBASE:
        case OP_CALL_REG:
        case OP_FCALL:
-       case OP_FCALLVIRT:
        case OP_LCALL:
-       case OP_LCALLVIRT:
        case OP_VCALL:
-       case OP_VCALLVIRT:
        case OP_VCALL_REG:
        case OP_VCALL_MEMBASE:
        case OP_VCALL2:
@@ -595,7 +593,6 @@ mono_print_ins_index (int i, MonoInst *ins)
        case OP_VCALL2_MEMBASE:
        case OP_VOIDCALL:
        case OP_VOIDCALL_MEMBASE:
-       case OP_VOIDCALLVIRT:
        case OP_TAILCALL: {
                MonoCallInst *call = (MonoCallInst*)ins;
                GSList *list;
@@ -715,7 +712,7 @@ void
 mono_print_ins_index (int i, MonoInst *ins)
 {
 }
-#endif /* DISABLE_LOGGING */
+#endif /* !defined(DISABLE_LOGGING) && !defined(DISABLE_JIT) */
 
 void
 mono_print_ins (MonoInst *ins)
@@ -1789,7 +1786,7 @@ mono_local_regalloc (MonoCompile *cfg, MonoBasicBlock *bb)
                                                        continue;
 
                                                s = regmask (j);
-                                               if ((clob_mask & s) && !(rs->free_mask [cur_bank] & s) && (j != ins->sreg1)) {
+                                               if ((clob_mask & s) && !(rs->free_mask [cur_bank] & s)) {
                                                        if (j != dreg)
                                                                free_up_hreg (cfg, bb, tmp, ins, j, cur_bank);
                                                        else if (rs->symbolic [cur_bank] [j])
@@ -2340,6 +2337,8 @@ mono_opcode_to_cond (int opcode)
        case OP_CMOV_IEQ:
        case OP_CMOV_LEQ:
                return CMP_EQ;
+       case OP_FCNEQ:
+       case OP_ICNEQ:
        case OP_IBNE_UN:
        case OP_LBNE_UN:
        case OP_FBNE_UN:
@@ -2348,12 +2347,16 @@ mono_opcode_to_cond (int opcode)
        case OP_CMOV_INE_UN:
        case OP_CMOV_LNE_UN:
                return CMP_NE;
+       case OP_FCLE:
+       case OP_ICLE:
        case OP_IBLE:
        case OP_LBLE:
        case OP_FBLE:
        case OP_CMOV_ILE:
        case OP_CMOV_LLE:
                return CMP_LE;
+       case OP_FCGE:
+       case OP_ICGE:
        case OP_IBGE:
        case OP_LBGE:
        case OP_FBGE:
@@ -2385,6 +2388,7 @@ mono_opcode_to_cond (int opcode)
        case OP_CMOV_LGT:
                return CMP_GT;
 
+       case OP_ICLE_UN:
        case OP_IBLE_UN:
        case OP_LBLE_UN:
        case OP_FBLE_UN:
@@ -2393,6 +2397,8 @@ mono_opcode_to_cond (int opcode)
        case OP_CMOV_ILE_UN:
        case OP_CMOV_LLE_UN:
                return CMP_LE_UN;
+
+       case OP_ICGE_UN:
        case OP_IBGE_UN:
        case OP_LBGE_UN:
        case OP_FBGE_UN:
@@ -2696,4 +2702,27 @@ mono_peephole_ins (MonoBasicBlock *bb, MonoInst *ins)
        }
 }
 
+int
+mini_exception_id_by_name (const char *name)
+{
+       if (strcmp (name, "IndexOutOfRangeException") == 0)
+               return MONO_EXC_INDEX_OUT_OF_RANGE;
+       if (strcmp (name, "OverflowException") == 0)
+               return MONO_EXC_OVERFLOW;
+       if (strcmp (name, "ArithmeticException") == 0)
+               return MONO_EXC_ARITHMETIC;
+       if (strcmp (name, "DivideByZeroException") == 0)
+               return MONO_EXC_DIVIDE_BY_ZERO;
+       if (strcmp (name, "InvalidCastException") == 0)
+               return MONO_EXC_INVALID_CAST;
+       if (strcmp (name, "NullReferenceException") == 0)
+               return MONO_EXC_NULL_REF;
+       if (strcmp (name, "ArrayTypeMismatchException") == 0)
+               return MONO_EXC_ARRAY_TYPE_MISMATCH;
+       if (strcmp (name, "ArgumentException") == 0)
+               return MONO_EXC_ARGUMENT;
+       g_error ("Unknown intrinsic exception %s\n", name);
+       return -1;
+}
+
 #endif /* DISABLE_JIT */
index 5ec06d20a748c8036e64b9900bbc623f3a47b723..9f566dd299a065c21152a65f8a192e4d7e01aec6 100644 (file)
@@ -246,32 +246,47 @@ void
 mono_gdb_render_native_backtraces (pid_t crashed_pid)
 {
        const char *argv [5];
-       char gdb_template [] = "/tmp/mono-gdb-commands.XXXXXX";
+       char template [] = "/tmp/mono-gdb-commands.XXXXXX";
+       FILE *commands;
+       gboolean using_lldb = FALSE;
 
        argv [0] = g_find_program_in_path ("gdb");
-       if (argv [0] == NULL) {
-               return;
+       if (!argv [0]) {
+               argv [0] = g_find_program_in_path ("lldb");
+               using_lldb = TRUE;
        }
 
-       if (mkstemp (gdb_template) != -1) {
-               FILE *gdb_commands = fopen (gdb_template, "w");
-
-               fprintf (gdb_commands, "attach %ld\n", (long) crashed_pid);
-               fprintf (gdb_commands, "info threads\n");
-               fprintf (gdb_commands, "thread apply all bt\n");
+       if (argv [0] == NULL)
+               return;
 
-               fflush (gdb_commands);
-               fclose (gdb_commands);
+       if (mkstemp (template) == -1)
+               return;
 
+       commands = fopen (template, "w");
+       if (using_lldb) {
+               fprintf (commands, "process attach --pid %ld\n", (long) crashed_pid);
+               fprintf (commands, "script lldb.debugger.HandleCommand (\"thread list\")\n");
+               fprintf (commands, "script lldb.debugger.HandleCommand (\"thread backtrace all\")\n");
+               fprintf (commands, "detach\n");
+               fprintf (commands, "quit\n");
+               argv [1] = "--source";
+               argv [2] = template;
+               argv [3] = 0;
+               
+       } else {
+               fprintf (commands, "attach %ld\n", (long) crashed_pid);
+               fprintf (commands, "info threads\n");
+               fprintf (commands, "thread apply all bt\n");
                argv [1] = "-batch";
                argv [2] = "-x";
-               argv [3] = gdb_template;
+               argv [3] = template;
                argv [4] = 0;
-
-               execv (argv [0], (char**)argv);
-
-               unlink (gdb_template);
        }
+       fflush (commands);
+       fclose (commands);
+
+       execv (argv [0], (char**)argv);
+       unlink (template);
 }
 
 gboolean
index ece328263f554386e5ab305795a783559a05139c..3438f2d90862f98a005b643e51e614715adcebfc 100644 (file)
@@ -87,25 +87,13 @@ mono_exceptions_init (void)
                MonoTrampInfo *info;
 
                restore_context_func = mono_arch_get_restore_context (&info, FALSE);
-               if (info) {
-                       mono_save_trampoline_xdebug_info (info);
-                       mono_tramp_info_free (info);
-               }
+               mono_tramp_info_register (info);
                call_filter_func = mono_arch_get_call_filter (&info, FALSE);
-               if (info) {
-                       mono_save_trampoline_xdebug_info (info);
-                       mono_tramp_info_free (info);
-               }
+               mono_tramp_info_register (info);
                throw_exception_func = mono_arch_get_throw_exception (&info, FALSE);
-               if (info) {
-                       mono_save_trampoline_xdebug_info (info);
-                       mono_tramp_info_free (info);
-               }
+               mono_tramp_info_register (info);
                rethrow_exception_func = mono_arch_get_rethrow_exception (&info, FALSE);
-               if (info) {
-                       mono_save_trampoline_xdebug_info (info);
-                       mono_tramp_info_free (info);
-               }
+               mono_tramp_info_register (info);
        }
 #ifdef MONO_ARCH_HAVE_RESTORE_STACK_SUPPORT
        try_more_restore_tramp = mono_create_specific_trampoline (try_more_restore, MONO_TRAMPOLINE_RESTORE_STACK_PROT, mono_domain_get (), NULL);
@@ -119,6 +107,7 @@ mono_exceptions_init (void)
        cbs.mono_walk_stack_with_state = mono_walk_stack_with_state;
        cbs.mono_raise_exception = mono_get_throw_exception ();
        cbs.mono_raise_exception_with_ctx = mono_raise_exception_with_ctx;
+       cbs.mono_exception_walk_trace = mono_exception_walk_trace;
        cbs.mono_install_handler_block_guard = mono_install_handler_block_guard;
        mono_install_eh_callbacks (&cbs);
 }
@@ -165,10 +154,7 @@ mono_get_throw_corlib_exception (void)
                code = mono_aot_get_trampoline ("throw_corlib_exception");
        else {
                code = mono_arch_get_throw_corlib_exception (&info, FALSE);
-               if (info) {
-                       mono_save_trampoline_xdebug_info (info);
-                       mono_tramp_info_free (info);
-               }
+               mono_tramp_info_register (info);
        }
 
        mono_memory_barrier ();
@@ -243,7 +229,7 @@ find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *res, Mo
                        return frame.ji;
                else {
                        memset (res, 0, sizeof (MonoJitInfo));
-                       res->method = frame.method;
+                       res->d.method = frame.method;
                        return res;
                }
        case FRAME_TYPE_DEBUGGER_INVOKE: {
@@ -280,6 +266,7 @@ mono_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *re
        gboolean managed2;
        gpointer ip = MONO_CONTEXT_GET_IP (ctx);
        MonoJitInfo *ji;
+       MonoMethod *method = NULL;
 
        if (trace)
                *trace = NULL;
@@ -295,7 +282,10 @@ mono_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *re
        if (ji == (gpointer)-1)
                return ji;
 
-       if (managed2 || (ji && ji->method->wrapper_type)) {
+       if (ji)
+               method = jinfo_get_method (ji);
+
+       if (managed2 || (ji && method->wrapper_type)) {
                const char *real_ip, *start;
                gint32 offset;
 
@@ -315,14 +305,14 @@ mono_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *re
                        *native_offset = offset;
 
                if (managed)
-                       if (!ji->method->wrapper_type || ji->method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
+                       if (!method->wrapper_type || method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
                                *managed = TRUE;
 
                if (trace)
-                       *trace = mono_debug_print_stack_frame (ji->method, offset, domain);
+                       *trace = mono_debug_print_stack_frame (method, offset, domain);
        } else {
                if (trace) {
-                       char *fname = mono_method_full_name (res->method, TRUE);
+                       char *fname = mono_method_full_name (jinfo_get_method (res), TRUE);
                        *trace = g_strdup_printf ("in (unmanaged) %s", fname);
                        g_free (fname);
                }
@@ -344,6 +334,8 @@ mono_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, MonoJitInfo *re
  * On return, it will be filled with the locations where callee saved registers are saved
  * by the current frame. This is returned outside of StackFrameInfo because it can be
  * quite large on some platforms.
+ * If ASYNC true, this function will be async safe, but some fields of frame and frame->ji will
+ * not be set.
  */
 gboolean
 mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, 
@@ -355,7 +347,9 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
        gboolean err;
        gpointer ip = MONO_CONTEXT_GET_IP (ctx);
        MonoJitInfo *ji;
-       MonoDomain *target_domain;
+       MonoDomain *target_domain = domain;
+       MonoMethod *method = NULL;
+       gboolean async = mono_thread_info_is_async_context ();
 
        if (trace)
                *trace = NULL;
@@ -376,8 +370,11 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
        if (!err)
                return FALSE;
 
-       if (frame->type == FRAME_TYPE_MANAGED) {
-               if (!frame->ji->method->wrapper_type || frame->ji->method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
+       if (frame->ji && !frame->ji->async)
+               method = jinfo_get_method (frame->ji);
+
+       if (frame->type == FRAME_TYPE_MANAGED && method) {
+               if (!method->wrapper_type || method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD)
                        frame->managed = TRUE;
        }
 
@@ -392,13 +389,14 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
 
        frame->native_offset = -1;
        frame->domain = target_domain;
+       frame->async_context = async;
 
        ji = frame->ji;
 
        if (frame->type == FRAME_TYPE_MANAGED)
-               frame->method = ji->method;
+               frame->method = method;
 
-       if (ji && (frame->managed || ji->method->wrapper_type)) {
+       if (ji && (frame->managed || (method && method->wrapper_type))) {
                const char *real_ip, *start;
 
                start = (const char *)ji->code_start;
@@ -414,7 +412,7 @@ mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls,
                        frame->native_offset = -1;
 
                if (trace)
-                       *trace = mono_debug_print_stack_frame (ji->method, frame->native_offset, domain);
+                       *trace = mono_debug_print_stack_frame (method, frame->native_offset, domain);
        } else {
                if (trace && frame->method) {
                        char *fname = mono_method_full_name (frame->method, TRUE);
@@ -430,6 +428,7 @@ static gpointer
 get_generic_info_from_stack_frame (MonoJitInfo *ji, MonoContext *ctx)
 {
        MonoGenericJitInfo *gi;
+       MonoMethod *method;
        gpointer info;
 
        if (!ji->has_generic_jit_info)
@@ -468,9 +467,10 @@ get_generic_info_from_stack_frame (MonoJitInfo *ji, MonoContext *ctx)
                                                                                  gi->this_offset);
        }
 
-       if (mono_method_get_context (ji->method)->method_inst) {
+       method = jinfo_get_method (ji);
+       if (mono_method_get_context (method)->method_inst) {
                return info;
-       } else if ((ji->method->flags & METHOD_ATTRIBUTE_STATIC) || ji->method->klass->valuetype) {
+       } else if ((method->flags & METHOD_ATTRIBUTE_STATIC) || method->klass->valuetype) {
                return info;
        } else {
                /* Avoid returning a managed object */
@@ -485,17 +485,19 @@ get_generic_context_from_stack_frame (MonoJitInfo *ji, gpointer generic_info)
 {
        MonoGenericContext context = { NULL, NULL };
        MonoClass *class, *method_container_class;
+       MonoMethod *method;
 
        g_assert (generic_info);
 
-       g_assert (ji->method->is_inflated);
-       if (mono_method_get_context (ji->method)->method_inst) {
+       method = jinfo_get_method (ji);
+       g_assert (method->is_inflated);
+       if (mono_method_get_context (method)->method_inst) {
                MonoMethodRuntimeGenericContext *mrgctx = generic_info;
 
                class = mrgctx->class_vtable->klass;
                context.method_inst = mrgctx->method_inst;
                g_assert (context.method_inst);
-       } else if ((ji->method->flags & METHOD_ATTRIBUTE_STATIC) || ji->method->klass->valuetype) {
+       } else if ((method->flags & METHOD_ATTRIBUTE_STATIC) || method->klass->valuetype) {
                MonoVTable *vtable = generic_info;
 
                class = vtable->klass;
@@ -503,14 +505,14 @@ get_generic_context_from_stack_frame (MonoJitInfo *ji, gpointer generic_info)
                class = generic_info;
        }
 
-       //g_assert (!ji->method->klass->generic_container);
-       if (ji->method->klass->generic_class)
-               method_container_class = ji->method->klass->generic_class->container_class;
+       //g_assert (!method->klass->generic_container);
+       if (method->klass->generic_class)
+               method_container_class = method->klass->generic_class->container_class;
        else
-               method_container_class = ji->method->klass;
+               method_container_class = method->klass;
 
-       /* class might refer to a subclass of ji->method's class */
-       while (!(class == ji->method->klass || (class->generic_class && class->generic_class->container_class == method_container_class))) {
+       /* class might refer to a subclass of method's class */
+       while (!(class == method->klass || (class->generic_class && class->generic_class->container_class == method_container_class))) {
                class = class->parent;
                g_assert (class);
        }
@@ -533,10 +535,11 @@ get_method_from_stack_frame (MonoJitInfo *ji, gpointer generic_info)
        MonoMethod *method;
        
        if (!ji->has_generic_jit_info || !mono_jit_info_get_generic_jit_info (ji)->has_this)
-               return ji->method;
+               return jinfo_get_method (ji);
        context = get_generic_context_from_stack_frame (ji, generic_info);
 
-       method = mono_method_get_declaring_generic_method (ji->method);
+       method = jinfo_get_method (ji);
+       method = mono_method_get_declaring_generic_method (method);
        method = mono_class_inflate_generic_method (method, &context);
 
        return method;
@@ -662,7 +665,7 @@ ves_icall_get_trace (MonoException *exc, gint32 skip, MonoBoolean need_file_info
                g_assert (ji != NULL);
 
                method = get_method_from_stack_frame (ji, generic_info);
-               if (ji->method->wrapper_type) {
+               if (jinfo_get_method (ji)->wrapper_type) {
                        char *s;
 
                        sf->method = NULL;
@@ -679,7 +682,7 @@ ves_icall_get_trace (MonoException *exc, gint32 skip, MonoBoolean need_file_info
                 * and the IL offset.  Note that computing the IL offset is already an expensive
                 * operation, so we shouldn't call this method twice.
                 */
-               location = mono_debug_lookup_source_location (ji->method, sf->native_offset, domain);
+               location = mono_debug_lookup_source_location (jinfo_get_method (ji), sf->native_offset, domain);
                if (location)
                        sf->il_offset = location->il_offset;
                else
@@ -760,6 +763,7 @@ mono_walk_stack_with_state (MonoJitStackWalk func, MonoThreadUnwindState *state,
 {
        MonoThreadUnwindState extra_state;
        if (!state) {
+               g_assert (!mono_thread_info_is_async_context ());
                if (!mono_thread_state_init_from_current (&extra_state))
                        return;
                state = &extra_state;
@@ -809,6 +813,7 @@ mono_walk_stack_full (MonoJitStackWalk func, MonoContext *start_ctx, MonoDomain
        mgreg_t *reg_locations [MONO_MAX_IREGS];
        mgreg_t *new_reg_locations [MONO_MAX_IREGS];
        gboolean get_reg_locations = unwind_options & MONO_UNWIND_REG_LOCATIONS;
+       gboolean async = mono_thread_info_is_async_context ();
 
        g_assert (start_ctx);
        g_assert (domain);
@@ -816,6 +821,9 @@ mono_walk_stack_full (MonoJitStackWalk func, MonoContext *start_ctx, MonoDomain
        /*The LMF will be null if the target have no managed frames.*/
        /* g_assert (lmf); */
 
+       if (async)
+               g_assert (unwind_options == MONO_UNWIND_NONE);
+
        memcpy (&ctx, start_ctx, sizeof (MonoContext));
        memset (reg_locations, 0, sizeof (reg_locations));
 
@@ -828,7 +836,7 @@ mono_walk_stack_full (MonoJitStackWalk func, MonoContext *start_ctx, MonoDomain
                if ((unwind_options & MONO_UNWIND_LOOKUP_IL_OFFSET) && frame.ji) {
                        MonoDebugSourceLocation *source;
 
-                       source = mono_debug_lookup_source_location (frame.ji->method, frame.native_offset, domain);
+                       source = mono_debug_lookup_source_location (jinfo_get_method (frame.ji), frame.native_offset, domain);
                        il_offset = source ? source->il_offset : -1;
                        mono_debug_free_source_location (source);
                } else
@@ -870,7 +878,7 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
        MonoJitInfo *ji = NULL;
        MonoContext ctx, new_ctx;
        MonoDebugSourceLocation *location;
-       MonoMethod *actual_method;
+       MonoMethod *jmethod = NULL, *actual_method;
        StackFrameInfo frame;
        gboolean res;
 
@@ -898,7 +906,8 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
                *native_offset = frame.native_offset;
 
                /* The skip count passed by the caller depends on us not filtering out MANAGED_TO_NATIVE */
-               if (ji->method->wrapper_type != MONO_WRAPPER_NONE && ji->method->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD && ji->method->wrapper_type != MONO_WRAPPER_MANAGED_TO_NATIVE)
+               jmethod = jinfo_get_method (ji);
+               if (jmethod->wrapper_type != MONO_WRAPPER_NONE && jmethod->wrapper_type != MONO_WRAPPER_DYNAMIC_METHOD && jmethod->wrapper_type != MONO_WRAPPER_MANAGED_TO_NATIVE)
                        continue;
                skip--;
        } while (skip >= 0);
@@ -907,7 +916,7 @@ ves_icall_get_frame_info (gint32 skip, MonoBoolean need_file_info,
 
        mono_gc_wbarrier_generic_store (method, (MonoObject*) mono_method_get_object (domain, actual_method, NULL));
 
-       location = mono_debug_lookup_source_location (ji->method, *native_offset, domain);
+       location = mono_debug_lookup_source_location (jmethod, *native_offset, domain);
        if (location)
                *iloffset = location->il_offset;
        else
@@ -939,16 +948,18 @@ callback_get_first_frame_security_info (StackFrameInfo *frame, MonoContext *ctx,
 {
        MonoFrameSecurityInfo *si = (MonoFrameSecurityInfo*) data;
        MonoJitInfo *ji = frame->ji;
+       MonoMethod *method;
 
        if (!ji)
                return FALSE;
 
        /* FIXME: skip all wrappers ?? probably not - case by case testing is required */
-       if (ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE ||
-           ji->method->wrapper_type == MONO_WRAPPER_XDOMAIN_INVOKE ||
-           ji->method->wrapper_type == MONO_WRAPPER_XDOMAIN_DISPATCH ||
-           ji->method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK ||
-           ji->method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE) {
+       method = jinfo_get_method (ji);
+       if (method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE ||
+           method->wrapper_type == MONO_WRAPPER_XDOMAIN_INVOKE ||
+           method->wrapper_type == MONO_WRAPPER_XDOMAIN_DISPATCH ||
+           method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK ||
+           method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE) {
                return FALSE;
        }
 
@@ -1013,16 +1024,18 @@ callback_get_stack_frames_security_info (StackFrameInfo *frame, MonoContext *ctx
 {
        MonoSecurityStack *ss = (MonoSecurityStack*) data;
        MonoJitInfo *ji = frame->ji;
+       MonoMethod *method;
 
        if (!ji)
                return FALSE;
 
        /* FIXME: skip all wrappers ?? probably not - case by case testing is required */
-       if (ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE ||
-           ji->method->wrapper_type == MONO_WRAPPER_XDOMAIN_INVOKE ||
-           ji->method->wrapper_type == MONO_WRAPPER_XDOMAIN_DISPATCH ||
-           ji->method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK ||
-           ji->method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE) {
+       method = jinfo_get_method (ji);
+       if (method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE ||
+           method->wrapper_type == MONO_WRAPPER_XDOMAIN_INVOKE ||
+           method->wrapper_type == MONO_WRAPPER_XDOMAIN_DISPATCH ||
+           method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE_WITH_CHECK ||
+           method->wrapper_type == MONO_WRAPPER_REMOTING_INVOKE) {
                return FALSE;
        }
 
@@ -1148,6 +1161,9 @@ mini_jit_info_table_find (MonoDomain *domain, char *addr, MonoDomain **out_domai
                }
        }
 
+       if (!t)
+               return NULL;
+
        refs = (t->appdomain_refs) ? *(gpointer *) t->appdomain_refs : NULL;
        for (; refs && *refs; refs++) {
                if (*refs != domain && *refs != mono_get_root_domain ()) {
@@ -1279,10 +1295,10 @@ build_native_trace (void)
  * OUT_FILTER_IDX. Return TRUE if the exception is caught, FALSE otherwise.
  */
 static gboolean
-mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoObject *non_exception)
+mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint32 *out_filter_idx, MonoJitInfo **out_ji, MonoJitInfo **out_prev_ji, MonoObject *non_exception)
 {
        MonoDomain *domain = mono_domain_get ();
-       MonoJitInfo *ji;
+       MonoJitInfo *ji = NULL;
        static int (*call_filter) (MonoContext *, gpointer) = NULL;
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
@@ -1291,6 +1307,7 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
        MonoException *mono_ex;
        gboolean stack_overflow = FALSE;
        MonoContext initial_ctx;
+       MonoMethod *method;
        int frame_count = 0;
        gboolean has_dynamic_methods = FALSE;
        gint32 filter_idx;
@@ -1322,6 +1339,8 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                *out_filter_idx = -1;
        if (out_ji)
                *out_ji = NULL;
+       if (out_prev_ji)
+               *out_prev_ji = NULL;
        filter_idx = 0;
        initial_ctx = *ctx;
 
@@ -1333,6 +1352,9 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                
                StackFrameInfo frame;
 
+               if (out_prev_ji)
+                       *out_prev_ji = ji;
+
                unwind_res = mono_find_jit_info_ext (domain, jit_tls, NULL, ctx, &new_ctx, NULL, &lmf, NULL, &frame);
                if (unwind_res) {
                        if (frame.type == FRAME_TYPE_DEBUGGER_INVOKE || frame.type == FRAME_TYPE_MANAGED_TO_NATIVE) {
@@ -1349,15 +1371,16 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                }
 
                frame_count ++;
-               //printf ("M: %s %d.\n", mono_method_full_name (ji->method, TRUE), frame_count);
+               method = jinfo_get_method (ji);
+               //printf ("M: %s %d.\n", mono_method_full_name (method, TRUE), frame_count);
 
-               if (mini_get_debug_options ()->reverse_pinvoke_exceptions && ji->method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED) {
+               if (mini_get_debug_options ()->reverse_pinvoke_exceptions && method->wrapper_type == MONO_WRAPPER_NATIVE_TO_MANAGED) {
                        g_error ("A native frame was found while unwinding the stack after an exception.\n"
                                         "The native frame called the managed method:\n%s\n",
-                                        mono_method_full_name (ji->method, TRUE));
+                                        mono_method_full_name (method, TRUE));
                }
 
-               if (ji->method->wrapper_type != MONO_WRAPPER_RUNTIME_INVOKE && mono_ex) {
+               if (method->wrapper_type != MONO_WRAPPER_RUNTIME_INVOKE && mono_ex) {
                        /* 
                         * Avoid overwriting the stack trace if the exception is
                         * rethrown. Also avoid giant stack traces during a stack
@@ -1370,7 +1393,7 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                        }
                }
 
-               if (ji->method->dynamic)
+               if (method->dynamic)
                        has_dynamic_methods = TRUE;
 
                if (stack_overflow) {
@@ -1401,13 +1424,13 @@ mono_handle_exception_internal_first_pass (MonoContext *ctx, gpointer obj, gint3
                                 * Have to unwrap RuntimeWrappedExceptions if the
                                 * method's assembly doesn't have a RuntimeCompatibilityAttribute.
                                 */
-                               if (non_exception && !wrap_non_exception_throws (ji->method))
+                               if (non_exception && !wrap_non_exception_throws (method))
                                        ex_obj = non_exception;
                                else
                                        ex_obj = obj;
 
                                if (ei->flags == MONO_EXCEPTION_CLAUSE_FILTER) {
-                                       gboolean is_user_frame = ji->method->wrapper_type == MONO_WRAPPER_NONE || ji->method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD;
+                                       gboolean is_user_frame = method->wrapper_type == MONO_WRAPPER_NONE || method->wrapper_type == MONO_WRAPPER_DYNAMIC_METHOD;
 #ifndef DISABLE_PERFCOUNTERS
                                        mono_perfcounters->exceptions_filters++;
 #endif
@@ -1480,14 +1503,14 @@ static gboolean
 mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume, MonoJitInfo **out_ji)
 {
        MonoDomain *domain = mono_domain_get ();
-       MonoJitInfo *ji;
+       MonoJitInfo *ji, *prev_ji;
        static int (*call_filter) (MonoContext *, gpointer) = NULL;
-       static void (*restore_context) (void *);
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
        MonoLMF *lmf = mono_get_lmf ();
        MonoException *mono_ex;
        gboolean stack_overflow = FALSE;
        MonoContext initial_ctx;
+       MonoMethod *method;
        int frame_count = 0;
        gint32 filter_idx, first_filter_idx;
        int i;
@@ -1552,9 +1575,6 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
        if (!call_filter)
                call_filter = mono_get_call_filter ();
 
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
-
        g_assert (jit_tls->end_of_stack);
        g_assert (jit_tls->abort_func);
 
@@ -1596,7 +1616,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                mono_profiler_exception_thrown (obj);
                jit_tls->orig_ex_ctx_set = FALSE;
 
-               res = mono_handle_exception_internal_first_pass (&ctx_cp, obj, &first_filter_idx, &ji, non_exception);
+               res = mono_handle_exception_internal_first_pass (&ctx_cp, obj, &first_filter_idx, &ji, &prev_ji, non_exception);
 
                if (!res) {
                        if (mini_get_debug_options ()->break_on_exc)
@@ -1613,11 +1633,22 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                        // we are handling a stack overflow
                        mono_unhandled_exception (obj);
                } else {
-                       //
-                       // Treat exceptions that are "handled" by mono_runtime_invoke() as unhandled.
-                       // See bug #669836.
-                       //
-                       if (ji && ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE)
+                       gboolean unhandled = FALSE;
+
+                       /*
+                        * The exceptions caught by the mono_runtime_invoke () calls in mono_async_invoke () needs to be treated as
+                        * unhandled (#669836).
+                        * FIXME: The check below is hackish, but its hard to distinguish these runtime invoke calls from others
+                        * in the runtime.
+                        */
+                       if (ji && jinfo_get_method (ji)->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE) {
+                               if (prev_ji) {
+                                       MonoInternalThread *thread = mono_thread_internal_current ();
+                                       if (jinfo_get_method (prev_ji) == thread->async_invoke_method)
+                                               unhandled = TRUE;
+                               }
+                       }
+                       if (unhandled)
                                mono_debugger_agent_handle_exception (obj, ctx, NULL);
                        else
                                mono_debugger_agent_handle_exception (obj, ctx, &ctx_cp);
@@ -1664,8 +1695,9 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                        g_assert_not_reached ();
                }
 
+               method = jinfo_get_method (ji);
                frame_count ++;
-               //printf ("M: %s %d.\n", mono_method_full_name (ji->method, TRUE), frame_count);
+               //printf ("M: %s %d.\n", mono_method_full_name (method, TRUE), frame_count);
 
                if (stack_overflow) {
                        if (DOES_STACK_GROWS_UP)
@@ -1695,7 +1727,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                                 * Have to unwrap RuntimeWrappedExceptions if the
                                 * method's assembly doesn't have a RuntimeCompatibilityAttribute.
                                 */
-                               if (non_exception && !wrap_non_exception_throws (ji->method))
+                               if (non_exception && !wrap_non_exception_throws (method))
                                        ex_obj = non_exception;
                                else
                                        ex_obj = obj;
@@ -1759,10 +1791,10 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                                                }
                                        }
 
-                                       if (mono_trace_is_enabled () && mono_trace_eval (ji->method))
-                                               g_print ("EXCEPTION: catch found at clause %d of %s\n", i, mono_method_full_name (ji->method, TRUE));
+                                       if (mono_trace_is_enabled () && mono_trace_eval (method))
+                                               g_print ("EXCEPTION: catch found at clause %d of %s\n", i, mono_method_full_name (method, TRUE));
                                        jit_tls->orig_ex_ctx_set = TRUE;
-                                       mono_profiler_exception_clause_handler (ji->method, ei->flags, i);
+                                       mono_profiler_exception_clause_handler (method, ei->flags, i);
                                        jit_tls->orig_ex_ctx_set = FALSE;
                                        mono_debugger_call_exception_handler (ei->handler_start, MONO_CONTEXT_GET_SP (ctx), ex_obj);
                                        MONO_CONTEXT_SET_IP (ctx, ei->handler_start);
@@ -1777,20 +1809,20 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                                }
                                if (is_address_protected (ji, ei, MONO_CONTEXT_GET_IP (ctx)) &&
                                        (ei->flags == MONO_EXCEPTION_CLAUSE_FAULT)) {
-                                       if (mono_trace_is_enabled () && mono_trace_eval (ji->method))
-                                               g_print ("EXCEPTION: fault clause %d of %s\n", i, mono_method_full_name (ji->method, TRUE));
+                                       if (mono_trace_is_enabled () && mono_trace_eval (method))
+                                               g_print ("EXCEPTION: fault clause %d of %s\n", i, mono_method_full_name (method, TRUE));
                                        jit_tls->orig_ex_ctx_set = TRUE;
-                                       mono_profiler_exception_clause_handler (ji->method, ei->flags, i);
+                                       mono_profiler_exception_clause_handler (method, ei->flags, i);
                                        jit_tls->orig_ex_ctx_set = FALSE;
                                        mono_debugger_call_exception_handler (ei->handler_start, MONO_CONTEXT_GET_SP (ctx), ex_obj);
                                        call_filter (ctx, ei->handler_start);
                                }
                                if (is_address_protected (ji, ei, MONO_CONTEXT_GET_IP (ctx)) &&
                                        (ei->flags == MONO_EXCEPTION_CLAUSE_FINALLY)) {
-                                       if (mono_trace_is_enabled () && mono_trace_eval (ji->method))
-                                               g_print ("EXCEPTION: finally clause %d of %s\n", i, mono_method_full_name (ji->method, TRUE));
+                                       if (mono_trace_is_enabled () && mono_trace_eval (method))
+                                               g_print ("EXCEPTION: finally clause %d of %s\n", i, mono_method_full_name (method, TRUE));
                                        jit_tls->orig_ex_ctx_set = TRUE;
-                                       mono_profiler_exception_clause_handler (ji->method, ei->flags, i);
+                                       mono_profiler_exception_clause_handler (method, ei->flags, i);
                                        jit_tls->orig_ex_ctx_set = FALSE;
                                        mono_debugger_call_exception_handler (ei->handler_start, MONO_CONTEXT_GET_SP (ctx), ex_obj);
 #ifndef DISABLE_PERFCOUNTERS
@@ -1824,7 +1856,7 @@ mono_handle_exception_internal (MonoContext *ctx, gpointer obj, gboolean resume,
                }
 
                jit_tls->orig_ex_ctx_set = TRUE;
-               mono_profiler_exception_method_leave (ji->method);
+               mono_profiler_exception_method_leave (method);
                jit_tls->orig_ex_ctx_set = FALSE;
 
                *ctx = new_ctx;
@@ -1874,8 +1906,8 @@ mono_debugger_handle_exception (MonoContext *ctx, MonoObject *obj)
                 * The debugger wants us to stop only if this exception is user-unhandled.
                 */
 
-               ret = mono_handle_exception_internal_first_pass (&ctx_cp, obj, NULL, &ji, NULL);
-               if (ret && (ji != NULL) && (ji->method->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE)) {
+               ret = mono_handle_exception_internal_first_pass (&ctx_cp, obj, NULL, &ji, NULL, NULL);
+               if (ret && (ji != NULL) && (jinfo_get_method (ji)->wrapper_type == MONO_WRAPPER_RUNTIME_INVOKE)) {
                        /*
                         * The exception is handled in a runtime-invoke wrapper, that means that it's unhandled
                         * inside the method being invoked, so we handle it like a user-unhandled exception.
@@ -2156,7 +2188,7 @@ print_overflow_stack_frame (StackFrameInfo *frame, MonoContext *ctx, gpointer da
        gchar *location;
 
        if (frame->ji)
-               method = frame->ji->method;
+               method = jinfo_get_method (frame->ji);
 
        if (method) {
                if (user_data->count == 0) {
@@ -2205,8 +2237,8 @@ mono_handle_hard_stack_ovf (MonoJitTlsData *jit_tls, MonoJitInfo *ji, void *ctx,
 
        mono_walk_stack_with_ctx (print_overflow_stack_frame, &mctx, MONO_UNWIND_LOOKUP_ACTUAL_METHOD, &ud);
 #else
-       if (ji && ji->method)
-               mono_runtime_printf_err ("At %s", mono_method_full_name (ji->method, TRUE));
+       if (ji && jinfo_get_method (ji))
+               mono_runtime_printf_err ("At %s", mono_method_full_name (jinfo_get_method (ji), TRUE));
        else
                mono_runtime_printf_err ("At <unmanaged>.");
 #endif
@@ -2218,8 +2250,9 @@ static gboolean
 print_stack_frame_to_stderr (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
 {
        MonoMethod *method = NULL;
+
        if (frame->ji)
-               method = frame->ji->method;
+               method = jinfo_get_method (frame->ji);
 
        if (method) {
                gchar *location = mono_debug_print_stack_frame (method, frame->native_offset, mono_domain_get ());
@@ -2236,8 +2269,9 @@ print_stack_frame_to_string (StackFrameInfo *frame, MonoContext *ctx, gpointer d
 {
        GString *p = (GString*)data;
        MonoMethod *method = NULL;
+
        if (frame->ji)
-               method = frame->ji->method;
+               method = jinfo_get_method (frame->ji);
 
        if (method) {
                gchar *location = mono_debug_print_stack_frame (method, frame->native_offset, mono_domain_get ());
@@ -2443,7 +2477,6 @@ void
 mono_resume_unwind (MonoContext *ctx)
 {
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
-       static void (*restore_context) (MonoContext *);
        MonoContext new_ctx;
 
        MONO_CONTEXT_SET_IP (ctx, MONO_CONTEXT_GET_IP (&jit_tls->resume_state.ctx));
@@ -2452,10 +2485,7 @@ mono_resume_unwind (MonoContext *ctx)
 
        mono_handle_exception_internal (&new_ctx, jit_tls->resume_state.ex_obj, TRUE, NULL);
 
-       if (!restore_context)
-               restore_context = mono_get_restore_context ();
-
-       restore_context (&new_ctx);
+       mono_restore_context (&new_ctx);
 }
 
 #ifdef MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD
@@ -2477,9 +2507,6 @@ find_last_handler_block (StackFrameInfo *frame, MonoContext *ctx, gpointer data)
        if (!ji)
                return FALSE;
 
-       if (ji->method->wrapper_type)
-               return FALSE;
-
        ip = MONO_CONTEXT_GET_IP (ctx);
 
        for (i = 0; i < ji->num_clauses; ++i) {
@@ -2548,7 +2575,10 @@ mono_install_handler_block_guard (MonoThreadUnwindState *ctx)
        if (!jit_tls || jit_tls->handler_block_return_address)
                return FALSE;
 
-       mono_walk_stack_with_state (find_last_handler_block, ctx, MONO_UNWIND_SIGNAL_SAFE, &data);
+       /* Do an async safe stack walk */
+       mono_thread_info_set_is_async_context (TRUE);
+       mono_walk_stack_with_state (find_last_handler_block, ctx, MONO_UNWIND_NONE, &data);
+       mono_thread_info_set_is_async_context (FALSE);
 
        if (!data.ji)
                return FALSE;
@@ -2664,11 +2694,8 @@ mono_thread_state_init_from_current (MonoThreadUnwindState *ctx)
 static void
 mono_raise_exception_with_ctx (MonoException *exc, MonoContext *ctx)
 {
-       void (*restore_context) (MonoContext *);
-       restore_context = mono_get_restore_context ();
-
        mono_handle_exception (ctx, exc);
-       restore_context (ctx);
+       mono_restore_context (ctx);
 }
 
 /*FIXME Move all monoctx -> sigctx conversion to signal handlers once all archs support utils/mono-context */
@@ -2704,8 +2731,18 @@ mono_invoke_unhandled_exception_hook (MonoObject *exc)
                
                if (str)
                        msg = mono_string_to_utf8 (str);
-               else
+               else if (other) {
+                       char *original_backtrace = mono_exception_get_managed_backtrace ((MonoException*)exc);
+                       char *nested_backtrace = mono_exception_get_managed_backtrace ((MonoException*)other);
+
+                       msg = g_strdup_printf ("Nested exception detected.\nOriginal Exception: %s\nNested exception:%s\n",
+                               original_backtrace, nested_backtrace);
+
+                       g_free (original_backtrace);
+                       g_free (nested_backtrace);
+               } else {
                        msg = g_strdup ("Nested exception trying to figure out what went wrong");
+               }
                mono_runtime_printf_err ("[ERROR] FATAL UNHANDLED EXCEPTION: %s", msg);
                g_free (msg);
 #if defined(__APPLE__) && defined(__arm__)
@@ -2717,3 +2754,20 @@ mono_invoke_unhandled_exception_hook (MonoObject *exc)
 
        g_assert_not_reached ();
 }
+
+/*
+ * mono_restore_context:
+ *
+ *   Call the architecture specific restore context function.
+ */
+void
+mono_restore_context (MonoContext *ctx)
+{
+       static void (*restore_context) (MonoContext *);
+
+       if (!restore_context)
+               restore_context = mono_get_restore_context ();
+       restore_context (ctx);
+       g_assert_not_reached ();
+}
+
old mode 100644 (file)
new mode 100755 (executable)
index 0d439ac..bc6a1aa
@@ -590,7 +590,6 @@ thread_suspend_func (gpointer user_data, void *sigctx, MonoContext *ctx)
 
        if (!tls) {
                /* Happens during startup */
-               tls->unwind_state.valid = FALSE;
                return;
        }
 
@@ -599,7 +598,11 @@ thread_suspend_func (gpointer user_data, void *sigctx, MonoContext *ctx)
                gboolean res;
 
                g_assert (tls->info);
+#ifdef TARGET_WIN32
+               return;
+#else
                res = mono_thread_state_init_from_handle (&tls->unwind_state, (MonoNativeThreadId)tls->tid, tls->info->native_handle);
+#endif
        } else {
                tls->unwind_state.unwind_data [MONO_UNWIND_DATA_LMF] = mono_get_lmf ();
                if (sigctx) {
@@ -699,6 +702,7 @@ static void
 conservative_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
 {
        MonoJitInfo *ji;
+       MonoMethod *method;
        MonoContext ctx, new_ctx;
        MonoLMF *lmf;
        guint8 *stack_limit;
@@ -808,10 +812,15 @@ conservative_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
                        continue;
                }
 
+               if (ji)
+                       method = jinfo_get_method (ji);
+               else
+                       method = NULL;
+
                /* The last frame can be in any state so mark conservatively */
                if (last) {
                        if (ji) {
-                               DEBUG (char *fname = mono_method_full_name (ji->method, TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx)); g_free (fname));
+                               DEBUG (char *fname = mono_method_full_name (method, TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx)); g_free (fname));
                        }
                        DEBUG (fprintf (logfile, "\t <Last frame>\n"));
                        last = FALSE;
@@ -838,8 +847,8 @@ conservative_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
                pc_offset = (guint8*)MONO_CONTEXT_GET_IP (&ctx) - (guint8*)ji->code_start;
 
                /* These frames are very problematic */
-               if (ji->method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE) {
-                       DEBUG (char *fname = mono_method_full_name (ji->method, TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx)); g_free (fname));
+               if (method->wrapper_type == MONO_WRAPPER_MANAGED_TO_NATIVE) {
+                       DEBUG (char *fname = mono_method_full_name (method, TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx)); g_free (fname));
                        DEBUG (fprintf (logfile, "\tSkip.\n"));
                        continue;
                }
@@ -870,7 +879,7 @@ conservative_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
                emap = ji->gc_info;
 
                if (!emap) {
-                       DEBUG (char *fname = mono_method_full_name (ji->method, TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx)); g_free (fname));
+                       DEBUG (char *fname = mono_method_full_name (jinfo_get_method (ji), TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx)); g_free (fname));
                        DEBUG (fprintf (logfile, "\tNo GC Map.\n"));
                        continue;
                }
@@ -882,14 +891,14 @@ conservative_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
                 * Debugging aid to control the number of frames scanned precisely
                 */
                if (!precise_frame_limit_inited) {
-                       if (getenv ("MONO_PRECISE_COUNT"))
-                               precise_frame_limit = atoi (getenv ("MONO_PRECISE_COUNT"));
+                       if (g_getenv ("MONO_PRECISE_COUNT"))
+                               precise_frame_limit = atoi (g_getenv ("MONO_PRECISE_COUNT"));
                        precise_frame_limit_inited = TRUE;
                }
                                
                if (precise_frame_limit != -1) {
                        if (precise_frame_count [FALSE] == precise_frame_limit)
-                               printf ("LAST PRECISE FRAME: %s\n", mono_method_full_name (ji->method, TRUE));
+                               printf ("LAST PRECISE FRAME: %s\n", mono_method_full_name (method, TRUE));
                        if (precise_frame_count [FALSE] > precise_frame_limit)
                                continue;
                }
@@ -910,7 +919,7 @@ conservative_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
                frame_start = fp + map->start_offset + map->map_offset;
                frame_end = fp + map->end_offset;
 
-               DEBUG (char *fname = mono_method_full_name (ji->method, TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p) limit=%p fp=%p frame=%p-%p (%d)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx), stack_limit, fp, frame_start, frame_end, (int)(frame_end - frame_start)); g_free (fname));
+               DEBUG (char *fname = mono_method_full_name (jinfo_get_method (ji), TRUE); fprintf (logfile, "Mark(0): %s+0x%x (%p) limit=%p fp=%p frame=%p-%p (%d)\n", fname, pc_offset, (gpointer)MONO_CONTEXT_GET_IP (&ctx), stack_limit, fp, frame_start, frame_end, (int)(frame_end - frame_start)); g_free (fname));
 
                /* Find the callsite index */
                if (map->callsite_entry_size == 1) {
@@ -932,7 +941,7 @@ conservative_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
                                        break;
                }
                if (i == map->ncallsites) {
-                       printf ("Unable to find ip offset 0x%x in callsite list of %s.\n", pc_offset + 1, mono_method_full_name (ji->method, TRUE));
+                       printf ("Unable to find ip offset 0x%x in callsite list of %s.\n", pc_offset + 1, mono_method_full_name (method, TRUE));
                        g_assert_not_reached ();
                }
                cindex = i;
@@ -1111,7 +1120,7 @@ precise_pass (TlsData *tls, guint8 *stack_start, guint8 *stack_end)
                fi = &tls->frames [findex];
                frame_start = stack_start + fi->frame_start_offset;
 
-               DEBUG (char *fname = mono_method_full_name (fi->ji->method, TRUE); fprintf (logfile, "Mark(1): %s\n", fname); g_free (fname));
+               DEBUG (char *fname = mono_method_full_name (jinfo_get_method (fi->ji), TRUE); fprintf (logfile, "Mark(1): %s\n", fname); g_free (fname));
 
                /* 
                 * FIXME: Add a function to mark using a bitmap, to avoid doing a 
@@ -1238,10 +1247,10 @@ mini_gc_init_gc_map (MonoCompile *cfg)
                static int precise_count;
 
                precise_count ++;
-               if (getenv ("MONO_GCMAP_COUNT")) {
-                       if (precise_count == atoi (getenv ("MONO_GCMAP_COUNT")))
+               if (g_getenv ("MONO_GCMAP_COUNT")) {
+                       if (precise_count == atoi (g_getenv ("MONO_GCMAP_COUNT")))
                                printf ("LAST: %s\n", mono_method_full_name (cfg->method, TRUE));
-                       if (precise_count > atoi (getenv ("MONO_GCMAP_COUNT")))
+                       if (precise_count > atoi (g_getenv ("MONO_GCMAP_COUNT")))
                                return;
                }
        }
@@ -2440,9 +2449,9 @@ static void
 parse_debug_options (void)
 {
        char **opts, **ptr;
-       char *env;
+       const char *env;
 
-       env = getenv ("MONO_GCMAP_DEBUG");
+       env = g_getenv ("MONO_GCMAP_DEBUG");
        if (!env)
                return;
 
index 2fbac8e0ba78898be29cc7d6ccac86594e86b3fb..acf729f66e4ca5bd70f2090b3872905fc695215c 100644 (file)
@@ -15,8 +15,8 @@
 
 #include "mini.h"
 
-//#define ALLOW_PARTIAL_SHARING TRUE
-#define ALLOW_PARTIAL_SHARING FALSE
+#define ALLOW_PARTIAL_SHARING TRUE
+//#define ALLOW_PARTIAL_SHARING FALSE
  
 #if 0
 #define DEBUG(...) __VA_ARGS__
 static void
 mono_class_unregister_image_generic_subclasses (MonoImage *image, gpointer user_data);
 
-static MonoType*
-mini_get_gsharedvt_alloc_type_gsctx (MonoGenericSharingContext *gsctx, MonoType *t);
+static gboolean partial_supported;
+
+static inline gboolean
+partial_sharing_supported (void)
+{
+       if (!ALLOW_PARTIAL_SHARING)
+               return FALSE;
+       /* Enable this only when AOT compiling or running in full-aot mode */
+       if (partial_supported || mono_aot_only)
+               return TRUE;
+       return FALSE;
+}
 
 static int
 type_check_context_used (MonoType *type, gboolean recursive)
@@ -521,7 +531,12 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
        case MONO_RGCTX_INFO_CAST_CACHE:
        case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE:
        case MONO_RGCTX_INFO_VALUE_SIZE:
-       case MONO_RGCTX_INFO_CLASS_IS_REF: {
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
+       case MONO_RGCTX_INFO_MEMCPY:
+       case MONO_RGCTX_INFO_BZERO:
+       case MONO_RGCTX_INFO_LOCAL_OFFSET:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
                gpointer result = mono_class_inflate_generic_type_with_mempool (temporary ? NULL : class->image,
                        data, context, &error);
                g_assert (mono_error_ok (&error)); /*FIXME proper error handling*/
@@ -556,6 +571,30 @@ inflate_info (MonoRuntimeGenericContextInfoTemplate *oti, MonoGenericContext *co
                g_assert (inflated_method->klass == inflated_class);
                return inflated_method;
        }
+       case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: {
+               MonoGSharedVtMethodInfo *info = data;
+               MonoGSharedVtMethodInfo *res;
+               int i;
+
+               // FIXME:
+               res = g_new0 (MonoGSharedVtMethodInfo, 1);
+               /*
+               res->nlocals = info->nlocals;
+               res->locals_types = g_new0 (MonoType*, info->nlocals);
+               for (i = 0; i < info->nlocals; ++i)
+                       res->locals_types [i] = mono_class_inflate_generic_type (info->locals_types [i], context);
+               */
+               res->entries = g_ptr_array_new ();
+               for (i = 0; i < info->entries->len; ++i) {
+                       MonoRuntimeGenericContextInfoTemplate *otemplate = g_ptr_array_index (info->entries, i);
+                       MonoRuntimeGenericContextInfoTemplate *template = g_new0 (MonoRuntimeGenericContextInfoTemplate, 1);
+
+                       memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                       template->data = inflate_info (template, context, class, FALSE);
+                       g_ptr_array_add (res->entries, template);
+               }
+               return res;
+       }
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE:
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT: {
                MonoJumpInfoGSharedVtCall *info = data;
@@ -658,12 +697,15 @@ generic_inst_is_sharable (MonoGenericInst *inst, gboolean allow_type_vars,
                                                  gboolean allow_partial)
 {
        int i;
+       gboolean has_ref = FALSE;
 
        for (i = 0; i < inst->type_argc; ++i) {
                MonoType *type = inst->type_argv [i];
 
-               if (MONO_TYPE_IS_REFERENCE (type) || (allow_type_vars && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR)))
+               if (MONO_TYPE_IS_REFERENCE (type) || (allow_type_vars && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR))) {
+                       has_ref = TRUE;
                        continue;
+               }
  
                /*
                 * Allow non ref arguments, if there is at least one ref argument
@@ -676,7 +718,10 @@ generic_inst_is_sharable (MonoGenericInst *inst, gboolean allow_type_vars,
                return FALSE;
        }
 
-       return TRUE;
+       if (allow_partial)
+               return has_ref;
+       else
+               return TRUE;
 }
 
 /*
@@ -704,9 +749,6 @@ mono_is_partially_sharable_inst (MonoGenericInst *inst)
  * get_shared_class:
  *
  *   Return the class used to store information when using generic sharing.
- * For fully shared classes, it is the generic definition, for partially shared
- * classes, it is an instance with all ref type arguments replaced by the type parameters
- * of its generic definition.
  */
 static MonoClass*
 get_shared_class (MonoClass *class)
@@ -718,9 +760,11 @@ get_shared_class (MonoClass *class)
         */
        //g_assert_not_reached ();
 
+#if 0
        /* The gsharedvt changes break this */
        if (ALLOW_PARTIAL_SHARING)
                g_assert_not_reached ();
+#endif
 
 #if 0
        if (class->is_inflated) {
@@ -754,6 +798,7 @@ get_shared_class (MonoClass *class)
        }
 #endif
 
+       // FIXME: Use this in all cases can be problematic wrt domain/assembly unloading
        return class_uninstantiated (class);
 }
 
@@ -904,11 +949,118 @@ class_type_info (MonoDomain *domain, MonoClass *class, MonoRgctxInfoType info_ty
                        return GUINT_TO_POINTER (sizeof (gpointer));
                else
                        return GUINT_TO_POINTER (mono_class_value_size (class, NULL));
-       case MONO_RGCTX_INFO_CLASS_IS_REF:
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
                if (MONO_TYPE_IS_REFERENCE (&class->byval_arg))
                        return GUINT_TO_POINTER (1);
+               else if (mono_class_is_nullable (class))
+                       return GUINT_TO_POINTER (2);
                else
                        return GUINT_TO_POINTER (0);
+       case MONO_RGCTX_INFO_MEMCPY:
+       case MONO_RGCTX_INFO_BZERO: {
+               static MonoMethod *memcpy_method [17];
+               static MonoMethod *bzero_method [17];
+               MonoJitDomainInfo *domain_info;
+               int size;
+               guint32 align;
+
+               domain_info = domain_jit_info (domain);
+
+               if (MONO_TYPE_IS_REFERENCE (&class->byval_arg)) {
+                       size = sizeof (gpointer);
+                       align = sizeof (gpointer);
+               } else {
+                       size = mono_class_value_size (class, &align);
+               }
+
+               if (size != 1 && size != 2 && size != 4 && size != 8)
+                       size = 0;
+               if (align < size)
+                       size = 0;
+
+               if (info_type == MONO_RGCTX_INFO_MEMCPY) {
+                       if (!memcpy_method [size]) {
+                               MonoMethod *m;
+                               char name [32];
+
+                               if (size == 0)
+                                       sprintf (name, "memcpy");
+                               else
+                                       sprintf (name, "memcpy_aligned_%d", size);
+                               m = mono_class_get_method_from_name (mono_defaults.string_class, name, 3);
+                               g_assert (m);
+                               mono_memory_barrier ();
+                               memcpy_method [size] = m;
+                       }
+                       if (!domain_info->memcpy_addr [size]) {
+                               gpointer addr = mono_compile_method (memcpy_method [size]);
+                               mono_memory_barrier ();
+                               domain_info->memcpy_addr [size] = addr;
+                       }
+                       return domain_info->memcpy_addr [size];
+               } else {
+                       if (!bzero_method [size]) {
+                               MonoMethod *m;
+                               char name [32];
+
+                               if (size == 0)
+                                       sprintf (name, "bzero");
+                               else
+                                       sprintf (name, "bzero_aligned_%d", size);
+                               m = mono_class_get_method_from_name (mono_defaults.string_class, name, 2);
+                               g_assert (m);
+                               mono_memory_barrier ();
+                               bzero_method [size] = m;
+                       }
+                       if (!domain_info->bzero_addr [size]) {
+                               gpointer addr = mono_compile_method (bzero_method [size]);
+                               mono_memory_barrier ();
+                               domain_info->bzero_addr [size] = addr;
+                       }
+                       return domain_info->bzero_addr [size];
+               }
+       }
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
+               MonoMethod *method;
+               gpointer addr;
+               MonoJitInfo *ji;
+               MonoGenericContext *ctx;
+
+               if (!mono_class_is_nullable (class))
+                       /* This can happen since all the entries in MonoGSharedVtMethodInfo are inflated, even those which are not used */
+                       return NULL;
+
+               if (info_type == MONO_RGCTX_INFO_NULLABLE_CLASS_BOX)
+                       method = mono_class_get_method_from_name (class, "Box", 1);
+               else
+                       method = mono_class_get_method_from_name (class, "Unbox", 1);
+
+               addr = mono_compile_method (method);
+               // The caller uses the gsharedvt call signature
+               ji = mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (addr), NULL);
+               g_assert (ji);
+               if (mini_jit_info_is_gsharedvt (ji))
+                       return mono_create_static_rgctx_trampoline (method, addr);
+               else {
+                       MonoGenericSharingContext gsctx;
+                       MonoMethodSignature *sig, *gsig;
+                       MonoMethod *gmethod;
+
+                       /* Need to add an out wrapper */
+
+                       /* FIXME: We have no access to the gsharedvt signature/gsctx used by the caller, so have to construct it ourselves */
+                       gmethod = mini_get_shared_method (method);
+                       sig = mono_method_signature (method);
+                       gsig = mono_method_signature (gmethod);
+                       ctx = mono_method_get_context (gmethod);
+                       mini_init_gsctx (ctx, &gsctx);
+
+                       addr = mini_get_gsharedvt_wrapper (FALSE, addr, sig, gsig, &gsctx, -1, FALSE);
+                       addr = mono_create_static_rgctx_trampoline (method, addr);
+                       return addr;
+               }
+       }
        default:
                g_assert_not_reached ();
        }
@@ -1076,7 +1228,11 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
        case MONO_RGCTX_INFO_CAST_CACHE:
        case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE:
        case MONO_RGCTX_INFO_VALUE_SIZE:
-       case MONO_RGCTX_INFO_CLASS_IS_REF: {
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
+       case MONO_RGCTX_INFO_MEMCPY:
+       case MONO_RGCTX_INFO_BZERO:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: {
                MonoClass *arg_class = mono_class_from_mono_type (data);
 
                free_inflated_info (oti->info_type, data);
@@ -1100,7 +1256,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                gpointer addr;
 
                addr = mono_compile_method (data);
-               return mini_add_method_trampoline (NULL, data, addr, mono_method_needs_static_rgctx_invoke (data, FALSE));
+               return mini_add_method_trampoline (NULL, data, addr, mono_method_needs_static_rgctx_invoke (data, FALSE), FALSE);
        }
 #ifndef DISABLE_REMOTING
        case MONO_RGCTX_INFO_REMOTING_INVOKE_WITH_CHECK:
@@ -1157,7 +1313,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                gji = mono_jit_info_get_generic_jit_info (caller_ji);
                g_assert (gji);
 
-               addr = mini_get_gsharedvt_wrapper (FALSE, addr, sig, gsig, gji->generic_sharing_context, -1, TRUE);
+               addr = mini_get_gsharedvt_wrapper (FALSE, NULL, sig, gsig, gji->generic_sharing_context, -1, TRUE);
 
                return addr;
        }
@@ -1268,7 +1424,7 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
                        if (call_sig == mono_method_signature (method)) {
                        } else {
                                sig = mono_method_signature (method);
-                               gsig = mono_method_signature (callee_ji->method); 
+                               gsig = mono_method_signature (jinfo_get_method (callee_ji)); 
 
                                addr = mini_get_gsharedvt_wrapper (TRUE, callee_ji->code_start, sig, gsig, callee_gji->generic_sharing_context, -1, FALSE);
 
@@ -1283,6 +1439,45 @@ instantiate_info (MonoDomain *domain, MonoRuntimeGenericContextInfoTemplate *oti
 
                return addr;
        }
+       case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: {
+               MonoGSharedVtMethodInfo *info = data;
+               MonoGSharedVtMethodRuntimeInfo *res;
+               MonoType *t;
+               int i, offset, align, size;
+
+               // FIXME:
+               res = g_malloc0 (sizeof (MonoGSharedVtMethodRuntimeInfo) + (info->entries->len * sizeof (gpointer)));
+
+               offset = 0;
+               for (i = 0; i < info->entries->len; ++i) {
+                       MonoRuntimeGenericContextInfoTemplate *template = g_ptr_array_index (info->entries, i);
+
+                       switch (template->info_type) {
+                       case MONO_RGCTX_INFO_LOCAL_OFFSET:
+                               t = template->data;
+
+                               size = mono_type_size (t, &align);
+
+                               if (align < sizeof (gpointer))
+                                       align = sizeof (gpointer);
+                               if (MONO_TYPE_ISSTRUCT (t) && align < 2 * sizeof (gpointer))
+                                       align = 2 * sizeof (gpointer);
+                       
+                               // FIXME: Do the same things as alloc_stack_slots
+                               offset += align - 1;
+                               offset &= ~(align - 1);
+                               res->entries [i] = GINT_TO_POINTER (offset);
+                               offset += size;
+                               break;
+                       default:
+                               res->entries [i] = instantiate_info (domain, template, context, class, NULL);
+                               break;
+                       }
+               }
+               res->locals_size = offset;
+
+               return res;
+       }
        default:
                g_assert_not_reached ();
        }
@@ -1332,6 +1527,7 @@ mono_rgctx_info_type_to_str (MonoRgctxInfoType type)
        case MONO_RGCTX_INFO_TYPE: return "TYPE";
        case MONO_RGCTX_INFO_REFLECTION_TYPE: return "REFLECTION_TYPE";
        case MONO_RGCTX_INFO_METHOD: return "METHOD";
+       case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO: return "GSHAREDVT_INFO";
        case MONO_RGCTX_INFO_GENERIC_METHOD_CODE: return "GENERIC_METHOD_CODE";
        case MONO_RGCTX_INFO_CLASS_FIELD: return "CLASS_FIELD";
        case MONO_RGCTX_INFO_METHOD_RGCTX: return "METHOD_RGCTX";
@@ -1341,11 +1537,15 @@ mono_rgctx_info_type_to_str (MonoRgctxInfoType type)
        case MONO_RGCTX_INFO_CAST_CACHE: return "CAST_CACHE";
        case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE: return "ARRAY_ELEMENT_SIZE";
        case MONO_RGCTX_INFO_VALUE_SIZE: return "VALUE_SIZE";
-       case MONO_RGCTX_INFO_CLASS_IS_REF: return "CLASS_IS_REF";
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE: return "CLASS_BOX_TYPE";
        case MONO_RGCTX_INFO_FIELD_OFFSET: return "FIELD_OFFSET";
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE: return "METHOD_GSHAREDVT_OUT_TRAMPOLINE";
        case MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT: return "METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT";
        case MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI: return "SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI";
+       case MONO_RGCTX_INFO_MEMCPY: return "MEMCPY";
+       case MONO_RGCTX_INFO_BZERO: return "BZERO";
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX: return "NULLABLE_CLASS_BOX";
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX: return "NULLABLE_CLASS_UNBOX";
        default:
                return "<UNKNOWN RGCTX INFO TYPE>";
        }
@@ -1421,9 +1621,14 @@ info_equal (gpointer data1, gpointer data2, MonoRgctxInfoType info_type)
        case MONO_RGCTX_INFO_CAST_CACHE:
        case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE:
        case MONO_RGCTX_INFO_VALUE_SIZE:
-       case MONO_RGCTX_INFO_CLASS_IS_REF:
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
+       case MONO_RGCTX_INFO_MEMCPY:
+       case MONO_RGCTX_INFO_BZERO:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX:
                return mono_class_from_mono_type (data1) == mono_class_from_mono_type (data2);
        case MONO_RGCTX_INFO_METHOD:
+       case MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO:
        case MONO_RGCTX_INFO_GENERIC_METHOD_CODE:
        case MONO_RGCTX_INFO_CLASS_FIELD:
        case MONO_RGCTX_INFO_FIELD_OFFSET:
@@ -1442,6 +1647,38 @@ info_equal (gpointer data1, gpointer data2, MonoRgctxInfoType info_type)
        return FALSE;
 }
 
+/*
+ * mini_rgctx_info_type_to_patch_info_type:
+ *
+ *   Return the type of the runtime object referred to by INFO_TYPE.
+ */
+MonoJumpInfoType
+mini_rgctx_info_type_to_patch_info_type (MonoRgctxInfoType info_type)
+{
+       switch (info_type) {
+       case MONO_RGCTX_INFO_STATIC_DATA:
+       case MONO_RGCTX_INFO_KLASS:
+       case MONO_RGCTX_INFO_VTABLE:
+       case MONO_RGCTX_INFO_TYPE:
+       case MONO_RGCTX_INFO_REFLECTION_TYPE:
+       case MONO_RGCTX_INFO_CAST_CACHE:
+       case MONO_RGCTX_INFO_ARRAY_ELEMENT_SIZE:
+       case MONO_RGCTX_INFO_VALUE_SIZE:
+       case MONO_RGCTX_INFO_CLASS_BOX_TYPE:
+       case MONO_RGCTX_INFO_MEMCPY:
+       case MONO_RGCTX_INFO_BZERO:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_BOX:
+       case MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX:
+       case MONO_RGCTX_INFO_LOCAL_OFFSET:
+               return MONO_PATCH_INFO_CLASS;
+       case MONO_RGCTX_INFO_FIELD_OFFSET:
+               return MONO_PATCH_INFO_FIELD;
+       default:
+               g_assert_not_reached ();
+               return -1;
+       }
+}
+
 static int
 lookup_or_register_info (MonoClass *class, int type_argc, gpointer data, MonoRgctxInfoType info_type,
        MonoGenericContext *generic_context)
@@ -1825,7 +2062,7 @@ mono_generic_context_is_sharable_full (MonoGenericContext *context,
 gboolean
 mono_generic_context_is_sharable (MonoGenericContext *context, gboolean allow_type_vars)
 {
-       return mono_generic_context_is_sharable_full (context, allow_type_vars, ALLOW_PARTIAL_SHARING);
+       return mono_generic_context_is_sharable_full (context, allow_type_vars, partial_sharing_supported ());
 }
 
 /*
@@ -1888,13 +2125,15 @@ is_async_state_machine_class (MonoClass *klass)
        static MonoClass *iclass;
        static gboolean iclass_set;
 
+       return FALSE;
+
        if (!iclass_set) {
                iclass = mono_class_from_name (mono_defaults.corlib, "System.Runtime.CompilerServices", "IAsyncStateMachine");
                mono_memory_barrier ();
                iclass_set = TRUE;
        }
 
-       if (iclass && klass->valuetype && strstr (klass->name, "c__async") && mono_class_is_assignable_from (iclass, klass))
+       if (iclass && klass->valuetype && mono_class_is_assignable_from (iclass, klass))
                return TRUE;
        return FALSE;
 }
@@ -1908,6 +2147,8 @@ is_async_method (MonoMethod *method)
        static MonoClass *attr_class;
        static gboolean attr_class_set;
 
+       return FALSE;
+
        if (!attr_class_set) {
                attr_class = mono_class_from_name (mono_defaults.corlib, "System.Runtime.CompilerServices", "AsyncStateMachineAttribute");
                mono_memory_barrier ();
@@ -1931,7 +2172,7 @@ is_async_method (MonoMethod *method)
 }
 
 /*
- * mono_method_is_generic_sharable_impl_full:
+ * mono_method_is_generic_sharable_full:
  * @method: a method
  * @allow_type_vars: whether to regard type variables as reference types
  * @allow_partial: whether to allow partial sharing
@@ -1942,12 +2183,15 @@ is_async_method (MonoMethod *method)
  * type parameters.  Otherwise returns FALSE.
  */
 gboolean
-mono_method_is_generic_sharable_impl_full (MonoMethod *method, gboolean allow_type_vars,
+mono_method_is_generic_sharable_full (MonoMethod *method, gboolean allow_type_vars,
                                                                                   gboolean allow_partial, gboolean allow_gsharedvt)
 {
        if (!mono_method_is_generic_impl (method))
                return FALSE;
 
+       if (!partial_sharing_supported ())
+               allow_partial = FALSE;
+
        /*
         * Generic async methods have an associated state machine class which is a generic struct. This struct
         * is too large to be handled by gsharedvt so we make it visible to the AOT compiler by disabling sharing
@@ -2003,9 +2247,9 @@ mono_method_is_generic_sharable_impl_full (MonoMethod *method, gboolean allow_ty
 }
 
 gboolean
-mono_method_is_generic_sharable_impl (MonoMethod *method, gboolean allow_type_vars)
+mono_method_is_generic_sharable (MonoMethod *method, gboolean allow_type_vars)
 {
-       return mono_method_is_generic_sharable_impl_full (method, allow_type_vars, ALLOW_PARTIAL_SHARING, TRUE);
+       return mono_method_is_generic_sharable_full (method, allow_type_vars, partial_sharing_supported (), TRUE);
 }
 
 gboolean
@@ -2014,7 +2258,7 @@ mono_method_needs_static_rgctx_invoke (MonoMethod *method, gboolean allow_type_v
        if (!mono_class_generic_sharing_enabled (method->klass))
                return FALSE;
 
-       if (!mono_method_is_generic_sharable_impl (method, allow_type_vars))
+       if (!mono_method_is_generic_sharable (method, allow_type_vars))
                return FALSE;
 
        if (method->is_inflated && mono_method_get_context (method)->method_inst)
@@ -2088,6 +2332,12 @@ mono_set_generic_sharing_vt_supported (gboolean supported)
        gsharedvt_supported = supported;
 }
 
+void
+mono_set_partial_sharing_supported (gboolean supported)
+{
+       partial_supported = supported;
+}
+
 /*
  * mono_class_generic_sharing_enabled:
  * @class: a class
@@ -2286,7 +2536,7 @@ mini_get_basic_type_from_generic (MonoGenericSharingContext *gsctx, MonoType *ty
                g_assert (gsctx);
        */
        if (!type->byref && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR) && mini_is_gsharedvt_type_gsctx (gsctx, type))
-               return mini_get_gsharedvt_alloc_type_gsctx (gsctx, type);
+               return type;
        else
                return mono_type_get_basic_type_from_generic (type);
 }
@@ -2302,6 +2552,8 @@ mini_type_get_underlying_type (MonoGenericSharingContext *gsctx, MonoType *type)
 {
        if (type->byref)
                return &mono_defaults.int_class->byval_arg;
+       if (!type->byref && (type->type == MONO_TYPE_VAR || type->type == MONO_TYPE_MVAR) && mini_is_gsharedvt_type_gsctx (gsctx, type))
+               return type;
        return mini_get_basic_type_from_generic (gsctx, mono_type_get_underlying_type (type));
 }
 
@@ -2339,8 +2591,7 @@ mini_type_stack_size_full (MonoGenericSharingContext *gsctx, MonoType *t, guint3
                g_assert (gsctx);
        */
 
-       if (mini_is_gsharedvt_type_gsctx (gsctx, t))
-               t = mini_get_gsharedvt_alloc_type_gsctx (gsctx, t);
+       //g_assert (!mini_is_gsharedvt_type_gsctx (gsctx, t));
 
        if (pinvoke) {
                size = mono_type_native_stack_size (t, align);
@@ -2484,18 +2735,6 @@ mini_is_gsharedvt_variable_type (MonoCompile *cfg, MonoType *t)
        return FALSE;
 }
 
-static MonoType*
-mini_get_gsharedvt_alloc_type_gsctx (MonoGenericSharingContext *gsctx, MonoType *t)
-{
-       return NULL;
-}
-
-MonoType*
-mini_get_gsharedvt_alloc_type_for_type (MonoCompile *cfg, MonoType *t)
-{
-       return NULL;
-}
-
 gboolean
 mini_is_gsharedvt_sharable_method (MonoMethod *method)
 {
index c45305e2668a99e960a45797daec97f6011df4a3..113d4a1fcdea9cd25f29667375cddf72e1ea3922 100644 (file)
@@ -21,6 +21,7 @@
 #include <mono/metadata/threads.h>
 #include <mono/metadata/profiler-private.h>
 #include <mono/utils/mono-math.h>
+#include <mono/utils/mono-hwcap-ia64.h>
 
 #include "trace.h"
 #include "mini-ia64.h"
index 2b90cd692daac6ad903e56bbb23cbbb5ff4cc6e2..17bf59278ff7ca6c5c1019bdcca00307045f5b99 100644 (file)
@@ -36,7 +36,6 @@
 #include <llvm/ExecutionEngine/JITMemoryManager.h>
 #include <llvm/ExecutionEngine/JITEventListener.h>
 #include <llvm/Target/TargetOptions.h>
-#include <llvm/Target/TargetData.h>
 #include <llvm/Target/TargetRegisterInfo.h>
 #include <llvm/Analysis/Verifier.h>
 #include <llvm/Analysis/Passes.h>
@@ -48,6 +47,9 @@
 #include <llvm/CodeGen/MachineFunctionPass.h>
 #include <llvm/CodeGen/MachineFunction.h>
 #include <llvm/CodeGen/MachineFrameInfo.h>
+#include <llvm/IR/Function.h>
+#include <llvm/IR/IRBuilder.h>
+#include <llvm/IR/Module.h>
 //#include <llvm/LinkAllPasses.h>
 
 #include "llvm-c/Core.h"
@@ -65,6 +67,8 @@
 
 using namespace llvm;
 
+#ifndef MONO_CROSS_COMPILE
+
 class MonoJITMemoryManager : public JITMemoryManager
 {
 private:
@@ -126,13 +130,18 @@ public:
                return NULL;
        }
 
-       virtual uint8_t *allocateDataSection(uintptr_t Size, unsigned Alignment,
-                                                                                unsigned SectionID) {
+       virtual uint8_t* allocateDataSection(uintptr_t, unsigned int, unsigned int, bool) {
                // FIXME:
                assert(0);
                return NULL;
        }
 
+       virtual bool applyPermissions(std::string*) {
+               // FIXME:
+               assert(0);
+               return false;
+       }
+
        virtual void* getPointerToNamedFunction(const std::string &Name, bool AbortOnFailure) {
                void *res;
                char *err;
@@ -227,6 +236,8 @@ MonoJITMemoryManager::endExceptionTable(const Function *F, unsigned char *TableS
 {
 }
 
+#endif /* !MONO_CROSS_COMPILE */
+
 class MonoJITEventListener : public JITEventListener {
 
 public:
@@ -251,22 +262,15 @@ public:
                 * install a profiler hook and reset the code model here.
                 * This should be inside an ifdef, but we can't include our config.h either,
                 * since its definitions conflict with LLVM's config.h.
-                *
+                * The LLVM mono branch contains a workaround.
                 */
-               //#if defined(TARGET_X86) || defined(TARGET_AMD64)
-#ifndef LLVM_MONO_BRANCH
-               /* The LLVM mono branch contains a workaround, so this is not needed */
-               if (Details.MF->getTarget ().getCodeModel () == CodeModel::Large) {
-                       Details.MF->getTarget ().setCodeModel (CodeModel::Default);
-               }
-#endif
-               //#endif
-
                emitted_cb (wrap (&F), Code, (char*)Code + Size);
        }
 };
 
+#ifndef MONO_CROSS_COMPILE
 static MonoJITMemoryManager *mono_mm;
+#endif
 static MonoJITEventListener *mono_event_listener;
 
 static FunctionPassManager *fpm;
@@ -387,7 +391,7 @@ static void
 force_pass_linking (void)
 {
        // Make sure the rest is linked in, but never executed
-       if (getenv ("FOO") != (char*)-1)
+       if (g_getenv ("FOO") != (char*)-1)
                return;
 
        // This is a subset of the passes in LinkAllPasses.h
@@ -441,7 +445,7 @@ force_pass_linking (void)
       (void) llvm::createLCSSAPass();
       (void) llvm::createLICMPass();
       (void) llvm::createLazyValueInfoPass();
-      (void) llvm::createLoopDependenceAnalysisPass();
+      //(void) llvm::createLoopDependenceAnalysisPass();
          /*
       (void) llvm::createLoopExtractorPass();
          */
@@ -511,6 +515,8 @@ force_pass_linking (void)
       (void) llvm::createSinkingPass();
 }
 
+#ifndef MONO_CROSS_COMPILE
+
 LLVMExecutionEngineRef
 mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, FunctionEmittedCb *emitted_cb, ExceptionTableCb *exception_cb, DlSymCb *dlsym_cb)
 {
@@ -532,7 +538,6 @@ mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, Func
   mono_mm->alloc_cb = alloc_cb;
   mono_mm->dlsym_cb = dlsym_cb;
 
-  //JITExceptionHandling = true;
   // PrettyStackTrace installs signal handlers which trip up libgc
   DisablePrettyStackTrace = true;
 
@@ -553,34 +558,24 @@ mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, Func
 #endif
   g_assert (EE);
 
-#if 0
-  ExecutionEngine *EE = ExecutionEngine::createJIT (unwrap (MP), &Error, mono_mm, CodeGenOpt::Default, true, Reloc::Default, CodeModel::Large);
-  if (!EE) {
-         errs () << "Unable to create LLVM ExecutionEngine: " << Error << "\n";
-         g_assert_not_reached ();
-  }
-#endif
-
   EE->InstallExceptionTableRegister (exception_cb);
   mono_event_listener = new MonoJITEventListener (emitted_cb);
   EE->RegisterJITEventListener (mono_event_listener);
 
   fpm = new FunctionPassManager (unwrap (MP));
 
-  fpm->add(new TargetData(*EE->getTargetData()));
+  fpm->add(new DataLayout(*EE->getDataLayout()));
 
   PassRegistry &Registry = *PassRegistry::getPassRegistry();
   initializeCore(Registry);
   initializeScalarOpts(Registry);
-  //initializeIPO(Registry);
   initializeAnalysis(Registry);
   initializeIPA(Registry);
   initializeTransformUtils(Registry);
   initializeInstCombine(Registry);
-  //initializeInstrumentation(Registry);
   initializeTarget(Registry);
 
-  llvm::cl::ParseEnvironmentOptions("mono", "MONO_LLVM", "", false);
+  llvm::cl::ParseEnvironmentOptions("mono", "MONO_LLVM", "");
 
   if (PassList.size() > 0) {
          /* Use the passes specified by the env variable */
@@ -595,14 +590,14 @@ mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, Func
          }
   } else {
          /* Use the same passes used by 'opt' by default, without the ipo passes */
-         const char *opts = "-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -basiccg -domtree -domfrontier -scalarrepl -simplify-libcalls -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -domfrontier -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-deletion -loop-simplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -gvn -simplifycfg -preverify -domtree -verify";
+         const char *opts = "-simplifycfg -domtree -domfrontier -scalarrepl -instcombine -simplifycfg -domtree -domfrontier -scalarrepl -simplify-libcalls -instcombine -simplifycfg -instcombine -simplifycfg -reassociate -domtree -loops -loop-simplify -domfrontier -loop-simplify -lcssa -loop-rotate -licm -lcssa -loop-unswitch -instcombine -scalar-evolution -loop-simplify -lcssa -iv-users -indvars -loop-deletion -loop-simplify -lcssa -loop-unroll -instcombine -memdep -gvn -memdep -memcpyopt -sccp -instcombine -domtree -memdep -dse -adce -gvn -simplifycfg -preverify -domtree -verify";
          char **args;
          int i;
 
          args = g_strsplit (opts, " ", 1000);
          for (i = 0; args [i]; i++)
                  ;
-         llvm::cl::ParseCommandLineOptions (i, args, "", false);
+         llvm::cl::ParseCommandLineOptions (i, args, "");
          g_strfreev (args);
 
          for (unsigned i = 0; i < PassList.size(); ++i) {
@@ -611,6 +606,7 @@ mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, Func
 
                  if (PassInf->getNormalCtor())
                          P = PassInf->getNormalCtor()();
+                 g_assert (P->getPassKind () == llvm::PT_Function || P->getPassKind () == llvm::PT_Loop);
                  fpm->add (P);
          }
 
@@ -632,3 +628,35 @@ mono_llvm_dispose_ee (LLVMExecutionEngineRef ee)
 
        delete fpm;
 }
+
+#else
+
+LLVMExecutionEngineRef
+mono_llvm_create_ee (LLVMModuleProviderRef MP, AllocCodeMemoryCb *alloc_cb, FunctionEmittedCb *emitted_cb, ExceptionTableCb *exception_cb, DlSymCb *dlsym_cb)
+{
+       g_assert_not_reached ();
+       return NULL;
+}
+
+void
+mono_llvm_dispose_ee (LLVMExecutionEngineRef ee)
+{
+       g_assert_not_reached ();
+}
+
+/* Not linked in */
+void
+LLVMAddGlobalMapping(LLVMExecutionEngineRef EE, LLVMValueRef Global,
+                                        void* Addr)
+{
+       g_assert_not_reached ();
+}
+
+void*
+LLVMGetPointerToGlobal(LLVMExecutionEngineRef EE, LLVMValueRef Global)
+{
+       g_assert_not_reached ();
+       return NULL;
+}
+
+#endif /* !MONO_CROSS_COMPILE */
index fd822480af158b26346703d6b756b6642d8b67a9..01083f88634ee193af183dc94ae7e5e770dd7b53 100644 (file)
@@ -205,6 +205,12 @@ IntPtrType (void)
        return sizeof (gpointer) == 8 ? LLVMInt64Type () : LLVMInt32Type ();
 }
 
+static LLVMTypeRef
+ObjRefType (void)
+{
+       return sizeof (gpointer) == 8 ? LLVMPointerType (LLVMInt64Type (), 0) : LLVMPointerType (LLVMInt32Type (), 0);
+}
+
 /*
  * get_vtype_size:
  *
@@ -217,7 +223,7 @@ get_vtype_size (MonoType *t)
 
        size = mono_class_value_size (mono_class_from_mono_type (t), NULL);
 
-       while (size < sizeof (gpointer) && mono_is_power_of_two (size) == -1)
+       while (size < 2 * sizeof (gpointer) && mono_is_power_of_two (size) == -1)
                size ++;
 
        return size;
@@ -326,17 +332,14 @@ type_to_llvm_type (EmitContext *ctx, MonoType *t)
        case MONO_TYPE_SZARRAY:
        case MONO_TYPE_STRING:
        case MONO_TYPE_PTR:
-               return IntPtrType ();
+               return ObjRefType ();
        case MONO_TYPE_VAR:
        case MONO_TYPE_MVAR:
                /* Because of generic sharing */
-               if (mini_type_var_is_vt (ctx->cfg, t))
-                       return type_to_llvm_type (ctx, mini_get_gsharedvt_alloc_type_for_type (ctx->cfg, t));
-               else
-                       return IntPtrType ();
+               return ObjRefType ();
        case MONO_TYPE_GENERICINST:
                if (!mono_type_generic_inst_is_valuetype (t))
-                       return IntPtrType ();
+                       return ObjRefType ();
                /* Fall through */
        case MONO_TYPE_VALUETYPE:
        case MONO_TYPE_TYPEDBYREF: {
@@ -937,12 +940,12 @@ convert_full (EmitContext *ctx, LLVMValueRef v, LLVMTypeRef dtype, gboolean is_u
                if (LLVMGetTypeKind (stype) == LLVMPointerTypeKind)
                        return LLVMBuildPtrToInt (ctx->builder, v, dtype, "");
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-               if (stype == LLVMInt32Type () && dtype == LLVMFloatType ())
-                       return LLVMBuildBitCast (ctx->builder, v, dtype, "");
-               if (stype == LLVMInt32Type () && dtype == LLVMDoubleType ())
-                       return LLVMBuildBitCast (ctx->builder, LLVMBuildZExt (ctx->builder, v, LLVMInt64Type (), ""), dtype, "");
-#endif
+               if (mono_arch_is_soft_float ()) {
+                       if (stype == LLVMInt32Type () && dtype == LLVMFloatType ())
+                               return LLVMBuildBitCast (ctx->builder, v, dtype, "");
+                       if (stype == LLVMInt32Type () && dtype == LLVMDoubleType ())
+                               return LLVMBuildBitCast (ctx->builder, LLVMBuildZExt (ctx->builder, v, LLVMInt64Type (), ""), dtype, "");
+               }
 
                if (LLVMGetTypeKind (stype) == LLVMVectorTypeKind && LLVMGetTypeKind (dtype) == LLVMVectorTypeKind)
                        return LLVMBuildBitCast (ctx->builder, v, dtype, "");
@@ -1277,12 +1280,26 @@ set_metadata_flag (LLVMValueRef v, const char *flag_name)
 {
        LLVMValueRef md_arg;
        int md_kind;
-       
+
        md_kind = LLVMGetMDKindID (flag_name, strlen (flag_name));
        md_arg = LLVMMDString ("mono", 4);
        LLVMSetMetadata (v, md_kind, LLVMMDNode (&md_arg, 1));
 }
 
+static void
+set_invariant_load_flag (LLVMValueRef v)
+{
+       LLVMValueRef md_arg;
+       int md_kind;
+       const char *flag_name;
+
+       // FIXME: Cache this
+       flag_name = "invariant.load";
+       md_kind = LLVMGetMDKindID (flag_name, strlen (flag_name));
+       md_arg = LLVMMDString ("<index>", strlen ("<index>"));
+       LLVMSetMetadata (v, md_kind, LLVMMDNode (&md_arg, 1));
+}
+
 /*
  * emit_call:
  *
@@ -1868,6 +1885,10 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                                LLVMAddGlobalMapping (ee, callee, target);
                        }
                }
+
+               if (call->method && strstr (call->method->klass->name, "AsyncVoidMethodBuilder"))
+                       /* LLVM miscompiles async methods */
+                       LLVM_FAILURE (ctx, "#13734");
        } else if (calli) {
        } else {
                MonoJitICallInfo *info = mono_find_jit_icall_by_addr (call->fptr);
@@ -2024,7 +2045,6 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
 
        lcall = emit_call (ctx, bb, &builder, callee, args, LLVMCountParamTypes (llvm_sig));
 
-#ifdef LLVM_MONO_BRANCH
        /*
         * Modify cconv and parameter attributes to pass rgctx/imt correctly.
         */
@@ -2040,7 +2060,6 @@ process_call (EmitContext *ctx, MonoBasicBlock *bb, LLVMBuilderRef *builder_ref,
                LLVMAddInstrAttribute (lcall, 1 + sinfo.rgctx_arg_pindex, LLVMInRegAttribute);
        if (call->imt_arg_reg)
                LLVMAddInstrAttribute (lcall, 1 + sinfo.imt_arg_pindex, LLVMInRegAttribute);
-#endif
 
        /* Add byval attributes if needed */
        for (i = 0; i < sig->param_count; ++i) {
@@ -2684,7 +2703,8 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                case OP_AND_IMM:
                case OP_MUL_IMM:
                case OP_SHL_IMM:
-               case OP_SHR_IMM: {
+               case OP_SHR_IMM:
+               case OP_SHR_UN_IMM: {
                        LLVMValueRef imm;
 
                        if (spec [MONO_INST_SRC1] == 'l') {
@@ -2760,6 +2780,7 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                                values [ins->dreg] = LLVMBuildLShr (builder, lhs, imm, dname);
                                break;
                        case OP_LSHR_UN_IMM:
+                       case OP_SHR_UN_IMM:
                                values [ins->dreg] = LLVMBuildLShr (builder, lhs, imm, dname);
                                break;
                        default:
@@ -2871,10 +2892,10 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        values [ins->dreg] = LLVMBuildFPExt (builder, v, LLVMDoubleType (), dname);
                        break;
                case OP_SEXT_I4:
-                       values [ins->dreg] = LLVMBuildSExt (builder, lhs, LLVMInt64Type (), dname);
+                       values [ins->dreg] = LLVMBuildSExt (builder, convert (ctx, lhs, LLVMInt32Type ()), LLVMInt64Type (), dname);
                        break;
                case OP_ZEXT_I4:
-                       values [ins->dreg] = LLVMBuildZExt (builder, lhs, LLVMInt64Type (), dname);
+                       values [ins->dreg] = LLVMBuildZExt (builder, convert (ctx, lhs, LLVMInt32Type ()), LLVMInt64Type (), dname);
                        break;
                case OP_TRUNC_I4:
                        values [ins->dreg] = LLVMBuildTrunc (builder, lhs, LLVMInt32Type (), dname);
@@ -2971,12 +2992,12 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
 
                        values [ins->dreg] = emit_load (ctx, bb, &builder, size, addr, dname, is_volatile);
 
-                       if (!is_volatile && (ins->flags & MONO_INST_CONSTANT_LOAD)) {
+                       if (!is_volatile && (ins->flags & MONO_INST_INVARIANT_LOAD)) {
                                /*
                                 * These will signal LLVM that these loads do not alias any stores, and
                                 * they can't fail, allowing them to be hoisted out of loops.
                                 */
-                               set_metadata_flag (values [ins->dreg], "mono.noalias");
+                               set_invariant_load_flag (values [ins->dreg]);
                                set_metadata_flag (values [ins->dreg], "mono.nofail.load");
                        }
 
@@ -3094,23 +3115,8 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        indexes [1] = LLVMConstInt (LLVMInt32Type (), (gssize)got_offset, FALSE);
                        got_entry_addr = LLVMBuildGEP (builder, ctx->lmodule->got_var, indexes, 2, "");
 
-                       // FIXME: This doesn't work right now, because it must be
-                       // paired with an invariant.end, and even then, its only in effect
-                       // inside its basic block
-#if 0
-                       {
-                               LLVMValueRef args [3];
-                               LLVMValueRef ptr, val;
-
-                               ptr = LLVMBuildBitCast (builder, got_entry_addr, LLVMPointerType (LLVMInt8Type (), 0), "ptr");
-
-                               args [0] = LLVMConstInt (LLVMInt64Type (), sizeof (gpointer), FALSE);
-                               args [1] = ptr;
-                               val = LLVMBuildCall (builder, LLVMGetNamedFunction (module, "llvm.invariant.start"), args, 2, "");
-                       }
-#endif
-
                        values [ins->dreg] = LLVMBuildLoad (builder, got_entry_addr, dname);
+                       set_invariant_load_flag (values [ins->dreg]);
                        break;
                }
                case OP_NOT_REACHED:
@@ -3290,9 +3296,15 @@ process_bb (EmitContext *ctx, MonoBasicBlock *bb)
                        // 256 == GS segment register
                        LLVMTypeRef ptrtype = LLVMPointerType (IntPtrType (), 256);
 #endif
-
                        // FIXME: XEN
                        values [ins->dreg] = LLVMBuildLoad (builder, LLVMBuildIntToPtr (builder, LLVMConstInt (IntPtrType (), ins->inst_offset, TRUE), ptrtype, ""), "");
+#elif defined(TARGET_AMD64) && defined(TARGET_OSX)
+                       /* See mono_amd64_emit_tls_get () */
+                       int offset = mono_amd64_get_tls_gs_offset () + (ins->inst_offset * 8);
+
+                       // 256 == GS segment register
+                       LLVMTypeRef ptrtype = LLVMPointerType (IntPtrType (), 256);
+                       values [ins->dreg] = LLVMBuildLoad (builder, LLVMBuildIntToPtr (builder, LLVMConstInt (IntPtrType (), offset, TRUE), ptrtype, ""), "");
 #else
                        LLVM_FAILURE (ctx, "opcode tls-get");
 #endif
@@ -4232,18 +4244,21 @@ mono_llvm_emit_method (MonoCompile *cfg)
        
        module = ctx->module = ctx->lmodule->module;
 
+       if (cfg->gsharedvt)
+               LLVM_FAILURE (ctx, "gsharedvt");
+
 #if 1
        {
                static int count = 0;
                count ++;
 
-               if (getenv ("LLVM_COUNT")) {
-                       if (count == atoi (getenv ("LLVM_COUNT"))) {
+               if (g_getenv ("LLVM_COUNT")) {
+                       if (count == atoi (g_getenv ("LLVM_COUNT"))) {
                                printf ("LAST: %s\n", mono_method_full_name (cfg->method, TRUE));
                                fflush (stdout);
                                last = TRUE;
                        }
-                       if (count > atoi (getenv ("LLVM_COUNT")))
+                       if (count > atoi (g_getenv ("LLVM_COUNT")))
                                LLVM_FAILURE (ctx, "");
                }
        }
@@ -4270,9 +4285,7 @@ mono_llvm_emit_method (MonoCompile *cfg)
        method = LLVMAddFunction (module, method_name, method_type);
        ctx->lmethod = method;
 
-#ifdef LLVM_MONO_BRANCH
        LLVMSetFunctionCallConv (method, LLVMMono1CallConv);
-#endif
        LLVMSetLinkage (method, LLVMPrivateLinkage);
 
        LLVMAddFunctionAttr (method, LLVMUWTable);
@@ -4507,6 +4520,19 @@ mono_llvm_emit_method (MonoCompile *cfg)
 
        mark_as_used (module, method);
 
+       if (cfg->compile_aot) {
+               LLVMValueRef md_args [16];
+               LLVMValueRef md_node;
+               int method_index;
+
+               method_index = mono_aot_get_method_index (cfg->orig_method);
+               md_args [0] = LLVMMDString (method_name, strlen (method_name));
+               md_args [1] = LLVMConstInt (LLVMInt32Type (), method_index, FALSE);
+               md_node = LLVMMDNode (md_args, 2);
+               LLVMAddNamedMetadataOperand (module, "mono.function_indexes", md_node);
+               //LLVMSetMetadata (method, md_kind, LLVMMDNode (&md_arg, 1));
+       }
+
        if (cfg->compile_aot) {
                /* Don't generate native code, keep the LLVM IR */
                if (cfg->compile_aot && cfg->verbose_level)
@@ -4852,16 +4878,6 @@ add_intrinsics (LLVMModuleRef module)
                LLVMAddFunction (module, "llvm.umul.with.overflow.i64", LLVMFunctionType (LLVMStructType (ovf_res_i64, 2, FALSE), ovf_params_i64, 2, FALSE));
        }
 
-       {
-               LLVMTypeRef struct_ptr = LLVMPointerType (LLVMStructType (NULL, 0, FALSE), 0);
-               LLVMTypeRef invariant_start_params [] = { LLVMInt64Type (), LLVMPointerType (LLVMInt8Type (), 0) };
-               LLVMTypeRef invariant_end_params [] = { struct_ptr, LLVMInt64Type (), LLVMPointerType (LLVMInt8Type (), 0) };
-
-               LLVMAddFunction (module, "llvm.invariant.start", LLVMFunctionType (struct_ptr, invariant_start_params, 2, FALSE));
-
-               LLVMAddFunction (module, "llvm.invariant.end", LLVMFunctionType (LLVMVoidType (), invariant_end_params, 3, FALSE));
-       }
-
        /* EH intrinsics */
        {
                LLVMTypeRef arg_types [2];
@@ -5135,7 +5151,7 @@ mono_llvm_create_aot_module (const char *got_symbol)
                LLVMValueRef personality;
 
                personality = LLVMAddFunction (aot_module.module, "mono_aot_personality", LLVMFunctionType (LLVMVoidType (), NULL, 0, FALSE));
-               LLVMSetLinkage (personality, LLVMPrivateLinkage);
+               LLVMSetLinkage (personality, LLVMInternalLinkage);
                lbb = LLVMAppendBasicBlock (personality, "BB0");
                lbuilder = LLVMCreateBuilder ();
                LLVMPositionBuilderAtEnd (lbuilder, lbb);
index 53c524e7549c634c30529e5f5418933bc3700c59..06494f9e14c5ddaa397fa137a3e34f4fbaf6c354 100644 (file)
@@ -121,6 +121,15 @@ mono_llvm_load (const char* bpath)
                        llvm_lib = try_llvm_load (name, &err);
                        g_free (name);
                }
+#ifdef __MACH__
+               if (!llvm_lib) {
+                       char *newbase = g_path_get_dirname (base);
+                       name = g_strdup_printf ("%s/Libraries", newbase);
+                       err = NULL;
+                       llvm_lib = try_llvm_load (name, &err);
+                       g_free (name);
+               }
+#endif
                g_free (base);
                g_free (resolvedname);
        }
index 12d17c399a1fd074d5aa99079e52cc79c50c349f..c219458d67983c591a23d7465fff81b7857ea083 100644 (file)
@@ -18,6 +18,7 @@
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/debug-helpers.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-hwcap-mips.h>
 
 #include <mono/arch/mips/mips-codegen.h>
 
@@ -31,7 +32,8 @@
 #define ALWAYS_SAVE_RA         1       /* call-handler & switch currently clobber ra */
 
 #define PROMOTE_R4_TO_R8       1       /* promote single values in registers to doubles */
-#define USE_MUL                        1       /* use mul instead of mult/mflo for multiply */
+#define USE_MUL                        0       /* use mul instead of mult/mflo for multiply
+                                                          remember to update cpu-mips.md if you change this */
 
 /* Emit a call sequence to 'v', using 'D' as a scratch register if necessary */
 #define mips_call(c,D,v) do {  \
@@ -596,13 +598,16 @@ mono_arch_get_delegate_invoke_impls (void)
        guint8 *code;
        guint32 code_len;
        int i;
+       char *tramp_name;
 
        code = get_delegate_invoke_impl (TRUE, 0, &code_len);
-       res = g_slist_prepend (res, mono_tramp_info_create (g_strdup ("delegate_invoke_impl_has_target"), code, code_len, NULL, NULL));
+       res = g_slist_prepend (res, mono_tramp_info_create ("delegate_invoke_impl_has_target", code, code_len, NULL, NULL));
 
        for (i = 0; i <= MAX_ARCH_DELEGATE_PARAMS; ++i) {
                code = get_delegate_invoke_impl (FALSE, i, &code_len);
-               res = g_slist_prepend (res, mono_tramp_info_create (g_strdup_printf ("delegate_invoke_impl_target_%d", i), code, code_len, NULL, NULL));
+               tramp_name = g_strdup_printf ("delegate_invoke_impl_target_%d", i);
+               res = g_slist_prepend (res, mono_tramp_info_create (tramp_name, code, code_len, NULL, NULL));
+               g_free (tramp_name);
        }
 
        return res;
index 394610bbc6facb512f0955cdd7029a008aeaad2d..e7a7844a0f84adc91075bb98bcf7c0706e0478d2 100644 (file)
@@ -21,6 +21,9 @@ MINI_OP(OP_ICOMPARE_IMM,      "icompare_imm", NONE, IREG, NONE)
 MINI_OP(OP_LCOMPARE_IMM,       "lcompare_imm", NONE, LREG, NONE)
 MINI_OP(OP_LOCAL,      "local", NONE, NONE, NONE)
 MINI_OP(OP_ARG,                "arg", NONE, NONE, NONE)
+/* inst_imm contains the local index */
+MINI_OP(OP_GSHAREDVT_LOCAL, "gsharedvt_local", NONE, NONE, NONE)
+MINI_OP(OP_GSHAREDVT_ARG_REGOFFSET, "gsharedvt_arg_regoffset", NONE, NONE, NONE)
 /*
  * Represents passing a valuetype argument which has not been decomposed yet.
  * inst_p0 points to the call.
@@ -37,23 +40,18 @@ MINI_OP(OP_SEQ_POINT, "seq_point", NONE, NONE, NONE)
 MINI_OP(OP_IMPLICIT_EXCEPTION, "implicit_exception", NONE, NONE, NONE)
 
 MINI_OP(OP_VOIDCALL,   "voidcall", NONE, NONE, NONE)
-MINI_OP(OP_VOIDCALLVIRT,       "voidcallvirt", NONE, NONE, NONE)
 MINI_OP(OP_VOIDCALL_REG,       "voidcall_reg", NONE, IREG, NONE)
 MINI_OP(OP_VOIDCALL_MEMBASE,   "voidcall_membase", NONE, IREG, NONE)
 MINI_OP(OP_CALL,        "call", IREG, NONE, NONE)
 MINI_OP(OP_CALL_REG,   "call_reg", IREG, IREG, NONE)
 MINI_OP(OP_CALL_MEMBASE,       "call_membase", IREG, IREG, NONE)
-MINI_OP(OP_CALLVIRT, "callvirt", IREG, NONE, NONE)
 MINI_OP(OP_FCALL,      "fcall", FREG, NONE, NONE)
-MINI_OP(OP_FCALLVIRT,  "fcallvirt", FREG, NONE, NONE)
 MINI_OP(OP_FCALL_REG,  "fcall_reg", FREG, IREG, NONE)
 MINI_OP(OP_FCALL_MEMBASE,      "fcall_membase", FREG, IREG, NONE)
 MINI_OP(OP_LCALL,      "lcall", LREG, NONE, NONE)
-MINI_OP(OP_LCALLVIRT,  "lcallvirt", LREG, NONE, NONE)
 MINI_OP(OP_LCALL_REG,  "lcall_reg", LREG, IREG, NONE)
 MINI_OP(OP_LCALL_MEMBASE,      "lcall_membase", LREG, IREG, NONE)
 MINI_OP(OP_VCALL,      "vcall", VREG, NONE, NONE)
-MINI_OP(OP_VCALLVIRT,  "vcallvirt", VREG, NONE, NONE)
 MINI_OP(OP_VCALL_REG,  "vcall_reg", VREG, IREG, NONE)
 MINI_OP(OP_VCALL_MEMBASE,      "vcall_membase", VREG, IREG, NONE)
 /* Represents the decomposed vcall which doesn't return a vtype no more */
@@ -423,6 +421,12 @@ MINI_OP(OP_ICGT_UN,"int_cgt_un", IREG, NONE, NONE)
 MINI_OP(OP_ICLT,   "int_clt", IREG, NONE, NONE)
 MINI_OP(OP_ICLT_UN,"int_clt_un", IREG, NONE, NONE)
 
+MINI_OP(OP_ICNEQ,  "int_cneq", IREG, NONE, NONE)
+MINI_OP(OP_ICGE,   "int_cge", IREG, NONE, NONE)
+MINI_OP(OP_ICLE,   "int_cle", IREG, NONE, NONE)
+MINI_OP(OP_ICGE_UN,"int_cge_un", IREG, NONE, NONE)
+MINI_OP(OP_ICLE_UN,"int_cle_un", IREG, NONE, NONE)
+
 MINI_OP(OP_IBEQ,    "int_beq", NONE, NONE, NONE)
 MINI_OP(OP_IBGE,    "int_bge", NONE, NONE, NONE)
 MINI_OP(OP_IBGT,    "int_bgt", NONE, NONE, NONE)
@@ -506,6 +510,10 @@ MINI_OP(OP_FCGT_UN,"float_cgt_un", IREG, FREG, FREG)
 MINI_OP(OP_FCLT,   "float_clt", IREG, FREG, FREG)
 MINI_OP(OP_FCLT_UN,"float_clt_un", IREG, FREG, FREG)
 
+MINI_OP(OP_FCNEQ,  "float_cneq", IREG, FREG, FREG)
+MINI_OP(OP_FCGE,   "float_cge", IREG, FREG, FREG)
+MINI_OP(OP_FCLE,   "float_cle", IREG, FREG, FREG)
+
 MINI_OP(OP_FCEQ_MEMBASE,   "float_ceq_membase", IREG, FREG, IREG)
 MINI_OP(OP_FCGT_MEMBASE,   "float_cgt_membase", IREG, FREG, IREG)
 MINI_OP(OP_FCGT_UN_MEMBASE,"float_cgt_un_membase", IREG, FREG, IREG)
@@ -605,6 +613,10 @@ MINI_OP(OP_CARD_TABLE_WBARRIER, "card_table_wbarrier", NONE, IREG, IREG)
 
 /* arch-dep tls access */
 MINI_OP(OP_TLS_GET,            "tls_get", IREG, NONE, NONE)
+MINI_OP(OP_TLS_GET_REG,        "tls_get_reg", IREG, IREG, NONE)
+/* inst_offset contains the TLS offset */
+MINI_OP(OP_TLS_SET,            "tls_set", NONE, IREG, NONE)
+MINI_OP(OP_TLS_SET_REG,        "tls_set_reg", NONE, IREG, IREG)
 
 MINI_OP(OP_LOAD_GOTADDR, "load_gotaddr", IREG, NONE, NONE)
 MINI_OP(OP_DUMMY_USE, "dummy_use", NONE, IREG, NONE)
@@ -1226,3 +1238,6 @@ MINI_OP(OP_MIPS_COND_EXC_INC, "mips_cond_exc_inc", NONE, IREG, IREG)
 #ifdef ENABLE_LLVM
 MINI_OP(OP_LLVM_OUTARG_VT,     "llvm_outarg_vt", IREG, VREG, NONE)
 #endif
+
+MINI_OP(OP_OBJC_GET_SELECTOR, "objc_get_selector", IREG, NONE, NONE)
+
index d3e5c907294130f94e33c9b276cea7d790ddaac8..67595770e964000bcc89a43a42aa4666338af225 100644 (file)
@@ -54,6 +54,7 @@
 #include <mono/utils/mono-logger-internal.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/dtrace.h>
+#include <mono/utils/mono-signal-handler.h>
 
 #include "mini.h"
 #include <string.h>
@@ -192,8 +193,7 @@ SIG_HANDLER_SIGNATURE (mono_chain_signal)
        return FALSE;
 }
 
-static void
-SIG_HANDLER_SIGNATURE (sigabrt_signal_handler)
+SIG_HANDLER_FUNC (static, sigabrt_signal_handler)
 {
        MonoJitInfo *ji = NULL;
        GET_CONTEXT;
@@ -207,8 +207,7 @@ SIG_HANDLER_SIGNATURE (sigabrt_signal_handler)
        }
 }
 
-static void
-SIG_HANDLER_SIGNATURE (sigusr1_signal_handler)
+SIG_HANDLER_FUNC (static, sigusr1_signal_handler)
 {
        gboolean running_managed;
        MonoException *exc;
@@ -281,6 +280,7 @@ SIG_HANDLER_SIGNATURE (sigusr1_signal_handler)
        mono_arch_handle_exception (ctx, exc);
 }
 
+
 #if defined(__i386__) || defined(__x86_64__)
 #define FULL_STAT_PROFILER_BACKTRACE 1
 #define CURRENT_FRAME_GET_BASE_POINTER(f) (* (gpointer*)(f))
@@ -298,8 +298,7 @@ SIG_HANDLER_SIGNATURE (sigusr1_signal_handler)
 
 #if defined(__ia64__) || defined(__sparc__) || defined(sparc) || defined(__s390__) || defined(s390)
 
-static void
-SIG_HANDLER_SIGNATURE (sigprof_signal_handler)
+SIG_HANDLER_FUNC (static, sigprof_signal_handler)
 {
        if (mono_chain_signal (SIG_HANDLER_PARAMS))
                return;
@@ -309,8 +308,7 @@ SIG_HANDLER_SIGNATURE (sigprof_signal_handler)
 
 #else
 
-static void
-SIG_HANDLER_SIGNATURE (sigprof_signal_handler)
+SIG_HANDLER_FUNC (static, sigprof_signal_handler)
 {
        int call_chain_depth = mono_profiler_stat_get_call_chain_depth ();
        MonoProfilerCallChainStrategy call_chain_strategy = mono_profiler_stat_get_call_chain_strategy ();
@@ -388,8 +386,7 @@ SIG_HANDLER_SIGNATURE (sigprof_signal_handler)
 
 #endif
 
-static void
-SIG_HANDLER_SIGNATURE (sigquit_signal_handler)
+SIG_HANDLER_FUNC (static, sigquit_signal_handler)
 {
        gboolean res;
 
@@ -419,8 +416,7 @@ SIG_HANDLER_SIGNATURE (sigquit_signal_handler)
        mono_chain_signal (SIG_HANDLER_PARAMS);
 }
 
-static void
-SIG_HANDLER_SIGNATURE (sigusr2_signal_handler)
+SIG_HANDLER_FUNC (static, sigusr2_signal_handler)
 {
        gboolean enabled = mono_trace_is_enabled ();
 
@@ -672,24 +668,54 @@ void
 mono_gdb_render_native_backtraces (pid_t crashed_pid)
 {
        const char *argv [9];
+       char template [] = "/tmp/mono-lldb-commands.XXXXXX";
        char buf1 [128];
+       FILE *commands;
+       gboolean using_lldb = FALSE;
 
        argv [0] = g_find_program_in_path ("gdb");
        if (argv [0] == NULL) {
-               return;
+               argv [0] = g_find_program_in_path ("lldb");
+               using_lldb = TRUE;
        }
 
-       argv [1] = "-ex";
-       sprintf (buf1, "attach %ld", (long) crashed_pid);
-       argv [2] = buf1;
-       argv [3] = "--ex";
-       argv [4] = "info threads";
-       argv [5] = "--ex";
-       argv [6] = "thread apply all bt";
-       argv [7] = "--batch";
-       argv [8] = 0;
+       if (argv [0] == NULL)
+               return;
+
+       if (using_lldb) {
+               if (mkstemp (template) == -1)
+                       return;
+
+               commands = fopen (template, "w");
+
+               fprintf (commands, "process attach --pid %ld\n", (long) crashed_pid);
+               fprintf (commands, "script lldb.debugger.HandleCommand (\"thread list\")\n");
+               fprintf (commands, "script lldb.debugger.HandleCommand (\"thread backtrace all\")\n");
+               fprintf (commands, "detach\n");
+               fprintf (commands, "quit\n");
+
+               fflush (commands);
+               fclose (commands);
+
+               argv [1] = "--source";
+               argv [2] = template;
+               argv [3] = 0;
+       } else {
+               argv [1] = "-ex";
+               sprintf (buf1, "attach %ld", (long) crashed_pid);
+               argv [2] = buf1;
+               argv [3] = "--ex";
+               argv [4] = "info threads";
+               argv [5] = "--ex";
+               argv [6] = "thread apply all bt";
+               argv [7] = "--batch";
+               argv [8] = 0;
+       }
 
        execv (argv [0], (char**)argv);
+
+       if (using_lldb)
+               unlink (template);
 }
 #endif
 #endif /* __native_client__ */
index e779862c46e361dd4b5788d7fd80191b4ff64ef0..4405b9e90595961b93374b007d94e069680a0171 100644 (file)
@@ -16,6 +16,7 @@
 #include <mono/metadata/debug-helpers.h>
 #include <mono/utils/mono-proclib.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-hwcap-ppc.h>
 
 #include "mini-ppc.h"
 #ifdef TARGET_POWERPC64
@@ -442,13 +443,16 @@ mono_arch_get_delegate_invoke_impls (void)
        guint8 *code;
        guint32 code_len;
        int i;
+       char *tramp_name;
 
        code = get_delegate_invoke_impl (TRUE, 0, &code_len, TRUE);
-       res = g_slist_prepend (res, mono_tramp_info_create (g_strdup ("delegate_invoke_impl_has_target"), code, code_len, NULL, NULL));
+       res = g_slist_prepend (res, mono_tramp_info_create ("delegate_invoke_impl_has_target", code, code_len, NULL, NULL));
 
        for (i = 0; i < MAX_ARCH_DELEGATE_PARAMS; ++i) {
                code = get_delegate_invoke_impl (FALSE, i, &code_len, TRUE);
-               res = g_slist_prepend (res, mono_tramp_info_create (g_strdup_printf ("delegate_invoke_impl_target_%d", i), code, code_len, NULL, NULL));
+               tramp_name = g_strdup_printf ("delegate_invoke_impl_target_%d", i);
+               res = g_slist_prepend (res, mono_tramp_info_create (tramp_name, code, code_len, NULL, NULL));
+               g_free (tramp_name);
        }
 
        return res;
@@ -520,32 +524,6 @@ typedef struct {
        long int value;
 } AuxVec;
 
-#ifdef USE_ENVIRON_HACK
-static AuxVec*
-linux_find_auxv (int *count)
-{
-       AuxVec *vec;
-       int c = 0;
-       char **result = __environ;
-       /* Scan over the env vector looking for the ending NULL */
-       for (; *result != NULL; ++result) {
-       }
-       /* Bump the pointer one more step, which should be the auxv. */
-       ++result;
-       vec = (AuxVec *)result;
-       if (vec->type != 22 /*AT_IGNOREPPC*/) {
-               *count = 0;
-               return NULL;
-       }
-       while (vec->type != 0 /*AT_NULL*/) {
-               vec++;
-               c++;
-       }
-       *count = c;
-       return (AuxVec *)result;
-}
-#endif
-
 #define MAX_AUX_ENTRIES 128
 /* 
  * PPC_FEATURE_POWER4, PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS, PPC_FEATURE_CELL,
@@ -575,11 +553,12 @@ mono_arch_init (void)
 #if defined(MONO_CROSS_COMPILE)
 #elif defined(__APPLE__)
        int mib [3];
-       size_t len;
+       size_t len = sizeof (cachelinesize);
+
        mib [0] = CTL_HW;
        mib [1] = HW_CACHELINE;
-       len = sizeof (cachelinesize);
-       if (sysctl (mib, 2, &cachelinesize, (size_t*)&len, NULL, 0) == -1) {
+
+       if (sysctl (mib, 2, &cachelinesize, &len, NULL, 0) == -1) {
                perror ("sysctl");
                cachelinesize = 128;
        } else {
@@ -590,38 +569,18 @@ mono_arch_init (void)
        int i, vec_entries = 0;
        /* sadly this will work only with 2.6 kernels... */
        FILE* f = fopen ("/proc/self/auxv", "rb");
+
        if (f) {
                vec_entries = fread (&vec, sizeof (AuxVec), MAX_AUX_ENTRIES, f);
                fclose (f);
-#ifdef USE_ENVIRON_HACK
-       } else {
-               AuxVec *evec = linux_find_auxv (&vec_entries);
-               if (vec_entries)
-                       memcpy (&vec, evec, sizeof (AuxVec) * MIN (vec_entries, MAX_AUX_ENTRIES));
-#endif
        }
+
        for (i = 0; i < vec_entries; i++) {
                int type = vec [i].type;
+
                if (type == 19) { /* AT_DCACHEBSIZE */
                        cachelinesize = vec [i].value;
                        continue;
-               } else if (type == 16) { /* AT_HWCAP */
-                       if (vec [i].value & 0x00002000 /*PPC_FEATURE_ICACHE_SNOOP*/)
-                               cpu_hw_caps |= PPC_ICACHE_SNOOP;
-                       if (vec [i].value & ISA_2X)
-                               cpu_hw_caps |= PPC_ISA_2X;
-                       if (vec [i].value & ISA_64)
-                               cpu_hw_caps |= PPC_ISA_64;
-                       if (vec [i].value & ISA_MOVE_FPR_GPR)
-                               cpu_hw_caps |= PPC_MOVE_FPR_GPR;
-                       continue;
-               } else if (type == 15) { /* AT_PLATFORM */
-                       const char *arch = (char*)vec [i].value;
-                       if (strcmp (arch, "ppc970") == 0 ||
-                                       (strncmp (arch, "power", 5) == 0 && arch [5] >= '4' && arch [5] <= '7'))
-                               cpu_hw_caps |= PPC_MULTIPLE_LS_UNITS;
-                       /*printf ("cpu: %s\n", (char*)vec [i].value);*/
-                       continue;
                }
        }
 #elif defined(G_COMPILER_CODEWARRIOR)
@@ -630,13 +589,31 @@ mono_arch_init (void)
 #else
 //#error Need a way to get cache line size
 #endif
+
+       if (mono_hwcap_ppc_has_icache_snoop)
+               cpu_hw_caps |= PPC_ICACHE_SNOOP;
+
+       if (mono_hwcap_ppc_is_isa_2x)
+               cpu_hw_caps |= PPC_ISA_2X;
+
+       if (mono_hwcap_ppc_is_isa_64)
+               cpu_hw_caps |= PPC_ISA_64;
+
+       if (mono_hwcap_ppc_has_move_fpr_gpr)
+               cpu_hw_caps |= PPC_MOVE_FPR_GPR;
+
+       if (mono_hwcap_ppc_has_multiple_ls_units)
+               cpu_hw_caps |= PPC_MULTIPLE_LS_UNITS;
+
        if (!cachelinesize)
                cachelinesize = 32;
+
        if (!cachelineinc)
                cachelineinc = cachelinesize;
 
        if (mono_cpu_count () > 1)
                cpu_hw_caps |= PPC_SMP_CAPABLE;
+
        InitializeCriticalSection (&mini_arch_mutex);
 
        ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT);
@@ -1278,7 +1255,7 @@ get_call_info (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig)
 }
 
 gboolean
-mono_ppc_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig)
+mono_arch_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig)
 {
        CallInfo *c1, *c2;
        gboolean res;
@@ -3788,7 +3765,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        }
 
                        ppc_mr (code, ppc_sp, ppc_r11);
-                       mono_add_patch_info (cfg, (guint8*) code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, ins->inst_p0);
+                       mono_add_patch_info (cfg, (guint8*) code - cfg->native_code, MONO_PATCH_INFO_METHOD_JUMP, call->method);
                        if (cfg->compile_aot) {
                                /* arch_emit_got_access () patches this */
                                ppc_load32 (code, ppc_r0, 0);
index e3d5b055b969242d724004ed7896e5b400e1dcb0..13b6adb5376fccf0bc1957d16eb5fdc27b8de21c 100644 (file)
@@ -195,6 +195,7 @@ typedef struct MonoCompileArch {
 #define MONO_ARCH_SOFT_DEBUG_SUPPORTED 1
 #endif
 #define MONO_ARCH_THIS_AS_FIRST_ARG 1
+#define MONO_ARCH_HAVE_OP_TAIL_CALL 1
 
 #define PPC_NUM_REG_ARGS (PPC_LAST_ARG_REG-PPC_FIRST_ARG_REG+1)
 #define PPC_NUM_REG_FPARGS (PPC_LAST_FPARG_REG-PPC_FIRST_FPARG_REG+1)
@@ -304,8 +305,6 @@ extern guint8* mono_ppc_create_pre_code_ftnptr (guint8 *code) MONO_INTERNAL;
 gboolean
 mono_ppc_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig) MONO_INTERNAL;
 
-#define MONO_ARCH_USE_OP_TAIL_CALL(caller_sig, callee_sig) mono_ppc_tail_call_supported (caller_sig, callee_sig)
-
 void
 mono_ppc_patch (guchar *code, const guchar *target) MONO_INTERNAL;
 
index b32953ca3e883bc3dc86edc96accdadb17c0ebc6..cc2a055e78d6ad6181fa3147fdc4cbe656f6aa4c 100644 (file)
@@ -263,6 +263,7 @@ if (ins->inst_target_bb->native_offset) {                                   \
 #include <mono/metadata/profiler-private.h>
 #include <mono/utils/mono-math.h>
 #include <mono/utils/mono-mmap.h>
+#include <mono/utils/mono-hwcap-s390x.h>
 
 #include "mini-s390x.h"
 #include "cpu-s390x.h"
@@ -364,14 +365,12 @@ static guint8 * backUpStackPtr(MonoCompile *, guint8 *);
 static void decodeParm (MonoType *, void *, int);
 static void enter_method (MonoMethod *, RegParm *, char *);
 static void leave_method (MonoMethod *, ...);
-static gboolean is_regsize_var (MonoType *);
 static inline void add_general (guint *, size_data *, ArgInfo *);
 static inline void add_stackParm (guint *, size_data *, ArgInfo *, gint);
 static inline void add_float (guint *, size_data *, ArgInfo *);
 static CallInfo * get_call_info (MonoCompile *, MonoMemPool *, MonoMethodSignature *);
 static guchar * emit_float_to_int (MonoCompile *, guchar *, int, int, int, gboolean);
 static guint8 * emit_load_volatile_arguments (guint8 *, MonoCompile *);
-static void catch_SIGILL(int, siginfo_t *, void *);
 static __inline__ void emit_unwind_regs(MonoCompile *, guint8 *, int, int, long);
 
 /*========================= End of Prototypes ======================*/
@@ -384,8 +383,6 @@ int mono_exc_esp_offset = 0;
 
 static int indent_level = 0;
 
-int has_ld = 0;
-
 static gint appdomain_tls_offset = -1,
            lmf_tls_offset = -1,
            lmf_addr_tls_offset = -1;
@@ -417,11 +414,6 @@ static gpointer bp_trigger_page;
 
 breakpoint_t breakpointCode;
 
-/* 
- * This mutex protects architecture specific caches 
- */
-static CRITICAL_SECTION mini_arch_mutex;
-
 /*====================== End of Global Variables ===================*/
 
 /*------------------------------------------------------------------*/
@@ -1241,24 +1233,6 @@ handle_enum:
 
 /*========================= End of Function ========================*/
 
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                - catch_SIGILL                                      */
-/*                                                                  */
-/* Function    - Catch SIGILL as a result of testing for long      */
-/*               displacement facility.                            */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-void
-catch_SIGILL(int sigNo, siginfo_t *info, void *act) {
-
-       has_ld = 0;
-
-}
-
-/*========================= End of Function ========================*/
-
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /* Name                - mono_arch_cpu_init                                */
@@ -1271,35 +1245,6 @@ catch_SIGILL(int sigNo, siginfo_t *info, void *act) {
 void
 mono_arch_cpu_init (void)
 {
-       struct sigaction sa,
-                        *oldSa = NULL;
-       guint mode = 1;
-
-       /*--------------------------------------*/      
-       /* Set default rounding mode for FP     */
-       /*--------------------------------------*/      
-       __asm__ ("SRNM\t%0\n\t"
-               : : "m" (mode));
-
-       /*--------------------------------------*/      
-       /* Determine if we have long displace-  */
-       /* ment facility on this processor      */
-       /*--------------------------------------*/      
-       sa.sa_sigaction = catch_SIGILL;
-       sigemptyset (&sa.sa_mask);
-       sa.sa_flags = SA_SIGINFO;
-
-       sigaction (SIGILL, &sa, oldSa);
-
-       /*--------------------------------------*/
-       /* We test by executing the STY inst    */
-       /*--------------------------------------*/
-       __asm__ ("LGHI\t0,1\n\t"
-                "LA\t1,%0\n\t"
-                ".byte\t0xe3,0x00,0x10,0x00,0x00,0x50\n\t"
-               : "=m" (has_ld) : : "0", "1");
-
-       sigaction (SIGILL, oldSa, NULL);
 }
 
 /*========================= End of Function ========================*/
@@ -1377,8 +1322,7 @@ mono_arch_cpu_optimizations (guint32 *exclude_mask)
        /*----------------------------------------------------------*/
        /* No s390-specific optimizations yet                       */
        /*----------------------------------------------------------*/
-       *exclude_mask = MONO_OPT_INLINE|MONO_OPT_LINEARS;
-//     *exclude_mask = MONO_OPT_INLINE;
+       *exclude_mask = MONO_OPT_LINEARS;
        return opts;
 }
 
@@ -1399,44 +1343,6 @@ mono_arch_cpu_enumerate_simd_versions (void)
 }
 /*========================= End of Function ========================*/
 
-/*------------------------------------------------------------------*/
-/*                                                                  */
-/* Name                -                                                   */
-/*                                                                  */
-/* Function    -                                                   */
-/*                                                                 */
-/*------------------------------------------------------------------*/
-
-static gboolean
-is_regsize_var (MonoType *t) {
-       if (t->byref)
-               return TRUE;
-       switch (mono_type_get_underlying_type (t)->type) {
-       case MONO_TYPE_I4:
-       case MONO_TYPE_U4:
-       case MONO_TYPE_I:
-       case MONO_TYPE_I8:
-       case MONO_TYPE_U8:
-       case MONO_TYPE_U:
-       case MONO_TYPE_PTR:
-       case MONO_TYPE_FNPTR:
-               return TRUE;
-       case MONO_TYPE_OBJECT:
-       case MONO_TYPE_STRING:
-       case MONO_TYPE_CLASS:
-       case MONO_TYPE_SZARRAY:
-       case MONO_TYPE_ARRAY:
-               return FALSE;
-       case MONO_TYPE_VALUETYPE:
-               if (t->data.klass->enumtype)
-                       return is_regsize_var (mono_class_enum_basetype (t->data.klass));
-               return FALSE;
-       }
-       return FALSE;
-}
-
-/*========================= End of Function ========================*/
-
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /* Name                - mono_arch_get_allocatable_int_vars                */
@@ -1464,7 +1370,7 @@ mono_arch_get_allocatable_int_vars (MonoCompile *cfg)
                        continue;
 
                /* we can only allocate 32 bit values */
-               if (is_regsize_var (ins->inst_vtype)) {
+               if (mono_is_regsize_var(ins->inst_vtype)) {
                        g_assert (MONO_VARINFO (cfg, i)->reg == -1);
                        g_assert (i == vmv->idx);
                        vars = mono_varlist_insert_sorted (cfg, vars, vmv, FALSE);
@@ -1810,7 +1716,6 @@ enum_retvalue:
                }
 
                ptype = mini_type_get_underlying_type (gsctx, sig->params [i]);
-//             ptype = mini_get_basic_type_from_generic (gsctx, ptype);
                simpleType = ptype->type;
                cinfo->args[nParm].type = simpleType;
                switch (simpleType) {
@@ -1875,7 +1780,11 @@ enum_retvalue:
                        MonoMarshalType *info;
                        MonoClass *klass = mono_class_from_mono_type (ptype);
 
-                       size = mini_type_stack_size_full(gsctx, &klass->byval_arg, NULL, sig->pinvoke);
+                       if (sig->pinvoke)
+                               size = mono_class_native_size(klass, NULL);
+                       else
+                               size = mono_class_value_size(klass, NULL);
+
                        if (simpleType != MONO_TYPE_GENERICINST) {
                                info = mono_marshal_load_type_info(klass);
 
@@ -2051,7 +1960,7 @@ mono_arch_allocate_vars (MonoCompile *cfg)
        cinfo   = get_call_info (cfg, cfg->mempool, sig);
 
        if (!cinfo->struct_ret) {
-               switch (mono_type_get_underlying_type (sig->ret)->type) {
+               switch (mini_type_get_underlying_type (cfg->generic_sharing_context, sig->ret)->type) {
                case MONO_TYPE_VOID:
                        break;
                default:
@@ -2234,7 +2143,8 @@ printf("%s %4d cookine %x\n",__FUNCTION__,__LINE__,cfg->sig_cookie);
        /*------------------------------------------------------*/
        /* Allow space for the trace method stack area if needed*/
        /*------------------------------------------------------*/
-       if (mono_jit_trace_calls != NULL && mono_trace_eval (cfg->method)) 
+       if ((mono_jit_trace_calls != NULL && mono_trace_eval (cfg->method)) 
+           || (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE))
                offset += S390_TRACE_STACK_SIZE;
 
        /*------------------------------------------------------*/
@@ -2423,7 +2333,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                        t = sig->params [i - sig->hasthis];
                else
                        t = &mono_defaults.int_class->byval_arg;
-               t = mono_type_get_underlying_type (t);
+               t = mini_type_get_underlying_type (cfg->generic_sharing_context, t);
 
                in = call->args [i];
 
@@ -2639,7 +2549,8 @@ mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
 void
 mono_arch_emit_setret (MonoCompile *cfg, MonoMethod *method, MonoInst *val)
 {
-       MonoType *ret = mono_type_get_underlying_type (mono_method_signature (method)->ret);
+       MonoType *ret = mini_type_get_underlying_type (cfg->generic_sharing_context,
+                               mono_method_signature (method)->ret);
 
        if (!ret->byref) {
                if (ret->type == MONO_TYPE_R4) {
@@ -2697,7 +2608,7 @@ mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p,
        if (cfg->method->save_lmf)
                parmOffset -= sizeof(MonoLMF);
        fpOffset   = parmOffset + (5*sizeof(gpointer));
-       if ((!has_ld) && (fpOffset > 4096)) {
+       if ((!mono_hwcap_s390x_has_ld) && (fpOffset > 4096)) {
                s390_lgr (code, s390_r12, STK_BASE);
                baseReg = s390_r12;
                while (fpOffset > 4096) {
@@ -2710,7 +2621,7 @@ mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p,
        }       
 
        s390_stmg (code, s390_r2, s390_r6, STK_BASE, parmOffset);
-       if (has_ld) {
+       if (mono_hwcap_s390x_has_ld) {
                s390_stdy (code, s390_f0, 0, STK_BASE, fpOffset);
                s390_stdy (code, s390_f2, 0, STK_BASE, fpOffset+sizeof(gdouble));
                s390_stdy (code, s390_f4, 0, STK_BASE, fpOffset+2*sizeof(gdouble));
@@ -2726,7 +2637,7 @@ mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p,
        s390_llong(code, cfg->method);
        s390_llong(code, func);
        s390_lg   (code, s390_r2, 0, s390_r13, 4);
-       if (has_ld)
+       if (mono_hwcap_s390x_has_ld)
                s390_lay  (code, s390_r3, 0, STK_BASE, parmOffset);
        else
                s390_la   (code, s390_r3, 0, baseReg, parmOffset);
@@ -2734,7 +2645,7 @@ mono_arch_instrument_prolog (MonoCompile *cfg, void *func, void *p,
        s390_aghi (code, s390_r4, cfg->stack_usage);
        s390_lg   (code, s390_r1, 0, s390_r13, 12);
        s390_basr (code, s390_r14, s390_r1);
-       if (has_ld) {
+       if (mono_hwcap_s390x_has_ld) {
                s390_ldy  (code, s390_f6, 0, STK_BASE, fpOffset+3*sizeof(gdouble));
                s390_ldy  (code, s390_f4, 0, STK_BASE, fpOffset+2*sizeof(gdouble));
                s390_ldy  (code, s390_f2, 0, STK_BASE, fpOffset+sizeof(gdouble));
@@ -2766,9 +2677,21 @@ mono_arch_instrument_epilog_full (MonoCompile *cfg, void *func, void *p, gboolea
 {
        guchar     *code = p;
        int        save_mode = SAVE_NONE,
-                  saveOffset;
+                  saveOffset,
+                  offset;
        MonoMethod *method = cfg->method;
-       int        rtype = mono_type_get_underlying_type (mono_method_signature (method)->ret)->type;
+       int rtype = mini_type_get_underlying_type (cfg->generic_sharing_context,
+                       mono_method_signature (method)->ret)->type;
+
+       offset = code - cfg->native_code;
+       /*-----------------------------------------*/
+       /* We need about 128 bytes of instructions */
+       /*-----------------------------------------*/
+       if (offset > (cfg->code_size - 128)) {
+               cfg->code_size *= 2;
+               cfg->native_code = g_realloc (cfg->native_code, cfg->code_size);
+               code = cfg->native_code + offset;
+       }
 
        saveOffset = cfg->stack_usage - S390_TRACE_STACK_SIZE;
        if (method->save_lmf)
@@ -4166,7 +4089,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        /* ensure ins->sreg1 is not NULL */
                        s390_lg   (code, s390_r0, 0, ins->sreg1, 0);
                        s390_ltgr (code, s390_r0, s390_r0);
-                       EMIT_COND_SYSTEM_EXCEPTION (S390_CC_ZR, "NullReferenceException");
+//                     EMIT_COND_SYSTEM_EXCEPTION (S390_CC_ZR, "NullReferenceException");
                }
                        break;
                case OP_ARGLIST: {
@@ -5159,7 +5082,8 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        if (mono_jit_trace_calls != NULL && mono_trace_eval (method)) {
                tracing         = 1;
                cfg->code_size += 256;
-       }
+       } else if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
+               cfg->code_size += 256;
 
        if (method->save_lmf)
                cfg->code_size += 200;
@@ -5464,8 +5388,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        
        if (mono_jit_trace_calls != NULL)
                max_epilog_size += 128;
-
-       if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
+       else if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
                max_epilog_size += 128;
        
        while ((cfg->code_len + max_epilog_size) > (cfg->code_size - 16)) {
@@ -5485,8 +5408,6 @@ mono_arch_emit_epilog (MonoCompile *cfg)
                restoreLMF(code, cfg->frame_reg, cfg->stack_usage);
 
        if (cfg->flags & MONO_CFG_HAS_ALLOCA) {
-//             if (cfg->frame_reg != STK_BASE)
-//                     s390_lgr (code, STK_BASE, cfg->frame_reg);
                s390_lg  (code, STK_BASE, 0, STK_BASE, 0);
        } else
                code = backUpStackPtr(cfg, code);
@@ -5990,13 +5911,16 @@ mono_arch_get_delegate_invoke_impls (void)
        guint8 *code;
        guint32 code_len;
        int i;
+       char *tramp_name;
 
        code = get_delegate_invoke_impl (TRUE, 0, &code_len, TRUE);
-       res = g_slist_prepend (res, mono_tramp_info_create (g_strdup ("delegate_invoke_impl_has_target"), code, code_len, NULL, NULL));
+       res = g_slist_prepend (res, mono_tramp_info_create ("delegate_invoke_impl_has_target", code, code_len, NULL, NULL));
 
        for (i = 0; i < MAX_ARCH_DELEGATE_PARAMS; ++i) {
                code = get_delegate_invoke_impl (FALSE, i, &code_len, TRUE);
-               res = g_slist_prepend (res, mono_tramp_info_create (g_strdup_printf ("delegate_invoke_impl_target_%d", i), code, code_len, NULL, NULL));
+               tramp_name = g_strdup_printf ("delegate_invoke_impl_target_%d", i);
+               res = g_slist_prepend (res, mono_tramp_info_create (tramp_name, code, code_len, NULL, NULL));
+               g_free (tramp_name);
        }
 
        return res;
index 764db673bf5dc792c311074bd0bdc1a58509bf2a..a5be8f01087162cbde7ed649cf1cb945bc0464aa 100644 (file)
@@ -15,7 +15,7 @@
 /*-------------------------------------------*/
 
 #define S390_LONG(loc, opy, op, r, ix, br, off)                                        \
-       if (has_ld) {                                                           \
+       if (mono_hwcap_s390x_has_ld) {                                          \
                if (s390_is_imm20(off)) {                                       \
                        s390_##opy (loc, r, ix, br, off);                       \
                } else {                                                        \
index 2300f39c74ae25372174e6f9ef049cb6f7a1051b..9a0e4ec1508d9cccd85f6678f7387f2870833132 100644 (file)
@@ -18,7 +18,6 @@
 #include <unistd.h>
 
 #ifndef __linux__
-#include <sys/systeminfo.h>
 #include <thread.h>
 #endif
 
@@ -29,6 +28,7 @@
 #include <mono/metadata/debug-helpers.h>
 #include <mono/metadata/tokentype.h>
 #include <mono/utils/mono-math.h>
+#include <mono/utils/mono-hwcap-sparc.h>
 
 #include "mini-sparc.h"
 #include "trace.h"
 
 #endif
 
-/* Whenever the CPU supports v9 instructions */
-static gboolean sparcv9 = FALSE;
-
 /* Whenever this is a 64bit executable */
 #if SPARCV9
 static gboolean v64 = TRUE;
@@ -202,9 +199,6 @@ mono_arch_fregname (int reg) {
 void
 mono_arch_cpu_init (void)
 {
-       guint32 dummy;
-       /* make sure sparcv9 is initialized for embedded use */
-       mono_arch_cpu_optimizations(&dummy);
 }
 
 /*
@@ -229,35 +223,16 @@ mono_arch_cleanup (void)
 guint32
 mono_arch_cpu_optimizations (guint32 *exclude_mask)
 {
-       char buf [1024];
        guint32 opts = 0;
 
        *exclude_mask = 0;
 
-#ifndef __linux__
-       if (!sysinfo (SI_ISALIST, buf, 1024))
-               g_assert_not_reached ();
-#else
-       /* From glibc.  If the getpagesize is 8192, we're on sparc64, which
-        * (in)directly implies that we're a v9 or better.
-        * Improvements to this are greatly accepted...
-        * Also, we don't differentiate between v7 and v8.  I sense SIGILL
-        * sniffing in my future.  
-        */
-       if (getpagesize() == 8192)
-               strcpy (buf, "sparcv9");
-       else
-               strcpy (buf, "sparcv8");
-#endif
-
-       /* 
+       /*
         * On some processors, the cmov instructions are even slower than the
         * normal ones...
         */
-       if (strstr (buf, "sparcv9")) {
+       if (mono_hwcap_sparc_is_v9)
                opts |= MONO_OPT_CMOV | MONO_OPT_FCMOV;
-               sparcv9 = TRUE;
-       }
        else
                *exclude_mask |= MONO_OPT_CMOV | MONO_OPT_FCMOV;
 
@@ -306,7 +281,7 @@ mono_arch_flush_icache (guint8 *code, gint size)
         *
         * Sparcv8 needs a flush every 8 bytes.
         */
-       align = (sparcv9 ? 32 : 8);
+       align = (mono_hwcap_sparc_is_v9 ? 32 : 8);
 
        start &= ~(align - 1);
        end = (end + (align - 1)) & ~(align - 1);
@@ -370,7 +345,7 @@ mono_arch_is_inst_imm (gint64 imm)
 
 gboolean 
 mono_sparc_is_v9 (void) {
-       return sparcv9;
+       return mono_hwcap_sparc_is_v9;
 }
 
 gboolean 
@@ -1510,7 +1485,7 @@ else { \
 #define EMIT_COND_SYSTEM_EXCEPTION_GENERAL(ins,cond,sexc_name,filldelay,icc) do {     \
                mono_add_patch_info (cfg, (guint8*)(code) - (cfg)->native_code,   \
                                    MONO_PATCH_INFO_EXC, sexc_name);  \
-        if (sparcv9 && ((icc) != sparc_icc_short)) {          \
+        if (mono_hwcap_sparc_is_v9 && ((icc) != sparc_icc_short)) {          \
            sparc_branchp (code, 0, (cond), (icc), 0, 0); \
         } \
         else { \
@@ -1741,7 +1716,7 @@ mono_arch_peephole_pass_2 (MonoCompile *cfg, MonoBasicBlock *bb)
                                ((ins->inst_offset == last_ins->inst_offset - 4)) &&
                                (ins->inst_imm == 0) &&
                                (last_ins->inst_imm == 0)) {
-                               if (sparcv9) {
+                               if (mono_hwcap_sparc_is_v9) {
                                        last_ins->opcode = OP_STOREI8_MEMBASE_IMM;
                                        last_ins->inst_offset = ins->inst_offset;
                                        MONO_DELETE_INS (bb, ins);
@@ -3020,10 +2995,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                sparc_branch (code, 0, sparc_be, 0);
                                /* delay slot */
                                sparc_set (code, 0, sparc_o7);
-                               sparc_sub_imm (code, 0, size_reg, sparcv9 ? 8 : 4, size_reg);
+                               sparc_sub_imm (code, 0, size_reg, mono_hwcap_sparc_is_v9 ? 8 : 4, size_reg);
                                /* start of loop */
                                br [1] = code;
-                               if (sparcv9)
+                               if (mono_hwcap_sparc_is_v9)
                                        sparc_stx (code, sparc_g0, ins->dreg, sparc_o7);
                                else
                                        sparc_st (code, sparc_g0, ins->dreg, sparc_o7);
@@ -3032,7 +3007,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                sparc_branch (code, 0, sparc_bl, 0);
                                sparc_patch (br [2], br [1]);
                                /* delay slot */
-                               sparc_add_imm (code, 0, sparc_o7, sparcv9 ? 8 : 4, sparc_o7);
+                               sparc_add_imm (code, 0, sparc_o7, mono_hwcap_sparc_is_v9 ? 8 : 4, sparc_o7);
                                sparc_patch (br [0], code);
                        }
                        break;
@@ -3066,7 +3041,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                if (offset <= 16) {
                                        i = 0;
                                        while (i < offset) {
-                                               if (sparcv9) {
+                                               if (mono_hwcap_sparc_is_v9) {
                                                        sparc_stx_imm (code, sparc_g0, ins->dreg, i);
                                                        i += 8;
                                                }
@@ -3078,10 +3053,10 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                }
                                else {
                                        sparc_set (code, offset, sparc_o7);
-                                       sparc_sub_imm (code, 0, sparc_o7, sparcv9 ? 8 : 4, sparc_o7);
+                                       sparc_sub_imm (code, 0, sparc_o7, mono_hwcap_sparc_is_v9 ? 8 : 4, sparc_o7);
                                        /* beginning of loop */
                                        br [0] = code;
-                                       if (sparcv9)
+                                       if (mono_hwcap_sparc_is_v9)
                                                sparc_stx (code, sparc_g0, ins->dreg, sparc_o7);
                                        else
                                                sparc_st (code, sparc_g0, ins->dreg, sparc_o7);
@@ -3089,7 +3064,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                        br [1] = code;
                                        sparc_branch (code, 0, sparc_bne, 0);
                                        /* delay slot */
-                                       sparc_sub_imm (code, 0, sparc_o7, sparcv9 ? 8 : 4, sparc_o7);
+                                       sparc_sub_imm (code, 0, sparc_o7, mono_hwcap_sparc_is_v9 ? 8 : 4, sparc_o7);
                                        sparc_patch (br [1], br [0]);
                                }
                        }
@@ -3284,7 +3259,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_IBGE_UN:
                case OP_IBLE:
                case OP_IBLE_UN: {
-                       if (sparcv9)
+                       if (mono_hwcap_sparc_is_v9)
                                EMIT_COND_BRANCH_PREDICTED (ins, opcode_to_sparc_cond (ins->opcode), 1, 1);
                        else
                                EMIT_COND_BRANCH (ins, opcode_to_sparc_cond (ins->opcode), 1, 1);
index 30880c89f940cd6e923dcd6e44e913d1c122fbd7..bc1c4639d2b40a456768cb5847aecea9d99e0607 100644 (file)
@@ -12,6 +12,7 @@
 #include <mono/metadata/tabledefs.h>
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-error-internals.h>
+#include <mono/utils/mono-membar.h>
 
 #include "mini.h"
 #include "debug-mini.h"
@@ -31,24 +32,6 @@ static guint32 trampoline_calls, jit_trampolines, unbox_trampolines, static_rgct
 #define mono_trampolines_unlock() LeaveCriticalSection (&trampolines_mutex)
 static CRITICAL_SECTION trampolines_mutex;
 
-static gpointer
-get_unbox_trampoline (MonoMethod *m, gpointer addr, gboolean need_rgctx_tramp)
-{
-       if (mono_aot_only) {
-               if (need_rgctx_tramp)
-                       /* 
-                        * The unbox trampolines call the method directly, so need to add
-                        * an rgctx tramp before them.
-                        */
-                       return mono_create_static_rgctx_trampoline (m, mono_aot_get_unbox_trampoline (m));
-               else
-                       return mono_aot_get_unbox_trampoline (m);
-       } else {
-               unbox_trampolines ++;
-               return mono_arch_get_unbox_trampoline (m, addr);
-       }
-}
-
 #ifdef MONO_ARCH_GSHARED_SUPPORTED
 
 typedef struct {
@@ -166,7 +149,7 @@ static gpointer*
  */
 __attribute__ ((noinline))
 #endif
-mono_convert_imt_slot_to_vtable_slot (gpointer* slot, mgreg_t *regs, guint8 *code, MonoMethod *method, MonoMethod **impl_method, gboolean *need_rgctx_tramp, gboolean *variance_used, gpointer *aot_addr)
+       mono_convert_imt_slot_to_vtable_slot (gpointer* slot, mgreg_t *regs, guint8 *code, MonoMethod *method, gboolean lookup_aot, MonoMethod **impl_method, gboolean *need_rgctx_tramp, gboolean *variance_used, gpointer *aot_addr)
 {
        MonoObject *this_argument = mono_arch_get_this_arg_from_call (regs, code);
        MonoVTable *vt = this_argument->vtable;
@@ -208,7 +191,7 @@ mono_convert_imt_slot_to_vtable_slot (gpointer* slot, mgreg_t *regs, guint8 *cod
                        impl = mono_class_inflate_generic_method (impl, &context);
                } else {
                        /* Avoid loading metadata or creating a generic vtable if possible */
-                       if (!vt->klass->valuetype)
+                       if (lookup_aot && !vt->klass->valuetype)
                                *aot_addr = mono_aot_get_method_from_vt_slot (mono_domain_get (), vt, interface_offset + mono_method_get_vtable_slot (imt_method));
                        else
                                *aot_addr = NULL;
@@ -284,8 +267,9 @@ is_generic_method_definition (MonoMethod *m)
                return TRUE;
        return FALSE;
 }
-static gboolean
-ji_is_gsharedvt (MonoJitInfo *ji)
+
+gboolean
+mini_jit_info_is_gsharedvt (MonoJitInfo *ji)
 {
        if (ji && ji->has_generic_jit_info && (mono_jit_info_get_generic_sharing_context (ji)->var_is_vt ||
                                                                                   mono_jit_info_get_generic_sharing_context (ji)->mvar_is_vt))
@@ -297,20 +281,21 @@ ji_is_gsharedvt (MonoJitInfo *ji)
 /*
  * mini_add_method_trampoline:
  *
- *   Add static rgctx/gsharedvt_in trampoline to M/COMPILED_METHOD if needed. Return the trampoline address, or
+ *   Add static rgctx/gsharedvt_in/unbox trampolines to M/COMPILED_METHOD if needed. Return the trampoline address, or
  * COMPILED_METHOD if no trampoline is needed.
  * ORIG_METHOD is the method the caller originally called i.e. an iface method, or NULL.
  */
 gpointer
-mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer compiled_method, gboolean add_static_rgctx_tramp)
+mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer compiled_method, gboolean add_static_rgctx_tramp, gboolean add_unbox_tramp)
 {
        gpointer addr = compiled_method;
        gboolean callee_gsharedvt, callee_array_helper;
+       MonoMethod *jmethod = NULL;
        MonoJitInfo *ji = 
                mini_jit_info_table_find (mono_domain_get (), mono_get_addr_from_ftnptr (compiled_method), NULL);
 
        // FIXME: This loads information from AOT
-       callee_gsharedvt = ji_is_gsharedvt (ji);
+       callee_gsharedvt = mini_jit_info_is_gsharedvt (ji);
 
        callee_array_helper = FALSE;
        if (m->wrapper_type == MONO_WRAPPER_MANAGED_TO_MANAGED) {
@@ -341,7 +326,22 @@ mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer com
 
        addr = compiled_method;
 
-       if (callee_gsharedvt && mini_is_gsharedvt_variable_signature (mono_method_signature (ji->method))) {
+       if (add_unbox_tramp) {
+               /* 
+                * The unbox trampolines call the method directly, so need to add
+                * an rgctx tramp before them.
+                */
+               if (mono_aot_only) {
+                       addr = mono_aot_get_unbox_trampoline (m);
+               } else {
+                       unbox_trampolines ++;
+                       addr = mono_arch_get_unbox_trampoline (m, addr);
+               }
+       }
+
+       if (ji)
+               jmethod = jinfo_get_method (ji);
+       if (callee_gsharedvt && mini_is_gsharedvt_variable_signature (mono_method_signature (jmethod))) {
                MonoGenericSharingContext *gsctx;
                MonoMethodSignature *sig, *gsig;
 
@@ -351,9 +351,9 @@ mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer com
                gsctx = mono_jit_info_get_generic_sharing_context (ji);
 
                sig = mono_method_signature (m);
-               gsig = mono_method_signature (ji->method); 
+               gsig = mono_method_signature (jmethod);
 
-               addr = mini_get_gsharedvt_wrapper (TRUE, compiled_method, sig, gsig, gsctx, -1, FALSE);
+               addr = mini_get_gsharedvt_wrapper (TRUE, addr, sig, gsig, gsctx, -1, FALSE);
 
                //printf ("IN: %s\n", mono_method_full_name (m, TRUE));
        }
@@ -375,6 +375,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
 {
        gpointer addr, compiled_method;
        gboolean generic_shared = FALSE;
+       gboolean need_unbox_tramp = FALSE;
        MonoMethod *declaring = NULL;
        MonoMethod *generic_virtual = NULL, *variant_iface = NULL, *orig_method = NULL;
        int context_used;
@@ -409,14 +410,8 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
                    m = mono_object_get_virtual_method (this_arg, m);
                        vtable_slot_to_patch = NULL;
                } else {
-                       addr = NULL;
-                       vtable_slot = mono_convert_imt_slot_to_vtable_slot (vtable_slot, regs, code, m, &impl_method, &need_rgctx_tramp, &variance_used, &addr);
-                       /* This is the vcall slot which gets called through the IMT thunk */
-                       vtable_slot_to_patch = vtable_slot;
-                       /* mono_convert_imt_slot_to_vtable_slot () also gives us the method that is supposed
-                        * to be called, so we compile it and go ahead as usual.
-                        */
-                       /*g_print ("imt found method %p (%s) at %p\n", impl_method, impl_method->name, code);*/
+                       gboolean lookup_aot;
+
                        if (m->is_inflated && ((MonoMethodInflated*)m)->context.method_inst) {
                                /* Generic virtual method */
                                generic_virtual = m;
@@ -425,7 +420,18 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
                                variant_iface = m;
                        }
 
-                       if (addr && !generic_virtual && !variant_iface) {
+                       addr = NULL;
+                       /* We can only use the AOT compiled code if we don't require further processing */
+                       lookup_aot = !generic_virtual & !variant_iface;
+                       vtable_slot = mono_convert_imt_slot_to_vtable_slot (vtable_slot, regs, code, m, lookup_aot, &impl_method, &need_rgctx_tramp, &variance_used, &addr);
+                       /* This is the vcall slot which gets called through the IMT thunk */
+                       vtable_slot_to_patch = vtable_slot;
+                       /* mono_convert_imt_slot_to_vtable_slot () also gives us the method that is supposed
+                        * to be called, so we compile it and go ahead as usual.
+                        */
+                       /*g_print ("imt found method %p (%s) at %p\n", impl_method, impl_method->name, code);*/
+
+                       if (addr) {
                                /*
                                 * We found AOT compiled code for the method, skip the rest.
                                 */
@@ -528,7 +534,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
                        actual_method = vt->klass->vtable [displacement];
                }
 
-               if (method_inst) {
+               if (method_inst || m->wrapper_type) {
                        MonoGenericContext context = { NULL, NULL };
 
                        if (m->is_inflated)
@@ -573,7 +579,15 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
 
        mono_debugger_trampoline_compiled (code, m, addr);
 
-       addr = mini_add_method_trampoline (orig_method, m, compiled_method, need_rgctx_tramp);
+       if (generic_virtual || variant_iface) {
+               if (vt->klass->valuetype) /*FIXME is this required variant iface?*/
+                       need_unbox_tramp = TRUE;
+       } else if (orig_vtable_slot) {
+               if (m->klass->valuetype)
+                       need_unbox_tramp = TRUE;
+       }
+
+       addr = mini_add_method_trampoline (orig_method, m, compiled_method, need_rgctx_tramp, need_unbox_tramp);
 
        if (generic_virtual || variant_iface) {
                MonoMethod *target = generic_virtual ? generic_virtual : variant_iface;
@@ -581,9 +595,6 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
                vtable_slot = orig_vtable_slot;
                g_assert (vtable_slot);
 
-               if (vt->klass->valuetype) /*FIXME is this required variant iface?*/
-                       addr = get_unbox_trampoline (m, addr, need_rgctx_tramp);
-
                mono_method_add_generic_virtual_invocation (mono_domain_get (), 
                                                                                                        vt, vtable_slot,
                                                                                                        target, addr);
@@ -622,9 +633,6 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
        vtable_slot = orig_vtable_slot;
 
        if (vtable_slot) {
-               if (m->klass->valuetype)
-                       addr = get_unbox_trampoline (m, addr, need_rgctx_tramp);
-
                if (vtable_slot_to_patch && (mono_aot_is_got_entry (code, (guint8*)vtable_slot_to_patch) || mono_domain_owns_vtable_slot (mono_domain_get (), vtable_slot_to_patch))) {
                        g_assert (*vtable_slot_to_patch);
                        *vtable_slot_to_patch = mono_get_addr_from_ftnptr (addr);
@@ -652,7 +660,7 @@ common_call_trampoline (mgreg_t *regs, guint8 *code, MonoMethod *m, guint8* tram
                        if (generic_shared) {
                                if (m->wrapper_type != MONO_WRAPPER_NONE)
                                        m = mono_marshal_method_from_wrapper (m);
-                               //g_assert (mono_method_is_generic_sharable_impl (m, FALSE));
+                               //g_assert (mono_method_is_generic_sharable (m, FALSE));
                        }
 
                        /* Patch calling code */
@@ -999,7 +1007,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
 #ifndef DISABLE_REMOTING
                if (delegate->target && delegate->target->vtable->klass == mono_defaults.transparent_proxy_class) {
 #ifndef DISABLE_COM
-                       if (((MonoTransparentProxy *)delegate->target)->remote_class->proxy_class != mono_defaults.com_object_class && 
+                       if (((MonoTransparentProxy *)delegate->target)->remote_class->proxy_class != mono_class_get_com_object_class () &&
                           !mono_class_is_com_object (((MonoTransparentProxy *)delegate->target)->remote_class->proxy_class))
 #endif
                                method = mono_marshal_get_remoting_invoke (method);
@@ -1021,7 +1029,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
        } else {
                ji = mono_jit_info_table_find (domain, mono_get_addr_from_ftnptr (delegate->method_ptr));
                if (ji)
-                       method = ji->method;
+                       method = jinfo_get_method (ji);
        }
 
        if (method) {
@@ -1056,11 +1064,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
                        delegate->method_ptr = *delegate->method_code;
                } else {
                        compiled_method = addr = mono_compile_method (method);
-                       if (need_unbox_tramp)
-                               // FIXME: GSHAREDVT
-                               addr = get_unbox_trampoline (method, addr, need_rgctx_tramp);
-                       else
-                               addr = mini_add_method_trampoline (NULL, method, compiled_method, need_rgctx_tramp);
+                       addr = mini_add_method_trampoline (NULL, method, compiled_method, need_rgctx_tramp, need_unbox_tramp);
                        delegate->method_ptr = addr;
                        if (enable_caching && delegate->method_code)
                                *delegate->method_code = delegate->method_ptr;
@@ -1088,7 +1092,7 @@ mono_delegate_trampoline (mgreg_t *regs, guint8 *code, gpointer *tramp_data, gui
        /* The general, unoptimized case */
        m = mono_marshal_get_delegate_invoke (invoke, delegate);
        code = mono_compile_method (m);
-       code = mini_add_method_trampoline (NULL, m, code, mono_method_needs_static_rgctx_invoke (m, FALSE));
+       code = mini_add_method_trampoline (NULL, m, code, mono_method_needs_static_rgctx_invoke (m, FALSE), FALSE);
        delegate->invoke_impl = mono_get_addr_from_ftnptr (code);
        mono_debugger_trampoline_compiled (NULL, m, delegate->invoke_impl);
 
@@ -1134,6 +1138,11 @@ gpointer
 mono_create_handler_block_trampoline (void)
 {
        static gpointer code;
+       if (code) {
+               mono_memory_barrier ();
+               return code;
+       }
+
 
        if (mono_aot_only) {
                g_assert (0);
@@ -1142,9 +1151,11 @@ mono_create_handler_block_trampoline (void)
 
        mono_trampolines_lock ();
 
-       if (!code)
-               code = mono_arch_create_handler_block_trampoline ();
-
+       if (!code) {
+               gpointer tmp = mono_arch_create_handler_block_trampoline ();
+               mono_memory_barrier ();
+               code = tmp;
+       }
        mono_trampolines_unlock ();
 
        return code;
@@ -1209,12 +1220,7 @@ create_trampoline_code (MonoTrampolineType tramp_type)
        guchar *code;
 
        code = mono_arch_create_generic_trampoline (tramp_type, &info, FALSE);
-       if (info) {
-               mono_save_trampoline_xdebug_info (info);
-               if (mono_jit_map_is_enabled ())
-                       mono_emit_jit_tramp (info->code, info->code_size, info->name);
-               mono_tramp_info_free (info);
-       }
+       mono_tramp_info_register (info);
 
        return code;
 }
@@ -1338,13 +1344,7 @@ mono_create_generic_class_init_trampoline (void)
                        code = mono_get_addr_from_ftnptr (mono_aot_get_trampoline ("generic_class_init_trampoline"));
                else {
                        code = mono_arch_create_generic_class_init_trampoline (&info, FALSE);
-
-                       if (info) {
-                               mono_save_trampoline_xdebug_info (info);
-                               if (mono_jit_map_is_enabled ())
-                                       mono_emit_jit_tramp (info->code, info->code_size, info->name);
-                               mono_tramp_info_free (info);
-                       }
+                       mono_tramp_info_register (info);
                }
        }
 
@@ -1385,7 +1385,7 @@ mono_create_jump_trampoline (MonoDomain *domain, MonoMethod *method, gboolean ad
        ji = mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO);
        ji->code_start = code;
        ji->code_size = code_size;
-       ji->method = method;
+       ji->d.method = method;
 
        /*
         * mono_delegate_ctor needs to find the method metadata from the 
@@ -1506,9 +1506,6 @@ mono_create_rgctx_lazy_fetch_trampoline (guint32 offset)
 
        gpointer tramp, ptr;
 
-       if (mono_aot_only)
-               return mono_aot_get_lazy_fetch_trampoline (offset);
-
        mono_trampolines_lock ();
        if (rgctx_lazy_fetch_trampoline_hash)
                tramp = g_hash_table_lookup (rgctx_lazy_fetch_trampoline_hash, GUINT_TO_POINTER (offset));
@@ -1518,14 +1515,13 @@ mono_create_rgctx_lazy_fetch_trampoline (guint32 offset)
        if (tramp)
                return tramp;
 
-       tramp = mono_arch_create_rgctx_lazy_fetch_trampoline (offset, &info, FALSE);
-       if (info) {
-               mono_save_trampoline_xdebug_info (info);
-               if (mono_jit_map_is_enabled ())
-                       mono_emit_jit_tramp (info->code, info->code_size, info->name);
-               mono_tramp_info_free (info);
+       if (mono_aot_only) {
+               ptr = mono_aot_get_lazy_fetch_trampoline (offset);
+       } else {
+               tramp = mono_arch_create_rgctx_lazy_fetch_trampoline (offset, &info, FALSE);
+               mono_tramp_info_register (info);
+               ptr = mono_create_ftnptr (mono_get_root_domain (), tramp);
        }
-       ptr = mono_create_ftnptr (mono_get_root_domain (), tramp);
 
        mono_trampolines_lock ();
        if (!rgctx_lazy_fetch_trampoline_hash) {
@@ -1565,12 +1561,7 @@ mono_create_monitor_enter_trampoline (void)
                MonoTrampInfo *info;
 
                code = mono_arch_create_monitor_enter_trampoline (&info, FALSE);
-               if (info) {
-                       mono_save_trampoline_xdebug_info (info);
-                       if (mono_jit_map_is_enabled ())
-                               mono_emit_jit_tramp (info->code, info->code_size, info->name);
-                       mono_tramp_info_free (info);
-               }
+               mono_tramp_info_register (info);
        }
 
        mono_trampolines_unlock ();
@@ -1600,12 +1591,7 @@ mono_create_monitor_exit_trampoline (void)
                MonoTrampInfo *info;
 
                code = mono_arch_create_monitor_exit_trampoline (&info, FALSE);
-               if (info) {
-                       mono_save_trampoline_xdebug_info (info);
-                       if (mono_jit_map_is_enabled ())
-                               mono_emit_jit_tramp (info->code, info->code_size, info->name);
-                       mono_tramp_info_free (info);
-               }
+               mono_tramp_info_register (info);
        }
 
        mono_trampolines_unlock ();
@@ -1680,15 +1666,11 @@ static const char*tramp_names [MONO_TRAMPOLINE_NUM] = {
        "aot_plt",
        "delegate",
        "restore_stack_prot",
-#ifndef DISABLE_REMOTING
        "generic_virtual_remoting",
-#endif
        "monitor_enter",
        "monitor_exit",
        "vcall",
-#ifdef MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD
        "handler_block_guard"
-#endif
 };
 
 /*
@@ -1719,3 +1701,24 @@ mono_get_rgctx_fetch_trampoline_name (int slot)
        return g_strdup_printf ("rgctx_fetch_trampoline_%s_%d", mrgctx ? "mrgctx" : "rgctx", index);
 }
 
+gpointer
+mini_get_nullified_class_init_trampoline (void)
+{
+       static gpointer nullified_class_init_trampoline;
+
+       if (!nullified_class_init_trampoline) {
+               gpointer tramp;
+               MonoTrampInfo *info;
+
+               if (mono_aot_only) {
+                       tramp = mono_aot_get_trampoline ("nullified_class_init_trampoline");
+               } else {
+                       tramp = mono_arch_get_nullified_class_init_trampoline (&info);
+                       mono_tramp_info_register (info);
+               }
+               mono_memory_barrier ();
+               nullified_class_init_trampoline = tramp;
+       }
+
+       return nullified_class_init_trampoline;
+}
index 80a9c9bf148f26143bf069470aae984825a3fb5c..46a317c4fc460009c139ed1a4101ec62f986910b 100644 (file)
@@ -50,9 +50,7 @@
 
 #include "jit-icalls.h"
 
-extern LPTOP_LEVEL_EXCEPTION_FILTER mono_old_win_toplevel_exception_filter;
-extern guint64 mono_win_chained_exception_filter_result;
-extern gboolean mono_win_chained_exception_filter_didrun;
+gboolean mono_win_chained_exception_needs_run;
 
 void
 mono_runtime_install_handlers (void)
@@ -85,15 +83,8 @@ mono_runtime_cleanup_handlers (void)
 gboolean
 SIG_HANDLER_SIGNATURE (mono_chain_signal)
 {
-       int signal = _dummy;
-       GET_CONTEXT;
-
-       if (mono_old_win_toplevel_exception_filter) {
-               mono_win_chained_exception_filter_didrun = TRUE;
-               mono_win_chained_exception_filter_result = (*mono_old_win_toplevel_exception_filter)(info);
-               return TRUE;
-       }
-       return FALSE;
+       mono_win_chained_exception_needs_run = TRUE;
+       return TRUE;
 }
 
 static HANDLE win32_main_thread;
old mode 100644 (file)
new mode 100755 (executable)
index 34d067a..639dc3f
@@ -27,6 +27,7 @@
 #include <mono/utils/mono-counters.h>
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-memory-model.h>
+#include <mono/utils/mono-hwcap-x86.h>
 
 #include "trace.h"
 #include "mini-x86.h"
 
 /* On windows, these hold the key returned by TlsAlloc () */
 static gint lmf_tls_offset = -1;
+#ifdef TARGET_WIN32
+static gint jit_tls_offset = -1;
+#else
 static gint lmf_addr_tls_offset = -1;
+#endif
 static gint appdomain_tls_offset = -1;
 
 #ifdef MONO_XEN_OPT
@@ -62,9 +67,9 @@ static CRITICAL_SECTION mini_arch_mutex;
 
 #ifdef TARGET_WIN32
 /* Under windows, the default pinvoke calling convention is stdcall */
-#define CALLCONV_IS_STDCALL(sig) ((((sig)->call_convention) == MONO_CALL_STDCALL) || ((sig)->pinvoke && ((sig)->call_convention) == MONO_CALL_DEFAULT))
+#define CALLCONV_IS_STDCALL(sig) ((((sig)->call_convention) == MONO_CALL_STDCALL) || ((sig)->pinvoke && ((sig)->call_convention) == MONO_CALL_DEFAULT) || ((sig)->pinvoke && ((sig)->call_convention) == MONO_CALL_THISCALL))
 #else
-#define CALLCONV_IS_STDCALL(sig) (((sig)->call_convention) == MONO_CALL_STDCALL)
+#define CALLCONV_IS_STDCALL(sig) (((sig)->call_convention) == MONO_CALL_STDCALL || ((sig)->pinvoke && ((sig)->call_convention) == MONO_CALL_THISCALL))
 #endif
 
 #define X86_IS_CALLEE_SAVED_REG(reg) (((reg) == X86_EBX) || ((reg) == X86_EDI) || ((reg) == X86_ESI))
@@ -74,8 +79,6 @@ mono_breakpoint_info [MONO_BREAKPOINT_ARRAY_SIZE];
 
 
 #ifdef __native_client_codegen__
-const guint kNaClAlignment = kNaClAlignmentX86;
-const guint kNaClAlignmentMask = kNaClAlignmentMaskX86;
 
 /* Default alignment for Native Client is 32-byte. */
 gint8 nacl_align_byte = -32; /* signed version of 0xe0 */
@@ -197,6 +200,8 @@ typedef enum {
        ArgValuetypeInReg,
        ArgOnFloatFpStack,
        ArgOnDoubleFpStack,
+       /* gsharedvt argument passed by addr */
+       ArgGSharedVt,
        ArgNone
 } ArgStorage;
 
@@ -228,11 +233,22 @@ typedef struct {
        ArgInfo args [1];
 } CallInfo;
 
-#define PARAM_REGS 0
-
 #define FLOAT_PARAM_REGS 0
 
-static X86_Reg_No param_regs [] = { 0 };
+static const guint32 thiscall_param_regs [] = { X86_ECX, X86_NREG };
+
+static const guint32 *callconv_param_regs(MonoMethodSignature *sig)
+{
+       if (!sig->pinvoke)
+               return NULL;
+
+       switch (sig->call_convention) {
+       case MONO_CALL_THISCALL:
+                return thiscall_param_regs;
+       default:
+                return NULL;
+       }
+}
 
 #if defined(TARGET_WIN32) || defined(__APPLE__) || defined(__FreeBSD__)
 #define SMALL_STRUCTS_IN_REGS
@@ -240,12 +256,13 @@ static X86_Reg_No return_regs [] = { X86_EAX, X86_EDX };
 #endif
 
 static void inline
-add_general (guint32 *gr, guint32 *stack_size, ArgInfo *ainfo)
+add_general (guint32 *gr, const guint32 *param_regs, guint32 *stack_size, ArgInfo *ainfo)
 {
     ainfo->offset = *stack_size;
 
-    if (*gr >= PARAM_REGS) {
+    if (!param_regs || param_regs [*gr] == X86_NREG) {
                ainfo->storage = ArgOnStack;
+               ainfo->nslots = 1;
                (*stack_size) += sizeof (gpointer);
     }
     else {
@@ -256,12 +273,12 @@ add_general (guint32 *gr, guint32 *stack_size, ArgInfo *ainfo)
 }
 
 static void inline
-add_general_pair (guint32 *gr, guint32 *stack_size, ArgInfo *ainfo)
+add_general_pair (guint32 *gr, const guint32 *param_regs , guint32 *stack_size, ArgInfo *ainfo)
 {
        ainfo->offset = *stack_size;
 
-       g_assert (PARAM_REGS == 0);
-       
+       g_assert(!param_regs || param_regs[*gr] == X86_NREG);
+
        ainfo->storage = ArgOnStack;
        (*stack_size) += sizeof (gpointer) * 2;
        ainfo->nslots = 2;
@@ -292,7 +309,7 @@ add_float (guint32 *gr, guint32 *stack_size, ArgInfo *ainfo, gboolean is_double)
 static void
 add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgInfo *ainfo, MonoType *type,
               gboolean is_return,
-              guint32 *gr, guint32 *fr, guint32 *stack_size)
+              guint32 *gr, const guint32 *param_regs, guint32 *fr, guint32 *stack_size)
 {
        guint32 size;
        MonoClass *klass;
@@ -314,16 +331,19 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
                ainfo->pair_storage [0] = ainfo->pair_storage [1] = ArgNone;
 
                /* Special case structs with only a float member */
-               if ((info->native_size == 8) && (info->num_fields == 1) && (info->fields [0].field->type->type == MONO_TYPE_R8)) {
-                       ainfo->storage = ArgValuetypeInReg;
-                       ainfo->pair_storage [0] = ArgOnDoubleFpStack;
-                       return;
+               if (info->num_fields == 1) {
+                       int ftype = info->fields [0].field->type->type;
+                       if ((info->native_size == 8) && (ftype == MONO_TYPE_R8)) {
+                               ainfo->storage = ArgValuetypeInReg;
+                               ainfo->pair_storage [0] = ArgOnDoubleFpStack;
+                               return;
+                       }
+                       if ((info->native_size == 4) && (ftype == MONO_TYPE_R4)) {
+                               ainfo->storage = ArgValuetypeInReg;
+                               ainfo->pair_storage [0] = ArgOnFloatFpStack;
+                               return;
+                       }
                }
-               if ((info->native_size == 4) && (info->num_fields == 1) && (info->fields [0].field->type->type == MONO_TYPE_R4)) {
-                       ainfo->storage = ArgValuetypeInReg;
-                       ainfo->pair_storage [0] = ArgOnFloatFpStack;
-                       return;
-               }               
                if ((info->native_size == 1) || (info->native_size == 2) || (info->native_size == 4) || (info->native_size == 8)) {
                        ainfo->storage = ArgValuetypeInReg;
                        ainfo->pair_storage [0] = ArgInIReg;
@@ -337,6 +357,14 @@ add_valuetype (MonoGenericSharingContext *gsctx, MonoMethodSignature *sig, ArgIn
        }
 #endif
 
+       if (param_regs && param_regs [*gr] != X86_NREG && !is_return) {
+               g_assert (size <= 4);
+               ainfo->storage = ArgValuetypeInReg;
+               ainfo->reg = param_regs [*gr];
+               (*gr)++;
+               return;
+       }
+
        ainfo->offset = *stack_size;
        ainfo->storage = ArgOnStack;
        *stack_size += ALIGN_TO (size, sizeof (gpointer));
@@ -356,6 +384,7 @@ static CallInfo*
 get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoMethodSignature *sig)
 {
        guint32 i, gr, fr, pstart;
+       const guint32 *param_regs;
        MonoType *ret_type;
        int n = sig->hasthis + sig->param_count;
        guint32 stack_size = 0;
@@ -365,6 +394,8 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
        fr = 0;
        cinfo->nargs = n;
 
+       param_regs = callconv_param_regs(sig);
+
        /* return value */
        {
                ret_type = mini_type_get_underlying_type (gsctx, sig->ret);
@@ -407,23 +438,34 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
                                cinfo->ret.reg = X86_EAX;
                                break;
                        }
+                       if (mini_is_gsharedvt_type_gsctx (gsctx, ret_type)) {
+                               cinfo->ret.storage = ArgOnStack;
+                               cinfo->vtype_retaddr = TRUE;
+                               break;
+                       }
                        /* Fall through */
                case MONO_TYPE_VALUETYPE:
                case MONO_TYPE_TYPEDBYREF: {
                        guint32 tmp_gr = 0, tmp_fr = 0, tmp_stacksize = 0;
 
-                       add_valuetype (gsctx, sig, &cinfo->ret, sig->ret, TRUE, &tmp_gr, &tmp_fr, &tmp_stacksize);
+                       add_valuetype (gsctx, sig, &cinfo->ret, ret_type, TRUE, &tmp_gr, NULL, &tmp_fr, &tmp_stacksize);
                        if (cinfo->ret.storage == ArgOnStack) {
                                cinfo->vtype_retaddr = TRUE;
                                /* The caller passes the address where the value is stored */
                        }
                        break;
                }
+               case MONO_TYPE_VAR:
+               case MONO_TYPE_MVAR:
+                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, ret_type));
+                       cinfo->ret.storage = ArgOnStack;
+                       cinfo->vtype_retaddr = TRUE;
+                       break;
                case MONO_TYPE_VOID:
                        cinfo->ret.storage = ArgNone;
                        break;
                default:
-                       g_error ("Can't handle as return value 0x%x", sig->ret->type);
+                       g_error ("Can't handle as return value 0x%x", ret_type->type);
                }
        }
 
@@ -437,29 +479,28 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
         */
        if (cinfo->vtype_retaddr && !is_pinvoke && (sig->hasthis || (sig->param_count > 0 && MONO_TYPE_IS_REFERENCE (mini_type_get_underlying_type (gsctx, sig->params [0]))))) {
                if (sig->hasthis) {
-                       add_general (&gr, &stack_size, cinfo->args + 0);
+                       add_general (&gr, param_regs, &stack_size, cinfo->args + 0);
                } else {
-                       add_general (&gr, &stack_size, &cinfo->args [sig->hasthis + 0]);
+                       add_general (&gr, param_regs, &stack_size, &cinfo->args [sig->hasthis + 0]);
                        pstart = 1;
                }
                cinfo->vret_arg_offset = stack_size;
-               add_general (&gr, &stack_size, &cinfo->ret);
+               add_general (&gr, NULL, &stack_size, &cinfo->ret);
                cinfo->vret_arg_index = 1;
        } else {
                /* this */
                if (sig->hasthis)
-                       add_general (&gr, &stack_size, cinfo->args + 0);
+                       add_general (&gr, param_regs, &stack_size, cinfo->args + 0);
 
                if (cinfo->vtype_retaddr)
-                       add_general (&gr, &stack_size, &cinfo->ret);
+                       add_general (&gr, NULL, &stack_size, &cinfo->ret);
        }
 
        if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG) && (n == 0)) {
-               gr = PARAM_REGS;
                fr = FLOAT_PARAM_REGS;
                
                /* Emit the signature cookie just before the implicit arguments */
-               add_general (&gr, &stack_size, &cinfo->sig_cookie);
+               add_general (&gr, param_regs, &stack_size, &cinfo->sig_cookie);
        }
 
        for (i = pstart; i < sig->param_count; ++i) {
@@ -472,15 +513,14 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
                         * Prevent implicit arguments + the sig cookie from being passed 
                         * in registers.
                         */
-                       gr = PARAM_REGS;
                        fr = FLOAT_PARAM_REGS;
 
                        /* Emit the signature cookie just before the implicit arguments */
-                       add_general (&gr, &stack_size, &cinfo->sig_cookie);
+                       add_general (&gr, param_regs, &stack_size, &cinfo->sig_cookie);
                }
 
                if (sig->params [i]->byref) {
-                       add_general (&gr, &stack_size, ainfo);
+                       add_general (&gr, param_regs, &stack_size, ainfo);
                        continue;
                }
                ptype = mini_type_get_underlying_type (gsctx, sig->params [i]);
@@ -488,16 +528,16 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
                case MONO_TYPE_BOOLEAN:
                case MONO_TYPE_I1:
                case MONO_TYPE_U1:
-                       add_general (&gr, &stack_size, ainfo);
+                       add_general (&gr, param_regs, &stack_size, ainfo);
                        break;
                case MONO_TYPE_I2:
                case MONO_TYPE_U2:
                case MONO_TYPE_CHAR:
-                       add_general (&gr, &stack_size, ainfo);
+                       add_general (&gr, param_regs, &stack_size, ainfo);
                        break;
                case MONO_TYPE_I4:
                case MONO_TYPE_U4:
-                       add_general (&gr, &stack_size, ainfo);
+                       add_general (&gr, param_regs, &stack_size, ainfo);
                        break;
                case MONO_TYPE_I:
                case MONO_TYPE_U:
@@ -508,21 +548,28 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
                case MONO_TYPE_STRING:
                case MONO_TYPE_SZARRAY:
                case MONO_TYPE_ARRAY:
-                       add_general (&gr, &stack_size, ainfo);
+                       add_general (&gr, param_regs, &stack_size, ainfo);
                        break;
                case MONO_TYPE_GENERICINST:
                        if (!mono_type_generic_inst_is_valuetype (ptype)) {
-                               add_general (&gr, &stack_size, ainfo);
+                               add_general (&gr, param_regs, &stack_size, ainfo);
+                               break;
+                       }
+                       if (mini_is_gsharedvt_type_gsctx (gsctx, ptype)) {
+                               /* gsharedvt arguments are passed by ref */
+                               add_general (&gr, param_regs, &stack_size, ainfo);
+                               g_assert (ainfo->storage == ArgOnStack);
+                               ainfo->storage = ArgGSharedVt;
                                break;
                        }
                        /* Fall through */
                case MONO_TYPE_VALUETYPE:
                case MONO_TYPE_TYPEDBYREF:
-                       add_valuetype (gsctx, sig, ainfo, ptype, FALSE, &gr, &fr, &stack_size);
+                       add_valuetype (gsctx, sig, ainfo, ptype, FALSE, &gr, param_regs, &fr, &stack_size);
                        break;
                case MONO_TYPE_U8:
                case MONO_TYPE_I8:
-                       add_general_pair (&gr, &stack_size, ainfo);
+                       add_general_pair (&gr, param_regs, &stack_size, ainfo);
                        break;
                case MONO_TYPE_R4:
                        add_float (&fr, &stack_size, ainfo, FALSE);
@@ -530,6 +577,14 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
                case MONO_TYPE_R8:
                        add_float (&fr, &stack_size, ainfo, TRUE);
                        break;
+               case MONO_TYPE_VAR:
+               case MONO_TYPE_MVAR:
+                       /* gsharedvt arguments are passed by ref */
+                       g_assert (mini_is_gsharedvt_type_gsctx (gsctx, ptype));
+                       add_general (&gr, param_regs, &stack_size, ainfo);
+                       g_assert (ainfo->storage == ArgOnStack);
+                       ainfo->storage = ArgGSharedVt;
+                       break;
                default:
                        g_error ("unexpected type 0x%x", ptype->type);
                        g_assert_not_reached ();
@@ -537,11 +592,10 @@ get_call_info_internal (MonoGenericSharingContext *gsctx, CallInfo *cinfo, MonoM
        }
 
        if (!sig->pinvoke && (sig->call_convention == MONO_CALL_VARARG) && (n > 0) && (sig->sentinelpos == sig->param_count)) {
-               gr = PARAM_REGS;
                fr = FLOAT_PARAM_REGS;
                
                /* Emit the signature cookie just before the implicit arguments */
-               add_general (&gr, &stack_size, &cinfo->sig_cookie);
+               add_general (&gr, param_regs, &stack_size, &cinfo->sig_cookie);
        }
 
        if (mono_do_x86_stack_align && (stack_size % MONO_ARCH_FRAME_ALIGNMENT) != 0) {
@@ -653,15 +707,21 @@ mono_arch_get_argument_info (MonoGenericSharingContext *gsctx, MonoMethodSignatu
 }
 
 gboolean
-mono_x86_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig)
+mono_arch_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig)
 {
+       MonoType *callee_ret;
        CallInfo *c1, *c2;
        gboolean res;
 
        c1 = get_call_info (NULL, NULL, caller_sig);
        c2 = get_call_info (NULL, NULL, callee_sig);
+       /*
+        * Tail calls with more callee stack usage than the caller cannot be supported, since
+        * the extra stack space would be left on the stack after the tail call.
+        */
        res = c1->stack_usage >= c2->stack_usage;
-       if (callee_sig->ret && MONO_TYPE_ISSTRUCT (callee_sig->ret) && c2->ret.storage != ArgValuetypeInReg)
+       callee_ret = callee_sig->ret;
+       if (callee_ret && MONO_TYPE_ISSTRUCT (callee_ret) && c2->ret.storage != ArgValuetypeInReg)
                /* An address on the callee's stack is passed as the first argument */
                res = FALSE;
 
@@ -671,124 +731,6 @@ mono_x86_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignatu
        return res;
 }
 
-#if !defined(__native_client__)
-static const guchar cpuid_impl [] = {
-       0x55,                           /* push   %ebp */
-       0x89, 0xe5,                     /* mov    %esp,%ebp */
-       0x53,                           /* push   %ebx */
-       0x8b, 0x45, 0x08,               /* mov    0x8(%ebp),%eax */
-       0x0f, 0xa2,                     /* cpuid   */
-       0x50,                           /* push   %eax */
-       0x8b, 0x45, 0x10,               /* mov    0x10(%ebp),%eax */
-       0x89, 0x18,                     /* mov    %ebx,(%eax) */
-       0x8b, 0x45, 0x14,               /* mov    0x14(%ebp),%eax */
-       0x89, 0x08,                     /* mov    %ecx,(%eax) */
-       0x8b, 0x45, 0x18,               /* mov    0x18(%ebp),%eax */
-       0x89, 0x10,                     /* mov    %edx,(%eax) */
-       0x58,                           /* pop    %eax */
-       0x8b, 0x55, 0x0c,               /* mov    0xc(%ebp),%edx */
-       0x89, 0x02,                     /* mov    %eax,(%edx) */
-       0x5b,                           /* pop    %ebx */
-       0xc9,                           /* leave   */
-       0xc3,                           /* ret     */
-};
-#else
-static const guchar cpuid_impl [] = {
-       0x55,                                   /* push   %ebp */
-       0x89, 0xe5,                             /* mov    %esp,%ebp */
-       0x53,                                   /* push   %ebx */
-       0x8b, 0x45, 0x08,                       /* mov    0x8(%ebp),%eax */
-       0x0f, 0xa2,                             /* cpuid   */
-       0x50,                                   /* push   %eax */
-       0x8b, 0x45, 0x10,                       /* mov    0x10(%ebp),%eax */
-       0x89, 0x18,                             /* mov    %ebx,(%eax) */
-       0x8b, 0x45, 0x14,                       /* mov    0x14(%ebp),%eax */
-       0x89, 0x08,                             /* mov    %ecx,(%eax) */
-       0x8b, 0x45, 0x18,                       /* mov    0x18(%ebp),%eax */
-       0x89, 0x10,                             /* mov    %edx,(%eax) */
-       0x58,                                   /* pop    %eax */
-       0x8b, 0x55, 0x0c,                       /* mov    0xc(%ebp),%edx */
-       0x89, 0x02,                             /* mov    %eax,(%edx) */
-       0x5b,                                   /* pop    %ebx */
-       0xc9,                                   /* leave   */
-       0x59, 0x83, 0xe1, 0xe0, 0xff, 0xe1      /* naclret */
-};
-#endif
-
-typedef void (*CpuidFunc) (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx);
-
-static int 
-cpuid (int id, int* p_eax, int* p_ebx, int* p_ecx, int* p_edx)
-{
-#if defined(__native_client__)
-       static CpuidFunc func = NULL;
-       void *ptr, *end_ptr;
-       if (!func) {
-               ptr = mono_global_codeman_reserve (sizeof (cpuid_impl));
-               memcpy(ptr, cpuid_impl, sizeof(cpuid_impl));
-               end_ptr = ptr + sizeof(cpuid_impl);
-               nacl_global_codeman_validate (&ptr, sizeof(cpuid_impl), &end_ptr);
-               func = (CpuidFunc)ptr;
-       }
-       func (id, p_eax, p_ebx, p_ecx, p_edx);
-#else
-       int have_cpuid = 0;
-#ifndef _MSC_VER
-       __asm__  __volatile__ (
-               "pushfl\n"
-               "popl %%eax\n"
-               "movl %%eax, %%edx\n"
-               "xorl $0x200000, %%eax\n"
-               "pushl %%eax\n"
-               "popfl\n"
-               "pushfl\n"
-               "popl %%eax\n"
-               "xorl %%edx, %%eax\n"
-               "andl $0x200000, %%eax\n"
-               "movl %%eax, %0"
-               : "=r" (have_cpuid)
-               :
-               : "%eax", "%edx"
-       );
-#else
-       __asm {
-               pushfd
-               pop eax
-               mov edx, eax
-               xor eax, 0x200000
-               push eax
-               popfd
-               pushfd
-               pop eax
-               xor eax, edx
-               and eax, 0x200000
-               mov have_cpuid, eax
-       }
-#endif
-       if (have_cpuid) {
-               /* Have to use the code manager to get around WinXP DEP */
-               static CpuidFunc func = NULL;
-               void *ptr;
-               if (!func) {
-                       ptr = mono_global_codeman_reserve (sizeof (cpuid_impl));
-                       memcpy (ptr, cpuid_impl, sizeof (cpuid_impl));
-                       func = (CpuidFunc)ptr;
-               }
-               func (id, p_eax, p_ebx, p_ecx, p_edx);
-
-               /*
-                * We use this approach because of issues with gcc and pic code, see:
-                * http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=7329
-               __asm__ __volatile__ ("cpuid"
-                       : "=a" (*p_eax), "=b" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
-                       : "a" (id));
-               */
-               return 1;
-       }
-       return 0;
-#endif
-}
-
 /*
  * Initialize the cpu to execute managed code.
  */
@@ -848,36 +790,32 @@ guint32
 mono_arch_cpu_optimizations (guint32 *exclude_mask)
 {
 #if !defined(__native_client__)
-       int eax, ebx, ecx, edx;
        guint32 opts = 0;
-       
+
        *exclude_mask = 0;
 
-       if (mono_aot_only)
-               /* The cpuid function allocates from the global codeman */
-               return opts;
+       if (mono_hwcap_x86_has_cmov) {
+               opts |= MONO_OPT_CMOV;
 
-       /* Feature Flags function, flags returned in EDX. */
-       if (cpuid (1, &eax, &ebx, &ecx, &edx)) {
-               if (edx & (1 << 15)) {
-                       opts |= MONO_OPT_CMOV;
-                       if (edx & 1)
-                               opts |= MONO_OPT_FCMOV;
-                       else
-                               *exclude_mask |= MONO_OPT_FCMOV;
-               } else
-                       *exclude_mask |= MONO_OPT_CMOV;
-               if (edx & (1 << 26))
-                       opts |= MONO_OPT_SSE2;
+               if (mono_hwcap_x86_has_fcmov)
+                       opts |= MONO_OPT_FCMOV;
                else
-                       *exclude_mask |= MONO_OPT_SSE2;
+                       *exclude_mask |= MONO_OPT_FCMOV;
+       } else {
+               *exclude_mask |= MONO_OPT_CMOV;
+       }
+
+       if (mono_hwcap_x86_has_sse2)
+               opts |= MONO_OPT_SSE2;
+       else
+               *exclude_mask |= MONO_OPT_SSE2;
 
 #ifdef MONO_ARCH_SIMD_INTRINSICS
                /*SIMD intrinsics require at least SSE2.*/
-               if (!(opts & MONO_OPT_SSE2))
+               if (!mono_hwcap_x86_has_sse2)
                        *exclude_mask |= MONO_OPT_SIMD;
 #endif
-       }
+
        return opts;
 #else
        return MONO_OPT_CMOV | MONO_OPT_FCMOV | MONO_OPT_SSE2;
@@ -893,42 +831,30 @@ mono_arch_cpu_optimizations (guint32 *exclude_mask)
 guint32
 mono_arch_cpu_enumerate_simd_versions (void)
 {
-       int eax, ebx, ecx, edx;
        guint32 sse_opts = 0;
 
-       if (mono_aot_only)
-               /* The cpuid function allocates from the global codeman */
-               return sse_opts;
-
-       if (cpuid (1, &eax, &ebx, &ecx, &edx)) {
-               if (edx & (1 << 25))
-                       sse_opts |= SIMD_VERSION_SSE1;
-               if (edx & (1 << 26))
-                       sse_opts |= SIMD_VERSION_SSE2;
-               if (ecx & (1 << 0))
-                       sse_opts |= SIMD_VERSION_SSE3;
-               if (ecx & (1 << 9))
-                       sse_opts |= SIMD_VERSION_SSSE3;
-               if (ecx & (1 << 19))
-                       sse_opts |= SIMD_VERSION_SSE41;
-               if (ecx & (1 << 20))
-                       sse_opts |= SIMD_VERSION_SSE42;
-       }
+       if (mono_hwcap_x86_has_sse1)
+               sse_opts |= SIMD_VERSION_SSE1;
 
-       /* Yes, all this needs to be done to check for sse4a.
-          See: "Amd: CPUID Specification"
-        */
-       if (cpuid (0x80000000, &eax, &ebx, &ecx, &edx)) {
-               /* eax greater or equal than 0x80000001, ebx = 'htuA', ecx = DMAc', edx = 'itne'*/
-               if ((((unsigned int) eax) >= 0x80000001) && (ebx == 0x68747541) && (ecx == 0x444D4163) && (edx == 0x69746E65)) {
-                       cpuid (0x80000001, &eax, &ebx, &ecx, &edx);
-                       if (ecx & (1 << 6))
-                               sse_opts |= SIMD_VERSION_SSE4a;
-               }
-       }
+       if (mono_hwcap_x86_has_sse2)
+               sse_opts |= SIMD_VERSION_SSE2;
 
+       if (mono_hwcap_x86_has_sse3)
+               sse_opts |= SIMD_VERSION_SSE3;
 
-       return sse_opts;        
+       if (mono_hwcap_x86_has_ssse3)
+               sse_opts |= SIMD_VERSION_SSSE3;
+
+       if (mono_hwcap_x86_has_sse41)
+               sse_opts |= SIMD_VERSION_SSE41;
+
+       if (mono_hwcap_x86_has_sse42)
+               sse_opts |= SIMD_VERSION_SSE42;
+
+       if (mono_hwcap_x86_has_sse4a)
+               sse_opts |= SIMD_VERSION_SSE4a;
+
+       return sse_opts;
 }
 
 /*
@@ -1270,16 +1196,18 @@ mono_arch_allocate_vars (MonoCompile *cfg)
 void
 mono_arch_create_vars (MonoCompile *cfg)
 {
+       MonoType *sig_ret;
        MonoMethodSignature *sig;
        CallInfo *cinfo;
 
        sig = mono_method_signature (cfg->method);
 
        cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
+       sig_ret = sig->ret;
 
        if (cinfo->ret.storage == ArgValuetypeInReg)
                cfg->ret_var_is_local = TRUE;
-       if ((cinfo->ret.storage != ArgValuetypeInReg) && (MONO_TYPE_ISSTRUCT (sig->ret) || mini_is_gsharedvt_variable_type (cfg, sig->ret))) {
+       if ((cinfo->ret.storage != ArgValuetypeInReg) && (MONO_TYPE_ISSTRUCT (sig_ret) || mini_is_gsharedvt_variable_type (cfg, sig_ret))) {
                cfg->vret_addr = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_ARG);
        }
 
@@ -1347,11 +1275,12 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
        CallInfo *cinfo;
        ArgInfo *ainfo;
        LLVMCallInfo *linfo;
-       MonoType *t;
+       MonoType *t, *sig_ret;
 
        n = sig->param_count + sig->hasthis;
 
        cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
+       sig_ret = sig->ret;
 
        linfo = mono_mempool_alloc0 (cfg->mempool, sizeof (LLVMCallInfo) + (sizeof (LLVMArgInfo) * n));
 
@@ -1377,13 +1306,13 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
                */
        }
 
-       if (mini_type_is_vtype (cfg, sig->ret) && cinfo->ret.storage == ArgInIReg) {
+       if (mini_type_is_vtype (cfg, sig_ret) && cinfo->ret.storage == ArgInIReg) {
                /* Vtype returned using a hidden argument */
                linfo->ret.storage = LLVMArgVtypeRetAddr;
                linfo->vret_arg_index = cinfo->vret_arg_index;
        }
 
-       if (mini_type_is_vtype (cfg, sig->ret) && cinfo->ret.storage != ArgInIReg) {
+       if (mini_type_is_vtype (cfg, sig_ret) && cinfo->ret.storage != ArgInIReg) {
                // FIXME:
                cfg->exception_message = g_strdup ("vtype ret in call");
                cfg->disable_llvm = TRUE;
@@ -1439,6 +1368,9 @@ mono_arch_get_llvm_call_info (MonoCompile *cfg, MonoMethodSignature *sig)
                                linfo->args [i].pair_storage [j] = arg_storage_to_llvm_arg_storage (cfg, ainfo->pair_storage [j]);
                        */
                        break;
+               case ArgGSharedVt:
+                       linfo->args [i].storage = LLVMArgGSharedVt;
+                       break;
                default:
                        cfg->exception_message = g_strdup ("ainfo->storage");
                        cfg->disable_llvm = TRUE;
@@ -1466,6 +1398,7 @@ emit_gc_param_slot_def (MonoCompile *cfg, int sp_offset, MonoType *t)
 void
 mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 {
+       MonoType *sig_ret;
        MonoInst *arg, *in;
        MonoMethodSignature *sig;
        int i, j, n;
@@ -1474,6 +1407,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 
        sig = call->signature;
        n = sig->param_count + sig->hasthis;
+       sig_ret = sig->ret;
 
        cinfo = get_call_info (cfg->generic_sharing_context, cfg->mempool, sig);
 
@@ -1493,7 +1427,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                }
        }
 
-       if (sig->ret && MONO_TYPE_ISSTRUCT (sig->ret)) {
+       if (sig_ret && MONO_TYPE_ISSTRUCT (sig_ret)) {
                if (cinfo->ret.storage == ArgValuetypeInReg) {
                        /*
                         * Tell the JIT to use a more efficient calling convention: call using
@@ -1548,7 +1482,15 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 
                g_assert (in->dreg != -1);
 
-               if ((i >= sig->hasthis) && (MONO_TYPE_ISSTRUCT(t))) {
+               if (ainfo->storage == ArgGSharedVt) {
+                       arg->opcode = OP_OUTARG_VT;
+                       arg->sreg1 = in->dreg;
+                       arg->klass = in->klass;
+                       arg->inst_p1 = mono_mempool_alloc (cfg->mempool, sizeof (ArgInfo));
+                       memcpy (arg->inst_p1, ainfo, sizeof (ArgInfo));
+                       sp_offset += 4;
+                       MONO_ADD_INS (cfg->cbb, arg);
+               } else if ((i >= sig->hasthis) && (MONO_TYPE_ISSTRUCT(t))) {
                        guint32 align;
                        guint32 size;
 
@@ -1567,10 +1509,15 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                                arg->sreg1 = in->dreg;
                                arg->klass = in->klass;
                                arg->backend.size = size;
+                               arg->inst_p0 = call;
+                               arg->inst_p1 = mono_mempool_alloc (cfg->mempool, sizeof (ArgInfo));
+                               memcpy (arg->inst_p1, ainfo, sizeof (ArgInfo));
 
                                MONO_ADD_INS (cfg->cbb, arg);
-                               sp_offset += size;
-                               emit_gc_param_slot_def (cfg, sp_offset, orig_type);
+                               if (ainfo->storage != ArgValuetypeInReg) {
+                                       sp_offset += size;
+                                       emit_gc_param_slot_def (cfg, sp_offset, orig_type);
+                               }
                        }
                } else {
                        argsize = 4;
@@ -1598,6 +1545,11 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                                        }
                                }
                                break;
+                       case ArgInIReg:
+                               arg->opcode = OP_MOVE;
+                               arg->dreg = ainfo->reg;
+                               argsize = 0;
+                               break;
                        default:
                                g_assert_not_reached ();
                        }
@@ -1635,7 +1587,7 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
                }
        }
 
-       if (sig->ret && (MONO_TYPE_ISSTRUCT (sig->ret) || cinfo->vtype_retaddr)) {
+       if (sig_ret && (MONO_TYPE_ISSTRUCT (sig_ret) || cinfo->vtype_retaddr)) {
                MonoInst *vtarg;
 
                if (cinfo->ret.storage == ArgValuetypeInReg) {
@@ -1673,24 +1625,51 @@ mono_arch_emit_call (MonoCompile *cfg, MonoCallInst *call)
 void
 mono_arch_emit_outarg_vt (MonoCompile *cfg, MonoInst *ins, MonoInst *src)
 {
+       MonoCallInst *call = (MonoCallInst*)ins->inst_p0;
+       ArgInfo *ainfo = ins->inst_p1;
        MonoInst *arg;
        int size = ins->backend.size;
 
-       if (size <= 4) {
-               MONO_INST_NEW (cfg, arg, OP_X86_PUSH_MEMBASE);
-               arg->sreg1 = src->dreg;
+       if (ainfo->storage == ArgValuetypeInReg) {
+               int dreg = mono_alloc_ireg (cfg);
+               switch (size) {
+               case 1:
+                       MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU1_MEMBASE, dreg, src->dreg, 0);
+                       break;
+               case 2:
+                       MONO_EMIT_NEW_LOAD_MEMBASE_OP (cfg, OP_LOADU2_MEMBASE, dreg, src->dreg, 0);
+                       break;
+               case 4:
+                       MONO_EMIT_NEW_LOAD_MEMBASE (cfg, dreg, src->dreg, 0);
+                       break;
+               case 3: /* FIXME */
+               default:
+                       g_assert_not_reached ();
+               }
+               mono_call_inst_add_outarg_reg (cfg, call, dreg, ainfo->reg, FALSE);
+       }
+       else {
+               if (cfg->gsharedvt && mini_is_gsharedvt_klass (cfg, ins->klass)) {
+                       /* Pass by addr */
+                       MONO_INST_NEW (cfg, arg, OP_X86_PUSH);
+                       arg->sreg1 = src->dreg;
+                       MONO_ADD_INS (cfg->cbb, arg);
+               } else if (size <= 4) {
+                       MONO_INST_NEW (cfg, arg, OP_X86_PUSH_MEMBASE);
+                       arg->sreg1 = src->dreg;
 
-               MONO_ADD_INS (cfg->cbb, arg);
-       } else if (size <= 20) {        
-               MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SUB_IMM, X86_ESP, X86_ESP, ALIGN_TO (size, 4));
-               mini_emit_memcpy (cfg, X86_ESP, 0, src->dreg, 0, size, 4);
-       } else {
-               MONO_INST_NEW (cfg, arg, OP_X86_PUSH_OBJ);
-               arg->inst_basereg = src->dreg;
-               arg->inst_offset = 0;
-               arg->inst_imm = size;
+                       MONO_ADD_INS (cfg->cbb, arg);
+               } else if (size <= 20) {        
+                       MONO_EMIT_NEW_BIALU_IMM (cfg, OP_SUB_IMM, X86_ESP, X86_ESP, ALIGN_TO (size, 4));
+                       mini_emit_memcpy (cfg, X86_ESP, 0, src->dreg, 0, size, 4);
+               } else {
+                       MONO_INST_NEW (cfg, arg, OP_X86_PUSH_OBJ);
+                       arg->inst_basereg = src->dreg;
+                       arg->inst_offset = 0;
+                       arg->inst_imm = size;
                                        
-               MONO_ADD_INS (cfg->cbb, arg);
+                       MONO_ADD_INS (cfg->cbb, arg);
+               }
        }
 }
 
@@ -3147,48 +3126,6 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_MOVE:
                        x86_mov_reg_reg (code, ins->dreg, ins->sreg1, 4);
                        break;
-               case OP_JMP: {
-                       /*
-                        * Note: this 'frame destruction' logic is useful for tail calls, too.
-                        * Keep in sync with the code in emit_epilog.
-                        */
-                       int pos = 0;
-
-                       /* FIXME: no tracing support... */
-                       if (cfg->prof_options & MONO_PROFILE_ENTER_LEAVE)
-                               code = mono_arch_instrument_epilog (cfg, mono_profiler_method_leave, code, FALSE);
-                       /* reset offset to make max_len work */
-                       offset = code - cfg->native_code;
-
-                       g_assert (!cfg->method->save_lmf);
-
-                       code = emit_load_volatile_arguments (cfg, code);
-
-                       if (cfg->used_int_regs & (1 << X86_EBX))
-                               pos -= 4;
-                       if (cfg->used_int_regs & (1 << X86_EDI))
-                               pos -= 4;
-                       if (cfg->used_int_regs & (1 << X86_ESI))
-                               pos -= 4;
-                       if (pos)
-                               x86_lea_membase (code, X86_ESP, X86_EBP, pos);
-       
-                       if (cfg->used_int_regs & (1 << X86_ESI))
-                               x86_pop_reg (code, X86_ESI);
-                       if (cfg->used_int_regs & (1 << X86_EDI))
-                               x86_pop_reg (code, X86_EDI);
-                       if (cfg->used_int_regs & (1 << X86_EBX))
-                               x86_pop_reg (code, X86_EBX);
-       
-                       /* restore ESP/EBP */
-                       x86_leave (code);
-                       offset = code - cfg->native_code;
-                       mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_METHOD_JUMP, ins->inst_p0);
-                       x86_jump32 (code, 0);
-
-                       cfg->disable_aot = TRUE;
-                       break;
-               }
                case OP_TAILCALL: {
                        MonoCallInst *call = (MonoCallInst*)ins;
                        int pos = 0, i;
@@ -3232,7 +3169,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        /* restore ESP/EBP */
                        x86_leave (code);
                        offset = code - cfg->native_code;
-                       mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_METHOD_JUMP, ins->inst_p0);
+                       mono_add_patch_info (cfg, offset, MONO_PATCH_INFO_METHOD_JUMP, call->method);
                        x86_jump32 (code, 0);
 
                        ins->flags |= MONO_INST_GC_CALLSITE;
@@ -3450,6 +3387,12 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                case OP_BR_REG:
                        x86_jump_reg (code, ins->sreg1);
                        break;
+               case OP_ICNEQ:
+               case OP_ICGE:
+               case OP_ICLE:
+               case OP_ICGE_UN:
+               case OP_ICLE_UN:
+
                case OP_CEQ:
                case OP_CLT:
                case OP_CLT_UN:
@@ -3884,6 +3827,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        x86_alu_reg_imm (code, X86_AND, X86_EAX, X86_FP_CC_MASK);
                        break;
                case OP_FCEQ:
+               case OP_FCNEQ:
                        if (cfg->opt & MONO_OPT_FCMOV) {
                                /* zeroing the register at the start results in 
                                 * shorter and faster code (we can also remove the widening op)
@@ -3894,8 +3838,19 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                x86_fstp (code, 0);
                                unordered_check = code;
                                x86_branch8 (code, X86_CC_P, 0, FALSE);
-                               x86_set_reg (code, X86_CC_EQ, ins->dreg, FALSE);
-                               x86_patch (unordered_check, code);
+                               if (ins->opcode == OP_FCEQ) {
+                                       x86_set_reg (code, X86_CC_EQ, ins->dreg, FALSE);
+                                       x86_patch (unordered_check, code);
+                               } else {
+                                       guchar *jump_to_end;
+                                       x86_set_reg (code, X86_CC_NE, ins->dreg, FALSE);
+                                       jump_to_end = code;
+                                       x86_jump8 (code, 0);
+                                       x86_patch (unordered_check, code);
+                                       x86_inc_reg (code, ins->dreg);
+                                       x86_patch (jump_to_end, code);
+                               }
+
                                break;
                        }
                        if (ins->dreg != X86_EAX) 
@@ -3904,7 +3859,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        EMIT_FPCOMPARE(code);
                        x86_alu_reg_imm (code, X86_AND, X86_EAX, X86_FP_CC_MASK);
                        x86_alu_reg_imm (code, X86_CMP, X86_EAX, 0x4000);
-                       x86_set_reg (code, X86_CC_EQ, ins->dreg, TRUE);
+                       x86_set_reg (code, ins->opcode == OP_FCEQ ? X86_CC_EQ : X86_CC_NE, ins->dreg, TRUE);
                        x86_widen_reg (code, ins->dreg, ins->dreg, FALSE, FALSE);
 
                        if (ins->dreg != X86_EAX) 
@@ -3956,6 +3911,44 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (ins->dreg != X86_EAX) 
                                x86_pop_reg (code, X86_EAX);
                        break;
+               case OP_FCLE: {
+                       guchar *unordered_check;
+                       guchar *jump_to_end;
+                       if (cfg->opt & MONO_OPT_FCMOV) {
+                               /* zeroing the register at the start results in
+                                * shorter and faster code (we can also remove the widening op)
+                                */
+                               x86_alu_reg_reg (code, X86_XOR, ins->dreg, ins->dreg);
+                               x86_fcomip (code, 1);
+                               x86_fstp (code, 0);
+                               unordered_check = code;
+                               x86_branch8 (code, X86_CC_P, 0, FALSE);
+                               x86_set_reg (code, X86_CC_NB, ins->dreg, FALSE);
+                               x86_patch (unordered_check, code);
+                               break;
+                       }
+                       if (ins->dreg != X86_EAX)
+                               x86_push_reg (code, X86_EAX);
+
+                       EMIT_FPCOMPARE(code);
+                       x86_alu_reg_imm (code, X86_AND, X86_EAX, X86_FP_CC_MASK);
+                       x86_alu_reg_imm (code, X86_CMP, X86_EAX, 0x4500);
+                       unordered_check = code;
+                       x86_branch8 (code, X86_CC_EQ, 0, FALSE);
+
+                       x86_alu_reg_imm (code, X86_CMP, X86_EAX, X86_FP_C0);
+                       x86_set_reg (code, X86_CC_NE, ins->dreg, TRUE);
+                       x86_widen_reg (code, ins->dreg, ins->dreg, FALSE, FALSE);
+                       jump_to_end = code;
+                       x86_jump8 (code, 0);
+                       x86_patch (unordered_check, code);
+                       x86_alu_reg_reg (code, X86_XOR, ins->dreg, ins->dreg);
+                       x86_patch (jump_to_end, code);
+
+                       if (ins->dreg != X86_EAX)
+                               x86_pop_reg (code, X86_EAX);
+                       break;
+               }
                case OP_FCGT:
                case OP_FCGT_UN:
                        if (cfg->opt & MONO_OPT_FCMOV) {
@@ -3999,6 +3992,44 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        if (ins->dreg != X86_EAX) 
                                x86_pop_reg (code, X86_EAX);
                        break;
+               case OP_FCGE: {
+                       guchar *unordered_check;
+                       guchar *jump_to_end;
+                       if (cfg->opt & MONO_OPT_FCMOV) {
+                               /* zeroing the register at the start results in
+                                * shorter and faster code (we can also remove the widening op)
+                                */
+                               x86_alu_reg_reg (code, X86_XOR, ins->dreg, ins->dreg);
+                               x86_fcomip (code, 1);
+                               x86_fstp (code, 0);
+                               unordered_check = code;
+                               x86_branch8 (code, X86_CC_P, 0, FALSE);
+                               x86_set_reg (code, X86_CC_NA, ins->dreg, FALSE);
+                               x86_patch (unordered_check, code);
+                               break;
+                       }
+                       if (ins->dreg != X86_EAX)
+                               x86_push_reg (code, X86_EAX);
+
+                       EMIT_FPCOMPARE(code);
+                       x86_alu_reg_imm (code, X86_AND, X86_EAX, X86_FP_CC_MASK);
+                       x86_alu_reg_imm (code, X86_CMP, X86_EAX, 0x4500);
+                       unordered_check = code;
+                       x86_branch8 (code, X86_CC_EQ, 0, FALSE);
+
+                       x86_alu_reg_imm (code, X86_CMP, X86_EAX, X86_FP_C0);
+                       x86_set_reg (code, X86_CC_GE, ins->dreg, TRUE);
+                       x86_widen_reg (code, ins->dreg, ins->dreg, FALSE, FALSE);
+                       jump_to_end = code;
+                       x86_jump8 (code, 0);
+                       x86_patch (unordered_check, code);
+                       x86_alu_reg_reg (code, X86_XOR, ins->dreg, ins->dreg);
+                       x86_patch (jump_to_end, code);
+
+                       if (ins->dreg != X86_EAX)
+                               x86_pop_reg (code, X86_EAX);
+                       break;
+               }
                case OP_FBEQ:
                        if (cfg->opt & MONO_OPT_FCMOV) {
                                guchar *jump = code;
@@ -4155,6 +4186,21 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        code = mono_x86_emit_tls_get (code, ins->dreg, ins->inst_offset);
                        break;
                }
+               case OP_TLS_GET_REG: {
+#ifdef __APPLE__
+                       // FIXME: tls_gs_offset can change too, do these when calculating the tls offset
+                       if (ins->dreg != ins->sreg1)
+                               x86_mov_reg_reg (code, ins->dreg, ins->sreg1, sizeof (gpointer));
+                       x86_shift_reg_imm (code, X86_SHL, ins->dreg, 2);
+                       if (tls_gs_offset)
+                               x86_alu_reg_imm (code, X86_ADD, ins->dreg, tls_gs_offset);
+                       x86_prefix (code, X86_GS_PREFIX);
+                       x86_mov_reg_membase (code, ins->dreg, ins->dreg, 0, sizeof (gpointer));
+#else
+                       g_assert_not_reached ();
+#endif
+                       break;
+               }
                case OP_MEMORY_BARRIER: {
                        /* x86 only needs barrier for StoreLoad and FullBarrier */
                        switch (ins->backend.memory_barrier_kind) {
@@ -4977,8 +5023,6 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, Mono
                unsigned char *ip = patch_info->ip.i + code;
                const unsigned char *target;
 
-               target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors);
-
                if (compile_aot) {
                        switch (patch_info->type) {
                        case MONO_PATCH_INFO_BB:
@@ -4990,6 +5034,8 @@ mono_arch_patch_code (MonoMethod *method, MonoDomain *domain, guint8 *code, Mono
                        }
                }
 
+               target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors);
+
                switch (patch_info->type) {
                case MONO_PATCH_INFO_IP:
                        *((gconstpointer *)(ip)) = target;
@@ -5088,6 +5134,7 @@ mono_arch_emit_prolog (MonoCompile *cfg)
        code = cfg->native_code = g_malloc (cfg->code_size);
 #elif defined(__native_client_codegen__)
        /* native_code_alloc is not 32-byte aligned, native_code is. */
+       cfg->code_size = NACL_BUNDLE_ALIGN_UP (cfg->code_size);
        cfg->native_code_alloc = g_malloc (cfg->code_size + kNaClAlignment);
 
        /* Align native_code to next nearest kNaclAlignment byte. */
@@ -5203,16 +5250,21 @@ mono_arch_emit_prolog (MonoCompile *cfg)
                         * This is performance critical so we try to use some tricks to make
                         * it fast.
                         */                                                                        
+                       gboolean have_fastpath = FALSE;
 
-                       if (lmf_addr_tls_offset != -1) {
-                               /* Load lmf quicky using the GS register */
-                               code = mono_x86_emit_tls_get (code, X86_EAX, lmf_addr_tls_offset);
 #ifdef TARGET_WIN32
-                               /* The TLS key actually contains a pointer to the MonoJitTlsData structure */
-                               /* FIXME: Add a separate key for LMF to avoid this */
+                       if (jit_tls_offset != -1) {
+                               code = mono_x86_emit_tls_get (code, X86_EAX, jit_tls_offset);                           
                                x86_alu_reg_imm (code, X86_ADD, X86_EAX, G_STRUCT_OFFSET (MonoJitTlsData, lmf));
+                               have_fastpath = TRUE;
+                       }
+#else
+                       if (lmf_addr_tls_offset != -1) {
+                               code = mono_x86_emit_tls_get (code, X86_EAX, lmf_addr_tls_offset);
+                               have_fastpath = TRUE;
+                       }
 #endif
-                       } else {
+                       if (!have_fastpath) {
                                if (cfg->compile_aot)
                                        code = mono_arch_emit_load_got_addr (cfg->native_code, code, cfg, NULL);
                                code = emit_call (cfg, code, MONO_PATCH_INFO_INTERNAL_METHOD, (gpointer)"mono_get_lmf_addr");
@@ -5428,7 +5480,7 @@ mono_arch_emit_epilog (MonoCompile *cfg)
        if (mono_jit_trace_calls != NULL && mono_trace_eval (method))
                code = mono_arch_instrument_epilog (cfg, mono_trace_leave_method, code, TRUE);
 
-       /* the code restoring the registers must be kept in sync with OP_JMP */
+       /* the code restoring the registers must be kept in sync with OP_TAILCALL */
        pos = 0;
        
        if (method->save_lmf) {
@@ -5703,20 +5755,20 @@ mono_arch_is_inst_imm (gint64 imm)
 void
 mono_arch_finish_init (void)
 {
-       if (!getenv ("MONO_NO_TLS")) {
+       if (!g_getenv ("MONO_NO_TLS")) {
 #ifdef TARGET_WIN32
                /* 
                 * We need to init this multiple times, since when we are first called, the key might not
                 * be initialized yet.
                 */
                appdomain_tls_offset = mono_domain_get_tls_key ();
-               lmf_tls_offset = mono_get_jit_tls_key ();
+               jit_tls_offset = mono_get_jit_tls_key ();
 
                /* Only 64 tls entries can be accessed using inline code */
                if (appdomain_tls_offset >= 64)
                        appdomain_tls_offset = -1;
-               if (lmf_tls_offset >= 64)
-                       lmf_tls_offset = -1;
+               if (jit_tls_offset >= 64)
+                       jit_tls_offset = -1;
 #else
 #if MONO_XEN_OPT
                optimize_for_xen = access ("/proc/xen", F_OK) == 0;
@@ -5801,6 +5853,7 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI
 #if defined(__native_client__) && defined(__native_client_codegen__)
        /* In Native Client, we don't re-use thunks, allocate from the */
        /* normal code manager paths. */
+       size = NACL_BUNDLE_ALIGN_UP (size);
        code = mono_domain_code_reserve (domain, size);
 #else
        if (fail_tramp)
@@ -6210,13 +6263,16 @@ mono_arch_get_delegate_invoke_impls (void)
        guint8 *code;
        guint32 code_len;
        int i;
+       char *tramp_name;
 
        code = get_delegate_invoke_impl (TRUE, 0, &code_len);
-       res = g_slist_prepend (res, mono_tramp_info_create (g_strdup ("delegate_invoke_impl_has_target"), code, code_len, NULL, NULL));
+       res = g_slist_prepend (res, mono_tramp_info_create ("delegate_invoke_impl_has_target", code, code_len, NULL, NULL));
 
        for (i = 0; i < MAX_ARCH_DELEGATE_PARAMS; ++i) {
                code = get_delegate_invoke_impl (FALSE, i, &code_len);
-               res = g_slist_prepend (res, mono_tramp_info_create (g_strdup_printf ("delegate_invoke_impl_target_%d", i), code, code_len, NULL, NULL));
+               tramp_name = g_strdup_printf ("delegate_invoke_impl_target_%d", i);
+               res = g_slist_prepend (res, mono_tramp_info_create (tramp_name, code, code_len, NULL, NULL));
+               g_free (tramp_name);
        }
 
        return res;
@@ -6682,7 +6738,7 @@ mono_arch_is_single_step_event (void *info, void *sigctx)
 #ifdef TARGET_WIN32
        EXCEPTION_RECORD* einfo = ((EXCEPTION_POINTERS*)info)->ExceptionRecord; /* Sometimes the address is off by 4 */
 
-       if ((einfo->ExceptionInformation[1] >= ss_trigger_page && (guint8*)einfo->ExceptionInformation[1] <= (guint8*)ss_trigger_page + 128))
+       if (((gpointer)einfo->ExceptionInformation[1] >= ss_trigger_page && (guint8*)einfo->ExceptionInformation[1] <= (guint8*)ss_trigger_page + 128))
                return TRUE;
        else
                return FALSE;
@@ -6701,7 +6757,7 @@ mono_arch_is_breakpoint_event (void *info, void *sigctx)
 {
 #ifdef TARGET_WIN32
        EXCEPTION_RECORD* einfo = ((EXCEPTION_POINTERS*)info)->ExceptionRecord; /* Sometimes the address is off by 4 */
-       if ((einfo->ExceptionInformation[1] >= bp_trigger_page && (guint8*)einfo->ExceptionInformation[1] <= (guint8*)bp_trigger_page + 128))
+       if (((gpointer)einfo->ExceptionInformation[1] >= bp_trigger_page && (guint8*)einfo->ExceptionInformation[1] <= (guint8*)bp_trigger_page + 128))
                return TRUE;
        else
                return FALSE;
index d908476291f5fac9ac06ef7e4f9af2faf9387fcd..b783be3861232325aa941a3016db6708e2db355c 100644 (file)
@@ -262,11 +262,11 @@ typedef struct {
 #define MONO_ARCH_HAVE_CONTEXT_SET_INT_REG 1
 #define MONO_ARCH_HAVE_SETUP_ASYNC_CALLBACK 1
 #define MONO_ARCH_GSHAREDVT_SUPPORTED 1
+#define MONO_ARCH_HAVE_OP_TAIL_CALL 1
 
-gboolean
-mono_x86_tail_call_supported (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig) MONO_INTERNAL;
-
-#define MONO_ARCH_USE_OP_TAIL_CALL(caller_sig, callee_sig) mono_x86_tail_call_supported (caller_sig, callee_sig)
+#ifdef TARGET_OSX
+#define MONO_ARCH_HAVE_TLS_GET_REG 1
+#endif
 
 /* Used for optimization, not complete */
 #define MONO_ARCH_IS_OP_MEMBASE(opcode) ((opcode) == OP_X86_PUSH_MEMBASE)
@@ -298,7 +298,8 @@ typedef enum {
        GSHAREDVT_RET_I1 = 5,
        GSHAREDVT_RET_U1 = 6,
        GSHAREDVT_RET_I2 = 7,
-       GSHAREDVT_RET_U2 = 8
+       GSHAREDVT_RET_U2 = 8,
+       GSHAREDVT_RET_IREG = 9
 } GSharedVtRetMarshal;
 
 typedef struct {
index 310deece77e2f243b44b7f8ba5edf7b37ab12b4e..fd5a595687dcb93d0047116831fcf69d3704799b 100644 (file)
@@ -56,7 +56,9 @@
 #include <mono/utils/mono-mmap.h>
 #include <mono/utils/mono-path.h>
 #include <mono/utils/mono-tls.h>
+#include <mono/utils/mono-hwcap.h>
 #include <mono/utils/dtrace.h>
+#include <mono/utils/mono-signal-handler.h>
 
 #include "mini.h"
 #include "mini-llvm.h"
@@ -65,6 +67,7 @@
 #include <ctype.h>
 #include "trace.h"
 #include "version.h"
+#include "ir-emit.h"
 
 #include "jit-icalls.h"
 
@@ -84,20 +87,12 @@ MonoNativeTlsKey mono_jit_tls_id;
 MONO_FAST_TLS_DECLARE(mono_jit_tls);
 #endif
 
-#ifndef MONO_ARCH_MONITOR_ENTER_ADJUSTMENT
-#define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT 1
-#endif
-
 MonoTraceSpec *mono_jit_trace_calls = NULL;
 gboolean mono_compile_aot = FALSE;
 /* If this is set, no code is generated dynamically, everything is taken from AOT files */
 gboolean mono_aot_only = FALSE;
 /* Whenever to use IMT */
-#ifdef MONO_ARCH_HAVE_IMT
-gboolean mono_use_imt = TRUE;
-#else
-gboolean mono_use_imt = FALSE;
-#endif
+gboolean mono_use_imt = ARCH_HAVE_IMT;
 MonoMethodDesc *mono_inject_async_exc_method = NULL;
 int mono_inject_async_exc_pos;
 MonoMethodDesc *mono_break_at_bb_method = NULL;
@@ -144,6 +139,8 @@ gboolean disable_vtypes_in_regs = FALSE;
 
 gboolean mono_dont_free_global_codeman;
 
+static GSList *tramp_infos;
+
 gpointer
 mono_realloc_native_code (MonoCompile *cfg)
 {
@@ -156,6 +153,7 @@ mono_realloc_native_code (MonoCompile *cfg)
 
        /* Save the old alignment offset so we can re-align after the realloc. */
        old_padding = (guint)(cfg->native_code - cfg->native_code_alloc);
+       cfg->code_size = NACL_BUNDLE_ALIGN_UP (cfg->code_size);
 
        cfg->native_code_alloc = g_realloc ( cfg->native_code_alloc,
                                                                                 cfg->code_size + kNaClAlignment );
@@ -243,12 +241,14 @@ guint8 *mono_nacl_align(guint8 *code) {
 
 void mono_nacl_fix_patches(const guint8 *code, MonoJumpInfo *ji)
 {
+#ifndef USE_JUMP_TABLES
   MonoJumpInfo *patch_info;
   for (patch_info = ji; patch_info; patch_info = patch_info->next) {
     unsigned char *ip = patch_info->ip.i + code;
     ip = mono_arch_nacl_skip_nops(ip);
     patch_info->ip.i = ip - code;
   }
+#endif
 }
 #endif  /* __native_client_codegen__ */
 
@@ -314,9 +314,9 @@ get_method_from_ip (void *ip)
                else
                        return NULL;
        }
-       method = mono_method_full_name (ji->method, TRUE);
+       method = mono_method_full_name (jinfo_get_method (ji), TRUE);
        /* FIXME: unused ? */
-       location = mono_debug_lookup_source_location (ji->method, (guint32)((guint8*)ip - (guint8*)ji->code_start), domain);
+       location = mono_debug_lookup_source_location (jinfo_get_method (ji), (guint32)((guint8*)ip - (guint8*)ji->code_start), domain);
 
        res = g_strdup_printf (" %s + 0x%x (%p %p) [%p - %s]", method, (int)((char*)ip - (char*)ji->code_start), ji->code_start, (char*)ji->code_start + ji->code_size, domain, domain->friendly_name);
 
@@ -370,6 +370,7 @@ mono_print_method_from_ip (void *ip)
        FindTrampUserData user_data;
        MonoGenericSharingContext*gsctx;
        const char *shared_type;
+       GSList *l;
        
        ji = mini_jit_info_table_find (domain, ip, &target_domain);
        if (!ji) {
@@ -382,14 +383,23 @@ mono_print_method_from_ip (void *ip)
                        char *mname = mono_method_full_name (user_data.method, TRUE);
                        printf ("IP %p is a JIT trampoline for %s\n", ip, mname);
                        g_free (mname);
+                       return;
                }
-               else
-                       g_print ("No method at %p\n", ip);
+               for (l = tramp_infos; l; l = l->next) {
+                       MonoTrampInfo *tinfo = l->data;
+
+                       if ((guint8*)ip >= tinfo->code && (guint8*)ip <= tinfo->code + tinfo->code_size) {
+                               printf ("IP %p is at offset 0x%x of trampoline '%s'.\n", ip, (int)((guint8*)ip - tinfo->code), tinfo->name);
+                               return;
+                       }
+               }
+
+               g_print ("No method at %p\n", ip);
                fflush (stdout);
                return;
        }
-       method = mono_method_full_name (ji->method, TRUE);
-       source = mono_debug_lookup_source_location (ji->method, (guint32)((guint8*)ip - (guint8*)ji->code_start), target_domain);
+       method = mono_method_full_name (jinfo_get_method (ji), TRUE);
+       source = mono_debug_lookup_source_location (jinfo_get_method (ji), (guint32)((guint8*)ip - (guint8*)ji->code_start), target_domain);
 
        gsctx = mono_jit_info_get_generic_sharing_context (ji);
        shared_type = "";
@@ -418,6 +428,8 @@ mono_print_method_from_ip (void *ip)
  */
 gboolean mono_method_same_domain (MonoJitInfo *caller, MonoJitInfo *callee)
 {
+       MonoMethod *cmethod;
+
        if (!caller || !callee)
                return FALSE;
 
@@ -428,8 +440,9 @@ gboolean mono_method_same_domain (MonoJitInfo *caller, MonoJitInfo *callee)
        if (caller->domain_neutral && !callee->domain_neutral)
                return FALSE;
 
-       if ((caller->method->klass == mono_defaults.appdomain_class) &&
-               (strstr (caller->method->name, "InvokeInDomain"))) {
+       cmethod = jinfo_get_method (caller);
+       if ((cmethod->klass == mono_defaults.appdomain_class) &&
+               (strstr (cmethod->name, "InvokeInDomain"))) {
                 /* The InvokeInDomain methods change the current appdomain */
                return FALSE;
        }
@@ -566,6 +579,22 @@ mono_emit_unwind_op (MonoCompile *cfg, int when, int tag, int reg, int val)
        op->when = when;
        
        cfg->unwind_ops = g_slist_append_mempool (cfg->mempool, cfg->unwind_ops, op);
+       if (cfg->verbose_level > 1) {
+               switch (tag) {
+               case DW_CFA_def_cfa:
+                       printf ("CFA: [%x] def_cfa: %s+0x%x\n", when, mono_arch_regname (reg), val);
+                       break;
+               case DW_CFA_def_cfa_register:
+                       printf ("CFA: [%x] def_cfa_reg: %s\n", when, mono_arch_regname (reg));
+                       break;
+               case DW_CFA_def_cfa_offset:
+                       printf ("CFA: [%x] def_cfa_offset: 0x%x\n", when, val);
+                       break;
+               case DW_CFA_offset:
+                       printf ("CFA: [%x] offset: %s at cfa-0x%x\n", when, mono_arch_regname (reg), -val);
+                       break;
+               }
+       }
 }
 
 MonoJumpInfoToken *
@@ -591,14 +620,14 @@ mono_jump_info_token_new (MonoMemPool *mp, MonoImage *image, guint32 token)
  * mono_tramp_info_create:
  *
  *   Create a MonoTrampInfo structure from the arguments. This function assumes ownership
- * of NAME, JI, and UNWIND_OPS.
+ * of JI, and UNWIND_OPS.
  */
 MonoTrampInfo*
 mono_tramp_info_create (const char *name, guint8 *code, guint32 code_size, MonoJumpInfo *ji, GSList *unwind_ops)
 {
        MonoTrampInfo *info = g_new0 (MonoTrampInfo, 1);
 
-       info->name = (char*)name;
+       info->name = g_strdup ((char*)name);
        info->code = code;
        info->code_size = code_size;
        info->ji = ji;
@@ -621,6 +650,38 @@ mono_tramp_info_free (MonoTrampInfo *info)
        g_free (info);
 }
 
+/*
+ * mono_tramp_info_register:
+ *
+ * Remember INFO for use by xdebug, mono_print_method_from_ip (), jit maps, etc.
+ * INFO can be NULL.
+ * Frees INFO.
+ */
+void
+mono_tramp_info_register (MonoTrampInfo *info)
+{
+       MonoTrampInfo *copy;
+
+       if (!info)
+               return;
+
+       copy = g_new0 (MonoTrampInfo, 1);
+       copy->code = info->code;
+       copy->code_size = info->code_size;
+       copy->name = g_strdup (info->name);
+
+       mono_loader_lock_if_inited ();
+       tramp_infos = g_slist_prepend (tramp_infos, copy);
+       mono_loader_unlock_if_inited ();
+
+       mono_save_trampoline_xdebug_info (info);
+
+       if (mono_jit_map_is_enabled ())
+               mono_emit_jit_tramp (info->code, info->code_size, info->name);
+
+       mono_tramp_info_free (info);
+}
+
 G_GNUC_UNUSED static void
 break_count (void)
 {
@@ -636,14 +697,14 @@ mono_debug_count (void)
        static int count = 0;
        count ++;
 
-       if (!getenv ("COUNT"))
+       if (!g_getenv ("COUNT"))
                return TRUE;
 
-       if (count == atoi (getenv ("COUNT"))) {
+       if (count == atoi (g_getenv ("COUNT"))) {
                break_count ();
        }
 
-       if (count > atoi (getenv ("COUNT"))) {
+       if (count > atoi (g_getenv ("COUNT"))) {
                return FALSE;
        }
 
@@ -1198,11 +1259,11 @@ mono_compile_create_var_for_vreg (MonoCompile *cfg, MonoType *type, int opcode,
                set_vreg_to_inst (cfg, vreg, inst);
 
 #if SIZEOF_REGISTER == 4
-#ifdef MONO_ARCH_SOFT_FLOAT
-       regpair = mono_type_is_long (type) || mono_type_is_float (type);
-#else
-       regpair = mono_type_is_long (type);
-#endif
+       if (mono_arch_is_soft_float ()) {
+               regpair = mono_type_is_long (type) || mono_type_is_float (type);
+       } else {
+               regpair = mono_type_is_long (type);
+       }
 #else
        regpair = FALSE;
 #endif
@@ -1223,12 +1284,10 @@ mono_compile_create_var_for_vreg (MonoCompile *cfg, MonoType *type, int opcode,
                        printf ("  Create LVAR R%d (R%d, R%d)\n", inst->dreg, inst->dreg + 1, inst->dreg + 2);
                }
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-               if (cfg->opt & MONO_OPT_SSA) {
+               if (mono_arch_is_soft_float () && cfg->opt & MONO_OPT_SSA) {
                        if (mono_type_is_float (type))
                                inst->flags = MONO_INST_VOLATILE;
                }
-#endif
 
                /* Allocate a dummy MonoInst for the first vreg */
                MONO_INST_NEW (cfg, tree, OP_LOCAL);
@@ -1268,10 +1327,8 @@ mono_compile_create_var (MonoCompile *cfg, MonoType *type, int opcode)
 
        if (mono_type_is_long (type))
                dreg = mono_alloc_dreg (cfg, STACK_I8);
-#ifdef MONO_ARCH_SOFT_FLOAT
-       else if (mono_type_is_float (type))
+       else if (mono_arch_is_soft_float () && mono_type_is_float (type))
                dreg = mono_alloc_dreg (cfg, STACK_R8);
-#endif
        else
                /* All the others are unified */
                dreg = mono_alloc_preg (cfg);
@@ -1463,10 +1520,9 @@ mono_get_array_new_va_signature (int arity)
        res = mono_metadata_signature_alloc (mono_defaults.corlib, arity + 1);
 
        res->pinvoke = 1;
-#ifdef MONO_ARCH_VARARG_ICALLS
-       /* Only set this only some archs since not all backends can handle varargs+pinvoke */
-       res->call_convention = MONO_CALL_VARARG;
-#endif
+       if (ARCH_VARARG_ICALLS)
+               /* Only set this only some archs since not all backends can handle varargs+pinvoke */
+               res->call_convention = MONO_CALL_VARARG;
 
 #ifdef TARGET_WIN32
        res->call_convention = MONO_CALL_C;
@@ -1772,7 +1828,7 @@ mono_allocate_stack_slots2 (MonoCompile *cfg, gboolean backward, guint32 *stack_
 
                t = mono_type_get_underlying_type (inst->inst_vtype);
                if (cfg->gsharedvt && mini_is_gsharedvt_variable_type (cfg, t))
-                       t = mini_get_gsharedvt_alloc_type_for_type (cfg, t);
+                       continue;
 
                /* inst->backend.is_pinvoke indicates native sized value types, this is used by the
                * pinvoke wrappers when they call functions returning structures */
@@ -1948,9 +2004,9 @@ mono_allocate_stack_slots2 (MonoCompile *cfg, gboolean backward, guint32 *stack_
                        static int count = 0;
                        count ++;
 
-                       if (count == atoi (getenv ("COUNT3")))
+                       if (count == atoi (g_getenv ("COUNT3")))
                                printf ("LAST: %s\n", mono_method_full_name (cfg->method, TRUE));
-                       if (count > atoi (getenv ("COUNT3")))
+                       if (count > atoi (g_getenv ("COUNT3")))
                                slot = 0xffffff;
                        else {
                                mono_print_ins (inst);
@@ -2068,7 +2124,7 @@ mono_allocate_stack_slots (MonoCompile *cfg, gboolean backward, guint32 *stack_s
 
                t = mono_type_get_underlying_type (inst->inst_vtype);
                if (cfg->gsharedvt && mini_is_gsharedvt_variable_type (cfg, t))
-                       t = mini_get_gsharedvt_alloc_type_for_type (cfg, t);
+                       continue;
 
                /* inst->backend.is_pinvoke indicates native sized value types, this is used by the
                * pinvoke wrappers when they call functions returning structures */
@@ -2194,9 +2250,9 @@ mono_allocate_stack_slots (MonoCompile *cfg, gboolean backward, guint32 *stack_s
                        count ++;
 
                        /*
-                       if (count == atoi (getenv ("COUNT")))
+                       if (count == atoi (g_getenv ("COUNT")))
                                printf ("LAST: %s\n", mono_method_full_name (cfg->method, TRUE));
-                       if (count > atoi (getenv ("COUNT")))
+                       if (count > atoi (g_getenv ("COUNT")))
                                slot = 0xffffff;
                        else {
                                mono_print_ins (inst);
@@ -2844,49 +2900,110 @@ mini_thread_cleanup (MonoInternalThread *thread)
        }
 }
 
+int
+mini_get_tls_offset (MonoTlsKey key)
+{
+       int offset;
+
+       switch (key) {
+       case TLS_KEY_THREAD:
+               offset = mono_thread_get_tls_offset ();
+               break;
+       case TLS_KEY_JIT_TLS:
+               offset = mono_get_jit_tls_offset ();
+               break;
+       case TLS_KEY_DOMAIN:
+               offset = mono_domain_get_tls_offset ();
+               break;
+       case TLS_KEY_LMF:
+               offset = mono_get_lmf_tls_offset ();
+               break;
+       case TLS_KEY_LMF_ADDR:
+               offset = mono_get_lmf_addr_tls_offset ();
+               break;
+       default:
+               offset = mono_tls_key_get_offset (key);
+               g_assert (offset != -1);
+               break;
+       }
+       return offset;
+}
+
+#ifndef DISABLE_JIT
+
 static MonoInst*
-mono_create_tls_get (MonoCompile *cfg, int offset)
+mono_create_tls_get_offset (MonoCompile *cfg, int offset)
 {
-#ifdef MONO_ARCH_HAVE_TLS_GET
-       if (MONO_ARCH_HAVE_TLS_GET) {
-               MonoInst* ins;
+       MonoInst* ins;
 
-               if (offset == -1)
-                       return NULL;
+       if (!MONO_ARCH_HAVE_TLS_GET)
+               return NULL;
+
+       if (offset == -1)
+               return NULL;
 
-               MONO_INST_NEW (cfg, ins, OP_TLS_GET);
-               ins->dreg = mono_alloc_preg (cfg);
-               ins->inst_offset = offset;
-               return ins;
+       MONO_INST_NEW (cfg, ins, OP_TLS_GET);
+       ins->dreg = mono_alloc_preg (cfg);
+       ins->inst_offset = offset;
+       return ins;
+}
+
+MonoInst*
+mono_create_tls_get (MonoCompile *cfg, MonoTlsKey key)
+{
+       /*
+        * TLS offsets might be different at AOT time, so load them from a GOT slot and
+        * use a different opcode.
+        */
+       if (cfg->compile_aot) {
+               if (MONO_ARCH_HAVE_TLS_GET && ARCH_HAVE_TLS_GET_REG) {
+                       MonoInst *ins, *c;
+
+                       EMIT_NEW_TLS_OFFSETCONST (cfg, c, key);
+                       MONO_INST_NEW (cfg, ins, OP_TLS_GET_REG);
+                       ins->dreg = mono_alloc_preg (cfg);
+                       ins->sreg1 = c->dreg;
+                       return ins;
+               } else {
+                       return NULL;
+               }
        }
-#endif
-       return NULL;
+
+       return mono_create_tls_get_offset (cfg, mini_get_tls_offset (key));
 }
 
 MonoInst*
 mono_get_jit_tls_intrinsic (MonoCompile *cfg)
 {
-       return mono_create_tls_get (cfg, mono_get_jit_tls_offset ());
+       return mono_create_tls_get (cfg, TLS_KEY_JIT_TLS);
 }
 
 MonoInst*
 mono_get_domain_intrinsic (MonoCompile* cfg)
 {
-       return mono_create_tls_get (cfg, mono_domain_get_tls_offset ());
+       return mono_create_tls_get (cfg, TLS_KEY_DOMAIN);
 }
 
 MonoInst*
 mono_get_thread_intrinsic (MonoCompile* cfg)
 {
-       return mono_create_tls_get (cfg, mono_thread_get_tls_offset ());
+       return mono_create_tls_get (cfg, TLS_KEY_THREAD);
 }
 
 MonoInst*
 mono_get_lmf_intrinsic (MonoCompile* cfg)
 {
-       return mono_create_tls_get (cfg, mono_get_lmf_tls_offset ());
+       return mono_create_tls_get (cfg, TLS_KEY_LMF);
 }
 
+MonoInst*
+mono_get_lmf_addr_intrinsic (MonoCompile* cfg)
+{
+       return mono_create_tls_get (cfg, TLS_KEY_LMF_ADDR);
+}
+
+#endif /* !DISABLE_JIT */
+
 void
 mono_add_patch_info (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target)
 {
@@ -2900,6 +3017,20 @@ mono_add_patch_info (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpoin
        cfg->patch_info = ji;
 }
 
+void
+mono_add_patch_info_rel (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target, int relocation)
+{
+       MonoJumpInfo *ji = mono_mempool_alloc (cfg->mempool, sizeof (MonoJumpInfo));
+
+       ji->ip.i = ip;
+       ji->type = type;
+       ji->relocation = relocation;
+       ji->data.target = target;
+       ji->next = cfg->patch_info;
+
+       cfg->patch_info = ji;
+}
+
 MonoJumpInfo *
 mono_patch_info_list_prepend (MonoJumpInfo *list, int ip, MonoJumpInfoType type, gconstpointer target)
 {
@@ -2961,6 +3092,29 @@ mono_patch_info_dup_mp (MonoMemPool *mp, MonoJumpInfo *patch_info)
                res->data.gsharedvt = mono_mempool_alloc (mp, sizeof (MonoJumpInfoGSharedVtCall));
                memcpy (res->data.gsharedvt, patch_info->data.gsharedvt, sizeof (MonoJumpInfoGSharedVtCall));
                break;
+       case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
+               MonoGSharedVtMethodInfo *info;
+               MonoGSharedVtMethodInfo *oinfo;
+               int i;
+
+               oinfo = patch_info->data.gsharedvt_method;
+               info = mono_mempool_alloc (mp, sizeof (MonoGSharedVtMethodInfo));
+               res->data.gsharedvt_method = info;
+               memcpy (info, oinfo, sizeof (MonoGSharedVtMethodInfo));
+               info->entries = g_ptr_array_new ();
+               if (oinfo->entries) {
+                       for (i = 0; i < oinfo->entries->len; ++i) {
+                               MonoRuntimeGenericContextInfoTemplate *otemplate = g_ptr_array_index (oinfo->entries, i);
+                               MonoRuntimeGenericContextInfoTemplate *template = mono_mempool_alloc0 (mp, sizeof (MonoRuntimeGenericContextInfoTemplate));
+
+                               memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                               g_ptr_array_add (info->entries, template);
+                       }
+               }
+               //info->locals_types = mono_mempool_alloc0 (mp, info->nlocals * sizeof (MonoType*));
+               //memcpy (info->locals_types, oinfo->locals_types, info->nlocals * sizeof (MonoType*));
+               break;
+       }
        default:
                break;
        }
@@ -3001,6 +3155,7 @@ mono_patch_info_hash (gconstpointer data)
        case MONO_PATCH_INFO_METHOD_RGCTX:
        case MONO_PATCH_INFO_DELEGATE_TRAMPOLINE:
        case MONO_PATCH_INFO_SIGNATURE:
+       case MONO_PATCH_INFO_TLS_OFFSET:
                return (ji->type << 8) | (gssize)ji->data.target;
        case MONO_PATCH_INFO_GSHAREDVT_CALL:
                return (ji->type << 8) | (gssize)ji->data.gsharedvt->method;
@@ -3016,9 +3171,15 @@ mono_patch_info_hash (gconstpointer data)
        case MONO_PATCH_INFO_MONITOR_ENTER:
        case MONO_PATCH_INFO_MONITOR_EXIT:
        case MONO_PATCH_INFO_CASTCLASS_CACHE:
+       case MONO_PATCH_INFO_GOT_OFFSET:
                return (ji->type << 8);
        case MONO_PATCH_INFO_SWITCH:
                return (ji->type << 8) | ji->data.table->table_size;
+       case MONO_PATCH_INFO_GSHAREDVT_METHOD:
+               return (ji->type << 8) | (gssize)ji->data.gsharedvt_method->method;
+       case MONO_PATCH_INFO_OBJC_SELECTOR_REF:
+               /* Hash on the selector name */
+               return g_str_hash (ji->data.target);
        default:
                printf ("info type: %d\n", ji->type);
                mono_print_ji (ji); printf ("\n");
@@ -3070,6 +3231,8 @@ mono_patch_info_equal (gconstpointer ka, gconstpointer kb)
 
                return c1->sig == c2->sig && c1->method == c2->method;
        }
+       case MONO_PATCH_INFO_GSHAREDVT_METHOD:
+               return ji1->data.gsharedvt_method->method == ji2->data.gsharedvt_method->method;
        default:
                if (ji1->data.target != ji2->data.target)
                        return 0;
@@ -3133,25 +3296,33 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
        case MONO_PATCH_INFO_METHOD_JUMP:
                target = mono_create_jump_trampoline (domain, patch_info->data.method, FALSE);
 #if defined(__native_client__) && defined(__native_client_codegen__)
-#if defined(TARGET_AMD64)
+# if defined(TARGET_AMD64)
                /* This target is an absolute address, not relative to the */
                /* current code being emitted on AMD64. */
                target = nacl_inverse_modify_patch_target(target);
-#endif
+# endif
 #endif
                break;
        case MONO_PATCH_INFO_METHOD:
+#if defined(__native_client_codegen__) && defined(USE_JUMP_TABLES)
+               /*
+                * If we use jumptables, for recursive calls we cannot
+                * avoid trampoline, as we not yet know where we will
+                * be installed.
+                */
+               target = mono_create_jit_trampoline_in_domain (domain, patch_info->data.method);
+#else
                if (patch_info->data.method == method) {
                        target = code;
                } else {
                        /* get the trampoline to the method from the domain */
                        target = mono_create_jit_trampoline_in_domain (domain, patch_info->data.method);
                }
+#endif
                break;
        case MONO_PATCH_INFO_SWITCH: {
                gpointer *jump_table;
                int i;
-
 #if defined(__native_client__) && defined(__native_client_codegen__)
                /* This memory will leak, but we don't care if we're */
                /* not deleting JIT'd methods anyway                 */
@@ -3281,7 +3452,7 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                MonoClass *handle_class;
                
                handle = mono_ldtoken (patch_info->data.token->image,
-                                      patch_info->data.token->token, &handle_class, NULL);
+                                                          patch_info->data.token->token, &handle_class, patch_info->data.token->has_context ? &patch_info->data.token->context : NULL);
                mono_class_init (handle_class);
                
                target = handle;
@@ -3347,12 +3518,31 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                        slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, entry->data->data.sig, entry->info_type, mono_method_get_context (entry->method));
                        break;
                case MONO_PATCH_INFO_GSHAREDVT_CALL: {
-                       MonoJumpInfoGSharedVtCall *call_info = mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
+                       MonoJumpInfoGSharedVtCall *call_info = g_malloc0 (sizeof (MonoJumpInfoGSharedVtCall)); //mono_domain_alloc0 (domain, sizeof (MonoJumpInfoGSharedVtCall));
 
                        memcpy (call_info, entry->data->data.gsharedvt, sizeof (MonoJumpInfoGSharedVtCall));
                        slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, call_info, entry->info_type, mono_method_get_context (entry->method));
                        break;
                }
+               case MONO_PATCH_INFO_GSHAREDVT_METHOD: {
+                       MonoGSharedVtMethodInfo *info;
+                       MonoGSharedVtMethodInfo *oinfo = entry->data->data.gsharedvt_method;
+                       int i;
+
+                       /* Make a copy into the domain mempool */
+                       info = g_malloc0 (sizeof (MonoGSharedVtMethodInfo)); //mono_domain_alloc0 (domain, sizeof (MonoGSharedVtMethodInfo));
+                       info->method = oinfo->method;
+                       info->entries = g_ptr_array_new ();
+                       for (i = 0; i < oinfo->entries->len; ++i) {
+                               MonoRuntimeGenericContextInfoTemplate *otemplate = g_ptr_array_index (oinfo->entries, i);
+                               MonoRuntimeGenericContextInfoTemplate *template = g_malloc0 (sizeof (MonoRuntimeGenericContextInfoTemplate));
+
+                               memcpy (template, otemplate, sizeof (MonoRuntimeGenericContextInfoTemplate));
+                               g_ptr_array_add (info->entries, template);
+                       }
+                       slot = mono_method_lookup_or_register_info (entry->method, entry->in_mrgctx, info, entry->info_type, mono_method_get_context (entry->method));
+                       break;
+               }
                default:
                        g_assert_not_reached ();
                        break;
@@ -3402,6 +3592,13 @@ mono_resolve_patch_target (MonoMethod *method, MonoDomain *domain, guint8 *code,
                target = (gpointer) (size_t) mono_jit_tls_id;
                break;
        }
+       case MONO_PATCH_INFO_TLS_OFFSET:
+               target = GINT_TO_POINTER (mini_get_tls_offset (GPOINTER_TO_INT (patch_info->data.target)));
+               break;
+       case MONO_PATCH_INFO_OBJC_SELECTOR_REF: {
+               target = NULL;
+               break;
+       }
        default:
                g_assert_not_reached ();
        }
@@ -3500,6 +3697,13 @@ mono_compile_create_vars (MonoCompile *cfg)
                g_print ("locals done\n");
 
        mono_arch_create_vars (cfg);
+
+       if (cfg->method->save_lmf && cfg->create_lmf_var) {
+               MonoInst *lmf_var = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_LOCAL);
+               lmf_var->flags |= MONO_INST_VOLATILE;
+               lmf_var->flags |= MONO_INST_LMF;
+               cfg->lmf_var = lmf_var;
+       }
 }
 
 void
@@ -3648,7 +3852,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
        if (!cfg->seq_points)
                return;
 
-       info = g_malloc0 (sizeof (MonoSeqPointInfo) + (cfg->seq_points->len - MONO_ZERO_LEN_ARRAY) * sizeof (SeqPoint));
+       info = g_malloc0 (sizeof (MonoSeqPointInfo) + (cfg->seq_points->len * sizeof (SeqPoint)));
        info->len = cfg->seq_points->len;
        for (i = 0; i < cfg->seq_points->len; ++i) {
                SeqPoint *sp = &info->seq_points [i];
@@ -3656,6 +3860,8 @@ mono_save_seq_point_info (MonoCompile *cfg)
 
                sp->il_offset = ins->inst_imm;
                sp->native_offset = ins->inst_offset;
+               if (ins->flags & MONO_INST_NONEMPTY_STACK)
+                       sp->flags |= MONO_SEQ_POINT_FLAG_NONEMPTY_STACK;
 
                /* Used below */
                ins->backend.size = i;
@@ -3689,7 +3895,7 @@ mono_save_seq_point_info (MonoCompile *cfg)
                        last = ins;
                }
 
-               if (bb->last_ins && bb->last_ins->opcode == OP_ENDFINALLY) {
+               if (bb->last_ins && bb->last_ins->opcode == OP_ENDFINALLY && bb->seq_points) {
                        MonoBasicBlock *bb2;
                        MonoInst *endfinally_seq_point = NULL;
 
@@ -3697,17 +3903,18 @@ mono_save_seq_point_info (MonoCompile *cfg)
                         * The ENDFINALLY branches are not represented in the cfg, so link it with all seq points starting bbs.
                         */
                        l = g_slist_last (bb->seq_points);
-                       g_assert (l);
-                       endfinally_seq_point = l->data;
+                       if (l) {
+                               endfinally_seq_point = l->data;
 
-                       for (bb2 = cfg->bb_entry; bb2; bb2 = bb2->next_bb) {
-                               GSList *l = g_slist_last (bb2->seq_points);
+                               for (bb2 = cfg->bb_entry; bb2; bb2 = bb2->next_bb) {
+                                       GSList *l = g_slist_last (bb2->seq_points);
 
-                               if (l) {
-                                       MonoInst *ins = l->data;
+                                       if (l) {
+                                               MonoInst *ins = l->data;
 
-                                       if (!(ins->inst_imm == METHOD_ENTRY_IL_OFFSET || ins->inst_imm == METHOD_EXIT_IL_OFFSET) && ins != endfinally_seq_point)
-                                               next [endfinally_seq_point->backend.size] = g_slist_append (next [endfinally_seq_point->backend.size], GUINT_TO_POINTER (ins->backend.size));
+                                               if (!(ins->inst_imm == METHOD_ENTRY_IL_OFFSET || ins->inst_imm == METHOD_EXIT_IL_OFFSET) && ins != endfinally_seq_point)
+                                                       next [endfinally_seq_point->backend.size] = g_slist_append (next [endfinally_seq_point->backend.size], GUINT_TO_POINTER (ins->backend.size));
+                                       }
                                }
                        }
                }
@@ -3844,6 +4051,9 @@ mono_codegen (MonoCompile *cfg)
 
        /* we always allocate code in cfg->domain->code_mp to increase locality */
        cfg->code_size = cfg->code_len + max_epilog_size;
+#ifdef __native_client_codegen__
+       cfg->code_size = NACL_BUNDLE_ALIGN_UP (cfg->code_size);
+#endif
        /* fixme: align to MONO_ARCH_CODE_ALIGNMENT */
 
        if (cfg->method->dynamic) {
@@ -4007,7 +4217,7 @@ create_jit_info_for_trampoline (MonoMethod *wrapper, MonoTrampInfo *info)
        }
 
        jinfo = mono_domain_alloc0 (domain, MONO_SIZEOF_JIT_INFO);
-       jinfo->method = wrapper;
+       jinfo->d.method = wrapper;
        jinfo->code_start = info->code;
        jinfo->code_size = info->code_size;
        jinfo->used_regs = mono_cache_unwind_info (uw_info, info_len);
@@ -4087,7 +4297,7 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                                generic_info_size + holes_size + arch_eh_info_size + cas_size);
        }
 
-       jinfo->method = cfg->method_to_register;
+       jinfo->d.method = cfg->method_to_register;
        jinfo->code_start = cfg->native_code;
        jinfo->code_size = cfg->code_len;
        jinfo->used_regs = cfg->used_int_regs;
@@ -4289,8 +4499,20 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                                int end_offset;
                                if (ec->handler_offset + ec->handler_len < header->code_size) {
                                        tblock = cfg->cil_offset_to_bb [ec->handler_offset + ec->handler_len];
-                                       g_assert (tblock);
-                                       end_offset = tblock->native_offset;
+                                       if (tblock->native_offset) {
+                                               end_offset = tblock->native_offset;
+                                       } else {
+                                               int j, end;
+
+                                               for (j = ec->handler_offset + ec->handler_len, end = ec->handler_offset; j >= end; --j) {
+                                                       MonoBasicBlock *bb = cfg->cil_offset_to_bb [j];
+                                                       if (bb && bb->native_offset) {
+                                                               tblock = bb;
+                                                               break;
+                                                       }
+                                               }
+                                               end_offset = tblock->native_offset +  tblock->native_length;
+                                       }
                                } else {
                                        end_offset = cfg->epilog_begin;
                                }
@@ -4306,8 +4528,9 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                        int start = (guint8*)ei->try_start - cfg->native_code;
                        int end = (guint8*)ei->try_end - cfg->native_code;
                        int handler = (guint8*)ei->handler_start - cfg->native_code;
+                       int handler_end = (guint8*)ei->data.handler_end - cfg->native_code;
 
-                       printf ("JitInfo EH clause %d flags %x try %x-%x handler %x\n", i, ei->flags, start, end, handler);
+                       printf ("JitInfo EH clause %d flags %x try %x-%x handler %x-%x\n", i, ei->flags, start, end, handler, handler_end);
                }
        }
 
@@ -4315,7 +4538,6 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
         * Its possible to generate dwarf unwind info for xdebug etc, but not actually
         * using it during runtime, hence the define.
         */
-#ifdef MONO_ARCH_HAVE_XP_UNWIND
        if (cfg->encoded_unwind_ops) {
                jinfo->used_regs = mono_cache_unwind_info (cfg->encoded_unwind_ops, cfg->encoded_unwind_ops_len);
                g_free (cfg->encoded_unwind_ops);
@@ -4326,7 +4548,6 @@ create_jit_info (MonoCompile *cfg, MonoMethod *method_to_compile)
                jinfo->used_regs = mono_cache_unwind_info (unwind_info, info_len);
                g_free (unwind_info);
        }
-#endif
 
        return jinfo;
 }
@@ -4387,22 +4608,17 @@ is_gsharedvt_method (MonoMethod *method)
 }
 
 static gboolean
-has_ref_constraint (MonoGenericParamInfo *info)
+is_open_method (MonoMethod *method)
 {
-       MonoClass **constraints;
-
-       //return FALSE;
-
-       if (info && info->constraints) {
-               constraints = info->constraints;
+       MonoGenericContext *context;
 
-               while (*constraints) {
-                       MonoClass *cklass = *constraints;
-                       if (!(cklass == mono_defaults.object_class || (cklass->image == mono_defaults.corlib && !strcmp (cklass->name, "ValueType")) || MONO_CLASS_IS_INTERFACE (cklass)))
-                               return TRUE;
-                       constraints ++;
-               }
-       }
+       if (!method->is_inflated)
+               return FALSE;
+       context = mono_method_get_context (method);
+       if (context->class_inst && context->class_inst->is_open)
+               return TRUE;
+       if (context->method_inst && context->method_inst->is_open)
+               return TRUE;
        return FALSE;
 }
 
@@ -4418,10 +4634,7 @@ get_shared_inst (MonoGenericInst *inst, MonoGenericInst *shared_inst, MonoGeneri
                if (!all_vt && (MONO_TYPE_IS_REFERENCE (inst->type_argv [i]) || inst->type_argv [i]->type == MONO_TYPE_VAR || inst->type_argv [i]->type == MONO_TYPE_MVAR)) {
                        type_argv [i] = shared_inst->type_argv [i];
                } else if (all_vt) {
-                       if (container && has_ref_constraint (&container->type_params [i].info))
-                               type_argv [i] = shared_inst->type_argv [i];
-                       else
-                               type_argv [i] = get_gsharedvt_type (shared_inst->type_argv [i]);
+                       type_argv [i] = get_gsharedvt_type (shared_inst->type_argv [i]);
                } else if (gsharedvt) {
                        type_argv [i] = get_gsharedvt_type (shared_inst->type_argv [i]);
                } else {
@@ -4463,12 +4676,14 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
                shared_context = declaring_method->klass->generic_container->context;
 
        /* Handle gsharedvt/partial sharing */
-       if ((method != declaring_method && method->is_inflated && !mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE)) ||
+       if ((method != declaring_method && method->is_inflated && !mono_method_is_generic_sharable_full (method, FALSE, FALSE, TRUE)) ||
                is_gsharedvt || mini_is_gsharedvt_sharable_method (method)) {
                MonoGenericContext *context = mono_method_get_context (method);
                MonoGenericInst *inst;
 
-               gsharedvt = is_gsharedvt || mini_is_gsharedvt_sharable_method (method);
+               partial = mono_method_is_generic_sharable_full (method, FALSE, TRUE, FALSE);
+
+               gsharedvt = is_gsharedvt || (!partial && mini_is_gsharedvt_sharable_method (method));
 
                class_container = declaring_method->klass->generic_container;
                method_container = mono_method_get_generic_container (declaring_method);
@@ -4477,7 +4692,6 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
                 * Create the shared context by replacing the ref type arguments with
                 * type parameters, and keeping the rest.
                 */
-               partial = TRUE;
                if (context)
                        inst = context->class_inst;
                else
@@ -4491,6 +4705,8 @@ mini_get_shared_method_full (MonoMethod *method, gboolean all_vt, gboolean is_gs
                        inst = shared_context.method_inst;
                if (inst)
                        shared_context.method_inst = get_shared_inst (inst, shared_context.method_inst, method_container, all_vt, gsharedvt);
+
+               partial = TRUE;
        }
 
     res = mono_class_inflate_generic_method (declaring_method, &shared_context);
@@ -4579,10 +4795,10 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                 * FIXME: Remove the method->klass->generic_class limitation.
                 */
                try_generic_shared = mono_class_generic_sharing_enabled (method->klass) &&
-                       (opts & MONO_OPT_GSHARED) && ((method->is_generic || method->klass->generic_container) || (!method->klass->generic_class && mono_method_is_generic_sharable_impl_full (method, TRUE, FALSE, FALSE)));
+                       (opts & MONO_OPT_GSHARED) && ((method->is_generic || method->klass->generic_container) || (!method->klass->generic_class && mono_method_is_generic_sharable_full (method, TRUE, FALSE, FALSE)));
        else
                try_generic_shared = mono_class_generic_sharing_enabled (method->klass) &&
-                       (opts & MONO_OPT_GSHARED) && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE);
+                       (opts & MONO_OPT_GSHARED) && mono_method_is_generic_sharable (method, FALSE);
 
        if (opts & MONO_OPT_GSHARED) {
                if (try_generic_shared)
@@ -4598,7 +4814,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                        try_generic_shared = FALSE;
        }
 
-       if (is_gsharedvt_method (method)) {
+       if (is_gsharedvt_method (method) || (compile_aot && is_open_method (method))) {
                /* We are AOTing a gshared method directly */
                method_is_gshared = TRUE;
                g_assert (compile_aot);
@@ -4790,8 +5006,8 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                cfg->opt |= MONO_OPT_ABCREM;
        }
 
-       if (getenv ("MONO_VERBOSE_METHOD")) {
-               char *name = getenv ("MONO_VERBOSE_METHOD");
+       if (g_getenv ("MONO_VERBOSE_METHOD")) {
+               const char *name = g_getenv ("MONO_VERBOSE_METHOD");
 
                if ((strchr (name, '.') > name) || strchr (name, ':')) {
                        MonoMethodDesc *desc;
@@ -4802,7 +5018,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                        }
                        mono_method_desc_free (desc);
                } else {
-                       if (strcmp (cfg->method->name, getenv ("MONO_VERBOSE_METHOD")) == 0)
+                       if (strcmp (cfg->method->name, g_getenv ("MONO_VERBOSE_METHOD")) == 0)
                                cfg->verbose_level = 4;
                }
        }
@@ -4847,11 +5063,11 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                count ++;
 
                /*
-               if (getenv ("COUNT2")) {
+               if (g_getenv ("COUNT2")) {
                        cfg->globalra = TRUE;
-                       if (count == atoi (getenv ("COUNT2")))
+                       if (count == atoi (g_getenv ("COUNT2")))
                                printf ("LAST: %s\n", mono_method_full_name (cfg->method, TRUE));
-                       if (count > atoi (getenv ("COUNT2")))
+                       if (count > atoi (g_getenv ("COUNT2")))
                                cfg->globalra = FALSE;
                }
                */
@@ -4990,6 +5206,8 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
        mono_handle_global_vregs (cfg);
        if (cfg->opt & MONO_OPT_DEADCE)
                mono_local_deadce (cfg);
+       if (cfg->opt & MONO_OPT_ALIAS_ANALYSIS)
+               mono_local_alias_analysis (cfg);
        /* Disable this for LLVM to make the IR easier to handle */
        if (!COMPILE_LLVM (cfg))
                mono_if_conversion (cfg);
@@ -5144,6 +5362,7 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
 #endif
 
        if (cfg->comp_done & MONO_COMP_SSA && COMPILE_LLVM (cfg)) {
+               mono_ssa_loop_invariant_code_motion (cfg);
                /* This removes MONO_INST_FAULT flags too so perform it unconditionally */
                if (cfg->opt & MONO_OPT_ABCREM)
                        mono_perform_abc_removal (cfg);
@@ -5156,8 +5375,8 @@ mini_method_compile (MonoMethod *method, guint32 opts, MonoDomain *domain, gbool
                return cfg;
        }
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-       if (!COMPILE_LLVM (cfg))
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+       if (COMPILE_SOFT_FLOAT (cfg))
                mono_decompose_soft_float (cfg);
 #endif
        if (!COMPILE_LLVM (cfg))
@@ -5450,7 +5669,7 @@ lookup_method_inner (MonoDomain *domain, MonoMethod *method)
        if (ji)
                return ji;
 
-       if (!mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE))
+       if (!mono_method_is_generic_sharable (method, FALSE))
                return NULL;
        return mono_domain_lookup_shared_generic (domain, method);
 }
@@ -5494,7 +5713,7 @@ void
 mono_emit_jit_map (MonoJitInfo *jinfo)
 {
        if (perf_map_file) {
-               char *name = mono_method_full_name (jinfo->method, TRUE);
+               char *name = mono_method_full_name (jinfo_get_method (jinfo), TRUE);
                mono_emit_jit_tramp (jinfo->code_start, jinfo->code_size, name);
                g_free (name);
        }
@@ -5763,11 +5982,11 @@ mono_jit_compile_method_inner (MonoMethod *method, MonoDomain *target_domain, in
        }
        
        if (code == NULL) {
-               mono_internal_hash_table_insert (&target_domain->jit_code_hash, cfg->jit_info->method, cfg->jit_info);
+               mono_internal_hash_table_insert (&target_domain->jit_code_hash, cfg->jit_info->d.method, cfg->jit_info);
                mono_domain_jit_code_hash_unlock (target_domain);
                code = cfg->native_code;
 
-               if (cfg->generic_sharing_context && mono_method_is_generic_sharable_impl_full (method, FALSE, FALSE, TRUE))
+               if (cfg->generic_sharing_context && mono_method_is_generic_sharable (method, FALSE))
                        mono_stats.generics_shared_methods++;
                if (cfg->gsharedvt)
                        mono_stats.gsharedvt_methods++;
@@ -5862,6 +6081,7 @@ mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException
        MonoDomain *target_domain, *domain = mono_domain_get ();
        MonoJitInfo *info;
        gpointer code, p;
+       MonoJitInfo *ji;
        MonoJitICallInfo *callinfo = NULL;
        WrapperInfo *winfo = NULL;
 
@@ -5895,8 +6115,14 @@ mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException
                WrapperInfo *info = mono_marshal_get_wrapper_info (method);
 
                g_assert (info);
-               if (info->subtype == WRAPPER_SUBTYPE_SYNCHRONIZED_INNER)
+               if (info->subtype == WRAPPER_SUBTYPE_SYNCHRONIZED_INNER) {
+                       MonoGenericContext *ctx = NULL;
+                       if (method->is_inflated)
+                               ctx = mono_method_get_context (method);
                        method = info->d.synchronized_inner.method;
+                       if (ctx)
+                               method = mono_class_inflate_generic_method (method, ctx);
+               }
        }
 
        info = lookup_method (target_domain, method);
@@ -5922,6 +6148,16 @@ mono_jit_compile_method_with_opt (MonoMethod *method, guint32 opt, MonoException
        if (!code)
                return NULL;
 
+       if (method->wrapper_type == MONO_WRAPPER_WRITE_BARRIER || method->wrapper_type == MONO_WRAPPER_ALLOC) {
+               MonoDomain *d;
+
+               /*
+                * SGEN requires the JIT info for these methods to be registered, see is_ip_in_managed_allocator ().
+                */
+               ji = mini_jit_info_table_find (mono_domain_get (), code, &d);
+               g_assert (ji);
+       }
+
        p = mono_create_ftnptr (target_domain, code);
 
        if (callinfo) {
@@ -5946,7 +6182,7 @@ mono_jit_compile_method (MonoMethod *method)
        MonoException *ex = NULL;
        gpointer code;
 
-       code = mono_jit_compile_method_with_opt (method, default_opt, &ex);
+       code = mono_jit_compile_method_with_opt (method, mono_get_optimizations_for_method (method, default_opt), &ex);
        if (!code) {
                g_assert (ex);
                mono_raise_exception (ex);
@@ -6069,6 +6305,33 @@ mono_jit_find_compiled_method_with_jit_info (MonoDomain *domain, MonoMethod *met
        return NULL;
 }
 
+gboolean mono_do_single_method_regression = FALSE;
+guint32 mono_single_method_regression_opt = 0;
+MonoMethod *mono_current_single_method = NULL;
+GSList *mono_single_method_list = NULL;
+GHashTable *mono_single_method_hash = NULL;
+
+guint32
+mono_get_optimizations_for_method (MonoMethod *method, guint32 default_opt)
+{
+       g_assert (method);
+
+       if (!mono_do_single_method_regression)
+               return default_opt;
+       if (!mono_current_single_method) {
+               if (!mono_single_method_hash)
+                       mono_single_method_hash = g_hash_table_new (g_direct_hash, g_direct_equal);
+               if (!g_hash_table_lookup (mono_single_method_hash, method)) {
+                       g_hash_table_insert (mono_single_method_hash, method, method);
+                       mono_single_method_list = g_slist_prepend (mono_single_method_list, method);
+               }
+               return default_opt;
+       }
+       if (method == mono_current_single_method)
+               return mono_single_method_regression_opt;
+       return default_opt;
+}
+
 gpointer
 mono_jit_find_compiled_method (MonoDomain *domain, MonoMethod *method)
 {
@@ -6094,7 +6357,7 @@ typedef struct {
 static MonoObject*
 mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObject **exc)
 {
-       MonoMethod *invoke;
+       MonoMethod *invoke, *callee;
        MonoObject *(*runtime_invoke) (MonoObject *this, void **params, MonoObject **exc, void* compiled_method);
        MonoDomain *domain = mono_domain_get ();
        MonoJitDomainInfo *domain_info;
@@ -6133,17 +6396,31 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                info->vtable = mono_class_vtable_full (domain, method->klass, TRUE);
                g_assert (info->vtable);
 
+               callee = method;
                if (method->klass->rank && (method->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL) &&
                        (method->iflags & METHOD_IMPL_ATTRIBUTE_NATIVE)) {
                        /* 
                         * Array Get/Set/Address methods. The JIT implements them using inline code 
                         * inside the runtime invoke wrappers, so no need to compile them.
                         */
-                       info->compiled_method = NULL;
-               } else {
+                       if (mono_aot_only) {
+                               /*
+                                * Call a wrapper, since the runtime invoke wrapper was not generated.
+                                */
+                               MonoMethod *wrapper;
+
+                               wrapper = mono_marshal_get_array_accessor_wrapper (method);
+                               invoke = mono_marshal_get_runtime_invoke (wrapper, FALSE);
+                               callee = wrapper;
+                       } else {
+                               callee = NULL;
+                       }
+               }
+
+               if (callee) {
                        MonoException *jit_ex = NULL;
 
-                       info->compiled_method = mono_jit_compile_method_with_opt (method, default_opt, &jit_ex);
+                       info->compiled_method = mono_jit_compile_method_with_opt (callee, mono_get_optimizations_for_method (callee, default_opt), &jit_ex);
                        if (!info->compiled_method) {
                                g_free (info);
                                g_assert (jit_ex);
@@ -6155,7 +6432,9 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                                }
                        }
 
-                       info->compiled_method = mini_add_method_trampoline (NULL, method, info->compiled_method, mono_method_needs_static_rgctx_invoke (method, FALSE));
+                       info->compiled_method = mini_add_method_trampoline (NULL, callee, info->compiled_method, mono_method_needs_static_rgctx_invoke (callee, FALSE), FALSE);
+               } else {
+                       info->compiled_method = NULL;
                }
 
                /*
@@ -6165,6 +6444,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                 */
 #ifdef MONO_ARCH_DYN_CALL_SUPPORTED
                if (mono_aot_only || debug_options.dyn_runtime_invoke) {
+                       MonoType *ret_type;
                        MonoMethodSignature *sig = mono_method_signature (method);
                        gboolean supported = TRUE;
                        int i;
@@ -6185,8 +6465,9 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                        if (supported)
                                info->dyn_call_info = mono_arch_dyn_call_prepare (sig);
 
+                       ret_type = sig->ret;
                        if (info->dyn_call_info) {
-                               switch (sig->ret->type) {
+                               switch (ret_type->type) {
                                case MONO_TYPE_VOID:
                                        break;
                                case MONO_TYPE_I1:
@@ -6203,7 +6484,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                                case MONO_TYPE_CHAR:
                                case MONO_TYPE_R4:
                                case MONO_TYPE_R8:
-                                       info->ret_box_class = mono_class_from_mono_type (sig->ret);
+                                       info->ret_box_class = mono_class_from_mono_type (ret_type);
                                        break;
                                case MONO_TYPE_PTR:
                                        info->ret_box_class = mono_defaults.int_class;
@@ -6215,11 +6496,11 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
                                case MONO_TYPE_OBJECT:
                                        break;
                                case MONO_TYPE_GENERICINST:
-                                       if (!MONO_TYPE_IS_REFERENCE (sig->ret))
-                                               info->ret_box_class = mono_class_from_mono_type (sig->ret);
+                                       if (!MONO_TYPE_IS_REFERENCE (ret_type))
+                                               info->ret_box_class = mono_class_from_mono_type (ret_type);
                                        break;
                                case MONO_TYPE_VALUETYPE:
-                                       info->ret_box_class = mono_class_from_mono_type (sig->ret);
+                                       info->ret_box_class = mono_class_from_mono_type (ret_type);
                                        break;
                                default:
                                        g_assert_not_reached ();
@@ -6310,8 +6591,7 @@ mono_jit_runtime_invoke (MonoMethod *method, void *obj, void **params, MonoObjec
        return runtime_invoke (obj, params, exc, info->compiled_method);
 }
 
-void
-SIG_HANDLER_SIGNATURE (mono_sigfpe_signal_handler)
+SIG_HANDLER_FUNC (, mono_sigfpe_signal_handler)
 {
        MonoException *exc = NULL;
        MonoJitInfo *ji;
@@ -6345,8 +6625,7 @@ SIG_HANDLER_SIGNATURE (mono_sigfpe_signal_handler)
        mono_arch_handle_exception (ctx, exc);
 }
 
-void
-SIG_HANDLER_SIGNATURE (mono_sigill_signal_handler)
+SIG_HANDLER_FUNC (, mono_sigill_signal_handler)
 {
        MonoException *exc;
        GET_CONTEXT;
@@ -6360,8 +6639,7 @@ SIG_HANDLER_SIGNATURE (mono_sigill_signal_handler)
 #define HAVE_SIG_INFO
 #endif
 
-void
-SIG_HANDLER_SIGNATURE (mono_sigsegv_signal_handler)
+SIG_HANDLER_FUNC (, mono_sigsegv_signal_handler)
 {
        MonoJitInfo *ji;
        MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id);
@@ -6440,8 +6718,7 @@ SIG_HANDLER_SIGNATURE (mono_sigsegv_signal_handler)
 #endif
 }
 
-void
-SIG_HANDLER_SIGNATURE (mono_sigint_signal_handler)
+SIG_HANDLER_FUNC (, mono_sigint_signal_handler)
 {
        MonoException *exc;
        GET_CONTEXT;
@@ -6527,7 +6804,7 @@ mini_get_imt_trampoline (int slot_index)
 static void
 mini_parse_debug_options (void)
 {
-       char *options = getenv ("MONO_DEBUG");
+       const char *options = g_getenv ("MONO_DEBUG");
        gchar **args, **ptr;
        
        if (!options)
@@ -6603,7 +6880,6 @@ mini_create_ftnptr (MonoDomain *domain, gpointer addr)
        desc [0] = addr;
        desc [1] = NULL;
 #      elif defined(__ppc64__) || defined(__powerpc64__)
-       gpointer *desc;
 
        desc = mono_domain_alloc0 (domain, 3 * sizeof (gpointer));
 
@@ -6646,9 +6922,14 @@ register_jit_stats (void)
        mono_counters_register ("Method cache lookups", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.methods_lookups);
        mono_counters_register ("Compiled CIL code size", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.cil_code_size);
        mono_counters_register ("Native code size", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.native_code_size);
+       mono_counters_register ("Aliases found", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.alias_found);
+       mono_counters_register ("Aliases eliminated", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.alias_removed);
+       mono_counters_register ("Aliased loads eliminated", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.loads_eliminated);
+       mono_counters_register ("Aliased stores eliminated", MONO_COUNTER_JIT | MONO_COUNTER_INT, &mono_jit_stats.stores_eliminated);
 }
 
 static void runtime_invoke_info_free (gpointer value);
+static void seq_point_info_free (gpointer value);
  
 static void
 mini_create_jit_domain_info (MonoDomain *domain)
@@ -6661,7 +6942,7 @@ mini_create_jit_domain_info (MonoDomain *domain)
        info->delegate_trampoline_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
        info->llvm_vcall_trampoline_hash = g_hash_table_new (mono_aligned_addr_hash, NULL);
        info->runtime_invoke_hash = g_hash_table_new_full (mono_aligned_addr_hash, NULL, NULL, runtime_invoke_info_free);
-       info->seq_points = g_hash_table_new_full (mono_aligned_addr_hash, NULL, NULL, g_free);
+       info->seq_points = g_hash_table_new_full (mono_aligned_addr_hash, NULL, NULL, seq_point_info_free);
        info->arch_seq_points = g_hash_table_new (mono_aligned_addr_hash, NULL);
        info->jump_target_hash = g_hash_table_new (NULL, NULL);
 
@@ -6695,6 +6976,19 @@ runtime_invoke_info_free (gpointer value)
        g_free (info);
 }
 
+static void seq_point_info_free (gpointer value)
+{
+       int i = 0;
+       MonoSeqPointInfo* info = (MonoSeqPointInfo*)value;
+       
+       for (i = 0; i < info->len; ++i) {
+               SeqPoint *sp = &info->seq_points [i];
+               g_free (sp->next);
+       }
+
+       g_free (info);
+}
+
 static void
 mini_free_jit_domain_info (MonoDomain *domain)
 {
@@ -6771,11 +7065,7 @@ mini_init (const char *filename, const char *runtime_version)
 #endif
 #endif
 
-#ifdef MONO_ARCH_HAVE_TLS_GET
        mono_runtime_set_has_tls_get (MONO_ARCH_HAVE_TLS_GET);
-#else
-       mono_runtime_set_has_tls_get (FALSE);
-#endif
 
        if (!global_codeman)
                global_codeman = mono_code_manager_new ();
@@ -6806,19 +7096,21 @@ mini_init (const char *filename, const char *runtime_version)
        mono_threads_runtime_init (&ticallbacks);
 
 
-       if (getenv ("MONO_DEBUG") != NULL)
+       if (g_getenv ("MONO_DEBUG") != NULL)
                mini_parse_debug_options ();
 
        mono_code_manager_init ();
 
+       mono_hwcap_init ();
+
        mono_arch_cpu_init ();
 
        mono_arch_init ();
 
        mono_unwind_init ();
 
-       if (getenv ("MONO_XDEBUG")) {
-               char *xdebug_opts = getenv ("MONO_XDEBUG");
+       if (g_getenv ("MONO_XDEBUG")) {
+               const char *xdebug_opts = g_getenv ("MONO_XDEBUG");
                mono_xdebug_init (xdebug_opts);
                /* So methods for multiple domains don't have the same address */
                mono_dont_free_domains = TRUE;
@@ -6863,7 +7155,7 @@ mini_init (const char *filename, const char *runtime_version)
 
 #ifdef MONO_ARCH_HAVE_NOTIFY_PENDING_EXC
        // This is experimental code so provide an env var to switch it off
-       if (getenv ("MONO_DISABLE_PENDING_EXCEPTIONS")) {
+       if (g_getenv ("MONO_DISABLE_PENDING_EXCEPTIONS")) {
                printf ("MONO_DISABLE_PENDING_EXCEPTIONS env var set.\n");
        } else {
                check_for_pending_exc = FALSE;
@@ -6991,6 +7283,8 @@ mini_init (const char *filename, const char *runtime_version)
        register_opcode_emulation (OP_LDIV_UN, "__emul_ldiv_un", "long long long", mono_lldiv_un, "mono_lldiv_un", FALSE);
        register_opcode_emulation (OP_LREM, "__emul_lrem", "long long long", mono_llrem, "mono_llrem", FALSE);
        register_opcode_emulation (OP_LREM_UN, "__emul_lrem_un", "long long long", mono_llrem_un, "mono_llrem_un", FALSE);
+#endif
+#if !defined(MONO_ARCH_NO_EMULATE_LONG_MUL_OPTS) || defined(MONO_ARCH_EMULATE_LONG_MUL_OVF_OPTS)
        register_opcode_emulation (OP_LMUL_OVF_UN, "__emul_lmul_ovf_un", "long long long", mono_llmult_ovf_un, "mono_llmult_ovf_un", FALSE);
        register_opcode_emulation (OP_LMUL_OVF, "__emul_lmul_ovf", "long long long", mono_llmult_ovf, "mono_llmult_ovf", FALSE);
 #endif
@@ -7017,8 +7311,10 @@ mini_init (const char *filename, const char *runtime_version)
        register_opcode_emulation (OP_IMUL_OVF_UN, "__emul_op_imul_ovf_un", "int32 int32 int32", mono_imul_ovf_un, "mono_imul_ovf_un", FALSE);
 #endif
 
-#if defined(MONO_ARCH_EMULATE_MUL_DIV) || defined(MONO_ARCH_SOFT_FLOAT)
-       register_opcode_emulation (OP_FDIV, "__emul_fdiv", "double double double", mono_fdiv, "mono_fdiv", FALSE);
+#if defined(MONO_ARCH_EMULATE_MUL_DIV) || defined(MONO_ARCH_SOFT_FLOAT_FALLBACK)
+       if (ARCH_EMULATE_MUL_DIV || mono_arch_is_soft_float ()) {
+               register_opcode_emulation (OP_FDIV, "__emul_fdiv", "double double double", mono_fdiv, "mono_fdiv", FALSE);
+       }
 #endif
 
        register_opcode_emulation (OP_FCONV_TO_U8, "__emul_fconv_to_u8", "ulong double", mono_fconv_u8, "mono_fconv_u8", FALSE);
@@ -7049,44 +7345,47 @@ mini_init (const char *filename, const char *runtime_version)
 #endif
 #endif
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-       register_opcode_emulation (OP_FSUB, "__emul_fsub", "double double double", mono_fsub, "mono_fsub", FALSE);
-       register_opcode_emulation (OP_FADD, "__emul_fadd", "double double double", mono_fadd, "mono_fadd", FALSE);
-       register_opcode_emulation (OP_FMUL, "__emul_fmul", "double double double", mono_fmul, "mono_fmul", FALSE);
-       register_opcode_emulation (OP_FNEG, "__emul_fneg", "double double", mono_fneg, "mono_fneg", FALSE);
-       register_opcode_emulation (OP_ICONV_TO_R8, "__emul_iconv_to_r8", "double int32", mono_conv_to_r8, "mono_conv_to_r8", FALSE);
-       register_opcode_emulation (OP_ICONV_TO_R4, "__emul_iconv_to_r4", "double int32", mono_conv_to_r4, "mono_conv_to_r4", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_R4, "__emul_fconv_to_r4", "double double", mono_fconv_r4, "mono_fconv_r4", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_I1, "__emul_fconv_to_i1", "int8 double", mono_fconv_i1, "mono_fconv_i1", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_I2, "__emul_fconv_to_i2", "int16 double", mono_fconv_i2, "mono_fconv_i2", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_I4, "__emul_fconv_to_i4", "int32 double", mono_fconv_i4, "mono_fconv_i4", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_U1, "__emul_fconv_to_u1", "uint8 double", mono_fconv_u1, "mono_fconv_u1", FALSE);
-       register_opcode_emulation (OP_FCONV_TO_U2, "__emul_fconv_to_u2", "uint16 double", mono_fconv_u2, "mono_fconv_u2", FALSE);
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+       if (mono_arch_is_soft_float ()) {
+               register_opcode_emulation (OP_FSUB, "__emul_fsub", "double double double", mono_fsub, "mono_fsub", FALSE);
+               register_opcode_emulation (OP_FADD, "__emul_fadd", "double double double", mono_fadd, "mono_fadd", FALSE);
+               register_opcode_emulation (OP_FMUL, "__emul_fmul", "double double double", mono_fmul, "mono_fmul", FALSE);
+               register_opcode_emulation (OP_FNEG, "__emul_fneg", "double double", mono_fneg, "mono_fneg", FALSE);
+               register_opcode_emulation (OP_ICONV_TO_R8, "__emul_iconv_to_r8", "double int32", mono_conv_to_r8, "mono_conv_to_r8", FALSE);
+               register_opcode_emulation (OP_ICONV_TO_R4, "__emul_iconv_to_r4", "double int32", mono_conv_to_r4, "mono_conv_to_r4", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_R4, "__emul_fconv_to_r4", "double double", mono_fconv_r4, "mono_fconv_r4", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_I1, "__emul_fconv_to_i1", "int8 double", mono_fconv_i1, "mono_fconv_i1", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_I2, "__emul_fconv_to_i2", "int16 double", mono_fconv_i2, "mono_fconv_i2", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_I4, "__emul_fconv_to_i4", "int32 double", mono_fconv_i4, "mono_fconv_i4", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_U1, "__emul_fconv_to_u1", "uint8 double", mono_fconv_u1, "mono_fconv_u1", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_U2, "__emul_fconv_to_u2", "uint16 double", mono_fconv_u2, "mono_fconv_u2", FALSE);
+
 #if SIZEOF_VOID_P == 4
-       register_opcode_emulation (OP_FCONV_TO_I, "__emul_fconv_to_i", "int32 double", mono_fconv_i4, "mono_fconv_i4", FALSE);
+               register_opcode_emulation (OP_FCONV_TO_I, "__emul_fconv_to_i", "int32 double", mono_fconv_i4, "mono_fconv_i4", FALSE);
 #endif
 
-       register_opcode_emulation (OP_FBEQ, "__emul_fcmp_eq", "uint32 double double", mono_fcmp_eq, "mono_fcmp_eq", FALSE);
-       register_opcode_emulation (OP_FBLT, "__emul_fcmp_lt", "uint32 double double", mono_fcmp_lt, "mono_fcmp_lt", FALSE);
-       register_opcode_emulation (OP_FBGT, "__emul_fcmp_gt", "uint32 double double", mono_fcmp_gt, "mono_fcmp_gt", FALSE);
-       register_opcode_emulation (OP_FBLE, "__emul_fcmp_le", "uint32 double double", mono_fcmp_le, "mono_fcmp_le", FALSE);
-       register_opcode_emulation (OP_FBGE, "__emul_fcmp_ge", "uint32 double double", mono_fcmp_ge, "mono_fcmp_ge", FALSE);
-       register_opcode_emulation (OP_FBNE_UN, "__emul_fcmp_ne_un", "uint32 double double", mono_fcmp_ne_un, "mono_fcmp_ne_un", FALSE);
-       register_opcode_emulation (OP_FBLT_UN, "__emul_fcmp_lt_un", "uint32 double double", mono_fcmp_lt_un, "mono_fcmp_lt_un", FALSE);
-       register_opcode_emulation (OP_FBGT_UN, "__emul_fcmp_gt_un", "uint32 double double", mono_fcmp_gt_un, "mono_fcmp_gt_un", FALSE);
-       register_opcode_emulation (OP_FBLE_UN, "__emul_fcmp_le_un", "uint32 double double", mono_fcmp_le_un, "mono_fcmp_le_un", FALSE);
-       register_opcode_emulation (OP_FBGE_UN, "__emul_fcmp_ge_un", "uint32 double double", mono_fcmp_ge_un, "mono_fcmp_ge_un", FALSE);
+               register_opcode_emulation (OP_FBEQ, "__emul_fcmp_eq", "uint32 double double", mono_fcmp_eq, "mono_fcmp_eq", FALSE);
+               register_opcode_emulation (OP_FBLT, "__emul_fcmp_lt", "uint32 double double", mono_fcmp_lt, "mono_fcmp_lt", FALSE);
+               register_opcode_emulation (OP_FBGT, "__emul_fcmp_gt", "uint32 double double", mono_fcmp_gt, "mono_fcmp_gt", FALSE);
+               register_opcode_emulation (OP_FBLE, "__emul_fcmp_le", "uint32 double double", mono_fcmp_le, "mono_fcmp_le", FALSE);
+               register_opcode_emulation (OP_FBGE, "__emul_fcmp_ge", "uint32 double double", mono_fcmp_ge, "mono_fcmp_ge", FALSE);
+               register_opcode_emulation (OP_FBNE_UN, "__emul_fcmp_ne_un", "uint32 double double", mono_fcmp_ne_un, "mono_fcmp_ne_un", FALSE);
+               register_opcode_emulation (OP_FBLT_UN, "__emul_fcmp_lt_un", "uint32 double double", mono_fcmp_lt_un, "mono_fcmp_lt_un", FALSE);
+               register_opcode_emulation (OP_FBGT_UN, "__emul_fcmp_gt_un", "uint32 double double", mono_fcmp_gt_un, "mono_fcmp_gt_un", FALSE);
+               register_opcode_emulation (OP_FBLE_UN, "__emul_fcmp_le_un", "uint32 double double", mono_fcmp_le_un, "mono_fcmp_le_un", FALSE);
+               register_opcode_emulation (OP_FBGE_UN, "__emul_fcmp_ge_un", "uint32 double double", mono_fcmp_ge_un, "mono_fcmp_ge_un", FALSE);
 
-       register_opcode_emulation (OP_FCEQ, "__emul_fcmp_ceq", "uint32 double double", mono_fceq, "mono_fceq", FALSE);
-       register_opcode_emulation (OP_FCGT, "__emul_fcmp_cgt", "uint32 double double", mono_fcgt, "mono_fcgt", FALSE);
-       register_opcode_emulation (OP_FCGT_UN, "__emul_fcmp_cgt_un", "uint32 double double", mono_fcgt_un, "mono_fcgt_un", FALSE);
-       register_opcode_emulation (OP_FCLT, "__emul_fcmp_clt", "uint32 double double", mono_fclt, "mono_fclt", FALSE);
-       register_opcode_emulation (OP_FCLT_UN, "__emul_fcmp_clt_un", "uint32 double double", mono_fclt_un, "mono_fclt_un", FALSE);
+               register_opcode_emulation (OP_FCEQ, "__emul_fcmp_ceq", "uint32 double double", mono_fceq, "mono_fceq", FALSE);
+               register_opcode_emulation (OP_FCGT, "__emul_fcmp_cgt", "uint32 double double", mono_fcgt, "mono_fcgt", FALSE);
+               register_opcode_emulation (OP_FCGT_UN, "__emul_fcmp_cgt_un", "uint32 double double", mono_fcgt_un, "mono_fcgt_un", FALSE);
+               register_opcode_emulation (OP_FCLT, "__emul_fcmp_clt", "uint32 double double", mono_fclt, "mono_fclt", FALSE);
+               register_opcode_emulation (OP_FCLT_UN, "__emul_fcmp_clt_un", "uint32 double double", mono_fclt_un, "mono_fclt_un", FALSE);
 
-       register_icall (mono_fload_r4, "mono_fload_r4", "double ptr", FALSE);
-       register_icall (mono_fstore_r4, "mono_fstore_r4", "void double ptr", FALSE);
-       register_icall (mono_fload_r4_arg, "mono_fload_r4_arg", "uint32 double", FALSE);
-       register_icall (mono_isfinite, "mono_isfinite", "uint32 double", FALSE);
+               register_icall (mono_fload_r4, "mono_fload_r4", "double ptr", FALSE);
+               register_icall (mono_fstore_r4, "mono_fstore_r4", "void double ptr", FALSE);
+               register_icall (mono_fload_r4_arg, "mono_fload_r4_arg", "uint32 double", FALSE);
+               register_icall (mono_isfinite, "mono_isfinite", "uint32 double", FALSE);
+       }
 #endif
 
 #ifdef COMPRESSED_INTERFACE_BITMAP
@@ -7120,7 +7419,7 @@ mini_init (const char *filename, const char *runtime_version)
        register_icall (mono_helper_ldstr_mscorlib, "mono_helper_ldstr_mscorlib", "object int", FALSE);
        register_icall (mono_helper_newobj_mscorlib, "mono_helper_newobj_mscorlib", "object int", FALSE);
        register_icall (mono_value_copy, "mono_value_copy", "void ptr ptr ptr", FALSE);
-       register_icall (mono_object_castclass, "mono_object_castclass", "object object ptr", FALSE);
+       register_icall (mono_object_castclass_unbox, "mono_object_castclass_unbox", "object object ptr", FALSE);
        register_icall (mono_break, "mono_break", NULL, TRUE);
        register_icall (mono_create_corlib_exception_0, "mono_create_corlib_exception_0", "object int", TRUE);
        register_icall (mono_create_corlib_exception_1, "mono_create_corlib_exception_1", "object int object", TRUE);
@@ -7131,8 +7430,8 @@ mini_init (const char *filename, const char *runtime_version)
        register_icall (mono_array_new_4, "mono_array_new_4", "object ptr int int int int", FALSE);
        register_icall (mono_get_native_calli_wrapper, "mono_get_native_calli_wrapper", "ptr ptr ptr ptr", FALSE);
        register_icall (mono_resume_unwind, "mono_resume_unwind", "void", TRUE);
-       register_icall (mono_object_tostring_gsharedvt, "mono_object_tostring_gsharedvt", "object ptr ptr ptr", TRUE);
-       register_icall (mono_object_gethashcode_gsharedvt, "mono_object_gethashcode_gsharedvt", "int ptr ptr ptr", TRUE);
+       register_icall (mono_gsharedvt_constrained_call, "mono_gsharedvt_constrained_call", "object ptr ptr ptr ptr ptr", TRUE);
+       register_icall (mono_gsharedvt_value_copy, "mono_gsharedvt_value_copy", "void ptr ptr ptr", TRUE);
 
        register_icall (mono_gc_wbarrier_value_copy_bitmap, "mono_gc_wbarrier_value_copy_bitmap", "void ptr ptr int int", FALSE);
 
@@ -7273,7 +7572,9 @@ mini_cleanup (MonoDomain *domain)
 
        mono_runtime_cleanup_handlers ();
 
+#ifndef MONO_CROSS_COMPILE
        mono_domain_free (domain, TRUE);
+#endif
 
        mono_debugger_cleanup ();
 
index ecac3e393a7c43082ec337e3a6b93f65fe40f8d3..25e3ccff848795870595760e0b3bebe0affed59b 100644 (file)
 #define LLVM_ENABLED FALSE
 #endif
 
-#ifdef MONO_ARCH_SOFT_FLOAT
-#define COMPILE_SOFT_FLOAT(cfg) (!COMPILE_LLVM ((cfg)))
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+#define COMPILE_SOFT_FLOAT(cfg) (!COMPILE_LLVM ((cfg)) && mono_arch_is_soft_float ())
 #else
-#define COMPILE_SOFT_FLOAT(cfg) 0
+#define COMPILE_SOFT_FLOAT(cfg) (0)
 #endif
 
 #ifdef ENABLE_LLVM
 #define LLVM_CHECK_VERSION(major,minor) 0
 #endif
 
-/* 
- * Whenever we are using mono's LLVM branch.
- * This can be used in if statements, code which references new definitions from the branch
- * still needs an #ifdef LLVM_MONO_BRANCH.
- */
-#ifdef LLVM_MONO_BRANCH
-#define IS_LLVM_MONO_BRANCH 1
-#else
-#define IS_LLVM_MONO_BRANCH 0
-#endif
-
 #define NOT_IMPLEMENTED do { g_assert_not_reached (); } while (0)
 
 /* for 32 bit systems */
 #endif
 
 /* Version number of the AOT file format */
-#define MONO_AOT_FILE_VERSION 88
+#define MONO_AOT_FILE_VERSION 96
 
 //TODO: This is x86/amd64 specific.
 #define mono_simd_shuffle_mask(a,b,c,d) ((a) | ((b) << 2) | ((c) << 4) | ((d) << 6))
 
+/* Remap printf to g_print (we use a mix of these in the mini code) */
+#ifdef PLATFORM_ANDROID
+#define printf g_print
+#endif
+
+#define MONO_TYPE_IS_PRIMITIVE(t) ((!(t)->byref && ((((t)->type >= MONO_TYPE_BOOLEAN && (t)->type <= MONO_TYPE_R8) || ((t)->type >= MONO_TYPE_I && (t)->type <= MONO_TYPE_U)))))
+
 /* Constants used to encode different types of methods in AOT */
 enum {
        MONO_AOT_METHODREF_MIN = 240,
@@ -213,9 +209,7 @@ typedef struct MonoAotFileInfo
        gpointer method_info_offsets;
        gpointer ex_info_offsets;
        gpointer code_offsets;
-#ifdef MONOTOUCH
        gpointer method_addresses;
-#endif
        gpointer extra_method_info_offsets;
        gpointer extra_method_table;
        gpointer got_info_offsets;
@@ -278,7 +272,11 @@ typedef struct MonoAotFileInfo
        guint32 num_rgctx_fetch_trampolines;
 
        /* These are used for sanity checking object layout problems when cross-compiling */
-       guint32 double_align, long_align;
+       guint32 double_align, long_align, generic_tramp_num;
+       /* The page size used by trampoline pages */
+       guint32 tramp_page_size;
+       /* The offset where the trampolines begin on a trampoline page */
+       guint32 tramp_page_code_offsets [MONO_AOT_TRAMP_NUM];
 } MonoAotFileInfo;
 
 /* Per-domain information maintained by the JIT */
@@ -307,6 +305,9 @@ typedef struct
        GHashTable *arch_seq_points;
        /* Maps a GSharedVtTrampInfo structure to a trampoline address */
        GHashTable *gsharedvt_arg_tramp_hash;
+       /* memcpy/bzero methods specialized for small constant sizes */
+       gpointer *memcpy_addr [17];
+       gpointer *bzero_addr [17];
 } MonoJitDomainInfo;
 
 typedef struct {
@@ -332,8 +333,10 @@ typedef struct {
  */
 typedef MonoStackFrameInfo StackFrameInfo;
 
+#define MONO_SEQ_POINT_FLAG_NONEMPTY_STACK 1
+
 typedef struct {
-       int il_offset, native_offset;
+       int il_offset, native_offset, flags;
        /* Indexes of successor sequence points */
        int *next;
        /* Number of entries in next */
@@ -459,7 +462,7 @@ enum {
 
 /* FIXME: Add more instructions */
 /* INEG sets the condition codes, and the OP_LNEG decomposition depends on this on x86 */
-#define MONO_INS_HAS_NO_SIDE_EFFECT(ins) (MONO_IS_MOVE (ins) || (ins->opcode == OP_ICONST) || (ins->opcode == OP_I8CONST) || MONO_IS_ZERO (ins) || (ins->opcode == OP_ADD_IMM) || (ins->opcode == OP_R8CONST) || (ins->opcode == OP_LADD_IMM) || (ins->opcode == OP_ISUB_IMM) || (ins->opcode == OP_IADD_IMM) || (ins->opcode == OP_LNEG) || (ins->opcode == OP_ISUB) || (ins->opcode == OP_CMOV_IGE) || (ins->opcode == OP_ISHL_IMM) || (ins->opcode == OP_ISHR_IMM) || (ins->opcode == OP_ISHR_UN_IMM) || (ins->opcode == OP_IAND_IMM) || (ins->opcode == OP_ICONV_TO_U1) || (ins->opcode == OP_ICONV_TO_I1) || (ins->opcode == OP_SEXT_I4) || (ins->opcode == OP_LCONV_TO_U1) || (ins->opcode == OP_ICONV_TO_U2) || (ins->opcode == OP_ICONV_TO_I2) || (ins->opcode == OP_LCONV_TO_I2) || (ins->opcode == OP_LDADDR))
+#define MONO_INS_HAS_NO_SIDE_EFFECT(ins) (MONO_IS_MOVE (ins) || (ins->opcode == OP_ICONST) || (ins->opcode == OP_I8CONST) || MONO_IS_ZERO (ins) || (ins->opcode == OP_ADD_IMM) || (ins->opcode == OP_R8CONST) || (ins->opcode == OP_LADD_IMM) || (ins->opcode == OP_ISUB_IMM) || (ins->opcode == OP_IADD_IMM) || (ins->opcode == OP_LNEG) || (ins->opcode == OP_ISUB) || (ins->opcode == OP_CMOV_IGE) || (ins->opcode == OP_ISHL_IMM) || (ins->opcode == OP_ISHR_IMM) || (ins->opcode == OP_ISHR_UN_IMM) || (ins->opcode == OP_IAND_IMM) || (ins->opcode == OP_ICONV_TO_U1) || (ins->opcode == OP_ICONV_TO_I1) || (ins->opcode == OP_SEXT_I4) || (ins->opcode == OP_LCONV_TO_U1) || (ins->opcode == OP_ICONV_TO_U2) || (ins->opcode == OP_ICONV_TO_I2) || (ins->opcode == OP_LCONV_TO_I2) || (ins->opcode == OP_LDADDR) || (ins->opcode == OP_PHI) || (ins->opcode == OP_NOP) || (ins->opcode == OP_ZEXT_I4) || (ins->opcode == OP_NOT_NULL))
 
 #define MONO_METHOD_IS_FINAL(m) (((m)->flags & METHOD_ATTRIBUTE_FINAL) || ((m)->klass && ((m)->klass->flags & TYPE_ATTRIBUTE_SEALED)))
 
@@ -516,6 +519,11 @@ extern gboolean mono_do_x86_stack_align;
 extern const char *mono_build_date;
 extern gboolean mono_do_signal_chaining;
 extern gboolean mono_use_llvm;
+extern gboolean mono_do_single_method_regression;
+extern guint32 mono_single_method_regression_opt;
+extern MonoMethod *mono_current_single_method;
+extern GSList *mono_single_method_list;
+extern GHashTable *mono_single_method_hash;
 
 #define INS_INFO(opcode) (&ins_info [((opcode) - OP_START - 1) * 4])
 
@@ -717,7 +725,8 @@ typedef enum {
        LLVMArgInFPReg,
        LLVMArgVtypeInReg,
        LLVMArgVtypeByVal,
-       LLVMArgVtypeRetAddr /* On on cinfo->ret */
+       LLVMArgVtypeRetAddr, /* On on cinfo->ret */
+       LLVMArgGSharedVt,
 } LLVMArgStorage;
 
 typedef struct {
@@ -833,6 +842,7 @@ struct MonoCallInst {
        GSList *out_ireg_args;
        GSList *out_freg_args;
        GSList *outarg_vts;
+       gpointer call_info;
 #ifdef ENABLE_LLVM
        LLVMCallInfo *cinfo;
        int rgctx_arg_reg, imt_arg_reg;
@@ -859,6 +869,7 @@ enum {
        MONO_INST_TAILCALL   = 4,
        MONO_INST_VOLATILE   = 4,
        MONO_INST_NOTYPECHECK    = 4,
+       MONO_INST_NONEMPTY_STACK = 4, /* in SEQ_POINT */
        MONO_INST_UNALIGNED  = 8,
     MONO_INST_CFOLD_TAKEN = 8, /* On branches */
     MONO_INST_CFOLD_NOT_TAKEN = 16, /* On branches */
@@ -874,7 +885,7 @@ enum {
         */
        MONO_INST_LMF = 32,
        /* On loads, the source address points to a constant value */
-       MONO_INST_CONSTANT_LOAD = 64,
+       MONO_INST_INVARIANT_LOAD = 64,
        /* On variables, the variable needs GC tracking */
        MONO_INST_GC_TRACK = 128,
        /*
@@ -1072,7 +1083,20 @@ typedef enum {
        MONO_RGCTX_INFO_METHOD_GSHAREDVT_OUT_TRAMPOLINE_VIRT,
        /* Same for calli, associated with a signature */
        MONO_RGCTX_INFO_SIG_GSHAREDVT_OUT_TRAMPOLINE_CALLI,
-       MONO_RGCTX_INFO_CLASS_IS_REF
+       /*
+        * 0 - vtype
+        * 1 - ref
+        * 2 - gsharedvt type
+        */
+       MONO_RGCTX_INFO_CLASS_BOX_TYPE,
+       /* Resolves to a MonoGSharedVtMethodRuntimeInfo */
+       MONO_RGCTX_INFO_METHOD_GSHAREDVT_INFO,
+       MONO_RGCTX_INFO_LOCAL_OFFSET,
+       MONO_RGCTX_INFO_MEMCPY,
+       MONO_RGCTX_INFO_BZERO,
+       /* The address of Nullable<T>.Box () */
+       MONO_RGCTX_INFO_NULLABLE_CLASS_BOX,
+       MONO_RGCTX_INFO_NULLABLE_CLASS_UNBOX,
 } MonoRgctxInfoType;
 
 typedef struct _MonoRuntimeGenericContextInfoTemplate {
@@ -1102,6 +1126,23 @@ typedef struct {
 
 #define MONO_GSHAREDVT_DEL_INVOKE_VT_OFFSET -2
 
+typedef struct {
+       MonoMethod *method;
+       /* Array of MonoRuntimeGenericContextInfoTemplate* entries */
+       GPtrArray *entries;
+} MonoGSharedVtMethodInfo;
+
+/* This is used by gsharedvt methods to allocate locals and compute local offsets */
+typedef struct {
+       int locals_size;
+       /*
+        * The results of resolving the entries in MOonGSharedVtMethodInfo->entries.
+        * We use this instead of rgctx slots since these can be loaded using a load instead
+        * of a call to an rgctx fetch trampoline.
+        */
+       gpointer entries [MONO_ZERO_LEN_ARRAY];
+} MonoGSharedVtMethodRuntimeInfo;
+
 typedef enum {
 #define PATCH_INFO(a,b) MONO_PATCH_INFO_ ## a,
 #include "patch-info.h"
@@ -1139,6 +1180,8 @@ typedef struct MonoJumpInfoGSharedVtCall MonoJumpInfoGSharedVtCall;
 typedef struct MonoJumpInfo MonoJumpInfo;
 struct MonoJumpInfo {
        MonoJumpInfo *next;
+       /* Relocation type for patching */
+       int relocation;
        union {
                int i;
                guint8 *p;
@@ -1166,6 +1209,7 @@ struct MonoJumpInfo {
                MonoJumpInfoRgctxEntry *rgctx_entry;
                MonoJumpInfoImtTramp *imt_tramp;
                MonoJumpInfoGSharedVtCall *gsharedvt;
+               MonoGSharedVtMethodInfo *gsharedvt_method;
                MonoMethodSignature *sig;
        } data;
 };
@@ -1196,15 +1240,11 @@ typedef enum {
        MONO_TRAMPOLINE_AOT_PLT,
        MONO_TRAMPOLINE_DELEGATE,
        MONO_TRAMPOLINE_RESTORE_STACK_PROT,
-#ifndef DISABLE_REMOTING
        MONO_TRAMPOLINE_GENERIC_VIRTUAL_REMOTING,
-#endif
        MONO_TRAMPOLINE_MONITOR_ENTER,
        MONO_TRAMPOLINE_MONITOR_EXIT,
        MONO_TRAMPOLINE_VCALL,
-#ifdef MONO_ARCH_HAVE_HANDLER_BLOCK_GUARD
        MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD,
-#endif
        MONO_TRAMPOLINE_NUM
 } MonoTrampolineType;
 
@@ -1216,6 +1256,13 @@ typedef enum {
         (t) == MONO_TRAMPOLINE_MONITOR_ENTER ||        \
         (t) == MONO_TRAMPOLINE_MONITOR_EXIT)
 
+/* These trampolines receive an argument directly in a register */
+#define MONO_TRAMPOLINE_TYPE_HAS_ARG(t)                \
+       ((t) == MONO_TRAMPOLINE_GENERIC_CLASS_INIT ||   \
+        (t) == MONO_TRAMPOLINE_MONITOR_ENTER ||                \
+        (t) == MONO_TRAMPOLINE_MONITOR_EXIT ||                 \
+        (t) == MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD)
+
 /* optimization flags */
 #define OPTFLAG(id,shift,name,descr) MONO_OPT_ ## id = 1 << shift,
 enum {
@@ -1324,9 +1371,23 @@ typedef struct {
 
        gboolean gsharedvt;
 
+       MonoGSharedVtMethodInfo *gsharedvt_info;
+
+       /* Points to the gsharedvt locals area at runtime */
+       MonoInst *gsharedvt_locals_var;
+
+       /* The localloc instruction used to initialize gsharedvt_locals_var */
+       MonoInst *gsharedvt_locals_var_ins;
+
+       /* Points to a MonoGSharedVtMethodRuntimeInfo at runtime */
+       MonoInst *gsharedvt_info_var;
+
        /* For native-to-managed wrappers, the saved old domain */
        MonoInst *orig_domain_var;
 
+       MonoInst *lmf_var;
+       MonoInst *lmf_addr_var;
+
        unsigned char   *cil_start;
 #ifdef __native_client_codegen__
        /* this alloc is not aligned, native_code */
@@ -1372,6 +1433,17 @@ typedef struct {
        guint            disable_vreg_to_lvreg : 1;
        guint            disable_deadce_vars : 1;
        guint            disable_out_of_line_bblocks : 1;
+       guint            create_lmf_var : 1;
+       /*
+        * When this is set, the code to push/pop the LMF from the LMF stack is generated as IR
+        * instead of being generated in emit_prolog ()/emit_epilog ().
+        */
+       guint            lmf_ir : 1;
+       /*
+        * Whenever to use the mono_lmf TLS variable instead of indirection through the
+        * mono_lmf_addr TLS variable.
+        */
+       guint            lmf_ir_mono_lmf : 1;
        guint            gen_write_barriers : 1;
        guint            init_ref_vars : 1;
        guint            extend_live_ranges : 1;
@@ -1386,6 +1458,7 @@ typedef struct {
        guint            compute_gc_maps : 1;
        guint            soft_breakpoints : 1;
        guint            arch_eh_jit_info : 1;
+       guint            has_indirection : 1;
        gpointer         debug_info;
        guint32          lmf_offset;
     guint16          *intvars;
@@ -1472,7 +1545,7 @@ typedef struct {
        GSList *headers_to_free;
 
        /* Used by AOT */
-       guint32 got_offset, ex_info_offset, method_info_offset;
+       guint32 got_offset, ex_info_offset, method_info_offset, method_index;
        /* Symbol used to refer to this method in generated assembly */
        char *asm_symbol;
        char *llvm_method_name;
@@ -1555,6 +1628,10 @@ typedef struct {
        gint32 cas_linkdemand;
        gint32 cas_demand_generation;
        gint32 generic_virtual_invocations;
+       gint32 alias_found;
+       gint32 alias_removed;
+       gint32 loads_eliminated;
+       gint32 stores_eliminated;
        int methods_with_llvm;
        int methods_without_llvm;
        char *max_ratio_method;
@@ -1816,8 +1893,8 @@ enum {
 typedef void (*MonoInstFunc) (MonoInst *tree, gpointer data);
 
 /* main function */
-int         mono_main                      (int argc, char* argv[]);
-void        mono_set_defaults              (int verbose_level, guint32 opts);
+MONO_API int         mono_main                      (int argc, char* argv[]);
+MONO_API void        mono_set_defaults              (int verbose_level, guint32 opts);
 MonoDomain* mini_init                      (const char *filename, const char *runtime_version) MONO_INTERNAL;
 void        mini_cleanup                   (MonoDomain *domain) MONO_INTERNAL;
 MonoDebugOptions *mini_get_debug_options   (void) MONO_INTERNAL;
@@ -1825,6 +1902,7 @@ MonoDebugOptions *mini_get_debug_options   (void) MONO_INTERNAL;
 /* helper methods */
 void      mono_disable_optimizations       (guint32 opts) MONO_INTERNAL;
 void      mono_set_optimizations           (guint32 opts) MONO_INTERNAL;
+guint32   mono_get_optimizations_for_method (MonoMethod *method, guint32 default_opt) MONO_INTERNAL;
 void      mono_set_verbose_level           (guint32 level) MONO_INTERNAL;
 MonoJumpInfoToken* mono_jump_info_token_new (MonoMemPool *mp, MonoImage *image, guint32 token) MONO_INTERNAL;
 MonoJumpInfoToken* mono_jump_info_token_new2 (MonoMemPool *mp, MonoImage *image, guint32 token, MonoGenericContext *context) MONO_INTERNAL;
@@ -1833,7 +1911,7 @@ MonoInst* mono_find_exvar_for_offset        (MonoCompile *cfg, int offset) MONO_
 int       mono_get_block_region_notry       (MonoCompile *cfg, int region) MONO_LLVM_INTERNAL;
 
 void      mono_precompile_assemblies        (void) MONO_INTERNAL;
-int       mono_parse_default_optimizations  (const char* p);
+MONO_API int       mono_parse_default_optimizations  (const char* p);
 void      mono_bblock_add_inst              (MonoBasicBlock *bb, MonoInst *inst) MONO_LLVM_INTERNAL;
 void      mono_bblock_insert_after_ins      (MonoBasicBlock *bb, MonoInst *ins, MonoInst *ins_to_insert) MONO_INTERNAL;
 void      mono_bblock_insert_before_ins     (MonoBasicBlock *bb, MonoInst *ins, MonoInst *ins_to_insert) MONO_INTERNAL;
@@ -1874,10 +1952,10 @@ void      mono_print_ins_index              (int i, MonoInst *ins) MONO_INTERNAL
 void      mono_print_ins                    (MonoInst *ins) MONO_INTERNAL;
 void      mono_print_bb                     (MonoBasicBlock *bb, const char *msg) MONO_INTERNAL;
 void      mono_print_code                   (MonoCompile *cfg, const char *msg) MONO_INTERNAL;
-void      mono_print_method_from_ip         (void *ip);
-char     *mono_pmip                         (void *ip);
+MONO_API void      mono_print_method_from_ip         (void *ip);
+MONO_API char     *mono_pmip                         (void *ip);
 gboolean  mono_debug_count                  (void) MONO_INTERNAL;
-const char* mono_inst_name                  (int op);
+MONO_API const char* mono_inst_name                  (int op);
 void      mono_inst_set_src_registers       (MonoInst *ins, int *regs) MONO_INTERNAL;
 int       mono_op_to_op_imm                 (int opcode) MONO_INTERNAL;
 int       mono_op_imm_to_op                 (int opcode) MONO_INTERNAL;
@@ -1888,6 +1966,7 @@ guint     mini_type_to_stind                (MonoCompile* cfg, MonoType *type) M
 guint32   mono_reverse_branch_op            (guint32 opcode) MONO_INTERNAL;
 void      mono_disassemble_code             (MonoCompile *cfg, guint8 *code, int size, char *id) MONO_INTERNAL;
 void      mono_add_patch_info               (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target) MONO_LLVM_INTERNAL;
+void      mono_add_patch_info_rel           (MonoCompile *cfg, int ip, MonoJumpInfoType type, gconstpointer target, int relocation) MONO_LLVM_INTERNAL;
 void      mono_remove_patch_info            (MonoCompile *cfg, int ip) MONO_INTERNAL;
 MonoJumpInfo* mono_patch_info_dup_mp        (MonoMemPool *mp, MonoJumpInfo *patch_info) MONO_INTERNAL;
 guint     mono_patch_info_hash (gconstpointer data) MONO_INTERNAL;
@@ -1900,16 +1979,19 @@ gpointer  mono_jit_compile_method           (MonoMethod *method) MONO_INTERNAL;
 MonoLMF * mono_get_lmf                      (void) MONO_INTERNAL;
 MonoLMF** mono_get_lmf_addr                 (void) MONO_INTERNAL;
 void      mono_set_lmf                      (MonoLMF *lmf) MONO_INTERNAL;
-MonoDomain *mono_jit_thread_attach          (MonoDomain *domain);
-void      mono_jit_set_domain               (MonoDomain *domain);
+MONO_API MonoDomain *mono_jit_thread_attach          (MonoDomain *domain);
+MONO_API void      mono_jit_set_domain               (MonoDomain *domain);
 MonoNativeTlsKey mono_get_jit_tls_key       (void) MONO_INTERNAL;
 gint32    mono_get_jit_tls_offset           (void) MONO_INTERNAL;
 gint32    mono_get_lmf_tls_offset           (void) MONO_INTERNAL;
 gint32    mono_get_lmf_addr_tls_offset      (void) MONO_INTERNAL;
+int       mini_get_tls_offset               (MonoTlsKey key) MONO_INTERNAL;
+MonoInst* mono_create_tls_get               (MonoCompile *cfg, MonoTlsKey key) MONO_INTERNAL;
 MonoInst* mono_get_jit_tls_intrinsic        (MonoCompile *cfg) MONO_INTERNAL;
 MonoInst* mono_get_domain_intrinsic         (MonoCompile* cfg) MONO_INTERNAL;
 MonoInst* mono_get_thread_intrinsic         (MonoCompile* cfg) MONO_INTERNAL;
 MonoInst* mono_get_lmf_intrinsic            (MonoCompile* cfg) MONO_INTERNAL;
+MonoInst* mono_get_lmf_addr_intrinsic       (MonoCompile* cfg) MONO_INTERNAL;
 GList    *mono_varlist_insert_sorted        (MonoCompile *cfg, GList *list, MonoMethodVar *mv, int sort_type) MONO_INTERNAL;
 GList    *mono_varlist_sort                 (MonoCompile *cfg, GList *list, int sort_type) MONO_INTERNAL;
 void      mono_analyze_liveness             (MonoCompile *cfg) MONO_INTERNAL;
@@ -1957,14 +2039,24 @@ void mono_nacl_fix_patches(const guint8 *code, MonoJumpInfo *ji);
 guint8 *mono_arch_nacl_pad(guint8 *code, int pad);
 guint8 *mono_arch_nacl_skip_nops(guint8 *code);
 
-extern const guint kNaClAlignment;
-extern const guint kNaClAlignmentMask;
+#if defined(TARGET_X86)
+#define kNaClAlignment kNaClAlignmentX86
+#define kNaClAlignmentMask kNaClAlignmentMaskX86
+#elif defined(TARGET_AMD64)
+#define kNaClAlignment kNaClAlignmentAMD64
+#define kNaClAlignmentMask kNaClAlignmentMaskAMD64
+#elif defined(TARGET_ARM)
+#define kNaClAlignment kNaClAlignmentARM
+#define kNaClAlignmentMask kNaClAlignmentMaskARM
+#endif
+
+#define NACL_BUNDLE_ALIGN_UP(p) ((((p)+kNaClAlignmentMask)) & ~kNaClAlignmentMask)
 #endif
 
 #if defined(__native_client__) || defined(__native_client_codegen__)
 extern volatile int __nacl_thread_suspension_needed;
-extern void __nacl_suspend_thread_if_needed();
-void mono_nacl_gc();
+void __nacl_suspend_thread_if_needed(void);
+void mono_nacl_gc(void);
 #endif
 
 #if defined(__native_client_codegen__) || defined(__native_client__)
@@ -1973,6 +2065,12 @@ void mono_nacl_gc();
 #define NACL_SIZE(a, b) (a)
 #endif
 
+static inline MonoMethod*
+jinfo_get_method (MonoJitInfo *ji)
+{
+       return mono_jit_info_get_method (ji);
+}
+
 /* AOT */
 void      mono_aot_init                     (void) MONO_INTERNAL;
 void      mono_aot_cleanup                  (void) MONO_INTERNAL;
@@ -2002,6 +2100,7 @@ MonoMethod* mono_aot_get_array_helper_from_wrapper (MonoMethod *method) MONO_INT
 guint32  mono_aot_get_got_offset            (MonoJumpInfo *ji) MONO_LLVM_INTERNAL;
 char*    mono_aot_get_method_name           (MonoCompile *cfg) MONO_LLVM_INTERNAL;
 char*    mono_aot_get_plt_symbol            (MonoJumpInfoType type, gconstpointer data) MONO_LLVM_INTERNAL;
+int      mono_aot_get_method_index          (MonoMethod *method) MONO_LLVM_INTERNAL;
 MonoJumpInfo* mono_aot_patch_info_dup       (MonoJumpInfo* ji) MONO_LLVM_INTERNAL;
 void     mono_aot_set_make_unreadable       (gboolean unreadable) MONO_INTERNAL;
 gboolean mono_aot_is_pagefault              (void *ptr) MONO_INTERNAL;
@@ -2010,11 +2109,11 @@ void     mono_aot_register_jit_icall        (const char *name, gpointer addr) MO
 void*    mono_aot_readonly_field_override   (MonoClassField *field) MONO_INTERNAL;
 
 /* This is an exported function */
-void     mono_aot_register_globals          (gpointer *globals);
+MONO_API void     mono_aot_register_globals          (gpointer *globals);
 /* This too */
-void     mono_aot_register_module           (gpointer *aot_info);
+MONO_API void     mono_aot_register_module           (gpointer *aot_info);
 
-void     mono_xdebug_init                   (char *xdebug_opts) MONO_INTERNAL;
+void     mono_xdebug_init                   (const char *xdebug_opts) MONO_INTERNAL;
 void     mono_save_xdebug_info              (MonoCompile *cfg) MONO_INTERNAL;
 void     mono_save_trampoline_xdebug_info   (MonoTrampInfo *info) MONO_INTERNAL;
 /* This is an exported function */
@@ -2037,7 +2136,7 @@ void      mono_draw_graph                   (MonoCompile *cfg, MonoGraphOptions
 void      mono_add_ins_to_end               (MonoBasicBlock *bb, MonoInst *inst) MONO_INTERNAL;
 gpointer  mono_create_ftnptr                (MonoDomain *domain, gpointer addr) MONO_INTERNAL;
 
-void      mono_replace_ins                  (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, MonoInst **prev, MonoBasicBlock *first_bb, MonoBasicBlock *last_bb);
+MONO_API void      mono_replace_ins                  (MonoCompile *cfg, MonoBasicBlock *bb, MonoInst *ins, MonoInst **prev, MonoBasicBlock *first_bb, MonoBasicBlock *last_bb);
 
 int               mono_find_method_opcode      (MonoMethod *method) MONO_INTERNAL;
 MonoJitICallInfo *mono_register_jit_icall      (gconstpointer func, const char *name, MonoMethodSignature *sig, gboolean is_save) MONO_INTERNAL;
@@ -2080,7 +2179,9 @@ gconstpointer     mono_get_trampoline_func (MonoTrampolineType tramp_type);
 gpointer          mini_get_vtable_trampoline (int slot_index) MONO_INTERNAL;
 char*             mono_get_generic_trampoline_name (MonoTrampolineType tramp_type) MONO_INTERNAL;
 char*             mono_get_rgctx_fetch_trampoline_name (int slot) MONO_INTERNAL;
-gpointer          mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer compiled_method, gboolean add_static_rgctx_tramp) MONO_INTERNAL;
+gpointer          mini_get_nullified_class_init_trampoline (void) MONO_INTERNAL;
+gpointer          mini_add_method_trampoline (MonoMethod *orig_method, MonoMethod *m, gpointer compiled_method, gboolean add_static_rgctx_tramp, gboolean add_unbox_tramp) MONO_INTERNAL;
+gboolean          mini_jit_info_is_gsharedvt (MonoJitInfo *ji) MONO_INTERNAL;
 
 gboolean          mono_running_on_valgrind (void) MONO_INTERNAL;
 void*             mono_global_codeman_reserve (int size) MONO_INTERNAL;
@@ -2110,6 +2211,8 @@ void              mono_emit_unwind_op (MonoCompile *cfg, int when,
                                                                           int val) MONO_INTERNAL;
 MonoTrampInfo*    mono_tramp_info_create (const char *name, guint8 *code, guint32 code_size, MonoJumpInfo *ji, GSList *unwind_ops) MONO_INTERNAL;
 void              mono_tramp_info_free (MonoTrampInfo *info) MONO_INTERNAL;
+void              mono_tramp_info_register (MonoTrampInfo *info) MONO_INTERNAL;
+int               mini_exception_id_by_name (const char *name) MONO_INTERNAL;
 
 int               mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_bblock, MonoBasicBlock *end_bblock, 
                                                                         MonoInst *return_var, GList *dont_inline, MonoInst **inline_args, 
@@ -2189,6 +2292,17 @@ gboolean  mono_arch_gsharedvt_sig_supported     (MonoMethodSignature *sig) MONO_
 gpointer  mono_arch_get_gsharedvt_trampoline    (MonoTrampInfo **info, gboolean aot) MONO_INTERNAL;
 gpointer  mono_arch_get_gsharedvt_call_info     (gpointer addr, MonoMethodSignature *normal_sig, MonoMethodSignature *gsharedvt_sig, MonoGenericSharingContext *gsctx, gboolean gsharedvt_in, gint32 vcall_offset, gboolean calli) MONO_INTERNAL;
 gboolean  mono_arch_opcode_needs_emulation      (MonoCompile *cfg, int opcode) MONO_INTERNAL;
+gboolean  mono_arch_tail_call_supported         (MonoMethodSignature *caller_sig, MonoMethodSignature *callee_sig) MONO_INTERNAL;
+
+#ifdef MONO_ARCH_SOFT_FLOAT_FALLBACK
+gboolean  mono_arch_is_soft_float               (void) MONO_INTERNAL;
+#else
+static inline MONO_ALWAYS_INLINE gboolean
+mono_arch_is_soft_float (void)
+{
+       return FALSE;
+}
+#endif
 
 /* Soft Debug support */
 #ifdef MONO_ARCH_SOFT_DEBUG_SUPPORTED
@@ -2295,8 +2409,8 @@ typedef gboolean (*MonoJitStackWalk)            (StackFrameInfo *frame, MonoCont
 void     mono_exceptions_init                   (void) MONO_INTERNAL;
 gboolean mono_handle_exception                  (MonoContext *ctx, gpointer obj) MONO_INTERNAL;
 void     mono_handle_native_sigsegv             (int signal, void *sigctx) MONO_INTERNAL;
-void     mono_print_thread_dump                 (void *sigctx);
-void     mono_print_thread_dump_from_ctx        (MonoContext *ctx);
+MONO_API void     mono_print_thread_dump                 (void *sigctx);
+MONO_API void     mono_print_thread_dump_from_ctx        (MonoContext *ctx);
 void     mono_walk_stack_with_ctx               (MonoJitStackWalk func, MonoContext *start_ctx, MonoUnwindOptions unwind_options, void *user_data) MONO_INTERNAL;
 void     mono_walk_stack_with_state             (MonoJitStackWalk func, MonoThreadUnwindState *state, MonoUnwindOptions unwind_options, void *user_data) MONO_INTERNAL;
 void     mono_walk_stack                        (MonoJitStackWalk func, MonoUnwindOptions options, void *user_data) MONO_INTERNAL;
@@ -2314,6 +2428,7 @@ MonoJitInfo * mono_find_jit_info                (MonoDomain *domain, MonoJitTlsD
 
 typedef gboolean (*MonoExceptionFrameWalk)      (MonoMethod *method, gpointer ip, size_t native_offset, gboolean managed, gpointer user_data);
 gboolean mono_exception_walk_trace              (MonoException *ex, MonoExceptionFrameWalk func, gpointer user_data);
+void mono_restore_context                       (MonoContext *ctx) MONO_INTERNAL;
 
 gboolean
 mono_find_jit_info_ext (MonoDomain *domain, MonoJitTlsData *jit_tls, 
@@ -2355,6 +2470,7 @@ void        mono_ssa_cprop                      (MonoCompile *cfg) MONO_INTERNAL
 void        mono_ssa_deadce                     (MonoCompile *cfg) MONO_INTERNAL;
 void        mono_ssa_strength_reduction         (MonoCompile *cfg) MONO_INTERNAL;
 void        mono_free_loop_info                 (MonoCompile *cfg) MONO_INTERNAL;
+void        mono_ssa_loop_invariant_code_motion (MonoCompile *cfg) MONO_INTERNAL;
 
 void        mono_ssa_compute2                   (MonoCompile *cfg);
 void        mono_ssa_remove2                    (MonoCompile *cfg);
@@ -2374,12 +2490,12 @@ void      mono_debug_add_aot_method             (MonoDomain *domain,
                                                 MonoMethod *method, guint8 *code_start, 
                                                 guint8 *debug_info, guint32 debug_info_len) MONO_INTERNAL;
 void      mono_debug_add_icall_wrapper          (MonoMethod *method, MonoJitICallInfo* info) MONO_INTERNAL;
-void      mono_debug_print_vars                 (gpointer ip, gboolean only_arguments);
-void      mono_debugger_run_finally             (MonoContext *start_ctx);
+MONO_API void      mono_debug_print_vars                 (gpointer ip, gboolean only_arguments);
+MONO_API void      mono_debugger_run_finally             (MonoContext *start_ctx);
 
 extern gssize mono_breakpoint_info_index [MONO_BREAKPOINT_ARRAY_SIZE];
 
-gboolean mono_breakpoint_clean_code (guint8 *method_start, guint8 *code, int offset, guint8 *buf, int size);
+MONO_API gboolean mono_breakpoint_clean_code (guint8 *method_start, guint8 *code, int offset, guint8 *buf, int size);
 
 #ifdef MONO_DEBUGGER_SUPPORTED
 
@@ -2408,6 +2524,8 @@ extern void
 mono_local_cprop (MonoCompile *cfg);
 extern void
 mono_local_deadce (MonoCompile *cfg);
+void
+mono_local_alias_analysis (MonoCompile *cfg) MONO_INTERNAL;
 
 /* CAS - stack walk */
 MonoSecurityFrame* ves_icall_System_Security_SecurityFrame_GetSecurityFrame (gint32 skip) MONO_INTERNAL;
@@ -2421,6 +2539,9 @@ mono_set_generic_sharing_supported (gboolean supported) MONO_INTERNAL;
 void
 mono_set_generic_sharing_vt_supported (gboolean supported) MONO_INTERNAL;
 
+void
+mono_set_partial_sharing_supported (gboolean supported) MONO_INTERNAL;
+
 gboolean
 mono_class_generic_sharing_enabled (MonoClass *class) MONO_INTERNAL;
 
@@ -2436,6 +2557,9 @@ mono_method_lookup_rgctx (MonoVTable *class_vtable, MonoGenericInst *method_inst
 const char*
 mono_rgctx_info_type_to_str (MonoRgctxInfoType type) MONO_INTERNAL;
 
+MonoJumpInfoType
+mini_rgctx_info_type_to_patch_info_type (MonoRgctxInfoType info_type) MONO_INTERNAL;
+
 gboolean
 mono_method_needs_static_rgctx_invoke (MonoMethod *method, gboolean allow_type_vars) MONO_INTERNAL;
 
@@ -2468,10 +2592,10 @@ gboolean
 mono_method_is_generic_impl (MonoMethod *method) MONO_INTERNAL;
 
 gboolean
-mono_method_is_generic_sharable_impl (MonoMethod *method, gboolean allow_type_vars) MONO_INTERNAL;
+mono_method_is_generic_sharable (MonoMethod *method, gboolean allow_type_vars) MONO_INTERNAL;
 
 gboolean
-mono_method_is_generic_sharable_impl_full (MonoMethod *method, gboolean allow_type_vars, gboolean allow_partial, gboolean allow_gsharedvt) MONO_INTERNAL;
+mono_method_is_generic_sharable_full (MonoMethod *method, gboolean allow_type_vars, gboolean allow_partial, gboolean allow_gsharedvt) MONO_INTERNAL;
 
 gboolean
 mini_class_is_generic_sharable (MonoClass *klass) MONO_INTERNAL;
@@ -2519,7 +2643,6 @@ gboolean mini_is_gsharedvt_type (MonoCompile *cfg, MonoType *t) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_signature (MonoCompile *cfg, MonoMethodSignature *sig) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_type_gsctx (MonoGenericSharingContext *gsctx, MonoType *t) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_variable_type (MonoCompile *cfg, MonoType *t) MONO_INTERNAL;
-MonoType* mini_get_gsharedvt_alloc_type_for_type (MonoCompile *cfg, MonoType *t); /* should be internal but it's used by llvm */
 gboolean mini_is_gsharedvt_sharable_method (MonoMethod *method) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_variable_signature (MonoMethodSignature *sig) MONO_INTERNAL;
 gboolean mini_is_gsharedvt_sharable_inst (MonoGenericInst *inst) MONO_INTERNAL;
@@ -2639,15 +2762,19 @@ void mono_gdb_render_native_backtraces (pid_t crashed_pid) MONO_INTERNAL;
 
 #ifdef MONO_ARCH_USE_SIGACTION
 #define SIG_HANDLER_SIGNATURE(ftn) ftn (int _dummy, siginfo_t *info, void *context)
+#define SIG_HANDLER_FUNC(access, ftn) MONO_SIGNAL_HANDLER_FUNC (access, ftn, (int _dummy, siginfo_t *info, void *context))
 #define SIG_HANDLER_PARAMS _dummy, info, context
 #elif defined(HOST_WIN32)
 #define SIG_HANDLER_SIGNATURE(ftn) ftn (int _dummy, EXCEPTION_POINTERS *info, void *context)
+#define SIG_HANDLER_FUNC(access, ftn) MONO_SIGNAL_HANDLER_FUNC (access, ftn, (int _dummy, EXCEPTION_POINTERS *info, void *context))
 #define SIG_HANDLER_PARAMS _dummy, info, context
 #elif defined(__HAIKU__)
 #define SIG_HANDLER_SIGNATURE(ftn) ftn (int _dummy, void *userData, vregs regs)
+#define SIG_HANDLER_FUNC(access, ftn) MONO_SIGNAL_HANDLER_FUNC (access, ftn, (int _dummy, void *userData, vregs regs))
 #define SIG_HANDLER_PARAMS _dummy, userData, regs
 #else
 #define SIG_HANDLER_SIGNATURE(ftn) ftn (int _dummy)
+#define SIG_HANDLER_FUNC(access, ftn) MONO_SIGNAL_HANDLER_FUNC (access, ftn, (int _dummy))
 #define SIG_HANDLER_PARAMS _dummy
 #endif
 
@@ -2657,4 +2784,52 @@ void SIG_HANDLER_SIGNATURE (mono_sigsegv_signal_handler) MONO_INTERNAL;
 void SIG_HANDLER_SIGNATURE (mono_sigint_signal_handler)  MONO_INTERNAL;
 gboolean SIG_HANDLER_SIGNATURE (mono_chain_signal) MONO_INTERNAL;
 
+#ifdef MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE
+#define ARCH_HAVE_DELEGATE_TRAMPOLINES 1
+#else
+#define ARCH_HAVE_DELEGATE_TRAMPOLINES 0
+#endif
+
+#ifdef MONO_ARCH_HAVE_OP_TAIL_CALL
+#define ARCH_HAVE_OP_TAIL_CALL 1
+#else
+#define ARCH_HAVE_OP_TAIL_CALL 0
+#endif
+
+#ifndef MONO_ARCH_HAVE_TLS_GET
+#define MONO_ARCH_HAVE_TLS_GET 0
+#endif
+
+#ifdef MONO_ARCH_HAVE_TLS_GET_REG
+#define ARCH_HAVE_TLS_GET_REG 1
+#else
+#define ARCH_HAVE_TLS_GET_REG 0
+#endif
+
+#ifdef MONO_ARCH_EMULATE_MUL_DIV
+#define ARCH_EMULATE_MUL_DIV 1
+#else
+#define ARCH_EMULATE_MUL_DIV 0
+#endif
+
+#ifndef MONO_ARCH_MONITOR_ENTER_ADJUSTMENT
+#define MONO_ARCH_MONITOR_ENTER_ADJUSTMENT 1
+#endif
+
+#ifndef MONO_ARCH_DYN_CALL_PARAM_AREA
+#define MONO_ARCH_DYN_CALL_PARAM_AREA 0
+#endif
+
+#ifdef MONO_ARCH_HAVE_IMT
+#define ARCH_HAVE_IMT 1
+#else
+#define ARCH_HAVE_IMT 0
+#endif
+
+#ifdef MONO_ARCH_VARARG_ICALLS
+#define ARCH_VARARG_ICALLS 1
+#else
+#define ARCH_VARARG_ICALLS 0
+#endif
+
 #endif /* __MONO_MINI_H__ */
index a16871b226c11a4b0c8f148328e4a6dafffd529f..40c79e6280f38c5376fc57c0958b8ee60721e0d2 100644 (file)
@@ -26,6 +26,11 @@ using System.Runtime.CompilerServices;
  * the IL code looks.
  */
 
+#if MOBILE
+namespace ObjectTests
+{
+#endif
+
 struct Simple {
        public int a;
        public byte b;
@@ -114,9 +119,11 @@ struct Gamma {
 
 class Tests {
 
+#if !MOBILE
        public static int Main (string[] args) {
                return TestDriver.RunTests (typeof (Tests), args);
        }
+#endif
        
        public static int test_0_return () {
                Simple s;
@@ -1589,11 +1596,37 @@ ncells ) {
        public static int test_0_llvm_inline_throw () {
                try {
                        empty ();
-               } catch (Exception ex) {
+               } catch (Exception) {
                        do_throw ();
                }
 
                return 0;
        }
+
+       enum ByteEnum : byte {
+        Zero = 0
+    }
+
+    struct BugStruct {
+        public ByteEnum f1;
+        public ByteEnum f2;
+        public ByteEnum f3;
+        public byte f4;
+        public byte f5;
+        public byte f6;
+        public byte f7;
+    }
+
+       public static int test_0_14217 () {
+               t_14217_inner (new BugStruct ());
+               return 0;
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       static void t_14217_inner (BugStruct bug) {
+    }
 }
 
+#if MOBILE
+}
+#endif
index 0e754329ae7e9bc78d7d85dc53f497d7049aa847..bee894bdc5571b11a7fe175c8f100d141e58b217 100644 (file)
@@ -26,3 +26,4 @@ OPTFLAG(GSHARED  ,25, "gshared",    "Generic Sharing")
 OPTFLAG(GSHAREDVT,24, "gsharedvt",     "Generic sharing for valuetypes")
 OPTFLAG(SIMD    ,26, "simd",       "Simd intrinsics")
 OPTFLAG(UNSAFE  ,27, "unsafe",     "Remove bound checks and perform other dangerous changes")
+OPTFLAG(ALIAS_ANALYSIS  ,28, "alias-analysis",      "Alias analysis of locals")
index 2ef31a4f9f4a5878a78c1c29651df1df7b89324f..a966be512bb0a9243384b868dcfc733fa9c0fec2 100644 (file)
@@ -46,6 +46,11 @@ PATCH_INFO(GC_CARD_TABLE_ADDR, "gc_card_table_addr")
 PATCH_INFO(CASTCLASS_CACHE, "castclass_cache")
 PATCH_INFO(SIGNATURE, "signature")
 PATCH_INFO(GSHAREDVT_CALL, "gsharedvt_call")
+PATCH_INFO(GSHAREDVT_METHOD, "gsharedvt_method")
 PATCH_INFO(JIT_TLS_ID, "jit_tls_id")
+PATCH_INFO(TLS_OFFSET, "tls_offset")
+PATCH_INFO(OBJC_SELECTOR_REF, "objc_selector_ref")
 PATCH_INFO(NONE, "none")
 
+
+
index 098ff5d4b2224cace181f5ee13b093c5f57fa077..b2fb35067a98f1138a964d8f583d4a1d81426298 100644 (file)
@@ -252,17 +252,20 @@ handle_reg_constraints (MonoCompile *cfg)
                cfg->cbb = bb;
                MONO_BB_FOR_EACH_INS (bb, ins) {
                        const char *spec = ins_get_spec (ins->opcode);
-                       int dest_sreg1, dest_sreg2, dest_dreg;
+                       int dest_sreg1, dest_sreg2, dest_sreg3, dest_dreg;
 
                        dest_sreg1 = MONO_ARCH_INST_FIXED_REG (spec [MONO_INST_SRC1]);
                        dest_sreg2 = MONO_ARCH_INST_FIXED_REG (spec [MONO_INST_SRC2]);
+                       dest_sreg3 = MONO_ARCH_INST_FIXED_REG (spec [MONO_INST_SRC3]);
                        dest_dreg = MONO_ARCH_INST_FIXED_REG (spec [MONO_INST_DEST]);
 
                        if (MONO_ARCH_INST_IS_REGPAIR (spec [MONO_INST_DEST]) ||
-                               MONO_ARCH_INST_IS_REGPAIR (spec [MONO_INST_SRC1]) ||
-                               MONO_ARCH_INST_IS_REGPAIR (spec [MONO_INST_SRC2]))
+                                       MONO_ARCH_INST_IS_REGPAIR (spec [MONO_INST_SRC1]) ||
+                                       MONO_ARCH_INST_IS_REGPAIR (spec [MONO_INST_SRC2]) ||
+                                       MONO_ARCH_INST_IS_REGPAIR (spec [MONO_INST_SRC3])) {
                                /* FIXME: */
                                g_assert_not_reached ();
+                       }
 
                        if (spec [MONO_INST_CLOB] == 'c') {
                                MonoCallInst *call = (MonoCallInst*)ins;
@@ -303,7 +306,7 @@ handle_reg_constraints (MonoCompile *cfg)
 
                        if (spec [MONO_INST_CLOB] == '1') {
                                /* Copying sreg1 to dreg could clobber sreg2 so make a copy of sreg2 */
-                               if (spec [MONO_INST_SRC2] && (ins->dreg == ins->sreg2)) {
+                               if (spec [MONO_INST_SRC2] != ' ' && (ins->dreg == ins->sreg2)) {
                                        int new_sreg2 = mono_alloc_preg (cfg);
                                        MonoInst *move;
                                        g_assert (spec [MONO_INST_DEST] != 'f');
@@ -312,6 +315,7 @@ handle_reg_constraints (MonoCompile *cfg)
                                        prev = move;
                                        ins->sreg2 = new_sreg2;
                                }
+                               g_assert (!(spec [MONO_INST_SRC3] != ' ' && (ins->dreg == ins->sreg3)));
                                if (spec [MONO_INST_DEST] == 'f')
                                        emit_fp_move (cfg, ins->dreg, ins->sreg1, prev);
                                else
@@ -329,6 +333,11 @@ handle_reg_constraints (MonoCompile *cfg)
                                ins->sreg2 = dest_sreg2;
                        }
 
+                       if (dest_sreg3 != -1) {
+                               emit_move (cfg, dest_sreg3, ins->sreg3, prev);
+                               ins->sreg3 = dest_sreg3;
+                       }
+
                        if (dest_dreg != -1) {
                                emit_move (cfg, ins->dreg, dest_dreg, ins);
                                g_assert (spec [MONO_INST_CLOB] != '1');
@@ -497,6 +506,13 @@ update_gen_kill_set (MonoCompile *cfg, MonoRegallocContext *ctx, MonoBasicBlock
                        mono_bitset_set_fast (bb->gen_set, sreg);
        }
 
+       /* SREG3 */
+       sreg = ins->sreg3;
+       if (spec [MONO_INST_SRC3] != ' ') {
+               if (!mono_bitset_test_fast (bb->kill_set, sreg))
+                       mono_bitset_set_fast (bb->gen_set, sreg);
+       }
+
        /* DREG */
        if (spec [MONO_INST_DEST] != ' ') {
                if (MONO_IS_STORE_MEMBASE (ins)) {
@@ -707,6 +723,17 @@ compute_live_in_out_sets (MonoCompile *cfg, MonoRegallocContext *ctx)
 #endif
 }
 
+static MonoLiveInterval*
+get_var_interval (MonoCompile *cfg, MonoRegallocContext *ctx, int idx)
+{
+       MonoLiveInterval *interval = ctx->varinfo [idx].interval;
+       if (interval)
+               return interval;
+       interval = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
+       ctx->varinfo [idx].interval = interval;
+       return interval;
+}
+
 static inline void
 update_liveness (MonoCompile *cfg, MonoRegallocContext *ctx, MonoInst *ins, int inst_num, gint32 *last_use)
 {
@@ -730,9 +757,9 @@ update_liveness (MonoCompile *cfg, MonoRegallocContext *ctx, MonoInst *ins, int
                                         * Avoid a hole in the liveness range, since the allocation code
                                         * could think the register is free there.
                                         */
-                                       mono_linterval_add_range (ctx->cfg, ctx->varinfo [ins->dreg].interval, inst_num, last_use [ins->dreg]);
+                                       mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, ins->dreg), inst_num, last_use [ins->dreg]);
                                } else {
-                                       mono_linterval_add_range (ctx->cfg, ctx->varinfo [ins->dreg].interval, inst_num + INS_POS_DEF, last_use [ins->dreg]);
+                                       mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, ins->dreg), inst_num + INS_POS_DEF, last_use [ins->dreg]);
                                }
                                last_use [ins->dreg] = 0;
                        }
@@ -743,7 +770,7 @@ update_liveness (MonoCompile *cfg, MonoRegallocContext *ctx, MonoInst *ins, int
                                        spec = INS_INFO (ins->opcode);
                                } else {
                                        LIVENESS_DEBUG (printf ("\tdead def of R%d, add range to R%d: [%x, %x]\n", ins->dreg, ins->dreg, inst_num + INS_POS_DEF, inst_num + INS_POS_DEF));
-                                       mono_linterval_add_range (ctx->cfg, ctx->varinfo [ins->dreg].interval, inst_num + INS_POS_DEF, inst_num + INS_POS_DEF);
+                                       mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, ins->dreg), inst_num + INS_POS_DEF, inst_num + INS_POS_DEF);
                                }
                        }
                }
@@ -789,6 +816,20 @@ update_liveness (MonoCompile *cfg, MonoRegallocContext *ctx, MonoInst *ins, int
                        last_use [sreg] = inst_num + INS_POS_USE;
                }
                ctx->varinfo [sreg].use_pos = g_slist_prepend_mempool (ctx->cfg->mempool, ctx->varinfo [sreg].use_pos, GINT_TO_POINTER (inst_num));
+
+       /* SREG3 */
+       sreg = ins->sreg3;
+       if (spec [MONO_INST_SRC3] != ' ') {
+               if (last_use [sreg] == 0) {
+                       LIVENESS_DEBUG (printf ("\tlast use of R%d set to %x\n", sreg, inst_num + INS_POS_USE));
+                       last_use [sreg] = inst_num + INS_POS_USE;
+               }
+               ctx->varinfo [sreg].use_pos = g_slist_prepend_mempool (ctx->cfg->mempool, ctx->varinfo [sreg].use_pos, GINT_TO_POINTER (inst_num));
+
+               /*
+               if (ins->sreg3 <= MONO_MAX_IREGS)
+                       mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, ins->sreg3), inst_num + INS_POS_DEF, inst_num + INS_POS_DEF);
+               */
        }
 
        if (ins_get_spec (ins->opcode)[MONO_INST_CLOB] == 'c') {
@@ -830,15 +871,15 @@ update_liveness (MonoCompile *cfg, MonoRegallocContext *ctx, MonoInst *ins, int
                if (clob == 'c') {
                        /* A call clobbers some int/fp registers */
                        for (l = mono_arch_get_iregs_clobbered_by_call ((MonoCallInst*)ins); l; l = l->next)
-                               mono_linterval_add_range (ctx->cfg, ctx->varinfo [GPOINTER_TO_INT (l->data)].interval, inst_num + INS_POS_CLOB, inst_num + INS_POS_CLOB);
+                               mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, GPOINTER_TO_INT (l->data)), inst_num + INS_POS_CLOB, inst_num + INS_POS_CLOB);
                        for (l = mono_arch_get_fregs_clobbered_by_call ((MonoCallInst*)ins); l; l = l->next)
-                               mono_linterval_add_range (ctx->cfg, ctx->varinfo [GPOINTER_TO_INT (l->data)].interval, inst_num + INS_POS_CLOB, inst_num + INS_POS_CLOB);
+                               mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, GPOINTER_TO_INT (l->data)), inst_num + INS_POS_CLOB, inst_num + INS_POS_CLOB);
                }
                else {
                        int clob_reg = MONO_ARCH_INST_FIXED_REG (clob);
 
                        if (clob_reg != -1)
-                               mono_linterval_add_range (ctx->cfg, ctx->varinfo [clob_reg].interval, inst_num + INS_POS_CLOB, inst_num + INS_POS_CLOB);
+                               mono_linterval_add_range (ctx->cfg, get_var_interval (cfg, ctx, clob_reg), inst_num + INS_POS_CLOB, inst_num + INS_POS_CLOB);
                }
        }
 }
@@ -861,10 +902,6 @@ compute_intervals (MonoCompile *cfg, MonoRegallocContext *ctx)
        reverse_len = 1024;
        reverse = mono_mempool_alloc (cfg->mempool, sizeof (MonoInst*) * reverse_len);
 
-       for (idx = 0; idx < max_vars; ++idx) {
-               ctx->varinfo [idx].interval = mono_mempool_alloc0 (cfg->mempool, sizeof (MonoLiveInterval));
-       }
-
        /*
         * Process bblocks in reverse order, so the addition of new live ranges
         * to the intervals is faster.
@@ -931,7 +968,7 @@ compute_intervals (MonoCompile *cfg, MonoRegallocContext *ctx)
                        if (last_use [idx] != 0) {
                                /* Live at exit, not written -> live on enter */
                                LIVENESS_DEBUG (printf ("Var R%d live at enter, add range to R%d: [%x, %x)\n", idx, idx, block_from, last_use [idx]));
-                               mono_linterval_add_range (cfg, ctx->varinfo [idx].interval, block_from, last_use [idx]);
+                               mono_linterval_add_range (cfg, get_var_interval (cfg, ctx, idx), block_from, last_use [idx]);
                        }
                }
        }
@@ -946,14 +983,14 @@ compute_intervals (MonoCompile *cfg, MonoRegallocContext *ctx)
        for (i = 0; i < cfg->num_varinfo; i ++) {
                MonoMethodVar *vi = MONO_VARINFO (cfg, i);
                if ((cfg->varinfo [vi->idx]->opcode == OP_ARG) && (cfg->varinfo [vi->idx] != cfg->ret))
-                       mono_linterval_add_range (cfg, ctx->varinfo [cfg->varinfo [i]->dreg].interval, 0, 1);
+                       mono_linterval_add_range (cfg, get_var_interval (cfg, ctx, cfg->varinfo [i]->dreg), 0, 1);
        }
 #endif
 
 #if 0
                for (idx = 0; idx < max_vars; ++idx) {
                        printf ("LIVENESS R%d: ", idx);
-                       mono_linterval_print (ctx->varinfo [idx].interval);
+                       mono_linterval_print (get_var_interval (cfg, ctx, idx));
                        printf ("\n");
                }
        }
@@ -1204,7 +1241,7 @@ linear_scan (MonoCompile *cfg, MonoRegallocContext *ctx)
        /* Create list of allocatable variables */
        vars = NULL;
        for (i = MONO_FIRST_VREG; i < cfg->next_vreg; ++i) {
-               if (ctx->varinfo [i].interval->range)
+               if (get_var_interval (cfg, ctx, i)->range)
                        vars = g_list_prepend (vars, &ctx->varinfo [i]);
        }
 
@@ -1222,7 +1259,7 @@ linear_scan (MonoCompile *cfg, MonoRegallocContext *ctx)
        /* The hard registers are assigned to themselves */
        for (i = 0; i < MONO_MAX_IREGS + MONO_MAX_FREGS; ++i) {
                ctx->varinfo [i].hreg = i;
-               if (ctx->varinfo [i].interval->range)
+               if (get_var_interval (cfg, ctx, i)->range)
                        inactive = g_list_append (inactive, &ctx->varinfo [i]);         
        }
 
@@ -2207,6 +2244,12 @@ rewrite_code (MonoCompile *cfg, MonoRegallocContext *ctx)
                                ins->sreg2 = l->hreg;
                        }
 
+                       if (spec [MONO_INST_SRC3] != ' ') {
+                               MonoRegallocInterval *l = child_at (&ctx->varinfo [ins->sreg3], pos + INS_POS_USE);
+                               g_assert (l->hreg != -1);
+                               ins->sreg3 = l->hreg;
+                       }
+
                        if (cfg->verbose_level > 1)
                                mono_print_ins_index (1, ins);
 
index 24334ce1b73326ac705d3b115d5123f7544324de..ff737bbe9347a7b0f5d2fce3e44832386bd9c356 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "mini.h"
 #include "ir-emit.h"
+#include "mono/utils/bsearch.h"
 
 /*
 General notes on SIMD intrinsics
@@ -1477,7 +1478,7 @@ simd_version_name (guint32 version)
 static MonoInst*
 emit_intrinsics (MonoCompile *cfg, MonoMethod *cmethod, MonoMethodSignature *fsig, MonoInst **args, const SimdIntrinsc *intrinsics, guint32 size)
 {
-       const SimdIntrinsc * result = bsearch (cmethod->name, intrinsics, size, sizeof (SimdIntrinsc), &simd_intrinsic_compare_by_name);
+       const SimdIntrinsc * result = mono_binary_search (cmethod->name, intrinsics, size, sizeof (SimdIntrinsc), &simd_intrinsic_compare_by_name);
        if (!result) {
                DEBUG (printf ("function doesn't have a simd intrinsic %s::%s/%d\n", cmethod->klass->name, cmethod->name, fsig->param_count));
                return NULL;
index d58d814e11fb0685d48c275cc497a968b8ab034a..de70440903ed1268787b5d795ff67177614c59ad 100644 (file)
@@ -1350,4 +1350,114 @@ mono_ssa_strength_reduction (MonoCompile *cfg)
 }
 #endif
 
+void
+mono_ssa_loop_invariant_code_motion (MonoCompile *cfg)
+{
+       MonoBasicBlock *bb, *h, *idom;
+       MonoInst *ins, *n, *tins;
+       int i;
+
+       g_assert (cfg->comp_done & MONO_COMP_SSA);
+       if (!(cfg->comp_done & MONO_COMP_LOOPS) || !(cfg->comp_done & MONO_COMP_SSA_DEF_USE))
+               return;
+
+       for (bb = cfg->bb_entry->next_bb; bb; bb = bb->next_bb) {
+               GList *lp = bb->loop_blocks;
+
+               if (!lp)
+                       continue;
+               h = (MonoBasicBlock *)lp->data;
+               if (bb != h)
+                       continue;
+               MONO_BB_FOR_EACH_INS_SAFE (bb, n, ins) {
+                       gboolean is_class_init = FALSE;
+
+                       /*
+                        * Try to move instructions out of loop headers into the preceeding bblock.
+                        */
+                       if (ins->opcode == OP_VOIDCALL) {
+                               MonoCallInst *call = (MonoCallInst*)ins;
+
+                               if (call->fptr_is_patch) {
+                                       MonoJumpInfo *ji = (MonoJumpInfo*)call->fptr;
+
+                                       if (ji->type == MONO_PATCH_INFO_CLASS_INIT)
+                                               is_class_init = TRUE;
+                               }
+                       }
+                       if (ins->opcode == OP_LDLEN || ins->opcode == OP_STRLEN || ins->opcode == OP_CHECK_THIS || ins->opcode == OP_AOTCONST || is_class_init) {
+                               gboolean skip;
+                               int sreg;
+
+                               idom = h->idom;
+                               /*
+                                * h->nesting is needed to work around:
+                                * http://llvm.org/bugs/show_bug.cgi?id=17868
+                                */
+                               if (!(idom && idom->last_ins && idom->last_ins->opcode == OP_BR && idom->last_ins->inst_target_bb == h && h->nesting == 1)) {
+                                       continue;
+                               }
+
+                               /*
+                                * Make sure there are no instructions with side effects before ins.
+                                */
+                               skip = FALSE;
+                               MONO_BB_FOR_EACH_INS (bb, tins) {
+                                       if (tins == ins)
+                                               break;
+                                       if (!MONO_INS_HAS_NO_SIDE_EFFECT (tins)) {
+                                               skip = TRUE;
+                                               break;
+                                       }
+                               }
+                               if (skip) {
+                                       /*
+                                         printf ("%s\n", mono_method_full_name (cfg->method, TRUE));
+                                         mono_print_ins (tins);
+                                       */
+                                       continue;
+                               }
+
+                               /* Make sure we don't move the instruction before the def of its sreg */
+                               if (ins->opcode == OP_LDLEN || ins->opcode == OP_STRLEN || ins->opcode == OP_CHECK_THIS)
+                                       sreg = ins->sreg1;
+                               else
+                                       sreg = -1;
+                               if (sreg != -1) {
+                                       skip = FALSE;
+                                       MONO_BB_FOR_EACH_INS (bb, tins) {
+                                               const char *spec = INS_INFO (tins->opcode);
+
+                                               if (tins->opcode == OP_MOVE && tins->dreg == sreg) {
+                                                       sreg = tins->sreg1;
+                                               } else if (spec [MONO_INST_DEST] != ' ' && tins->dreg == ins->sreg1) {
+                                                       skip = TRUE;
+                                                       break;
+                                               }
+                                       }
+                                       if (skip)
+                                               continue;
+                               }
+
+                               if (cfg->verbose_level > 1) {
+                                       printf ("licm in BB%d on ", bb->block_num);
+                                       mono_print_ins (ins);
+                               }
+                               //{ static int count = 0; count ++; printf ("%d\n", count); }
+                               MONO_REMOVE_INS (bb, ins);
+                               mono_bblock_insert_before_ins (idom, idom->last_ins, ins);
+                               if (ins->opcode == OP_LDLEN || ins->opcode == OP_STRLEN)
+                                       idom->has_array_access = TRUE;
+                       }
+               }
+       }
+
+       cfg->comp_done &=  ~MONO_COMP_SSA_DEF_USE;
+       for (i = 0; i < cfg->num_varinfo; i++) {
+               MonoMethodVar *info = MONO_VARINFO (cfg, i);
+               info->def = NULL;
+               info->uses = NULL;
+       }
+}
+
 #endif /* DISABLE_JIT */
index df1eaff9f4852e6dee6ae48699ab66d249e76d5b..a6499d13d5f7e6a25506cc88f26287c7480ff48f 100644 (file)
@@ -658,7 +658,7 @@ check_ssapre_expression_name (MonoSsapreWorkArea *area, MonoSsapreExpressionDesc
                return TRUE;
        }
        if (mono_ssapre_expression_name == NULL) {
-               mono_ssapre_expression_name = getenv ("MONO_SSAPRE_EXPRESSION_NAME");
+               mono_ssapre_expression_name = g_getenv ("MONO_SSAPRE_EXPRESSION_NAME");
        }
        if (mono_ssapre_expression_name != NULL) {
                GString *expression_name = g_string_new_len ("", 256);
@@ -2058,7 +2058,7 @@ static char*
 mono_ssapre_method_name = NULL;
 static gboolean check_ssapre_method_name (MonoCompile *cfg) {
        if (mono_ssapre_method_name == NULL) {
-               mono_ssapre_method_name = getenv ("MONO_SSAPRE_METHOD_NAME");
+               mono_ssapre_method_name = g_getenv ("MONO_SSAPRE_METHOD_NAME");
        }
        if (mono_ssapre_method_name != NULL) {
                char *method_name = mono_method_full_name (cfg->method, TRUE);
index a287c7304289633e3e630005851349eb776c970c..d94448ab5f1f11152b3e9f1fc0d8d8c4b1deb39f 100644 (file)
@@ -69,12 +69,12 @@ continuation_mark_frame (MonoContinuation *cont)
                ctx = new_ctx;
                if (endloop)
                        break;
-               if (strcmp (ji->method->name, "Mark") == 0)
+               if (strcmp (jinfo_get_method (ji)->name, "Mark") == 0)
                        endloop = TRUE;
        } while (1);
 
        cont->top_sp = MONO_CONTEXT_GET_SP (&ctx);
-       /*g_print ("method: %s, sp: %p\n", ji->method->name, cont->top_sp);*/
+       /*g_print ("method: %s, sp: %p\n", jinfo_get_method (ji)->name, cont->top_sp);*/
 
        return NULL;
 }
index 024ddaf20eeb4d58867fd192e6f13bba711a0659..f67b704c362727b2e9f80e000e3fda8b85849779 100644 (file)
@@ -661,7 +661,7 @@ handle_enum:
        case MONO_TYPE_R4:
        case MONO_TYPE_R8: {
                double f = va_arg (ap, double);
-               printf ("FP=%f\n", f);
+               printf ("FP=%f", f);
                break;
        }
        case MONO_TYPE_VALUETYPE: 
index ee2c8c410c0d279b8ef4292bf084e51a6a9461bb..2e92b35b6b8cec8aa55347d9e8e1eac20c72687f 100644 (file)
 
 #if defined(__native_client_codegen__) && defined(__native_client__)
 #include <malloc.h>
-#include <sys/nacl_syscalls.h>
+#include <nacl/nacl_dyncode.h>
 #endif
 
 #define IS_REX(inst) (((inst) >= 0x40) && ((inst) <= 0x4f))
 
-static guint8* nullified_class_init_trampoline;
-
 /*
  * mono_arch_get_unbox_trampoline:
  * @m: method pointer
@@ -49,21 +47,21 @@ gpointer
 mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
        guint8 *code, *start;
-       int this_reg;
+       int this_reg, size = NACL_SIZE (20, 32);
 
        MonoDomain *domain = mono_domain_get ();
 
        this_reg = mono_arch_get_this_arg_reg (NULL);
 
-       start = code = mono_domain_code_reserve (domain, 20);
+       start = code = mono_domain_code_reserve (domain, size);
 
        amd64_alu_reg_imm (code, X86_ADD, this_reg, sizeof (MonoObject));
        /* FIXME: Optimize this */
        amd64_mov_reg_imm (code, AMD64_RAX, addr);
        amd64_jump_reg (code, AMD64_RAX);
-       g_assert ((code - start) < 20);
+       g_assert ((code - start) < size);
 
-       nacl_domain_code_validate (domain, &start, 20, &code);
+       nacl_domain_code_validate (domain, &start, size, &code);
 
        mono_arch_flush_icache (start, code - start);
 
@@ -88,9 +86,9 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
 #else
        /* AOTed code could still have a non-32 bit address */
        if ((((guint64)addr) >> 32) == 0)
-               buf_len = 16;
+               buf_len = NACL_SIZE (16, 32);
        else
-               buf_len = 30;
+               buf_len = NACL_SIZE (30, 32);
 #endif
 
        start = code = mono_domain_code_reserve (domain, buf_len);
@@ -165,11 +163,11 @@ mono_arch_patch_callsite (guint8 *method_start, guint8 *orig_code, guint8 *addr)
                                /* Print some diagnostics */
                                MonoJitInfo *ji = mono_jit_info_table_find (mono_domain_get (), (char*)orig_code);
                                if (ji)
-                                       fprintf (stderr, "At %s, offset 0x%zx\n", mono_method_full_name (ji->method, TRUE), (guint8*)orig_code - (guint8*)ji->code_start);
+                                       fprintf (stderr, "At %s, offset 0x%zx\n", mono_method_full_name (jinfo_get_method (ji), TRUE), (guint8*)orig_code - (guint8*)ji->code_start);
                                fprintf (stderr, "Addr: %p\n", addr);
                                ji = mono_jit_info_table_find (mono_domain_get (), (char*)addr);
                                if (ji)
-                                       fprintf (stderr, "Callee: %s\n", mono_method_full_name (ji->method, TRUE));
+                                       fprintf (stderr, "Callee: %s\n", mono_method_full_name (jinfo_get_method (ji), TRUE));
                                g_assert_not_reached ();
 #else
                                /* 
@@ -336,6 +334,7 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
        guint8 buf [16];
        MonoJitInfo *ji = NULL;
        gboolean can_write;
+       gpointer tramp = mini_get_nullified_class_init_trampoline ();
 
        if (mono_use_llvm) {
                /* code - 7 might be before the start of the method */
@@ -360,7 +359,7 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
                vtable_slot = get_vcall_slot_addr (code, regs);
                g_assert (vtable_slot);
 
-               *vtable_slot = nullified_class_init_trampoline;
+               *vtable_slot = tramp;
        } else if (buf [2] == 0xe8) {
                /* call <TARGET> */
                //guint8 *buf = code - 2;
@@ -378,11 +377,11 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
                buf [4] = 0x90;
                */
 
-               mono_arch_patch_callsite (code - 5, code, nullified_class_init_trampoline);
+               mono_arch_patch_callsite (code - 5, code, tramp);
        } else if ((buf [5] == 0xff) && x86_modrm_mod (buf [6]) == 3 && x86_modrm_reg (buf [6]) == 2) {
                /* call *<reg> */
                /* Generated by the LLVM JIT or on platforms without MAP_32BIT set */
-               mono_arch_patch_callsite (code - 13, code, nullified_class_init_trampoline);
+               mono_arch_patch_callsite (code - 13, code, tramp);
        } else if (buf [4] == 0x90 || buf [5] == 0xeb || buf [6] == 0x66) {
                /* Already changed by another thread */
                ;
@@ -396,10 +395,7 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
 void
 mono_arch_nullify_plt_entry (guint8 *code, mgreg_t *regs)
 {
-       if (mono_aot_only && !nullified_class_init_trampoline)
-               nullified_class_init_trampoline = mono_aot_get_trampoline ("nullified_class_init_trampoline");
-
-       mono_arch_patch_plt_entry (code, NULL, regs, nullified_class_init_trampoline);
+       mono_arch_patch_plt_entry (code, NULL, regs, mini_get_nullified_class_init_trampoline ());
 }
 
 static void
@@ -412,6 +408,7 @@ stack_unaligned (MonoTrampolineType tramp_type)
 guchar*
 mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
 {
+       char *tramp_name;
        guint8 *buf, *code, *tramp, *br [2], *r11_save_code, *after_r11_save_code;
        int i, lmf_offset, offset, res_offset, arg_offset, rax_offset, tramp_offset, saved_regs_offset;
        int saved_fpregs_offset, rbp_offset, framesize, orig_rsp_to_rbp_offset, cfa_offset;
@@ -719,14 +716,12 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
 
        mono_arch_flush_icache (buf, code - buf);
 
-       if (tramp_type == MONO_TRAMPOLINE_CLASS_INIT) {
-               /* Initialize the nullified class init trampoline used in the AOT case */
-               nullified_class_init_trampoline = mono_arch_get_nullified_class_init_trampoline (NULL);
+       if (info) {
+               tramp_name = mono_get_generic_trampoline_name (tramp_type);
+               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
+               g_free (tramp_name);
        }
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_generic_trampoline_name (tramp_type), buf, code - buf, ji, unwind_ops);
-
        return buf;
 }
 
@@ -734,19 +729,17 @@ gpointer
 mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
 {
        guint8 *code, *buf;
+       int size = NACL_SIZE (16, 32);
 
-       code = buf = mono_global_codeman_reserve (16);
+       code = buf = mono_global_codeman_reserve (size);
        amd64_ret (code);
 
-       nacl_global_codeman_validate(&buf, 16, &code);
+       nacl_global_codeman_validate(&buf, size, &code);
 
        mono_arch_flush_icache (buf, code - buf);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
-
-       if (mono_jit_map_is_enabled ())
-               mono_emit_jit_tramp (buf, code - buf, "nullified_class_init_trampoline");
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
@@ -781,6 +774,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty
        /* Aligning the call site below could */
        /* add up to kNaClAlignment-1 bytes   */
        size += (kNaClAlignment-1);
+       size = NACL_BUNDLE_ALIGN_UP (size);
        buf = mono_domain_code_reserve_align (domain, size, kNaClAlignment);
        code = buf;
 #endif
@@ -913,8 +907,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return buf;
 }
@@ -963,7 +960,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1087,7 +1084,7 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("monitor_enter_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("monitor_enter_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1205,7 +1202,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("monitor_exit_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("monitor_exit_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
index b12ead690229bf715a037bef124771c421dd2ec9..225ef9f4e7cb10e2ad870b7c7728a11b39d72557 100644 (file)
@@ -22,9 +22,6 @@
 
 #define ALIGN_TO(val,align) ((((guint64)val) + ((align) - 1)) & ~((align) - 1))
 
-static guint8* nullified_class_init_trampoline;
-
-
 #ifdef USE_JUMP_TABLES
 
 static guint16
@@ -131,16 +128,13 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, mgreg_t *regs, guint8 *a
 void
 mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
 {
-       mono_arch_patch_callsite (NULL, code, nullified_class_init_trampoline);
+       mono_arch_patch_callsite (NULL, code, mini_get_nullified_class_init_trampoline ());
 }
 
 void
 mono_arch_nullify_plt_entry (guint8 *code, mgreg_t *regs)
 {
-       if (mono_aot_only && !nullified_class_init_trampoline)
-               nullified_class_init_trampoline = mono_aot_get_trampoline ("nullified_class_init_trampoline");
-
-       mono_arch_patch_plt_entry (code, NULL, regs, nullified_class_init_trampoline);
+       mono_arch_patch_plt_entry (code, NULL, regs, mini_get_nullified_class_init_trampoline ());
 }
 
 #ifndef DISABLE_JIT
@@ -192,6 +186,7 @@ emit_bx (guint8* code, int reg)
 guchar*
 mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
 {
+       char *tramp_name;
        guint8 *buf, *code = NULL;
 #ifdef USE_JUMP_TABLES
        gpointer *load_get_lmf_addr = NULL, *load_trampoline = NULL;
@@ -451,12 +446,11 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        /* Sanity check */
        g_assert ((code - buf) <= buf_len);
 
-       if (tramp_type == MONO_TRAMPOLINE_CLASS_INIT)
-               /* Initialize the nullified class init trampoline used in the AOT case */
-               nullified_class_init_trampoline = mono_arch_get_nullified_class_init_trampoline (NULL);
-
-       if (info)
-               *info = mono_tramp_info_create (mono_get_generic_trampoline_name (tramp_type), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               tramp_name = mono_get_generic_trampoline_name (tramp_type);
+               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
+               g_free (tramp_name);
+       }
 
        return buf;
 }
@@ -473,7 +467,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        mono_arch_flush_icache (buf, code - buf);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
@@ -765,8 +759,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return buf;
 }
@@ -873,7 +870,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -921,6 +918,13 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        g_assert_not_reached ();
        return NULL;
 }
+
+gpointer
+mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
+{
+       g_assert_not_reached ();
+       return NULL;
+}
        
 #endif /* DISABLE_JIT */
 
@@ -1056,7 +1060,7 @@ mono_arch_get_gsharedvt_arg_trampoline (MonoDomain *domain, gpointer arg, gpoint
 #else
 
 gpointer
-mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpointer *callee, gpointer *caller_regs, gpointer *callee_regs, gpointer mrgctx_reg)
+mono_arm_start_gsharedvt_call (GSharedVtCallInfo *info, gpointer *caller, gpointer *callee, gpointer mrgctx_reg)
 {
        g_assert_not_reached ();
        return NULL;
index e90e0a3121bfe39db750792f3c8c235d5be678f0..b0e7be95e01febc15085f6bb3a03b8fd7e2d88fd 100644 (file)
@@ -24,8 +24,6 @@
 #include "mini.h"
 #include "mini-mips.h"
 
-static guint8* nullified_class_init_trampoline;
-
 /*
  * get_unbox_trampoline:
  * @m: method pointer
@@ -116,10 +114,7 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, mgreg_t *regs, guint8 *a
 void
 mono_arch_nullify_plt_entry (guint8 *code, mgreg_t *regs)
 {
-       if (mono_aot_only && !nullified_class_init_trampoline)
-               nullified_class_init_trampoline = mono_aot_get_trampoline ("nullified_class_init_trampoline");
-
-       mono_arch_patch_plt_entry (code, NULL, regs, nullified_class_init_trampoline);
+       mono_arch_patch_plt_entry (code, NULL, regs, mini_get_nullified_class_init_trampoline ());
 }
 
 void
@@ -153,7 +148,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        mono_arch_flush_icache (buf, code - buf);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
@@ -176,6 +171,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
 guchar*
 mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
 {
+       char *tramp_name;
        guint8 *buf, *tramp, *code = NULL;
        int i, lmf;
        GSList *unwind_ops = NULL;
@@ -313,12 +309,11 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        /* Sanity check */
        g_assert ((code - buf) <= max_code_len);
 
-       if (tramp_type == MONO_TRAMPOLINE_CLASS_INIT)
-               /* Initialize the nullified class init trampoline used in the AOT case */
-               nullified_class_init_trampoline = mono_arch_get_nullified_class_init_trampoline (NULL);
-
-       if (info)
-               *info = mono_tramp_info_create (mono_get_generic_trampoline_name (tramp_type), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               tramp_name = mono_get_generic_trampoline_name (tramp_type);
+               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
+               g_free (tramp_name);
+       }
 
        return buf;
 }
@@ -482,8 +477,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return buf;
 }
@@ -539,7 +537,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
index 2972348d09ed7103f088f375cf8c8618d5d23fe3..671b90a493748c4fe46ac03414ee88de1152d5be 100644 (file)
@@ -22,8 +22,6 @@
 #include "mini.h"
 #include "mini-ppc.h"
 
-static guint8* nullified_class_init_trampoline;
-
 /* Same as mono_create_ftnptr, but doesn't require a domain */
 static gpointer
 mono_ppc_create_ftnptr (guint8 *code)
@@ -200,16 +198,13 @@ mono_arch_patch_plt_entry (guint8 *code, gpointer *got, mgreg_t *regs, guint8 *a
 void
 mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
 {
-       mono_arch_patch_callsite (NULL, code, nullified_class_init_trampoline);
+       mono_arch_patch_callsite (NULL, code, mini_get_nullified_class_init_trampoline ());
 }
 
 void
 mono_arch_nullify_plt_entry (guint8 *code, mgreg_t *regs)
 {
-       if (mono_aot_only && !nullified_class_init_trampoline)
-               nullified_class_init_trampoline = mono_aot_get_trampoline ("nullified_class_init_trampoline");
-
-       mono_arch_patch_plt_entry (code, NULL, regs, nullified_class_init_trampoline);
+       mono_arch_patch_plt_entry (code, NULL, regs, mini_get_nullified_class_init_trampoline ());
 }
 
 /* Stack size for trampoline function 
@@ -248,7 +243,7 @@ mono_arch_nullify_plt_entry (guint8 *code, mgreg_t *regs)
 guchar*
 mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
 {
-
+       char *tramp_name;
        guint8 *buf, *code = NULL;
        int i, offset;
        gconstpointer tramp_handler;
@@ -440,14 +435,12 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        /* Sanity check */
        g_assert ((code - buf) <= size);
 
-       if (tramp_type == MONO_TRAMPOLINE_CLASS_INIT) {
-               /* Initialize the nullified class init trampoline */
-               nullified_class_init_trampoline = mono_ppc_create_ftnptr (mono_arch_get_nullified_class_init_trampoline (NULL));
+       if (info) {
+               tramp_name = mono_get_generic_trampoline_name (tramp_type);
+               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
+               g_free (tramp_name);
        }
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_generic_trampoline_name (tramp_type), buf, code - buf, ji, unwind_ops);
-
        return buf;
 }
 
@@ -617,8 +610,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return buf;
 #else
@@ -677,7 +673,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -696,7 +692,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
index 91e760e41880a7af372befeb3c76d343e9b053a5..0888809884a7aaa6c42ea2528a80695a187ea583 100644 (file)
@@ -191,6 +191,32 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
 
 /*========================= End of Function ========================*/
 
+/*------------------------------------------------------------------*/
+/*                                                                  */
+/* Name                - mono_arch_get_nullified_class_init                */
+/*                                                                  */
+/* Function    - Nullify a PLT entry call.                         */
+/*                                                                  */
+/*------------------------------------------------------------------*/
+
+gpointer
+mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
+{
+       guint8 *buf, *code;
+
+       code = buf = mono_global_codeman_reserve (16);
+
+       s390_br (code, s390_r14);
+
+       if (info)
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", 
+                                               buf, code - buf, NULL, NULL);
+
+       return (buf);
+}
+
+/*========================= End of Function ========================*/
+
 /*------------------------------------------------------------------*/
 /*                                                                  */
 /* Name                - mono_arch_nullify_plt_entry                       */
@@ -219,6 +245,7 @@ mono_arch_nullify_plt_entry (guint8 *code, mgreg_t *regs)
 guchar*
 mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
 {
+       char *tramp_name;
        guint8 *buf, *tramp, *code;
        int i, offset, lmfOffset;
        GSList *unwind_ops = NULL;
@@ -401,9 +428,11 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
        /* Flush instruction cache, since we've generated code */
        mono_arch_flush_icache (code, buf - code);
        
-       if (info)
-               *info = mono_tramp_info_create (mono_get_generic_trampoline_name(tramp_type), 
-                                               buf, buf - code, ji, unwind_ops);
+       if (info) {
+               tramp_name = mono_get_generic_trampoline_name (tramp_type);
+               *info = mono_tramp_info_create (tramp_name, buf, buf - code, ji, unwind_ops);
+               g_free (tramp_name);
+       }
 
        /* Sanity check */
        g_assert ((buf - code) <= 512);
@@ -563,8 +592,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return(buf);
 #else
@@ -660,7 +692,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return(buf);
 }
index a1f5afd4576133a3587fef8681aff92673c94c6a..89418779664c74f7ea8e2498b7a453b7d8415a6f 100644 (file)
@@ -273,3 +273,20 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
        g_assert_not_reached ();
        return NULL;
 }
+
+gpointer
+mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
+{
+       guint8 *buf, *code;
+
+       code = buf = mono_global_codeman_reserve (16);
+
+       sparc_ret (code);
+
+       mono_arch_flush_icache (buf, code - buf);
+
+       if (info)
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
+
+       return buf;
+}
index 83cdee58228d06aa7ebb79d80c97424309c4b58a..e48929831c7a0226d97fd22e60491b736cd1cc5a 100644 (file)
@@ -25,8 +25,6 @@
 #include "mini.h"
 #include "mini-x86.h"
 
-static guint8* nullified_class_init_trampoline;
-
 /*
  * mono_arch_get_unbox_trampoline:
  * @m: method pointer
@@ -40,16 +38,16 @@ gpointer
 mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr)
 {
        guint8 *code, *start;
-       int this_pos = 4;
+       int this_pos = 4, size = NACL_SIZE(16, 32);
        MonoDomain *domain = mono_domain_get ();
 
-       start = code = mono_domain_code_reserve (domain, 16);
+       start = code = mono_domain_code_reserve (domain, size);
 
        x86_alu_membase_imm (code, X86_ADD, X86_ESP, this_pos, sizeof (MonoObject));
        x86_jump_code (code, addr);
-       g_assert ((code - start) < 16);
+       g_assert ((code - start) < size);
 
-       nacl_domain_code_validate (domain, &start, 16, &code);
+       nacl_domain_code_validate (domain, &start, size, &code);
 
        return start;
 }
@@ -62,7 +60,7 @@ mono_arch_get_static_rgctx_trampoline (MonoMethod *m, MonoMethodRuntimeGenericCo
 
        MonoDomain *domain = mono_domain_get ();
 
-       buf_len = 10;
+       buf_len = NACL_SIZE (10, 32);
 
        start = code = mono_domain_code_reserve (domain, buf_len);
 
@@ -239,6 +237,7 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
 {
        guint8 buf [16];
        gboolean can_write = mono_breakpoint_clean_code (NULL, code, 6, buf, sizeof (buf));
+       gpointer tramp = mini_get_nullified_class_init_trampoline ();
 
        if (!can_write)
                return;
@@ -273,7 +272,7 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
                        //VALGRIND_DISCARD_TRANSLATIONS (code, 8);
                }
 #elif defined(__native_client_codegen__)
-               mono_arch_patch_callsite (code, code + 5, nullified_class_init_trampoline);
+               mono_arch_patch_callsite (code, code + 5, tramp);
 #endif
        } else if (code [0] == 0x90 || code [0] == 0xeb) {
                /* Already changed by another thread */
@@ -285,7 +284,7 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
                vtable_slot = get_vcall_slot_addr (code + 5, regs);
                g_assert (vtable_slot);
 
-               *vtable_slot = nullified_class_init_trampoline;
+               *vtable_slot = tramp;
        } else {
                        printf ("Invalid trampoline sequence: %x %x %x %x %x %x %x\n", code [0], code [1], code [2], code [3],
                                code [4], code [5], code [6]);
@@ -296,15 +295,13 @@ mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
 void
 mono_arch_nullify_plt_entry (guint8 *code, mgreg_t *regs)
 {
-       if (mono_aot_only && !nullified_class_init_trampoline)
-               nullified_class_init_trampoline = mono_aot_get_trampoline ("nullified_class_init_trampoline");
-
-       mono_arch_patch_plt_entry (code, NULL, regs, nullified_class_init_trampoline);
+       mono_arch_patch_plt_entry (code, NULL, regs, mini_get_nullified_class_init_trampoline ());
 }
 
 guchar*
 mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInfo **info, gboolean aot)
 {
+       char *tramp_name;
        guint8 *buf, *code, *tramp;
        int pushed_args, pushed_args_caller_saved;
        GSList *unwind_ops = NULL;
@@ -524,17 +521,22 @@ mono_arch_create_generic_trampoline (MonoTrampolineType tramp_type, MonoTrampInf
                g_assert (pushed_args == -1);
        }
 
-       x86_ret (code);
+       /*block guard trampolines are called with the stack aligned but must exit with the stack unaligned. */
+       if (tramp_type == MONO_TRAMPOLINE_HANDLER_BLOCK_GUARD) {
+               x86_pop_reg (code, X86_EAX);
+               x86_alu_reg_imm (code, X86_ADD, X86_ESP, 0x8);
+               x86_jump_reg (code, X86_EAX);
+       } else {
+               x86_ret (code);
+       }
 
        nacl_global_codeman_validate (&buf, 256, &code);
        g_assert ((code - buf) <= 256);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_generic_trampoline_name (tramp_type), buf, code - buf, ji, unwind_ops);
-
-       if (tramp_type == MONO_TRAMPOLINE_CLASS_INIT) {
-               /* Initialize the nullified class init trampoline used in the AOT case */
-               nullified_class_init_trampoline = mono_arch_get_nullified_class_init_trampoline (NULL);
+       if (info) {
+               tramp_name = mono_get_generic_trampoline_name (tramp_type);
+               *info = mono_tramp_info_create (tramp_name, buf, code - buf, ji, unwind_ops);
+               g_free (tramp_name);
        }
 
        return buf;
@@ -554,10 +556,7 @@ mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
        mono_arch_flush_icache (buf, code - buf);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("nullified_class_init_trampoline"), buf, code - buf, NULL, NULL);
-
-       if (mono_jit_map_is_enabled ())
-               mono_emit_jit_tramp (buf, code - buf, "nullified_class_init_trampoline");
+               *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
 
        return buf;
 }
@@ -682,8 +681,11 @@ mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 slot, MonoTrampInfo **info
 
        g_assert (code - buf <= tramp_size);
 
-       if (info)
-               *info = mono_tramp_info_create (mono_get_rgctx_fetch_trampoline_name (slot), buf, code - buf, ji, unwind_ops);
+       if (info) {
+               char *name = mono_get_rgctx_fetch_trampoline_name (slot);
+               *info = mono_tramp_info_create (name, buf, code - buf, ji, unwind_ops);
+               g_free (name);
+       }
 
        return buf;
 }
@@ -782,7 +784,7 @@ mono_arch_create_generic_class_init_trampoline (MonoTrampInfo **info, gboolean a
        nacl_global_codeman_validate (&buf, tramp_size, &code);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("generic_class_init_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("generic_class_init_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -931,7 +933,7 @@ mono_arch_create_monitor_enter_trampoline (MonoTrampInfo **info, gboolean aot)
        nacl_global_codeman_validate (&buf, tramp_size, &code);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("monitor_enter_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("monitor_enter_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
@@ -1046,7 +1048,7 @@ mono_arch_create_monitor_exit_trampoline (MonoTrampInfo **info, gboolean aot)
        g_assert (code - buf <= tramp_size);
 
        if (info)
-               *info = mono_tramp_info_create (g_strdup_printf ("monitor_exit_trampoline"), buf, code - buf, ji, unwind_ops);
+               *info = mono_tramp_info_create ("monitor_exit_trampoline", buf, code - buf, ji, unwind_ops);
 
        return buf;
 }
index f32deb0cc045cb53f15f7cebcf75ff35c77f685f..517fe8e1d21a000d607c60f9e6159b0635c801bd 100644 (file)
@@ -105,9 +105,13 @@ struct jit_descriptor
 /* GDB puts a breakpoint in this function.  */
 void MONO_NOINLINE __jit_debug_register_code(void);
 
-/* Make sure to specify the version statically, because the
-   debugger may check the version before we can set it.  */
-struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 };
+#if !defined(MONO_LLVM_LOADED) && defined(ENABLE_LLVM) && !defined(MONO_CROSS_COMPILE)
+
+/* LLVM already defines these */
+
+extern struct jit_descriptor __jit_debug_descriptor;
+
+#else
 
 /* gcc seems to inline/eliminate calls to noinline functions, thus the asm () */
 void MONO_NOINLINE __jit_debug_register_code(void) {
@@ -116,6 +120,12 @@ void MONO_NOINLINE __jit_debug_register_code(void) {
 #endif
 }
 
+/* Make sure to specify the version statically, because the
+   debugger may check the version before we can set it.  */
+struct jit_descriptor __jit_debug_descriptor = { 1, 0, 0, 0 };
+
+#endif
+
 static MonoImageWriter *xdebug_w;
 static MonoDwarfWriter *xdebug_writer;
 static FILE *xdebug_fp, *il_file;
@@ -124,7 +134,7 @@ static int il_file_line_index;
 static GHashTable *xdebug_syms;
 
 void
-mono_xdebug_init (char *options)
+mono_xdebug_init (const char *options)
 {
        MonoImageWriter *w;
        char **args, **ptr;
@@ -157,7 +167,7 @@ mono_xdebug_init (char *options)
 
        img_writer_emit_start (w);
 
-       xdebug_writer = mono_dwarf_writer_create (w, il_file, 0, TRUE);
+       xdebug_writer = mono_dwarf_writer_create (w, il_file, 0, TRUE, TRUE);
 
        /* Emit something so the file has a text segment */
        img_writer_emit_section_change (w, ".text", 0);
@@ -180,7 +190,7 @@ xdebug_begin_emit (MonoImageWriter **out_w, MonoDwarfWriter **out_dw)
        if (!il_file)
                il_file = fopen ("xdb.il", "w");
 
-       dw = mono_dwarf_writer_create (w, il_file, il_file_line_index, FALSE);
+       dw = mono_dwarf_writer_create (w, il_file, il_file_line_index, FALSE, TRUE);
 
        mono_dwarf_writer_emit_base_info (dw, mono_unwind_get_cie_program ());
 
@@ -284,8 +294,8 @@ mono_save_xdebug_info (MonoCompile *cfg)
 
                xdebug_method_count ++;
 
-               dmji = mono_debug_find_method (cfg->jit_info->method, mono_domain_get ());;
-               mono_dwarf_writer_emit_method (xdebug_writer, cfg, cfg->jit_info->method, NULL, NULL, cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, dmji);
+               dmji = mono_debug_find_method (jinfo_get_method (cfg->jit_info), mono_domain_get ());;
+               mono_dwarf_writer_emit_method (xdebug_writer, cfg, jinfo_get_method (cfg->jit_info), NULL, NULL, cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, dmji);
                mono_debug_free_method_jit_info (dmji);
 
 #if 0
@@ -313,8 +323,8 @@ mono_save_xdebug_info (MonoCompile *cfg)
                        return;
 
                mono_loader_lock ();
-               dmji = mono_debug_find_method (cfg->jit_info->method, mono_domain_get ());;
-               mono_dwarf_writer_emit_method (xdebug_writer, cfg, cfg->jit_info->method, NULL, NULL, cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, dmji);
+               dmji = mono_debug_find_method (jinfo_get_method (cfg->jit_info), mono_domain_get ());
+               mono_dwarf_writer_emit_method (xdebug_writer, cfg, jinfo_get_method (cfg->jit_info), NULL, NULL, cfg->jit_info->code_start, cfg->jit_info->code_size, cfg->args, cfg->locals, cfg->unwind_ops, dmji);
                mono_debug_free_method_jit_info (dmji);
                fflush (xdebug_fp);
                mono_loader_unlock ();
@@ -359,7 +369,7 @@ mono_save_trampoline_xdebug_info (MonoTrampInfo *info)
 #else /* !defined(DISABLE_AOT) && !defined(DISABLE_JIT) */
 
 void
-mono_xdebug_init (char *options)
+mono_xdebug_init (const char *options)
 {
 }
 
index 24fade03a89f600bbabd0473480706d6022441a8..4254660faee4f5671a73e9f7f0503a16d5e4cd5c 100644 (file)
 #endif
 
 /* the architecture needs a memory fence */
-#if defined(__linux__) && (defined(__i386__) || defined(__x86_64__))
+#if defined(__linux__) && (defined(__i386__) || defined(__x86_64__) || defined(__arm__))
 #include <unistd.h>
 #include <sys/syscall.h>
 #include "perf_event.h"
 #define USE_PERF_EVENTS 1
-static int read_perf_mmap (MonoProfiler* prof);
+static int read_perf_mmap (MonoProfiler* prof, int cpu);
 #endif
 
 #define BUFFER_SIZE (4096 * 16)
@@ -1558,15 +1558,74 @@ dump_sample_hits (MonoProfiler *prof, StatBuffer *sbuf, int recurse)
 
 #if USE_PERF_EVENTS
 #ifndef __NR_perf_event_open
+#ifdef __arm__
+#define __NR_perf_event_open 364
+#else
 #define __NR_perf_event_open 241
 #endif
+#endif
+
+static int
+mono_cpu_count (void)
+{
+       int count = 0;
+#ifdef PLATFORM_ANDROID
+       /* Android tries really hard to save power by powering off CPUs on SMP phones which
+        * means the normal way to query cpu count returns a wrong value with userspace API.
+        * Instead we use /sys entries to query the actual hardware CPU count.
+        */
+       char buffer[8] = {'\0'};
+       int present = open ("/sys/devices/system/cpu/present", O_RDONLY);
+       /* Format of the /sys entry is a cpulist of indexes which in the case
+        * of present is always of the form "0-(n-1)" when there is more than
+        * 1 core, n being the number of CPU cores in the system. Otherwise
+        * the value is simply 0
+        */
+       if (present != -1 && read (present, (char*)buffer, sizeof (buffer)) > 3)
+               count = strtol (((char*)buffer) + 2, NULL, 10);
+       if (present != -1)
+               close (present);
+       if (count > 0)
+               return count + 1;
+#endif
+#ifdef _SC_NPROCESSORS_ONLN
+       count = sysconf (_SC_NPROCESSORS_ONLN);
+       if (count > 0)
+               return count;
+#endif
+#ifdef USE_SYSCTL
+       {
+               int mib [2];
+               size_t len = sizeof (int);
+               mib [0] = CTL_HW;
+               mib [1] = HW_NCPU;
+               if (sysctl (mib, 2, &count, &len, NULL, 0) == 0)
+                       return count;
+       }
+#endif
+#ifdef HOST_WIN32
+       {
+               SYSTEM_INFO info;
+               GetSystemInfo (&info);
+               return info.dwNumberOfProcessors;
+       }
+#endif
+       /* FIXME: warn */
+       return 1;
+}
 
-static int perf_fd = -1;
-static void *mmap_base;
-static struct perf_event_mmap_page *page_desc = NULL;
-static int num_pages = 64;
+typedef struct {
+       int perf_fd;
+       unsigned int prev_pos;
+       void *mmap_base;
+       struct perf_event_mmap_page *page_desc;
+} PerfData ;
+
+static PerfData *perf_data = NULL;
+static int num_perf;
+#define PERF_PAGES_SHIFT 4
+static int num_pages = 1 << PERF_PAGES_SHIFT;
 static unsigned int mmap_mask;
-static unsigned int prev_pos = 0;
 
 typedef struct {
        struct perf_event_header h;
@@ -1587,24 +1646,25 @@ perf_event_syscall (struct perf_event_attr *attr, pid_t pid, int cpu, int group_
        return syscall(/*__NR_perf_event_open*/ 298, attr, pid, cpu, group_fd, flags);
 #elif defined(__i386__)
        return syscall(/*__NR_perf_event_open*/ 336, attr, pid, cpu, group_fd, flags);
+#elif defined(__arm__)
+       return syscall(/*__NR_perf_event_open*/ 364, attr, pid, cpu, group_fd, flags);
 #else
        return -1;
 #endif
 }
 
 static int
-setup_perf_map (void)
+setup_perf_map (PerfData *perf)
 {
-       mmap_mask = num_pages * getpagesize () - 1;
-       mmap_base = mmap (NULL, (num_pages + 1) * getpagesize (), PROT_READ|PROT_WRITE, MAP_SHARED, perf_fd, 0);
-       if (mmap_base == MAP_FAILED) {
+       perf->mmap_base = mmap (NULL, (num_pages + 1) * getpagesize (), PROT_READ|PROT_WRITE, MAP_SHARED, perf->perf_fd, 0);
+       if (perf->mmap_base == MAP_FAILED) {
                if (do_debug)
                        printf ("failed mmap\n");
                return 0;
        }
-       page_desc = mmap_base;
+       perf->page_desc = perf->mmap_base;
        if (do_debug)
-               printf ("mmap version: %d\n", page_desc->version);
+               printf ("mmap version: %d\n", perf->page_desc->version);
        return 1;
 }
 
@@ -1646,11 +1706,12 @@ dump_perf_hits (MonoProfiler *prof, void *buf, int size)
 
 /* read events from the ring buffer */
 static int
-read_perf_mmap (MonoProfiler* prof)
+read_perf_mmap (MonoProfiler* prof, int cpu)
 {
+       PerfData *perf = perf_data + cpu;
        unsigned char *buf;
-       unsigned char *data = (unsigned char*)mmap_base + getpagesize ();
-       unsigned int head = page_desc->data_head;
+       unsigned char *data = (unsigned char*)perf->mmap_base + getpagesize ();
+       unsigned int head = perf->page_desc->data_head;
        int diff, size;
        unsigned int old;
 
@@ -1658,9 +1719,13 @@ read_perf_mmap (MonoProfiler* prof)
        asm volatile("lock; addl $0,0(%%esp)":::"memory");
 #elif defined (__x86_64__)
        asm volatile("lfence":::"memory");
+#elif defined (__arm__)
+       ((void(*)(void))0xffff0fa0)();
+#else
+       asm volatile("":::"memory");
 #endif
 
-       old = prev_pos;
+       old = perf->prev_pos;
        diff = head - old;
        if (diff < 0) {
                if (do_debug)
@@ -1684,13 +1749,13 @@ read_perf_mmap (MonoProfiler* prof)
                printf ("found bytes of events: %d\n", size);
        dump_perf_hits (prof, buf, size);
        old += size;
-       prev_pos = old;
-       page_desc->data_tail = old;
+       perf->prev_pos = old;
+       perf->page_desc->data_tail = old;
        return 0;
 }
 
 static int
-setup_perf_event (void)
+setup_perf_event_for_cpu (PerfData *perf, int cpu)
 {
        struct perf_event_attr attr;
        memset (&attr, 0, sizeof (attr));
@@ -1711,11 +1776,11 @@ setup_perf_event (void)
        attr.freq = 1;
        attr.sample_freq = sample_freq;
 
-       perf_fd = perf_event_syscall (&attr, getpid (), -1, -1, 0);
+       perf->perf_fd = perf_event_syscall (&attr, getpid (), cpu, -1, 0);
        if (do_debug)
-               printf ("perf fd: %d, freq: %d, event: %llu\n", perf_fd, sample_freq, attr.config);
-       if (perf_fd < 0) {
-               if (perf_fd == -EPERM) {
+               printf ("perf fd: %d, freq: %d, event: %llu\n", perf->perf_fd, sample_freq, attr.config);
+       if (perf->perf_fd < 0) {
+               if (perf->perf_fd == -EPERM) {
                        fprintf (stderr, "Perf syscall denied, do \"echo 1 > /proc/sys/kernel/perf_event_paranoid\" as root to enable.\n");
                } else {
                        if (do_debug)
@@ -1723,14 +1788,31 @@ setup_perf_event (void)
                }
                return 0;
        }
-       if (!setup_perf_map ()) {
-               close (perf_fd);
-               perf_fd = -1;
+       if (!setup_perf_map (perf)) {
+               close (perf->perf_fd);
+               perf->perf_fd = -1;
                return 0;
        }
        return 1;
 }
 
+static int
+setup_perf_event (void)
+{
+       int i, count = 0;
+       mmap_mask = num_pages * getpagesize () - 1;
+       num_perf = mono_cpu_count ();
+       perf_data = calloc (num_perf, sizeof (PerfData));
+       for (i = 0; i < num_perf; ++i) {
+               count += setup_perf_event_for_cpu (perf_data + i, i);
+       }
+       if (count)
+               return 1;
+       free (perf_data);
+       perf_data = NULL;
+       return 0;
+}
+
 #endif /* USE_PERF_EVENTS */
 
 static void
@@ -1746,8 +1828,11 @@ log_shutdown (MonoProfiler *prof)
        }
 #endif
 #if USE_PERF_EVENTS
-       if (page_desc)
-               read_perf_mmap (prof);
+       if (perf_data) {
+               int i;
+               for (i = 0; i < num_perf; ++i)
+                       read_perf_mmap (prof, i);
+       }
 #endif
        dump_sample_hits (prof, prof->stat_buffers, 1);
        take_lock ();
@@ -1853,10 +1938,15 @@ helper_thread (void* arg)
                                max_fd = command_socket;
                }
 #if USE_PERF_EVENTS
-               if (perf_fd >= 0) {
-                       FD_SET (perf_fd, &rfds);
-                       if (max_fd < perf_fd)
-                               max_fd = perf_fd;
+               if (perf_data) {
+                       int i;
+                       for ( i = 0; i < num_perf; ++i) {
+                               if (perf_data [i].perf_fd < 0)
+                                       continue;
+                               FD_SET (perf_data [i].perf_fd, &rfds);
+                               if (max_fd < perf_data [i].perf_fd)
+                                       max_fd = perf_data [i].perf_fd;
+                       }
                }
 #endif
                tv.tv_sec = 1;
@@ -1889,16 +1979,30 @@ helper_thread (void* arg)
                        if (do_debug)
                                fprintf (stderr, "helper shutdown\n");
 #if USE_PERF_EVENTS
-                       if (perf_fd >= 0)
-                               read_perf_mmap (prof);
+                       if (perf_data) {
+                               int i;
+                               for ( i = 0; i < num_perf; ++i) {
+                                       if (perf_data [i].perf_fd < 0)
+                                               continue;
+                                       if (FD_ISSET (perf_data [i].perf_fd, &rfds))
+                                               read_perf_mmap (prof, i);
+                               }
+                       }
 #endif
                        safe_dump (prof, ensure_logbuf (0));
                        return NULL;
                }
 #if USE_PERF_EVENTS
-               if (perf_fd >= 0 && FD_ISSET (perf_fd, &rfds)) {
-                       read_perf_mmap (prof);
-                       safe_dump (prof, ensure_logbuf (0));
+               if (perf_data) {
+                       int i;
+                       for ( i = 0; i < num_perf; ++i) {
+                               if (perf_data [i].perf_fd < 0)
+                                       continue;
+                               if (FD_ISSET (perf_data [i].perf_fd, &rfds)) {
+                                       read_perf_mmap (prof, i);
+                                       safe_dump (prof, ensure_logbuf (0));
+                               }
+                       }
                }
 #endif
                if (command_socket >= 0 && FD_ISSET (command_socket, &rfds)) {
@@ -2041,7 +2145,7 @@ create_profiler (const char *filename)
 #if USE_PERF_EVENTS
        if (sample_type && !do_mono_sample)
                need_helper_thread = setup_perf_event ();
-       if (perf_fd < 0) {
+       if (!perf_data) {
                /* FIXME: warn if different freq or sample type */
                do_mono_sample = 1;
        }
index 36ae39ec5322b1b80d86e968a39712ab0d2a39c0..96f2e0137c7ba6e62b127586eee6151643575d84 100755 (executable)
@@ -16,6 +16,7 @@ my $minibuilddir = $builddir . "/mono/mini";
 # for the profiler module
 append_path ("LD_LIBRARY_PATH", $profbuilddir . "/.libs");
 append_path ("DYLD_LIBRARY_PATH", $profbuilddir . "/.libs");
+append_path ("DYLD_LIBRARY_PATH", $minibuilddir . "/.libs");
 # for mprof-report
 append_path ("PATH", $profbuilddir);
 
@@ -37,7 +38,8 @@ $report = run_test ("test-busy.exe", "report,sample");
 check_report_basics ($report);
 check_report_threads ($report, "BusyHelper");
 # at least 40% of the samples should hit each of the two busy methods
-check_report_samples ($report, "T:test ()" => 40, "T:test3 ()" => 40);
+# This seems to fail on osx, where the main thread gets the majority of SIGPROF signals
+#check_report_samples ($report, "T:test ()" => 40, "T:test3 ()" => 40);
 report_errors ();
 # test lock events
 $report = run_test ("test-monitor.exe");
@@ -56,20 +58,20 @@ report_errors ();
 $report = run_test_sgen ("test-heapshot.exe", "report,heapshot");
 if ($report ne "missing binary") {
        check_report_basics ($report);
-       check_report_heapshot ($report, 0, {"T" => 5000});
-       check_report_heapshot ($report, 1, {"T" => 5023});
+       check_report_heapshot ($report, 1, {"T" => 5000});
+       check_report_heapshot ($report, 2, {"T" => 5023});
        report_errors ();
 }
 # test heapshot traces
 $report = run_test_sgen ("test-heapshot.exe", "heapshot,output=-traces.mlpd", "--traces traces.mlpd");
 if ($report ne "missing binary") {
        check_report_basics ($report);
-       check_report_heapshot ($report, 0, {"T" => 5000});
-       check_report_heapshot ($report, 1, {"T" => 5023});
-       check_heapshot_traces ($report, 0,
+       check_report_heapshot ($report, 1, {"T" => 5000});
+       check_report_heapshot ($report, 2, {"T" => 5023});
+       check_heapshot_traces ($report, 1,
                T => [4999, "T"]
        );
-       check_heapshot_traces ($report, 1,
+       check_heapshot_traces ($report, 2,
                T => [5022, "T"]
        );
        report_errors ();
@@ -344,9 +346,9 @@ sub check_report_heapshot
        $section = get_heap_shot ($section, $hshot);
        foreach my $type (keys %allocs) {
                if ($section =~ /\d+\s+(\d+)\s+\d+\s+\Q$type\E(\s+\(bytes.*\))?$/m) {
-                       push @errors, "Wrong heapshot for type $type." unless $1 >= $allocs{$type};
+                       push @errors, "Wrong heapshot for type $type at $hshot ($1, $allocs{$type})." unless $1 >= $allocs{$type};
                } else {
-                       push @errors, "No heapshot for type $type.";
+                       push @errors, "No heapshot for type $type at heapshot $hshot.";
                }
        }
 }
index 76e1a5b2b54cf198bd8062150fb3acca4ce674eb..275f417a2dcde2cfc5717b844e1e3ae6aa64c614 100644 (file)
@@ -1,3 +1,4 @@
+using System;
 using System.Threading;
 
 class T {
index e9d94af800e9a2606952722e32a4d712d24265db..c900988048711d9c8af79ec01e5d3877b7d27dc6 100644 (file)
@@ -26,3 +26,6 @@
 /tests-config
 /TAGS
 /runtime-invoke.gen.cs
+/*.exe.dylib
+/*.exe.dylib.dSYM
+
index d6f4c3178862a14cfcdde0ca410e5719866e3858..1507db9c28a73318880fb2994d47659d288f6255 100644 (file)
@@ -14,16 +14,17 @@ JITTEST_PROG_RUN = MONO_SHARED_DIR=$(mono_build_root)/runtime MONO_CFG_DIR=$(mon
 RUNTIME_ARGS=--config tests-config --optimize=all --debug
 
 with_mono_path = MONO_PATH=$(mcs_topdir)/class/lib/net_4_5
-with_mono_path_moonlight = MONO_PATH=$(mcs_topdir)/class/lib/moonlight_raw
 
 RUNTIME = $(with_mono_path) $(top_builddir)/runtime/mono-wrapper
-RUNTIME_MOONLIGHT = $(with_mono_path_moonlight) $(top_builddir)/runtime/mono-wrapper
 
 MKBUNDLE = \
        PKG_CONFIG_PATH=$(top_builddir):$(PKG_CONFIG_PATH) \
        $(RUNTIME) $(mcs_topdir)/class/lib/net_4_5/mkbundle.exe
 
-MCS = $(RUNTIME) $(mcs_topdir)/class/lib/build/mcs.exe -unsafe -nowarn:0162 -nowarn:0168 -nowarn:0219 -debug
+MCS = $(RUNTIME) $(mcs_topdir)/class/lib/build/mcs.exe -unsafe -debug \
+       -nowarn:0162 -nowarn:0168 -nowarn:0219 -nowarn:0414 -nowarn:0618 \
+       -nowarn:0169 -nowarn:1690 -nowarn:0649 -nowarn:0612 -nowarn:3021 \
+       -nowarn:0197
 ILASM = $(RUNTIME) $(mcs_topdir)/class/lib/net_4_5/ilasm.exe
 
 BENCHSRC=fib.cs random.cs nested-loops.cs ackermann.cs tight-loop.cs sieve.cs
@@ -388,7 +389,11 @@ BASE_TEST_CS_SRC=          \
        bug-6148.cs     \
        assembly_append_ordering.cs     \
        bug-10127.cs    \
-       allow-synchronous-major.cs
+       allow-synchronous-major.cs      \
+       unload-appdomain-on-shutdown.cs \
+       block_guard_restore_aligment_on_exit.cs \
+       finally_block_ending_in_dead_bb.cs      \
+       thread_static_gc_layout.cs
 
 TEST_CS_SRC_DIST=      \
        $(BASE_TEST_CS_SRC)     \
@@ -441,7 +446,7 @@ if MIPS
 PLATFORM_DISABLED_TESTS=filter-stack.exe monitor.exe
 endif
 
-if S390x
+if S390X
 PLATFORM_DISABLED_TESTS=dynamic-method-resurrection.exe
 #PLATFORM_DISABLED_TESTS=dynamic-method-resurrection.exe exception17.exe
 endif
@@ -546,15 +551,11 @@ DISABLED_TESTS_WRENCH=    \
        $(PLATFORM_DISABLED_TESTS_WRENCH)       \
        main-returns-background-resetabort.exe \
        main-returns-background-abort-resetabort.exe    \
-       main-returns-background.exe     \
        thread6.exe     \
        assemblyresolve_event3.exe \
        delegate2.exe   \
-       finally_guard.exe       \
-       finalizer-abort.exe     \
-       finalizer-exit.exe      \
-       finalizer-thread.exe \
-       appdomain-async-invoke.exe
+       finally_guard.exe \
+       gc-altstack.exe
 
 AOT_DISABLED_TESTS=constraints-load.exe
 
@@ -704,30 +705,32 @@ test-messages: w32message.exe
        $(with_mono_path) $(JITTEST_PROG_RUN) w32message.exe >& w32message.allout && cmp test_messages.zero w32message.allout
 endif
 
-if MOONLIGHT
-test_2_1 : test-coreclr-security
-else
-test_2_1 :
-endif
-
 if AMD64
 test-sgen : sgen-tests
 else
 if X86
+if HOST_WIN32
+test-sgen :
+else
 test-sgen : sgen-tests
+endif
 else
 if ARM
 test-sgen : sgen-tests
 else
-if S390x
+if S390X
 test-sgen : sgen-regular-tests
 endif
 endif
 endif
 endif
 
-test: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test_platform test_2_1 test-process-exit test-sgen test-messages rm-empty-logs
-test-wrench: assemblyresolve/test/asm.dll testjit-wrench test-generic-sharing test-type-load test_platform test_2_1 test-process-exit test-sgen test-messages rm-empty-logs
+# Precompile the test assemblies in parallel
+compile-tests:
+       $(MAKE) -j4 $(TESTSI_CS) $(TESTSI_IL) $(TESTBS) libtest.la $(PREREQSI_IL) $(PREREQSI_CS)
+
+test: assemblyresolve/test/asm.dll testjit test-generic-sharing test-type-load test_platform test-process-exit test-messages rm-empty-logs
+test-wrench: compile-tests assemblyresolve/test/asm.dll testjit-wrench test-generic-sharing test-type-load test_platform test-process-exit test-sgen test-messages rm-empty-logs
 
 # Remove empty .stdout and .stderr files for wrench
 rm-empty-logs:
@@ -791,7 +794,7 @@ runtest-wrench: $(TESTSI_CS) $(TESTSI_IL) $(TESTBS) libtest.la $(PREREQSI_IL) $(
        done; \
        echo "$${passed} test(s) passed. $${failed} test(s) did not pass."; \
        if [ $${failed} != 0 ]; then echo -e "\nFailed tests:\n"; \
-         for i in $${failed_tests}; do echo $${i}; done; exit 1; fi
+         for i in $${failed_tests}; do echo $${i}; cat $${i}.stdout; cat $${i}.stderr; done; exit 1; fi
 
 runtest-managed-wrench: test-runner.exe $(TESTSI_CS) $(TESTSI_IL) $(TESTBS) libtest.la $(PREREQSI_IL) $(PREREQSI_CS)
        @$(RUNTIME) ./test-runner.exe -j a --disabled '$(DISABLED_TESTS_WRENCH)' $(TESTSI_CS) $(TESTBS) $(TESTSI_IL)
@@ -803,7 +806,9 @@ runtest: $(TESTSI_CS) $(TESTSI_IL) $(TESTBS) libtest.la $(PREREQSI_IL) $(PREREQS
        @failed=0; \
        passed=0; \
        failed_tests="";\
-       for i in $(TESTSI_CS) $(TESTBS) $(TESTSI_IL); do        \
+       rm -f testlist testlist.sorted; \
+       for i in $(TESTSI_CS) $(TESTBS) $(TESTSI_IL); do echo $${i} >> testlist; sort testlist > testlist.sorted; done; \
+       for i in `cat testlist.sorted`; do \
                rm -f $${i}.so; \
                if [ x$(AOT) = x1 ]; then if echo $(AOT_DISABLED_TESTS) | grep -v -q $${i}; then $(with_mono_path) $(JITTEST_PROG_RUN) --aot --debug $${i} > $${i}.aotlog 2>&1 || exit 1; fi; fi; \
                if $(srcdir)/test-driver '$(with_mono_path) $(JITTEST_PROG_RUN)' $$i '$(DISABLED_TESTS)' 'no-dump' $(RUNTIME_ARGS); \
@@ -816,6 +821,7 @@ runtest: $(TESTSI_CS) $(TESTSI_IL) $(TESTBS) libtest.la $(PREREQSI_IL) $(PREREQS
                fi \
        done; \
        echo "$${passed} test(s) passed. $${failed} test(s) did not pass."; \
+       rm -f testlist testlist.sorted; \
        if [ $${failed} != 0 ]; then echo -e "\nFailed tests:\n"; \
          for i in $${failed_tests}; do echo $${i}; done; exit 1; fi
 
@@ -878,8 +884,13 @@ test-type-load: TestDriver.dll
        @echo "Testing load-exception.exe..."
        @$(RUNTIME) load-exceptions.exe > load-exceptions.exe.stdout 2> load-exceptions.exe.stderr
 
+EXTRA_DIST += debug-casts.cs
+# This depends on TLS, so its not ran by default
+debug-casts:
+       @$(MCS) -r:TestDriver.dll $(srcdir)/debug-casts.cs
+       @$(RUNTIME) --debug=casts debug-casts.exe
 
-EXTRA_DIST += sgen-bridge.cs sgen-descriptors.cs sgen-gshared-vtype.cs sgen-bridge-major-fragmentation.cs sgen-domain-unload.cs sgen-weakref-stress.cs sgen-cementing-stress.cs sgen-case-23400.cs     finalizer-wait.cs critical-finalizers.cs
+EXTRA_DIST += sgen-bridge.cs sgen-descriptors.cs sgen-gshared-vtype.cs sgen-bridge-major-fragmentation.cs sgen-domain-unload.cs sgen-weakref-stress.cs sgen-cementing-stress.cs sgen-case-23400.cs     finalizer-wait.cs critical-finalizers.cs sgen-domain-unload-2.cs sgen-suspend.cs sgen-new-threads-dont-join-stw.cs sgen-bridge-xref.cs
 
 
 #those are actually configurations, eg plain_sgen-descriptors.exe
@@ -893,7 +904,8 @@ SGEN_TESTS =        \
        sgen-domain-unload.exe  \
        sgen-weakref-stress.exe \
        sgen-cementing-stress.exe       \
-       sgen-case-23400.exe
+       sgen-case-23400.exe     \
+       sgen-new-threads-dont-join-stw.exe
 
 SGEN_CONFIGURATIONS =  \
        "|plain"        \
@@ -933,7 +945,7 @@ sgen-regular-tests: $(SGEN_TESTS)
        if [ $${failed} != 0 ]; then echo -e "\nFailed tests:\n"; \
          for i in $${failed_tests}; do echo $${i}; done; exit 1; fi
 
-sgen-bridge-tests: sgen-bridge.exe sgen-bridge-major-fragmentation.exe
+sgen-bridge-tests1: sgen-bridge.exe sgen-bridge-major-fragmentation.exe
        @failed=0; \
        passed=0; \
        failed_tests="";\
@@ -957,8 +969,73 @@ sgen-bridge-tests: sgen-bridge.exe sgen-bridge-major-fragmentation.exe
        if [ $${failed} != 0 ]; then echo -e "\nFailed tests:\n"; \
          for i in $${failed_tests}; do echo $${i}; done; exit 1; fi
 
+sgen-bridge-tests2: sgen-bridge-xref.exe
+       @failed=0; \
+       passed=0; \
+       failed_tests="";\
+       for test in $+; do      \
+               echo "...$$test";       \
+               for conf in $(SGEN_BRIDGE_CONFIGURATIONS); do   \
+                       name=`echo $$conf | cut -d\| -f 2`;     \
+                       params=`echo $$conf | cut -d\| -f 1`;   \
+                       test_name="$${test}|$${name}";  \
+                       if MONO_GC_PARAMS="bridge=2Bridge$${params}" MONO_ENV_OPTIONS="--gc=sgen" $(srcdir)/test-driver '$(with_mono_path) $(JITTEST_PROG_RUN)' $$test_name "$(DISABLED_TESTS_SGEN)" 'dump-output' $(RUNTIME_ARGS);     \
+                       then \
+                               passed=`expr $${passed} + 1`; \
+                       else \
+                               if [ $$? = 2 ]; then break; fi; \
+                               failed=`expr $${failed} + 1`; \
+                               failed_tests="$${failed_tests} $$test_name"; \
+                       fi \
+               done    \
+       done;   \
+       echo "$${passed} test(s) passed. $${failed} test(s) did not pass."; \
+       if [ $${failed} != 0 ]; then echo -e "\nFailed tests:\n"; \
+         for i in $${failed_tests}; do echo $${i}; done; exit 1; fi
+
+
+sgen-bridge-tests: sgen-bridge-tests1 sgen-bridge-tests2
+
 sgen-tests: sgen-regular-tests sgen-bridge-tests
 
+AOT_CONFIGURATIONS=    \
+       "|regular"      \
+       "--gc=boehm|boehm"
+
+#LLVM crashes, got to fix it first.
+#      "--llvm|llvm"   \
+#      "--llvm --gc=boehm|llvm+boehm"
+
+
+test-aot:
+       @failed=0; \
+       passed=0; \
+       failed_tests="";\
+       profile=net_4_5;        \
+       tmpfile=`mktemp -t mono_aot_output` || exit 1;  \
+       rm -f test-aot-$${name}.stdout test-aot-$${name}.stderr; \
+       for assembly in $(mcs_topdir)/class/lib/$$profile/*.dll ; do    \
+               asm_name=`basename $$assembly`; \
+               echo "... $$asm_name";  \
+               for conf in $(AOT_CONFIGURATIONS); do   \
+                       name=`echo $$conf | cut -d\| -f 2`;     \
+                       params=`echo $$conf | cut -d\| -f 1`;   \
+                       test_name="$${asm_name}|$${name}";      \
+                       echo "  $$test_name";   \
+                       if MONO_PATH=$(mcs_topdir)/class/lib/$$profile $(JITTEST_PROG_RUN) $$params --aot=outfile=$$tmpfile $$assembly >> test-aot-$${name}.stdout 2>> test-aot-$${name}.stderr;        \
+                       then \
+                               passed=`expr $${passed} + 1`; \
+                       else \
+                               failed=`expr $${failed} + 1`; \
+                               failed_tests="$${failed_tests} $$test_name"; \
+                       fi \
+               done;   \
+       done;   \
+       rm      $$tmpfile;      \
+       echo "$${passed} test(s) passed. $${failed} test(s) did not pass."; \
+       if [ $${failed} != 0 ]; then echo -e "\nFailed tests:\n"; \
+       for i in $${failed_tests}; do echo $${i}; done; exit 1; fi
+
 
 # Generated tests for runtime invoke
 EXTRA_DIST += gen-runtime-invoke.cs
@@ -1052,14 +1129,12 @@ bug-382986.exe: bug-382986.cs bug-382986-lib.dll
 
 EXTRA_DIST += coreclr-security.cs
 
-if MOONLIGHT
 coreclr-security.exe : coreclr-security.cs
        $(SMCS) -out:coreclr-security.exe $(srcdir)/coreclr-security.cs
 
 test-coreclr-security : coreclr-security.exe
        @echo "Testing coreclr-security.exe..."
        @$(RUNTIME_MOONLIGHT) --security=core-clr-test coreclr-security.exe
-endif
 
 EXTRA_DIST += generic-unboxing.2.il
 generic-unboxing.2.dll : generic-unboxing.2.il
diff --git a/mono/tests/block_guard_restore_aligment_on_exit.cs b/mono/tests/block_guard_restore_aligment_on_exit.cs
new file mode 100644 (file)
index 0000000..270b1dd
--- /dev/null
@@ -0,0 +1,43 @@
+using System;
+using System.Threading;
+
+class Driver {
+       static volatile bool foo = false;
+       static int res = 1;
+       static void InnerFunc () {
+               res = 2;
+               try {
+                       res = 3;
+               } finally {
+                       res = 4;
+                       Console.WriteLine ("EEE");
+                       while (!foo); 
+                       res = 5;
+                       Console.WriteLine ("in the finally block");
+                       Thread.ResetAbort ();
+                       res = 6;
+               }
+               res = 7;
+               throw new Exception ("lalala");
+       }
+
+       static void Func () {
+               try {
+                       InnerFunc ();
+               } catch (Exception e) {
+                       res = 0;
+               }
+       }
+       
+       static int Main () {
+               Thread t = new Thread (Func);
+               t.Start ();
+               Thread.Sleep (100);
+               t.Abort ();
+               foo = true;
+               Console.WriteLine ("What now?");
+               t.Join ();
+               Thread.Sleep (500);
+               return res;
+       }
+}
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
old mode 100644 (file)
new mode 100755 (executable)
index baee70a..0f79342
@@ -28,7 +28,7 @@ class Program
         // ThreadPool has been shutdown, thus `a.BeginInvoke()` has no effect.
         Action a = () => {
             int i = 0;
-            while (true)
+                       while (i < 1024)
                 Console.WriteLine ("Ha! {0}", i++);
         };
         a.BeginInvoke (null, null);
diff --git a/mono/tests/debug-casts.cs b/mono/tests/debug-casts.cs
new file mode 100644 (file)
index 0000000..129e6e2
--- /dev/null
@@ -0,0 +1,45 @@
+using System;
+using System.Collections.Generic;
+using System.Runtime.CompilerServices;
+
+public class Tests
+{
+       public static int Main (string[] args) {
+               return TestDriver.RunTests (typeof (Tests), args);
+       }
+
+       public static int test_0_simple () {
+               object o = new object ();
+               try {
+                       string s = (string)o;
+                       return 1;
+               } catch (InvalidCastException ex) {
+                       if (!ex.Message.Contains ("System.Object") || !ex.Message.Contains ("System.String"))
+                               return 2;
+               }
+               return 0;
+       }
+
+       public static int test_0_complex_1 () {
+               object o = new object ();
+               try {
+                       IEnumerable<object> ie = (IEnumerable<object>)o;
+                       return 1;
+               } catch (InvalidCastException ex) {
+                       if (!ex.Message.Contains ("System.Object") || !ex.Message.Contains ("System.Collections.Generic.IEnumerable`1[System.Object]"))
+                               return 2;
+               }
+               return 0;
+       }
+
+       [MethodImplAttribute (MethodImplOptions.NoInlining)]
+       public static object return_null () {
+               return null;
+       }
+
+       public static int test_0_complex_1_null () {
+               object o = return_null ();
+               IEnumerable<object> ie = (IEnumerable<object>)o;
+               return 0;
+       }
+}
index 1496dc54b476a8d1e9b3bfe11895500e59a79ea6..f11a1dcdeffd2ce3eb23d16d088a431977b999aa 100644 (file)
@@ -10,7 +10,9 @@ public class FinalizerException {
         * We allocate the exception object deep down the stack so
         * that it doesn't get pinned.
         */
-       public static void MakeException (int depth) {
+       public static unsafe void MakeException (int depth) {
+               // Avoid tail calls
+               int* values = stackalloc int [20];
                if (depth <= 0) {
                        new FinalizerException ();
                        return;
@@ -24,7 +26,7 @@ public class FinalizerException {
                        Environment.Exit (0);
                };
 
-               MakeException (100);
+               MakeException (1024);
 
                GC.Collect ();
                GC.WaitForPendingFinalizers ();
index 5720bc1cd415731d1bbe826301f8cd0c2768b102..9b9bf2dc3df4f6d98f2759cf9e1b2f97dcd24fe9 100644 (file)
@@ -8,7 +8,7 @@ class P {
        ~P () {
                T.finalized = true;
                Thread.Sleep (1000);
-               //Console.WriteLine ("finalizer done");
+               // Console.WriteLine ("finalizer done");
                count++;
        }
 }
@@ -22,17 +22,10 @@ class T {
                p = null;
        }
 
-       static void callMakeP (int i) {
-               if (i <= 0)
-               {
-                       makeP ();
-                       return;
-               }
-               callMakeP (i - 1);
-       }
-
        static int Main () {
-               callMakeP (100);
+               var t = new Thread (makeP);
+               t.Start ();
+               t.Join ();
 
                GC.Collect ();
                while (!finalized) {
diff --git a/mono/tests/finally_block_ending_in_dead_bb.cs b/mono/tests/finally_block_ending_in_dead_bb.cs
new file mode 100644 (file)
index 0000000..162b8a0
--- /dev/null
@@ -0,0 +1,32 @@
+using System;
+using System.Threading;
+
+class Driver {
+       static volatile bool foo = false;
+       static int res = 1;
+
+       static void Stuff () {
+               res = 2;
+               try {
+                       res = 3;
+               } finally {
+                       res = 4;
+                       while (!foo); 
+                       Thread.ResetAbort ();
+                       res = 0;
+               }
+       }
+       
+       static int Main () {
+               Thread t = new Thread (Stuff);
+               t.Start ();
+               Thread.Sleep (100);
+               t.Abort ();
+               foo = true;
+               t.Join ();
+               Thread.Sleep (500);
+               if (res != 0)
+                       Console.WriteLine ("Could not abort thread final state {0}", res);
+               return res;
+       }
+}
\ No newline at end of file
old mode 100644 (file)
new mode 100755 (executable)
index 869850e..4daa22b
@@ -14,3 +14,6 @@ descriptor-tests.cs : descriptor-tests-driver.cs descriptor-tests-prefix.cs gen-
        $(srcdir)/gen-descriptor-tests.py >descriptor-tests.cs
 
 EXTRA_DIST = descriptor-tests-driver.cs descriptor-tests-prefix.cs gen-descriptor-tests.py
+
+.DELETE_ON_ERROR:
+
index dc1606e86c9bfe04901c634659e0601ade47cf4e..f683ee2b66e7de0f8a60147b2f81df1a55257837 100644 (file)
@@ -581,6 +581,29 @@ mono_test_marshal_out_struct (int a, simplestruct *ss, int b, OutVTypeDelegate f
                return 1;
 }
 
+typedef int (STDCALL *InVTypeDelegate) (int a, simplestruct *ss, int b);
+
+LIBTEST_API int STDCALL 
+mono_test_marshal_in_struct (int a, simplestruct *ss, int b, InVTypeDelegate func)
+{
+       simplestruct ss2;
+       int res;
+
+       memcpy (&ss2, ss, sizeof (simplestruct));
+
+       res = func (a, ss, b);
+       if (res) {
+               printf ("mono_test_marshal_in_struct () failed: %d\n", res);
+               return 1;
+       }
+
+       /* Check that no modifications is made to the struct */
+       if (ss2.a == ss->a && ss2.b == ss->b && ss2.c == ss->c && ss2.d == ss->d)
+               return 0;
+       else
+               return 1;
+}
+
 typedef struct {
        int a;
        SimpleDelegate func, func2, func3;
@@ -2856,7 +2879,7 @@ mono_test_marshal_variant_out_bstr_byref(VARIANT* variant)
 {
        variant->vt = VT_BSTR|VT_BYREF;
        variant->byref = marshal_alloc(sizeof(gpointer));
-       *((gunichar**)variant->byref) = marshal_bstr_alloc("PI");
+       *((gunichar**)variant->byref) = (gunichar*)marshal_bstr_alloc("PI");
 
        return 0;
 }
@@ -5277,3 +5300,81 @@ mono_test_marshal_return_lpwstr (void)
 
        return res;
 }
+
+
+#ifndef TARGET_X86
+
+LIBTEST_API int STDCALL
+mono_test_has_thiscall (void)
+{
+       return 1;
+}
+
+LIBTEST_API int
+_mono_test_native_thiscall1 (int arg)
+{
+       return arg;
+}
+
+LIBTEST_API int
+_mono_test_native_thiscall2 (int arg, int arg2)
+{
+       return arg + (arg2^1);
+}
+
+LIBTEST_API int
+_mono_test_native_thiscall3 (int arg, int arg2, int arg3)
+{
+       return arg + (arg2^1) + (arg3^2);
+}
+
+#elif defined(__GNUC__)
+
+LIBTEST_API int STDCALL
+mono_test_has_thiscall (void)
+{
+       return 1;
+}
+
+#define def_asm_fn(name) \
+       "\t.align 4\n" \
+       "\t.globl _" #name "\n" \
+       "_" #name ":\n" \
+       "\t.globl __" #name "\n" \
+       "__" #name ":\n"
+
+asm(".text\n"
+
+def_asm_fn(mono_test_native_thiscall1)
+"\tmovl %ecx,%eax\n"
+"\tret\n"
+
+def_asm_fn(mono_test_native_thiscall2)
+"\tmovl %ecx,%eax\n"
+"\tmovl 4(%esp),%ecx\n"
+"\txorl $1,%ecx\n"
+"\taddl %ecx,%eax\n"
+"\tret $4\n"
+
+def_asm_fn(mono_test_native_thiscall3)
+"\tmovl %ecx,%eax\n"
+"\tmovl 4(%esp),%ecx\n"
+"\txorl $1,%ecx\n"
+"\taddl %ecx,%eax\n"
+"\tmovl 8(%esp),%ecx\n"
+"\txorl $2,%ecx\n"
+"\taddl %ecx,%eax\n"
+"\tret $8\n"
+
+);
+
+#else
+
+LIBTEST_API int STDCALL
+mono_test_has_thiscall (void)
+{
+       return 0;
+}
+
+#endif
+
index 0c3f5146766f3f47cec68eb1df1f75017eb9b3cb..cb2fc0983757332593bf06f99e62f07cbdb0ed50 100644 (file)
@@ -325,6 +325,21 @@ public class Tests : LoadMissing {
                return 0;
        }
 
+       public static int test_0_reflection_on_field_with_missing_type () {
+               var t = typeof (BadOverridesDriver).Assembly.GetType ("FieldWithMissingType");
+               foreach (var f in t.GetFields (BindingFlags.Public | BindingFlags.Static)) {
+                       try {
+                               Console.WriteLine (f.Name);
+                               f.GetValue (null);
+                               return 1;
+                       } catch (TypeLoadException) {
+                               return 0;
+                       }
+               }
+               return 2;
+       }
+
+
        public static int Main () {
                return TestDriver.RunTests (typeof (Tests));
        }
index f85fea80e95e84a55dc81e2660d4a0098dcb19eb..e3b855ea6198eac86e091661cd38230298c1284c 100644 (file)
                ret\r
        }\r
 }\r
+\r
+.class public auto ansi beforefieldinit FieldWithMissingType\r
+{\r
+       .field  public [t]Missing BrokenField\r
+    .field  public static int32 WorkingField\r
+}\r
index 166a4d1de2c08d3d6f530905e62d409740b177f1..aadf7adf7438f77b1ae5730d66532a7695dffc2f 100644 (file)
@@ -29,12 +29,7 @@ public class Tests {
        public static extern IntPtr mono_test_marshal_return_delegate_2 ();
 
        static int test_0_get_function_pointer_for_delegate () {
-               // This is a 2.0 feature
-               MethodInfo mi = typeof (Marshal).GetMethod ("GetFunctionPointerForDelegate");
-               if (mi == null)
-                       return 0;
-
-               IntPtr fnPtr = (IntPtr)mi.Invoke (null, new object [] { new SimpleDelegate (delegate_test)});
+               IntPtr fnPtr = Marshal.GetFunctionPointerForDelegate (new SimpleDelegate (delegate_test));
 
                if (mono_test_marshal_delegate (fnPtr) != 3)
                        return 1;
@@ -43,28 +38,18 @@ public class Tests {
        }
 
        static int test_0_get_delegate_for_function_pointer () {
-               // This is a 2.0 feature
-               MethodInfo mi = typeof (Marshal).GetMethod ("GetDelegateForFunctionPointer");
-               if (mi == null)
-                       return 0;
-
                IntPtr ptr = mono_test_marshal_return_delegate (new SimpleDelegate (delegate_test));
-               
-               SimpleDelegate d = (SimpleDelegate)mi.Invoke (null, new object [] { ptr, typeof (SimpleDelegate) });
+
+               SimpleDelegate d = (SimpleDelegate)Marshal.GetDelegateForFunctionPointer (ptr, typeof (SimpleDelegate));
 
                return d (5) == 6 ? 0 : 1;
        }
 
        /* Obtain a delegate from a native function pointer */
        static int test_0_get_delegate_for_ftnptr_native () {
-               // This is a 2.0 feature
-               MethodInfo mi = typeof (Marshal).GetMethod ("GetDelegateForFunctionPointer");
-               if (mi == null)
-                       return 0;
-
                IntPtr ptr = mono_test_marshal_return_delegate_2 ();
 
-               SimpleDelegate d = (SimpleDelegate)mi.Invoke (null, new object [] { ptr, typeof (SimpleDelegate) });
+               SimpleDelegate d = (SimpleDelegate)Marshal.GetDelegateForFunctionPointer (ptr, typeof (SimpleDelegate));
 
                return d (5) == 6 ? 0 : 1;
        }
index 7ca7bb6275996f29f42a4881dcd2113aa591efe9..a4d02ab1431b7cf04c9fa9ef8aacc2532ea461f6 100644 (file)
@@ -42,6 +42,17 @@ public class Tests {
                [MarshalAs (UnmanagedType.ByValTStr, SizeConst=4)] public string s1;
                public int i;
        }
+
+       [StructLayout (LayoutKind.Sequential, Pack=1)]
+       public struct PackStruct1 {
+               float f;
+       }
+
+       [StructLayout (LayoutKind.Sequential)]
+       public struct PackStruct2 {
+               byte b;
+               PackStruct1 s;
+       }
        
        public unsafe static int Main (String[] args) {
                if (TestDriver.RunTests (typeof (Tests), args) != 0)
@@ -214,4 +225,11 @@ public class Tests {
                        return 3;
                return 0;
        }
+
+       // Check that the 'Pack' directive on a struct changes the min alignment of the struct as well (#12110)
+       public static int test_0_struct_pack () {
+               if (Marshal.OffsetOf (typeof (PackStruct2), "s") != new IntPtr (1))
+                       return 1;
+               return 0;
+       }
 }
index 3f1f6dc43fe01394d4edda290b5c1841ab936a95..22c83573c4035de695d2e4ba68008b4383866c4d 100644 (file)
@@ -84,6 +84,15 @@ public class Tests {
                public int x;
                public double y;
        }
+       
+       [StructLayout (LayoutKind.Sequential)]
+       public struct TinyStruct {
+               public TinyStruct (int i)
+               {
+                       this.i = i;
+               }
+               public int i;
+       }
 
        [StructLayout (LayoutKind.Sequential)]
        public class SimpleClass {
@@ -1725,5 +1734,51 @@ public class Tests {
                return 1;
        }
 
+       [DllImport ("libtest", EntryPoint="mono_test_has_thiscall")]
+       public static extern int mono_test_has_thiscall ();
+
+       [DllImport ("libtest", EntryPoint = "_mono_test_native_thiscall1", CallingConvention=CallingConvention.ThisCall)]
+       public static extern int mono_test_native_thiscall (int a);
+
+       [DllImport ("libtest", EntryPoint = "_mono_test_native_thiscall2", CallingConvention=CallingConvention.ThisCall)]
+       public static extern int mono_test_native_thiscall (int a, int b);
+
+       [DllImport ("libtest", EntryPoint = "_mono_test_native_thiscall3", CallingConvention=CallingConvention.ThisCall)]
+       public static extern int mono_test_native_thiscall (int a, int b, int c);
+
+       [DllImport ("libtest", EntryPoint = "_mono_test_native_thiscall1", CallingConvention=CallingConvention.ThisCall)]
+       public static extern int mono_test_native_thiscall (TinyStruct a);
+
+       [DllImport ("libtest", EntryPoint = "_mono_test_native_thiscall2", CallingConvention=CallingConvention.ThisCall)]
+       public static extern int mono_test_native_thiscall (TinyStruct a, int b);
+
+       [DllImport ("libtest", EntryPoint = "_mono_test_native_thiscall3", CallingConvention=CallingConvention.ThisCall)]
+       public static extern int mono_test_native_thiscall (TinyStruct a, int b, int c);
+
+       public static int test_0_native_thiscall ()
+       {
+               if (mono_test_has_thiscall () == 0)
+                       return 0;
+
+               if (mono_test_native_thiscall (1968329802) != 1968329802)
+                       return 1;
+
+               if (mono_test_native_thiscall (268894549, 1212675791) != 1481570339)
+                       return 2;
+
+               if (mono_test_native_thiscall (1288082683, -421187449, -1733670329) != -866775098)
+                       return 3;
+
+               if (mono_test_native_thiscall (new TinyStruct(1968329802)) != 1968329802)
+                       return 4;
+
+               if (mono_test_native_thiscall (new TinyStruct(268894549), 1212675791) != 1481570339)
+                       return 5;
+
+               if (mono_test_native_thiscall (new TinyStruct(1288082683), -421187449, -1733670329) != -866775098)
+                       return 6;
+
+               return 0;
+       }
 }
 
index c5e7fa6ad6704ef86cd73389f52c926f271c7bd3..ded0626819ad13cf20be8654fd9f5946f5d06ed2 100644 (file)
@@ -66,6 +66,19 @@ public class Tests {
                return 0;
        }
 
+       public static int delegate_test_struct_in (int a, [In] ref SimpleStruct ss, int b)
+       {
+               if (a == 1 && b == 2 && ss.a && !ss.b && ss.c && ss.d == "TEST2") {
+                       ss.a = true;
+                       ss.b = true;
+                       ss.c = true;
+                       ss.d = "TEST3";
+                       return 0;
+               }
+
+               return 1;
+       }
+
        public static SimpleClass delegate_test_class (SimpleClass ss)
        {
                if (ss == null)
@@ -134,8 +147,13 @@ public class Tests {
 
        public delegate int OutStructDelegate (int a, out SimpleStruct ss, int b);
 
+       public delegate int InStructDelegate (int a, [In] ref SimpleStruct ss, int b);
+
        [DllImport ("libtest", EntryPoint="mono_test_marshal_out_struct")]
        public static extern int mono_test_marshal_out_struct (int a, out SimpleStruct ss, int b, OutStructDelegate d);
+
+       [DllImport ("libtest", EntryPoint="mono_test_marshal_in_struct")]
+       public static extern int mono_test_marshal_in_struct (int a, ref SimpleStruct ss, int b, InStructDelegate d);
        
        [DllImport ("libtest", EntryPoint="mono_test_marshal_delegate2")]
        public static extern int mono_test_marshal_delegate2 (SimpleDelegate2 d);
@@ -228,6 +246,14 @@ public class Tests {
                return mono_test_marshal_out_struct (1, out ss, 2, d);
        }
 
+       /* Test structures as in arguments of delegates */
+       public static int test_0_marshal_in_struct_delegate () {
+               SimpleStruct ss = new SimpleStruct () { a = true, b = false, c = true, d = "TEST2" };
+               InStructDelegate d = new InStructDelegate (delegate_test_struct_in);
+
+               return mono_test_marshal_in_struct (1, ref ss, 2, d);
+       }
+
        /* Test classes as arguments and return values of delegates */
        public static int test_0_marshal_class_delegate () {
                SimpleDelegate4 d = new SimpleDelegate4 (delegate_test_class);
index b340cd13065c4eb7a00d1940f03a36a5d728d446..624feae80cd7822e0dfaddd6ae60013655f43385 100644 (file)
@@ -215,4 +215,38 @@ class Tests
                var res = typeof (Tests).GetMethod ("pack_i1").Invoke (null, new object [] { (sbyte)-0x40 });
                return (bool)res ? 0 : 1;
        }
+
+       struct Point {
+               public int x, y;
+       }
+
+       struct Foo2 {
+               public Point Location {
+                       get {
+                               return new Point () { x = 10, y = 20 };
+                       }
+               }
+       }
+
+       public static int test_0_vtype_method_vtype_ret () {
+               var f = new Foo2 ();
+               var p = (Point)typeof (Foo2).GetMethod ("get_Location").Invoke (f, null);
+               if (p.x != 10 || p.y != 20)
+                       return 1;
+               return 0;
+       }
+
+       public static int test_0_array_get_set () {
+               int[,,] arr = new int [10, 10, 10];
+               arr [0, 1, 2] = 42;
+               var gm = arr.GetType ().GetMethod ("Get");
+               int i = (int) gm.Invoke (arr, new object [] { 0, 1, 2 });
+               if (i != 42)
+                       return 1;
+               var sm = arr.GetType ().GetMethod ("Set");
+               sm.Invoke (arr, new object [] { 0, 1, 2, 33 });
+               if (arr [0, 1, 2] != 33)
+                       return 2;
+               return 0;
+       }
 }
diff --git a/mono/tests/sgen-bridge-xref.cs b/mono/tests/sgen-bridge-xref.cs
new file mode 100644 (file)
index 0000000..8289280
--- /dev/null
@@ -0,0 +1,52 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.Threading;
+
+public class Bridge {
+       public int __test;
+       public string id;
+       public List<object> link = new List<object> ();
+       
+       ~Bridge () {
+       }
+}
+
+class Driver {
+       static WeakReference<Bridge> root, child;
+
+       static void SetupLinks () {
+               var a = new Bridge () { id = "bridge" };
+               var b = new Bridge () { id = "child" };
+               a.link.Add (b);
+               a.__test = 1;
+               b.__test = 0;
+               root = new WeakReference<Bridge> (a, true);
+               child = new WeakReference<Bridge> (b, true);
+       }
+
+       static int Main ()
+       {
+               var t = new Thread (SetupLinks);
+               t.Start ();
+               t.Join ();
+               
+               GC.Collect ();
+               Bridge a, b;
+               a = b = null;
+               Console.WriteLine ("try get A {0}", root.TryGetTarget (out a));
+               Console.WriteLine ("try get B {0}", child.TryGetTarget (out b));
+               Console.WriteLine ("a is null {0}", a == null);
+               Console.WriteLine ("b is null {0}", b == null);
+               if (a == null || b == null)
+                       return 1;
+
+               Console.WriteLine ("a test {0}", a.__test);
+               Console.WriteLine ("b test {0}", b.__test);
+
+               if (a.__test != 1 || b.__test != 3)
+                       return 2;
+
+               return 0;
+       }
+}
\ No newline at end of file
index ae000849cee94158d0779a3cf050a4a4b8d3da84..246e5aac59d9f18e6c73202dc30b7c7ba5ec3e1c 100644 (file)
@@ -1,4 +1,5 @@
 using System;
+using System.Runtime.InteropServices;
 
 public struct SmallMixed
 {
@@ -47,6 +48,13 @@ public class HugePtrFree {
        public LargeStruct2 c;
 }
 
+[StructLayout (LayoutKind.Sequential)]
+public class Non32bitBitmap {
+       public object o;
+       public long i1, i2, i3, i4, i5, i6, i7, i8, i9, i10, i11, i12, i13, i14, i15, i16, i17, i18, i19, i20, i21, i22, i23, i24, i25, i26, i27, i28, i29, i30, i31, i32, i33, i34, i35;
+       public object o2;
+}
+
 /*
 This is a stress test for descriptors.
 */
@@ -54,10 +62,10 @@ class Driver {
        static char[] FOO = new char[] { 'f', 'o', 'b' };
 
        static void Fill (int cycles) {
-               object[] root = new object [12];
+               object[] root = new object [13];
                object[] current = root;
                for (int i = 0; i < cycles; ++i) {
-                       current [0] = new object [12];
+                       current [0] = new object [13];
                        current [1] = new int [6];
                        current [2] = new int [2,3];
                        current [3] = new string (FOO);
@@ -72,6 +80,9 @@ class Driver {
                                current [10] = new HugePtrFree ();
                        if ((i %  10000) == 0)
                                current [11] = new LargeStruct2 [1];
+
+                       /* Test for 64 bit bitmap descriptors (#14834) */
+                       current [12] = new Non32bitBitmap () { o = new object (), i32 = 1, i33 = 1, i34 = 1, i35 = 1, o2 = new object () };
        
                        current = (object[])current [0];
                }
diff --git a/mono/tests/sgen-domain-unload-2.cs b/mono/tests/sgen-domain-unload-2.cs
new file mode 100644 (file)
index 0000000..6570842
--- /dev/null
@@ -0,0 +1,43 @@
+using System;
+using System.Threading;
+
+/*
+This test stresses what happens when root domain threads are allocating into the nursery
+while a domain is cleaned up.
+
+This is a regression test for a crash in the domain object cleaner code that did not
+stop-the-world before walking the heap.
+*/
+class Driver {
+
+       static void AllocStuff ()
+       {
+               var x = new object ();
+               for (int i = 0; i < 300; ++i)
+                       x = new byte [i];
+       }
+
+       static void BackgroundNoise ()
+       {
+               while (true)
+                       AllocStuff ();
+       }
+
+       static void Main () {
+               for (int i = 0; i < Math.Max (1, Environment.ProcessorCount / 2); ++i) {
+               // for (int i = 0; i < 4; ++i) {
+                       var t = new Thread (BackgroundNoise);
+                       t.IsBackground = true;
+                       t.Start ();
+               }
+               
+               for (int i = 0; i < 100; ++i) {
+                       var ad = AppDomain.CreateDomain ("domain_" + i);
+                       ad.DoCallBack (new CrossAppDomainDelegate (AllocStuff));
+                       AppDomain.Unload (ad);
+                       Console.Write (".");
+                       if (i > 0 && i % 20 == 0) Console.WriteLine ();
+               }
+               Console.WriteLine ("\ndone");
+       }
+}
\ No newline at end of file
diff --git a/mono/tests/sgen-new-threads-dont-join-stw.cs b/mono/tests/sgen-new-threads-dont-join-stw.cs
new file mode 100644 (file)
index 0000000..b6d0a9b
--- /dev/null
@@ -0,0 +1,95 @@
+using System;
+using System.Timers;
+using System.Threading;
+using System.Collections;
+using System.Collections.Generic;
+
+class T {
+
+    static int count = 0;
+    static object count_lock = new object();
+
+    const long N = 500000;
+    const int num_threads = 8;
+
+    static void UseMemory () {
+        
+        for (int i = 0; i < N; ++i) {
+
+            var l1 = new ArrayList ();
+            l1.Add(""+i);
+            var l2 = new ArrayList ();
+            l2.Add(""+(i+1));
+            var l3 = new ArrayList ();
+            l3.Add(""+(i+2));
+            var l4 = new ArrayList ();
+            l4.Add(""+(i+3));
+        }
+       
+        
+        lock (count_lock)
+        {
+            count++;
+            Monitor.PulseAll(count_lock);
+        }
+    }
+
+    static void Timer_Elapsed(object sender, EventArgs e)
+    {
+        HashSet<string> h = new HashSet<string>();
+        for (int j = 0; j < 10000; j++)
+        {
+            h.Add(""+j+""+j);
+        }
+    }
+
+    static void Main (string[] args) {
+        
+        for (int j = 0; j < 2; j++)
+        {
+            count = 0;
+
+            List<Thread> threads = new List<Thread>();
+            List<System.Timers.Timer> timers = new List<System.Timers.Timer>();
+
+            for (int i = 0; i < num_threads; i++)
+            {
+                Thread t3 = new Thread (delegate () { 
+                    UseMemory();
+                    });
+
+                t3.Start ();
+
+                System.Timers.Timer timer = new System.Timers.Timer();
+                timer.Elapsed += Timer_Elapsed;
+                timer.AutoReset = false;
+                timer.Interval = 1000;
+                timer.Start();
+                timers.Add(timer);
+            }
+            
+            for (int i = 0; i < 4000; i++)
+            {
+                System.Timers.Timer timer = new System.Timers.Timer();
+                timer.Elapsed += Timer_Elapsed;
+                timer.AutoReset = false;
+                timer.Interval = 500;
+                timer.Start();
+                timers.Add(timer);
+            }
+
+            lock (count_lock)
+            {
+                while (count < num_threads)
+                {
+                    Monitor.Wait(count_lock);
+                }
+            }
+
+            foreach (var t in threads)
+            {
+                t.Join();
+            }
+        }
+    }
+}
diff --git a/mono/tests/sgen-suspend.cs b/mono/tests/sgen-suspend.cs
new file mode 100644 (file)
index 0000000..10581fe
--- /dev/null
@@ -0,0 +1,55 @@
+using System;
+using System.Threading;
+
+/*
+This test stresses the interaction of the multiple suspend sources and stop-the-world.
+
+Right now the current iteraction that we stresses is between the domain unloader and
+sgen STW. It's mighty hard to get this right on mach.
+*/
+
+class Driver {
+
+       static void AllocStuff ()
+       {
+               var x = new object ();
+               for (int i = 0; i < 300; ++i)
+                       x = new byte [i];
+       }
+
+       static void BackgroundNoise ()
+       {
+               int i = 0;
+               while (true) {
+                       AllocStuff ();
+                       ++i;
+               }
+       }
+
+       static void AppDomainBackgroundNoise ()
+       {
+               for (int i = 0; i < 3; ++i) {
+                       var t = new Thread (BackgroundNoise);
+                       t.IsBackground = true;
+                       t.Start ();
+               }
+       }
+
+       static void Main () {
+               for (int i = 0; i < 3; ++i) {
+                       var t = new Thread (BackgroundNoise);
+                       t.IsBackground = true;
+                       t.Start ();
+               }
+               
+               for (int i = 0; i < 100; ++i) {
+                       var ad = AppDomain.CreateDomain ("domain_" + i);
+                       ad.DoCallBack (new CrossAppDomainDelegate (AppDomainBackgroundNoise));
+                       Thread.Sleep (10);
+                       AppDomain.Unload (ad);
+                       Console.Write (".");
+                       if (i > 0 && i % 20 == 0) Console.WriteLine ();
+               }
+               Console.WriteLine ("\ndone");
+       }
+}
\ No newline at end of file
index 6945eb9b4884a69efa251ef91a744a2db283da3f..b007040a62e95d33de04e626bec61a729dbeef22 100755 (executable)
@@ -34,6 +34,7 @@ $| = 0;
 print "Testing $test... ";
 
 foreach $disabled (split (/ /, $disabled_tests)) {
+       $disabled =~ s/^\s+|\s+$//g;
        if ($disabled eq $test) {
                print "disabled.\n";
                exit (0);
diff --git a/mono/tests/thread_static_gc_layout.cs b/mono/tests/thread_static_gc_layout.cs
new file mode 100644 (file)
index 0000000..d0ea8b4
--- /dev/null
@@ -0,0 +1,26 @@
+using System;
+
+public struct Sandwich
+{
+       public IntPtr a;
+       public object b;
+       public IntPtr c;
+       public IntPtr d;
+}
+
+class Driver {
+       [ThreadStatic]
+       static Sandwich blt;
+       // const long initial_val = 0x0100000001L;
+       const int initial_val = 1;
+
+       static int Main ()
+       {
+               blt.a = (IntPtr)initial_val;
+               blt.b = new object ();
+               blt.c = (IntPtr)initial_val;
+               blt.d = (IntPtr)initial_val;
+               GC.Collect ();
+               return (blt.a == blt.c && blt.c == blt.d && blt.a == (IntPtr)initial_val) ? 0 : -1;
+       }
+}
\ No newline at end of file
diff --git a/mono/tests/unload-appdomain-on-shutdown.cs b/mono/tests/unload-appdomain-on-shutdown.cs
new file mode 100644 (file)
index 0000000..9cb13a8
--- /dev/null
@@ -0,0 +1,39 @@
+using System;
+using System.Reflection;
+using System.Threading;
+
+
+class Driver {
+       public static void Bla ()
+       {
+               //DoDomainUnload is invoked as part of the unload sequence, so let's pre jit it here to increase the likehood
+               //of hanging
+               var m = typeof (AppDomain).GetMethod ("DoDomainUnload", BindingFlags.Instance | BindingFlags.NonPublic);
+               if (m != null)
+                       m.MethodHandle.GetFunctionPointer (); 
+       }
+
+       static AppDomain ad;
+       static ManualResetEvent evt = new ManualResetEvent (false);
+       
+       static void UnloadIt ()
+       {
+               //AppDomain.Unload calls AppDomain::getDomainId () before calling into the runtime, so let's pre jit 
+               //it here to increase the likehood of hanging
+               var x = ad.Id;
+               evt.Set ();
+               AppDomain.Unload (ad);
+       }
+       static int Main ()
+       {
+               AppDomain.Unload (AppDomain.CreateDomain ("Warmup unload code"));
+               Console.WriteLine (".");
+               ad = AppDomain.CreateDomain ("NewDomain");
+               ad.DoCallBack (Bla);
+               var t = new Thread (UnloadIt);
+               t.IsBackground = true;
+               t.Start ();
+               evt.WaitOne ();
+               return 0;
+       }
+}
diff --git a/mono/tests/verifier/invalid_bad_catch_clause_type.il b/mono/tests/verifier/invalid_bad_catch_clause_type.il
new file mode 100755 (executable)
index 0000000..44d5c2d
--- /dev/null
@@ -0,0 +1,152 @@
+
+//  Microsoft (R) .NET Framework IL Disassembler.  Version 4.0.30319.17929
+//  Copyright (c) Microsoft Corporation.  All rights reserved.
+
+
+
+// Metadata version: v4.0.30319
+.assembly extern mscorlib
+{
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
+  .ver 4:0:0:0
+}
+.assembly 'test-901'
+{
+  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
+  .hash algorithm 0x00008004
+  .ver 0:0:0:0
+}
+.module 'test-901.exe'
+// MVID: {66ECA143-8B2A-47EB-A840-23ED00E2033E}
+.imagebase 0x00400000
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003       // WINDOWS_CUI
+.corflags 0x00000001    //  ILONLY
+// Image base: 0x00620000
+
+
+// =============== CLASS MEMBERS DECLARATION ===================
+
+.class public auto ansi beforefieldinit Application
+       extends [mscorlib]System.Object
+{
+  .class auto ansi sealed nested private beforefieldinit '<foo>c__async0`1'<.ctor ([mscorlib]System.Exception, [mscorlib]System.Runtime.Serialization.ISerializable, [mscorlib]System.Runtime.InteropServices._Exception) TException>
+         extends [mscorlib]System.ValueType
+         implements [mscorlib]System.Runtime.CompilerServices.IAsyncStateMachine
+  {
+    .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::.ctor() = ( 01 00 00 00 ) 
+    .field assembly valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder $builder
+    .field assembly int32 $PC
+    .method public hidebysig newslot virtual final 
+            instance void  MoveNext() cil managed
+    {
+      // Code size       94 (0x5e)
+      .maxstack  3
+      .locals init (class [mscorlib]System.Exception V_0)
+      IL_0000:  ldarg.0
+      IL_0001:  ldfld      int32 valuetype Application/'<foo>c__async0`1'<!TException>::$PC
+      IL_0006:  ldarg.0
+      IL_0007:  ldc.i4.m1
+      IL_0008:  stfld      int32 valuetype Application/'<foo>c__async0`1'<!TException>::$PC
+      IL_000d:  brtrue     IL_005d
+
+      .try
+      {
+        IL_0012:  call       !!0 [mscorlib]System.Activator::CreateInstance<!TException>()
+        IL_0017:  box        !TException
+        IL_001c:  throw
+
+      }  // end .try
+      catch !!0
+      {
+        IL_001d:  pop
+        IL_001e:  ldstr      "caught in correct block"
+        IL_0023:  call       void [mscorlib]System.Console::WriteLine(string)
+        IL_0028:  leave      IL_0052
+
+      }  // end handler
+      catch [mscorlib]System.Exception 
+      {
+        IL_002d:  stloc.0
+        IL_002e:  ldstr      "caught in generic block"
+        IL_0033:  call       void [mscorlib]System.Console::WriteLine(string)
+        IL_0038:  ldstr      "type: "
+        IL_003d:  ldloc.0
+        IL_003e:  callvirt   instance class [mscorlib]System.Type [mscorlib]System.Exception::GetType()
+        IL_0043:  call       string [mscorlib]System.String::Concat(object,
+                                                                    object)
+        IL_0048:  call       void [mscorlib]System.Console::WriteLine(string)
+        IL_004d:  leave      IL_0052
+
+      }  // end handler
+      IL_0052:  ldarg.0
+      IL_0053:  ldflda     valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder valuetype Application/'<foo>c__async0`1'<!TException>::$builder
+      IL_0058:  call       instance void [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder::SetResult()
+      IL_005d:  ret
+    } // end of method '<foo>c__async0`1'::MoveNext
+
+    .method public hidebysig newslot virtual final 
+            instance void  SetStateMachine(class [mscorlib]System.Runtime.CompilerServices.IAsyncStateMachine stateMachine) cil managed
+    {
+      .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) 
+      // Code size       13 (0xd)
+      .maxstack  8
+      IL_0000:  ldarg.0
+      IL_0001:  ldflda     valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder valuetype Application/'<foo>c__async0`1'<!TException>::$builder
+      IL_0006:  ldarg.1
+      IL_0007:  call       instance void [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder::SetStateMachine(class [mscorlib]System.Runtime.CompilerServices.IAsyncStateMachine)
+      IL_000c:  ret
+    } // end of method '<foo>c__async0`1'::SetStateMachine
+
+  } // end of class '<foo>c__async0`1'
+
+  .method public hidebysig specialname rtspecialname 
+          instance void  .ctor() cil managed
+  {
+    // Code size       7 (0x7)
+    .maxstack  8
+    IL_0000:  ldarg.0
+    IL_0001:  call       instance void [mscorlib]System.Object::.ctor()
+    IL_0006:  ret
+  } // end of method Application::.ctor
+
+  .method private hidebysig static class [mscorlib]System.Threading.Tasks.Task 
+          foo<.ctor ([mscorlib]System.Exception) TException>() cil managed
+  {
+    .custom instance void [mscorlib]System.Runtime.CompilerServices.AsyncStateMachineAttribute::.ctor(class [mscorlib]System.Type) = ( 01 00 1C 41 70 70 6C 69 63 61 74 69 6F 6E 2B 3C   // ...Application+<
+                                                                                                                                       66 6F 6F 3E 63 5F 5F 61 73 79 6E 63 30 60 31 00   // foo>c__async0`1.
+                                                                                                                                       00 ) 
+    .custom instance void [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::.ctor() = ( 01 00 00 00 ) 
+    // Code size       33 (0x21)
+    .maxstack  3
+    .locals init (valuetype Application/'<foo>c__async0`1'<!!TException> V_0)
+    IL_0000:  ldloca.s   V_0
+    IL_0002:  call       valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder::Create()
+    IL_0007:  stfld      valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder valuetype Application/'<foo>c__async0`1'<!!TException>::$builder
+    IL_000c:  ldloca.s   V_0
+    IL_000e:  ldflda     valuetype [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder valuetype Application/'<foo>c__async0`1'<!!TException>::$builder
+    IL_0013:  dup
+    IL_0014:  ldloca.s   V_0
+    IL_0016:  call       instance void [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder::Start<valuetype Application/'<foo>c__async0`1'<!!0>>(!!0&)
+    IL_001b:  call       instance class [mscorlib]System.Threading.Tasks.Task [mscorlib]System.Runtime.CompilerServices.AsyncTaskMethodBuilder::get_Task()
+    IL_0020:  ret
+  } // end of method Application::foo
+
+  .method private hidebysig static void  Main(string[] args) cil managed
+  {
+    .entrypoint
+    // Code size       11 (0xb)
+    .maxstack  8
+    IL_0000:  call       class [mscorlib]System.Threading.Tasks.Task Application::foo<class [mscorlib]System.InvalidOperationException>()
+    IL_0005:  callvirt   instance void [mscorlib]System.Threading.Tasks.Task::Wait()
+    IL_000a:  ret
+  } // end of method Application::Main
+
+} // end of class Application
+
+
+// =============================================================
+
+// *********** DISASSEMBLY COMPLETE ***********************
diff --git a/mono/tests/verifier/unverifiable_merge_concrete_types_with_shared_iface.il b/mono/tests/verifier/unverifiable_merge_concrete_types_with_shared_iface.il
new file mode 100644 (file)
index 0000000..3682f48
--- /dev/null
@@ -0,0 +1,127 @@
+.assembly extern mscorlib
+{
+  .ver 4:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
+.assembly 'test-997'
+{
+  .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
+               01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
+               63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01       ) // ceptionThrows.
+
+  .hash algorithm 0x00008004
+  .ver  0:0:0:0
+}
+.module 'test-997.exe' // GUID = {AAE37F83-0848-454C-B66A-0AEEA55FFB63}
+
+
+  .class private auto ansi beforefieldinit C
+       extends [mscorlib]System.Object
+  {
+    .field  private  bool multiDomain
+
+    // method line 1
+    .method public static hidebysig 
+           default void Main ()  cil managed 
+    {
+        // Method begins at RVA 0x2050
+       .entrypoint
+       // Code size 1 (0x1)
+       .maxstack 8
+       IL_0000:  ret 
+    } // end of method C::Main
+
+    // method line 2
+    .method private hidebysig 
+           instance default class IA Create (bool arg)  cil managed 
+    {
+        // Method begins at RVA 0x2054
+       // Code size 24 (0x18)
+       .maxstack 1
+       .locals init (
+               class IA        V_0)
+       IL_0000:  ldarg.1 
+       IL_0001:  brfalse IL_0010
+
+       IL_0006:  newobj instance void class B2::'.ctor'()
+       IL_000b:  br IL_0015
+
+       IL_0010:  newobj instance void class B1::'.ctor'()
+       IL_0015:  stloc.0 
+       IL_0016:  ldloc.0 
+       IL_0017:  ret 
+    } // end of method C::Create
+
+    // method line 3
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x2078
+       // Code size 7 (0x7)
+       .maxstack 8
+       IL_0000:  ldarg.0 
+       IL_0001:  call instance void object::'.ctor'()
+       IL_0006:  ret 
+    } // end of method C::.ctor
+
+  } // end of class C
+
+  .class interface private auto ansi abstract IA
+  {
+
+  } // end of class IA
+
+  .class private auto ansi beforefieldinit B2
+       extends [mscorlib]System.Object
+       implements IA  {
+
+    // method line 4
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x2080
+       // Code size 7 (0x7)
+       .maxstack 8
+       IL_0000:  ldarg.0 
+       IL_0001:  call instance void object::'.ctor'()
+       IL_0006:  ret 
+    } // end of method B2::.ctor
+
+  } // end of class B2
+
+  .class private auto ansi beforefieldinit B1
+       extends [mscorlib]System.Object
+       implements IA  {
+
+    // method line 5
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x2088
+       // Code size 7 (0x7)
+       .maxstack 8
+       IL_0000:  ldarg.0 
+       IL_0001:  call instance void object::'.ctor'()
+       IL_0006:  ret 
+    } // end of method B1::.ctor
+
+  } // end of class B1
+
+  .class private auto ansi beforefieldinit B
+       extends [mscorlib]System.Object
+       implements IA  {
+
+    // method line 6
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x2090
+       // Code size 7 (0x7)
+       .maxstack 8
+       IL_0000:  ldarg.0 
+       IL_0001:  call instance void object::'.ctor'()
+       IL_0006:  ret 
+    } // end of method B::.ctor
+
+  } // end of class B
+
index b97e103362116cc78fdb2d4ca99fd152581080b7..21e47bb648e63763af716ff83c8028c10b6ff68b 100644 (file)
@@ -100,10 +100,16 @@ monoutils_sources = \
        mono-threads-windows.c  \
        mono-threads.h  \
        mono-tls.h      \
+       mono-tls.c      \
        linux_magic.h   \
        mono-memory-model.h     \
        atomic.h        \
-       atomic.c
+       atomic.c        \
+       mono-hwcap.h    \
+       mono-hwcap.c    \
+       bsearch.h       \
+       bsearch.c       \
+       mono-signal-handler.h
 
 arch_sources = 
 
@@ -127,6 +133,46 @@ arch_sources += mach-support-unknown.c
 
 endif
 
+if X86
+arch_sources += mono-hwcap-x86.c mono-hwcap-x86.h
+endif
+
+if AMD64
+arch_sources += mono-hwcap-x86.c mono-hwcap-x86.h
+endif
+
+if ARM
+arch_sources += mono-hwcap-arm.c mono-hwcap-arm.h
+endif
+
+if MIPS
+arch_sources += mono-hwcap-mips.c mono-hwcap-mips.h
+endif
+
+if POWERPC
+arch_sources += mono-hwcap-ppc.c mono-hwcap-ppc.h
+endif
+
+if POWERPC64
+arch_sources += mono-hwcap-ppc.c mono-hwcap-ppc.h
+endif
+
+if SPARC
+arch_sources += mono-hwcap-sparc.c mono-hwcap-sparc.h
+endif
+
+if SPARC64
+arch_sources += mono-hwcap-sparc.c mono-hwcap-sparc.h
+endif
+
+if IA64
+arch_sources += mono-hwcap-ia64.c mono-hwcap-ia64.h
+endif
+
+if S390X
+arch_sources += mono-hwcap-s390x.c mono-hwcap-s390x.h
+endif
+
 libmonoutils_la_SOURCES = $(monoutils_sources) $(arch_sources)
 libmonoutilsincludedir = $(includedir)/mono-$(API_VER)/mono/utils
 
old mode 100644 (file)
new mode 100755 (executable)
index 8141bfd..7cd884e
 
 #include <config.h>
 #include <glib.h>
-#include <pthread.h>
 
 #include <mono/utils/atomic.h>
 
-#ifdef WAPI_NO_ATOMIC_ASM
+#if defined (WAPI_NO_ATOMIC_ASM) || defined (BROKEN_64BIT_ATOMICS_INTRINSIC)
+
+#include <pthread.h>
 
 static pthread_mutex_t spin = PTHREAD_MUTEX_INITIALIZER;
+
+#define NEED_64BIT_CMPXCHG_FALLBACK
+
+#endif
+
+#ifdef WAPI_NO_ATOMIC_ASM
+
 static mono_once_t spin_once=MONO_ONCE_INIT;
 
 static void spin_init(void)
@@ -76,6 +84,52 @@ gpointer InterlockedCompareExchangePointer(volatile gpointer *dest,
        return(old);
 }
 
+gint32 InterlockedAdd(volatile gint32 *dest, gint32 add)
+{
+       gint32 ret;
+       int thr_ret;
+
+       mono_once(&spin_once, spin_init);
+
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       *dest += add;
+       ret= *dest;
+
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
+gint64 InterlockedAdd64(volatile gint64 *dest, gint64 add)
+{
+       gint64 ret;
+       int thr_ret;
+
+       mono_once(&spin_once, spin_init);
+
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       *dest += add;
+       ret= *dest;
+
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
 gint32 InterlockedIncrement(volatile gint32 *dest)
 {
        gint32 ret;
@@ -99,6 +153,29 @@ gint32 InterlockedIncrement(volatile gint32 *dest)
        return(ret);
 }
 
+gint64 InterlockedIncrement64(volatile gint64 *dest)
+{
+       gint64 ret;
+       int thr_ret;
+
+       mono_once(&spin_once, spin_init);
+
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       (*dest)++;
+       ret= *dest;
+
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
 gint32 InterlockedDecrement(volatile gint32 *dest)
 {
        gint32 ret;
@@ -122,6 +199,29 @@ gint32 InterlockedDecrement(volatile gint32 *dest)
        return(ret);
 }
 
+gint64 InterlockedDecrement64(volatile gint64 *dest)
+{
+       gint64 ret;
+       int thr_ret;
+
+       mono_once(&spin_once, spin_init);
+
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       (*dest)--;
+       ret= *dest;
+
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
 gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch)
 {
        gint32 ret;
@@ -145,6 +245,29 @@ gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch)
        return(ret);
 }
 
+gint64 InterlockedExchange64(volatile gint64 *dest, gint64 exch)
+{
+       gint64 ret;
+       int thr_ret;
+
+       mono_once(&spin_once, spin_init);
+
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       ret=*dest;
+       *dest=exch;
+
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
 gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch)
 {
        gpointer ret;
@@ -191,4 +314,271 @@ gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add)
        return(ret);
 }
 
+gint64 InterlockedExchangeAdd64(volatile gint64 *dest, gint64 add)
+{
+       gint64 ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       ret= *dest;
+       *dest+=add;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
+gint8 InterlockedRead8(volatile gint8 *src)
+{
+       gint8 ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       ret= *src;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
+gint16 InterlockedRead16(volatile gint16 *src)
+{
+       gint16 ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       ret= *src;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
+gint32 InterlockedRead(volatile gint32 *src)
+{
+       gint32 ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       ret= *src;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
+gint64 InterlockedRead64(volatile gint64 *src)
+{
+       gint64 ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       ret= *src;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
+gpointer InterlockedReadPointer(volatile gpointer *src)
+{
+       gpointer ret;
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       ret= *src;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+
+       pthread_cleanup_pop (0);
+
+       return(ret);
+}
+
+void InterlockedWrite(volatile gint8 *dst, gint8 val)
+{
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       *dst=val;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+       
+       pthread_cleanup_pop (0);
+}
+
+void InterlockedWrite16(volatile gint16 *dst, gint16 val)
+{
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       *dst=val;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+       
+       pthread_cleanup_pop (0);
+}
+
+void InterlockedWrite(volatile gint32 *dst, gint32 val)
+{
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       *dst=val;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+       
+       pthread_cleanup_pop (0);
+}
+
+void InterlockedWrite64(volatile gint64 *dst, gint64 val)
+{
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       *dst=val;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+       
+       pthread_cleanup_pop (0);
+}
+
+void InterlockedWritePointer(volatile gpointer *dst, gpointer val)
+{
+       int thr_ret;
+       
+       mono_once(&spin_once, spin_init);
+       
+       pthread_cleanup_push ((void(*)(void *))pthread_mutex_unlock,
+                             (void *)&spin);
+       thr_ret = pthread_mutex_lock(&spin);
+       g_assert (thr_ret == 0);
+
+       *dst=val;
+       
+       thr_ret = pthread_mutex_unlock(&spin);
+       g_assert (thr_ret == 0);
+       
+       pthread_cleanup_pop (0);
+}
+
+#endif
+
+#if defined (NEED_64BIT_CMPXCHG_FALLBACK)
+
+#if defined (TARGET_OSX)
+
+/* The compiler breaks if this code is in the header... */
+
+gint64
+InterlockedCompareExchange64(volatile gint64 *dest, gint64 exch, gint64 comp)
+{
+       return __sync_val_compare_and_swap (dest, comp, exch);
+}
+
+#elif defined (HAVE_64BIT_CMPXCHG_FALLBACK)
+
+#ifdef ENABLE_EXTENSION_MODULE
+#include "../../../mono-extensions/mono/utils/atomic.c"
+#endif
+
+#else
+
+gint64
+InterlockedCompareExchange64(volatile gint64 *dest, gint64 exch, gint64 comp)
+{
+       gint64 old;
+
+       pthread_mutex_lock (&spin);
+
+       old = *dest;
+       if(old == comp)
+               *dest = exch;
+
+       pthread_mutex_unlock (&spin);
+       return old;
+}
+
+#endif
+
 #endif
old mode 100644 (file)
new mode 100755 (executable)
index e9e5891..79455ad
 #ifndef _WAPI_ATOMIC_H_
 #define _WAPI_ATOMIC_H_
 
-#if defined(__NetBSD__)
-#include <sys/param.h>
-
-#if __NetBSD_Version__ > 499004000
-#include <sys/atomic.h>
-#define HAVE_ATOMIC_OPS
-#endif
+#include "config.h"
+#include <glib.h>
 
+#ifdef ENABLE_EXTENSION_MODULE
+#include "../../../mono-extensions/mono/utils/atomic.h"
 #endif
 
-#include <glib.h>
-
+/* On Windows, we always use the functions provided by the Windows API. */
 #if defined(__WIN32__) || defined(_WIN32)
 
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
+#endif
 #include <windows.h>
+#include <mono/utils/mono-membar.h>
 
-#elif defined(__NetBSD__) && defined(HAVE_ATOMIC_OPS)
-
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
-       gint32 exch, gint32 comp)
+/* mingw is missing InterlockedCompareExchange64 () from winbase.h */
+#if HAVE_DECL_INTERLOCKEDCOMPAREEXCHANGE64==0
+static inline gint64 InterlockedCompareExchange64(volatile gint64 *dest, gint64 exch, gint64 comp)
 {
-       return atomic_cas_32((uint32_t*)dest, comp, exch);
-}
-
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
-{
-       return atomic_cas_ptr(dest, comp, exch);
+       return __sync_val_compare_and_swap (dest, comp, exch);
 }
+#endif
 
-static inline gint32 InterlockedIncrement(volatile gint32 *val)
+/* mingw is missing InterlockedExchange64 () from winbase.h */
+#if HAVE_DECL_INTERLOCKEDEXCHANGE64==0
+static inline gint64 InterlockedExchange64(volatile gint64 *val, gint64 new_val)
 {
-       return atomic_inc_32_nv((uint32_t*)val);
+       gint64 old_val;
+       do {
+               old_val = *val;
+       } while (InterlockedCompareExchange64 (val, new_val, old_val) != old_val);
+       return old_val;
 }
+#endif
 
-static inline gint32 InterlockedDecrement(volatile gint32 *val)
+/* mingw is missing InterlockedIncrement64 () from winbase.h */
+#if HAVE_DECL_INTERLOCKEDINCREMENT64==0
+static inline gint64 InterlockedIncrement64(volatile gint64 *val)
 {
-       return atomic_dec_32_nv((uint32_t*)val);
+       return __sync_add_and_fetch (val, 1);
 }
+#endif
 
-static inline gint32 InterlockedExchange(volatile gint32 *val, gint32 new_val)
+/* mingw is missing InterlockedDecrement64 () from winbase.h */
+#if HAVE_DECL_INTERLOCKEDDECREMENT64==0
+static inline gint64 InterlockedDecrement64(volatile gint64 *val)
 {
-       return atomic_swap_32((uint32_t*)val, new_val);
+       return __sync_sub_and_fetch (val, 1);
 }
+#endif
 
-static inline gpointer InterlockedExchangePointer(volatile gpointer *val,
-               gpointer new_val)
+/* mingw is missing InterlockedAdd () from winbase.h */
+#if HAVE_DECL_INTERLOCKEDADD==0
+static inline gint32 InterlockedAdd(volatile gint32 *dest, gint32 add)
 {
-       return atomic_swap_ptr(val, new_val);
+       return __sync_add_and_fetch (dest, add);
 }
+#endif
 
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
+/* mingw is missing InterlockedAdd64 () from winbase.h */
+#if HAVE_DECL_INTERLOCKEDADD64==0
+static inline gint64 InterlockedAdd64(volatile gint64 *dest, gint64 add)
 {
-       return atomic_add_32_nv((uint32_t*)val, add) - add;
+       return __sync_add_and_fetch (dest, add);
 }
+#endif
 
-#elif defined(__i386__) || defined(__x86_64__)
-
-/*
- * NB: The *Pointer() functions here assume that
- * sizeof(pointer)==sizeof(gint32)
- *
- * NB2: These asm functions assume 486+ (some of the opcodes dont
- * exist on 386).  If this becomes an issue, we can get configure to
- * fall back to the non-atomic C versions of these calls.
- */
+/* And now for some dirty hacks... The Windows API doesn't
+ * provide any useful primitives for this (other than getting
+ * into architecture-specific madness), so use CAS. */
 
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
-                                               gint32 exch, gint32 comp)
+static inline gint32 InterlockedRead(volatile gint32 *src)
 {
-       gint32 old;
-
-       __asm__ __volatile__ ("lock; cmpxchgl %2, %0"
-                             : "=m" (*dest), "=a" (old)
-                             : "r" (exch), "m" (*dest), "a" (comp));   
-       return(old);
+       return InterlockedCompareExchange (src, 0, 0);
 }
 
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
+static inline gint64 InterlockedRead64(volatile gint64 *src)
 {
-       gpointer old;
-
-       __asm__ __volatile__ ("lock; "
-#if defined(__x86_64__)  && !defined(__native_client__)
-                             "cmpxchgq"
-#else
-                             "cmpxchgl"
-#endif
-                             " %2, %0"
-                             : "=m" (*dest), "=a" (old)
-                             : "r" (exch), "m" (*dest), "a" (comp));   
-
-       return(old);
+       return InterlockedCompareExchange64 (src, 0, 0);
 }
 
-static inline gint32 InterlockedIncrement(volatile gint32 *val)
+static inline gpointer InterlockedReadPointer(volatile gpointer *src)
 {
-       gint32 tmp;
-       
-       __asm__ __volatile__ ("lock; xaddl %0, %1"
-                             : "=r" (tmp), "=m" (*val)
-                             : "0" (1), "m" (*val));
-
-       return(tmp+1);
+       return InterlockedCompareExchangePointer (src, NULL, NULL);
 }
 
-static inline gint32 InterlockedDecrement(volatile gint32 *val)
+static inline void InterlockedWrite(volatile gint32 *dst, gint32 val)
 {
-       gint32 tmp;
-       
-       __asm__ __volatile__ ("lock; xaddl %0, %1"
-                             : "=r" (tmp), "=m" (*val)
-                             : "0" (-1), "m" (*val));
-
-       return(tmp-1);
+       InterlockedExchange (dst, val);
 }
 
-/*
- * See
- * http://msdn.microsoft.com/msdnmag/issues/0700/Win32/
- * for the reasons for using cmpxchg and a loop here.
- */
-static inline gint32 InterlockedExchange(volatile gint32 *val, gint32 new_val)
+static inline void InterlockedWrite64(volatile gint64 *dst, gint64 val)
 {
-       gint32 ret;
-
-       __asm__ __volatile__ ("1:; lock; cmpxchgl %2, %0; jne 1b"
-                             : "=m" (*val), "=a" (ret)
-                             : "r" (new_val), "m" (*val), "a" (*val));
-       return(ret);
+       InterlockedExchange64 (dst, val);
 }
 
-static inline gpointer InterlockedExchangePointer(volatile gpointer *val,
-                                                 gpointer new_val)
+static inline void InterlockedWritePointer(volatile gpointer *dst, gpointer val)
 {
-       gpointer ret;
-       
-       __asm__ __volatile__ ("1:; lock; "
-#if defined(__x86_64__)  && !defined(__native_client__)
-                             "cmpxchgq"
-#else
-                             "cmpxchgl"
-#endif
-                             " %2, %0; jne 1b"
-                             : "=m" (*val), "=a" (ret)
-                             : "r" (new_val), "m" (*val), "a" (*val));
-
-       return(ret);
+       InterlockedExchangePointer (dst, val);
 }
 
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
-{
-       gint32 ret;
-       
-       __asm__ __volatile__ ("lock; xaddl %0, %1"
-                             : "=r" (ret), "=m" (*val)
-                             : "0" (add), "m" (*val));
-       
-       return(ret);
-}
+/* We can't even use CAS for these, so write them out
+ * explicitly according to x86(_64) semantics... */
 
-#elif (defined(sparc) || defined (__sparc__)) && defined(__GNUC__)
-
-G_GNUC_UNUSED 
-static inline gint32 InterlockedCompareExchange(volatile gint32 *_dest, gint32 _exch, gint32 _comp)
+static inline gint8 InterlockedRead8(volatile gint8 *src)
 {
-       register volatile gint32 *dest asm("g1") = _dest;
-       register gint32 comp asm("o4") = _comp;
-       register gint32 exch asm("o5") = _exch;
-
-       __asm__ __volatile__(
-               /* cas [%%g1], %%o4, %%o5 */
-               ".word 0xdbe0500c"
-               : "=r" (exch)
-               : "0" (exch), "r" (dest), "r" (comp)
-               : "memory");
-
-       return exch;
+       return *src;
 }
 
-G_GNUC_UNUSED 
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *_dest, gpointer _exch, gpointer _comp)
+static inline gint16 InterlockedRead16(volatile gint16 *src)
 {
-       register volatile gpointer *dest asm("g1") = _dest;
-       register gpointer comp asm("o4") = _comp;
-       register gpointer exch asm("o5") = _exch;
-
-       __asm__ __volatile__(
-#ifdef SPARCV9
-               /* casx [%%g1], %%o4, %%o5 */
-               ".word 0xdbf0500c"
-#else
-               /* cas [%%g1], %%o4, %%o5 */
-               ".word 0xdbe0500c"
-#endif
-               : "=r" (exch)
-               : "0" (exch), "r" (dest), "r" (comp)
-               : "memory");
-
-       return exch;
+       return *src;
 }
 
-G_GNUC_UNUSED 
-static inline gint32 InterlockedIncrement(volatile gint32 *_dest)
+static inline void InterlockedWrite8(volatile gint8 *dst, gint8 val)
 {
-       register volatile gint32 *dest asm("g1") = _dest;
-       register gint32 tmp asm("o4");
-       register gint32 ret asm("o5");
-
-       __asm__ __volatile__(
-               "1:     ld      [%%g1], %%o4\n\t"
-               "       add     %%o4, 1, %%o5\n\t"
-               /*      cas     [%%g1], %%o4, %%o5 */
-               "       .word   0xdbe0500c\n\t"
-               "       cmp     %%o4, %%o5\n\t"
-               "       bne     1b\n\t"
-               "        add    %%o5, 1, %%o5"
-               : "=&r" (tmp), "=&r" (ret)
-               : "r" (dest)
-               : "memory", "cc");
-
-        return ret;
+       *dst = val;
+       mono_memory_barrier ();
 }
 
-G_GNUC_UNUSED 
-static inline gint32 InterlockedDecrement(volatile gint32 *_dest)
+static inline void InterlockedWrite16(volatile gint16 *dst, gint16 val)
 {
-       register volatile gint32 *dest asm("g1") = _dest;
-       register gint32 tmp asm("o4");
-       register gint32 ret asm("o5");
-
-       __asm__ __volatile__(
-               "1:     ld      [%%g1], %%o4\n\t"
-               "       sub     %%o4, 1, %%o5\n\t"
-               /*      cas     [%%g1], %%o4, %%o5 */
-               "       .word   0xdbe0500c\n\t"
-               "       cmp     %%o4, %%o5\n\t"
-               "       bne     1b\n\t"
-               "        sub    %%o5, 1, %%o5"
-               : "=&r" (tmp), "=&r" (ret)
-               : "r" (dest)
-               : "memory", "cc");
-
-        return ret;
+       *dst = val;
+       mono_memory_barrier ();
 }
 
-G_GNUC_UNUSED
-static inline gint32 InterlockedExchange(volatile gint32 *_dest, gint32 exch)
+/* Prefer GCC atomic ops if the target supports it (see configure.in). */
+#elif defined(USE_GCC_ATOMIC_OPS)
+
+static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
+                                               gint32 exch, gint32 comp)
 {
-       register volatile gint32 *dest asm("g1") = _dest;
-       register gint32 tmp asm("o4");
-       register gint32 ret asm("o5");
-
-       __asm__ __volatile__(
-               "1:     ld      [%%g1], %%o4\n\t"
-               "       mov     %3, %%o5\n\t"
-               /*      cas     [%%g1], %%o4, %%o5 */
-               "       .word   0xdbe0500c\n\t"
-               "       cmp     %%o4, %%o5\n\t"
-               "       bne     1b\n\t"
-               "        nop"
-               : "=&r" (tmp), "=&r" (ret)
-               : "r" (dest), "r" (exch)
-               : "memory", "cc");
-
-        return ret;
+       return __sync_val_compare_and_swap (dest, comp, exch);
 }
 
-G_GNUC_UNUSED
-static inline gpointer InterlockedExchangePointer(volatile gpointer *_dest, gpointer exch)
+static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
 {
-       register volatile gpointer *dest asm("g1") = _dest;
-       register gpointer tmp asm("o4");
-       register gpointer ret asm("o5");
-
-       __asm__ __volatile__(
-#ifdef SPARCV9
-               "1:     ldx     [%%g1], %%o4\n\t"
-#else
-               "1:     ld      [%%g1], %%o4\n\t"
-#endif
-               "       mov     %3, %%o5\n\t"
-#ifdef SPARCV9
-               /*      casx    [%%g1], %%o4, %%o5 */
-               "       .word   0xdbf0500c\n\t"
-#else
-               /*      cas     [%%g1], %%o4, %%o5 */
-               "       .word   0xdbe0500c\n\t"
-#endif
-               "       cmp     %%o4, %%o5\n\t"
-               "       bne     1b\n\t"
-               "        nop"
-               : "=&r" (tmp), "=&r" (ret)
-               : "r" (dest), "r" (exch)
-               : "memory", "cc");
-
-        return ret;
+       return __sync_val_compare_and_swap (dest, comp, exch);
 }
 
-G_GNUC_UNUSED
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *_dest, gint32 add)
+static inline gint32 InterlockedAdd(volatile gint32 *dest, gint32 add)
 {
-       register volatile gint32 *dest asm("g1") = _dest;
-       register gint32 tmp asm("o4");
-       register gint32 ret asm("o5");
-
-       __asm__ __volatile__(
-               "1:     ld      [%%g1], %%o4\n\t"
-               "       add     %%o4, %3, %%o5\n\t"
-               /*      cas     [%%g1], %%o4, %%o5 */
-               "       .word   0xdbe0500c\n\t"
-               "       cmp     %%o4, %%o5\n\t"
-               "       bne     1b\n\t"
-               "        add    %%o5, %3, %%o5"
-               : "=&r" (tmp), "=&r" (ret)
-               : "r" (dest), "r" (add)
-               : "memory", "cc");
-
-        return ret;
+       return __sync_add_and_fetch (dest, add);
 }
 
-#elif __s390x__
-
-static inline gint32 
-InterlockedCompareExchange(volatile gint32 *dest,
-                          gint32 exch, gint32 comp)
+static inline gint32 InterlockedIncrement(volatile gint32 *val)
 {
-       gint32 old;
-
-       __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "\tLR\t%1,%3\n"
-                             "\tCS\t%1,%2,0(1)\n"
-                             : "+m" (*dest), "=&r" (old)
-                             : "r" (exch), "r" (comp)
-                             : "1", "cc");     
-       return(old);
+       return __sync_add_and_fetch (val, 1);
 }
 
-static inline gpointer 
-InterlockedCompareExchangePointer(volatile gpointer *dest, 
-                                 gpointer exch, 
-                                 gpointer comp)
+static inline gint32 InterlockedDecrement(volatile gint32 *val)
 {
-       gpointer old;
-
-       __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "\tLGR\t%1,%3\n"
-                             "\tCSG\t%1,%2,0(1)\n"
-                             : "+m" (*dest), "=&r" (old)
-                             : "r" (exch), "r" (comp)
-                             : "1", "cc");
-
-       return(old);
+       return __sync_sub_and_fetch (val, 1);
 }
 
-static inline gint32 
-InterlockedIncrement(volatile gint32 *val)
+static inline gint32 InterlockedExchange(volatile gint32 *val, gint32 new_val)
 {
-       gint32 tmp;
-       
-       __asm__ __volatile__ ("\tLA\t2,%1\n"
-                             "0:\tLGF\t%0,%1\n"
-                             "\tLGFR\t1,%0\n"
-                             "\tAGHI\t1,1\n"
-                             "\tCS\t%0,1,0(2)\n"
-                             "\tJNZ\t0b\n"
-                             "\tLGFR\t%0,1"
-                             : "=r" (tmp), "+m" (*val)
-                             : : "1", "2", "cc");
-
-       return(tmp);
+       gint32 old_val;
+       do {
+               old_val = *val;
+       } while (__sync_val_compare_and_swap (val, old_val, new_val) != old_val);
+       return old_val;
 }
 
-static inline gint32 
-InterlockedDecrement(volatile gint32 *val)
+static inline gpointer InterlockedExchangePointer(volatile gpointer *val,
+                                                 gpointer new_val)
 {
-       gint32 tmp;
-       
-       __asm__ __volatile__ ("\tLA\t2,%1\n"
-                             "0:\tLGF\t%0,%1\n"
-                             "\tLGFR\t1,%0\n"
-                             "\tAGHI\t1,-1\n"
-                             "\tCS\t%0,1,0(2)\n"
-                             "\tJNZ\t0b\n"
-                             "\tLGFR\t%0,1"
-                             : "=r" (tmp), "+m" (*val)
-                             : : "1", "2", "cc");
-
-       return(tmp);
+       gpointer old_val;
+       do {
+               old_val = *val;
+       } while (__sync_val_compare_and_swap (val, old_val, new_val) != old_val);
+       return old_val;
 }
 
-static inline gint32 
-InterlockedExchange(volatile gint32 *val, gint32 new_val)
+static inline gint32 InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
 {
-       gint32 ret;
-       
-       __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "0:\tL\t%1,%0\n"
-                             "\tCS\t%1,%2,0(1)\n"
-                             "\tJNZ\t0b"
-                             : "+m" (*val), "=&r" (ret)
-                             : "r" (new_val)
-                             : "1", "cc");
-
-       return(ret);
+       return __sync_fetch_and_add (val, add);
 }
 
-static inline gpointer
-InterlockedExchangePointer(volatile gpointer *val, gpointer new_val)
+static inline gint8 InterlockedRead8(volatile gint8 *src)
 {
-       gpointer ret;
-       
-       __asm__ __volatile__ ("\tLA\t1,%0\n"
-                             "0:\tLG\t%1,%0\n"
-                             "\tCSG\t%1,%2,0(1)\n"
-                             "\tJNZ\t0b"
-                             : "+m" (*val), "=&r" (ret)
-                             : "r" (new_val)
-                             : "1", "cc");
-
-       return(ret);
+       /* Kind of a hack, but GCC doesn't give us anything better, and it's
+        * certainly not as bad as using a CAS loop. */
+       return __sync_fetch_and_add (src, 0);
 }
 
-static inline gint32 
-InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
+static inline gint16 InterlockedRead16(volatile gint16 *src)
 {
-       gint32 ret;
-
-       __asm__ __volatile__ ("\tLA\t2,%1\n"
-                             "0:\tLGF\t%0,%1\n"
-                             "\tLGFR\t1,%0\n"
-                             "\tAGR\t1,%2\n"
-                             "\tCS\t%0,1,0(2)\n"
-                             "\tJNZ\t0b"
-                             : "=&r" (ret), "+m" (*val)
-                             : "r" (add) 
-                             : "1", "2", "cc");
-       
-       return(ret);
+       return __sync_fetch_and_add (src, 0);
 }
 
-#elif defined(__mono_ppc__)
-
-#ifdef G_COMPILER_CODEWARRIOR
-static inline gint32 InterlockedIncrement(volatile register gint32 *val)
+static inline gint32 InterlockedRead(volatile gint32 *src)
 {
-       gint32 result = 0, tmp;
-       register gint32 result = 0;
-       register gint32 tmp;
-
-       asm
-       {
-               @1:
-                       lwarx   tmp, 0, val
-                       addi    result, tmp, 1
-                       stwcx.  result, 0, val
-                       bne-    @1
-       }
-       return result;
+       return __sync_fetch_and_add (src, 0);
 }
 
-static inline gint32 InterlockedDecrement(register volatile gint32 *val)
+static inline void InterlockedWrite8(volatile gint8 *dst, gint8 val)
 {
-       register gint32 result = 0;
-       register gint32 tmp;
-
-       asm
-       {
-               @1:
-                       lwarx   tmp, 0, val
-                       addi    result, tmp, -1
-                       stwcx.  result, 0, val
-                       bne-    @1
-       }
-
-       return result;
+       /* Nothing useful from GCC at all, so fall back to CAS. */
+       gint8 old_val;
+       do {
+               old_val = *dst;
+       } while (__sync_val_compare_and_swap (dst, old_val, val) != old_val);
 }
-#define InterlockedCompareExchangePointer(dest,exch,comp) (void*)InterlockedCompareExchange((volatile gint32 *)(dest), (gint32)(exch), (gint32)(comp))
 
-static inline gint32 InterlockedCompareExchange(volatile register gint32 *dest, register gint32 exch, register gint32 comp)
+static inline void InterlockedWrite16(volatile gint16 *dst, gint16 val)
 {
-       register gint32 tmp = 0;
-
-       asm
-       {
-               @1:
-                       lwarx   tmp, 0, dest
-                       cmpw    tmp, comp
-                       bne-    @2
-                       stwcx.  exch, 0, dest
-                       bne-    @1
-               @2:
-       }
-
-       return tmp;
+       gint16 old_val;
+       do {
+               old_val = *dst;
+       } while (__sync_val_compare_and_swap (dst, old_val, val) != old_val);
 }
-static inline gint32 InterlockedExchange(register volatile gint32 *dest, register gint32 exch)
-{
-       register gint32 tmp = 0;
 
-       asm
-       {
-               @1:
-                       lwarx   tmp, 0, dest
-                       stwcx.  exch, 0, dest
-                       bne-    @1
-       }
-
-       return tmp;
+static inline void InterlockedWrite(volatile gint32 *dst, gint32 val)
+{
+       /* Nothing useful from GCC at all, so fall back to CAS. */
+       gint32 old_val;
+       do {
+               old_val = *dst;
+       } while (__sync_val_compare_and_swap (dst, old_val, val) != old_val);
 }
-#define InterlockedExchangePointer(dest,exch) (void*)InterlockedExchange((volatile gint32 *)(dest), (gint32)(exch))
-#else
 
-#if defined(__mono_ppc64__) && !defined(__mono_ilp32__)
-#define LDREGX "ldarx"
-#define STREGCXD "stdcx."
-#define CMPREG "cmpd"
-#else
-#define LDREGX "lwarx"
-#define STREGCXD "stwcx."
-#define CMPREG "cmpw"
+#if defined (TARGET_OSX) || defined (__arm__) || (defined (__mips__) && !defined (__mips64)) || (defined (__powerpc__) && !defined (__powerpc64__)) || (defined (__sparc__) && !defined (__arch64__))
+#define BROKEN_64BIT_ATOMICS_INTRINSIC 1
 #endif
 
-static inline gint32 InterlockedIncrement(volatile gint32 *val)
-{
-       gint32 result = 0, tmp;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                             "lwarx  %0, 0, %2\n\t"
-                             "addi   %1, %0, 1\n\t"
-                              "stwcx. %1, 0, %2\n\t"
-                             "bne-   1b"
-                             : "=&b" (result), "=&b" (tmp): "r" (val): "cc", "memory");
-       return result + 1;
-}
+#if !defined (BROKEN_64BIT_ATOMICS_INTRINSIC)
 
-static inline gint32 InterlockedDecrement(volatile gint32 *val)
+static inline gint64 InterlockedCompareExchange64(volatile gint64 *dest, gint64 exch, gint64 comp)
 {
-       gint32 result = 0, tmp;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                             "lwarx  %0, 0, %2\n\t"
-                             "addi   %1, %0, -1\n\t"
-                              "stwcx. %1, 0, %2\n\t"
-                             "bne-   1b"
-                             : "=&b" (result), "=&b" (tmp): "r" (val): "cc", "memory");
-       return result - 1;
+       return __sync_val_compare_and_swap (dest, comp, exch);
 }
 
-static inline gpointer InterlockedCompareExchangePointer (volatile gpointer *dest,
-                                               gpointer exch, gpointer comp)
+static inline gint64 InterlockedAdd64(volatile gint64 *dest, gint64 add)
 {
-       gpointer tmp = NULL;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                            LDREGX " %0, 0, %1\n\t"
-                            CMPREG " %0, %2\n\t" 
-                            "bne-    2f\n\t"
-                            STREGCXD " %3, 0, %1\n\t"
-                            "bne-    1b\n"
-                            "2:"
-                            : "=&r" (tmp)
-                            : "b" (dest), "r" (comp), "r" (exch): "cc", "memory");
-       return(tmp);
+       return __sync_add_and_fetch (dest, add);
 }
 
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
-                                               gint32 exch, gint32 comp) {
-       gint32 tmp = 0;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                            "lwarx   %0, 0, %1\n\t"
-                            "cmpw    %0, %2\n\t" 
-                            "bne-    2f\n\t"
-                            "stwcx.  %3, 0, %1\n\t"
-                            "bne-    1b\n"
-                            "2:"
-                            : "=&r" (tmp)
-                            : "b" (dest), "r" (comp), "r" (exch): "cc", "memory");
-       return(tmp);
+static inline gint64 InterlockedIncrement64(volatile gint64 *val)
+{
+       return __sync_add_and_fetch (val, 1);
 }
 
-static inline gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch)
+static inline gint64 InterlockedDecrement64(volatile gint64 *val)
 {
-       gint32 tmp = 0;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                             "lwarx  %0, 0, %2\n\t"
-                             "stwcx. %3, 0, %2\n\t"
-                             "bne    1b"
-                             : "=r" (tmp) : "0" (tmp), "b" (dest), "r" (exch): "cc", "memory");
-       return(tmp);
+       return __sync_sub_and_fetch (val, 1);
 }
 
-static inline gpointer InterlockedExchangePointer (volatile gpointer *dest, gpointer exch)
+static inline gint64 InterlockedExchangeAdd64(volatile gint64 *val, gint64 add)
 {
-       gpointer tmp = NULL;
-
-       __asm__ __volatile__ ("\n1:\n\t"
-                             LDREGX " %0, 0, %2\n\t"
-                             STREGCXD " %3, 0, %2\n\t"
-                             "bne    1b"
-                             : "=r" (tmp) : "0" (tmp), "b" (dest), "r" (exch): "cc", "memory");
-       return(tmp);
+       return __sync_fetch_and_add (val, add);
 }
 
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add)
+static inline gint64 InterlockedRead64(volatile gint64 *src)
 {
-        gint32 result, tmp;
-        __asm__ __volatile__ ("\n1:\n\t"
-                              "lwarx  %0, 0, %2\n\t"
-                              "add    %1, %0, %3\n\t"
-                              "stwcx. %1, 0, %2\n\t"
-                              "bne    1b"
-                              : "=&r" (result), "=&r" (tmp)
-                              : "r" (dest), "r" (add) : "cc", "memory");
-        return(result);
+       /* Kind of a hack, but GCC doesn't give us anything better. */
+       return __sync_fetch_and_add (src, 0);
 }
 
-#undef LDREGX
-#undef STREGCXD
-#undef CMPREG
-
-#endif /* !G_COMPILER_CODEWARRIOR */
-
-#elif defined(__arm__)
-
-#ifdef __native_client__
-#define MASK_REGISTER(reg, cond) "bic" cond " " reg ", " reg ", #0xc0000000\n"
-#define NACL_ALIGN() ".align 4\n"
 #else
-#define MASK_REGISTER(reg, cond)
-#define NACL_ALIGN()
-#endif
 
-/*
- * Atomic operations on ARM doesn't contain memory barriers, and the runtime code
- * depends on this, so we add them explicitly.
+/* Implement 64-bit cmpxchg by hand or emulate it. */
+extern gint64 InterlockedCompareExchange64(volatile gint64 *dest, gint64 exch, gint64 comp);
+
+/* Implement all other 64-bit atomics in terms of a specialized CAS
+ * in this case, since chances are that the other 64-bit atomic
+ * intrinsics are broken too.
  */
 
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest, gint32 exch, gint32 comp)
+static inline gint64 InterlockedExchangeAdd64(volatile gint64 *dest, gint64 add)
 {
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gint32 ret, tmp;
-       __asm__ __volatile__ (  "1:\n"
-                               NACL_ALIGN()
-                               "dmb\n"
-                               "mov    %0, #0\n"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%2", "al")
-                               "ldrex %1, [%2]\n"
-                               "teq    %1, %3\n"
-                               "it eq\n"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%2", "eq")
-                               "strexeq %0, %4, [%2]\n"
-                               "teq %0, #0\n"
-                               "bne 1b\n"
-                               "dmb\n"
-                               : "=&r" (tmp), "=&r" (ret)
-                               : "r" (dest), "r" (comp), "r" (exch)
-                               : "memory", "cc");
-
-       return ret;
-#else
-       gint32 a, b;
-
-       __asm__ __volatile__ (    "0:\n\t"
-                                 NACL_ALIGN()
-                                 MASK_REGISTER("%2", "al")
-                                 "ldr %1, [%2]\n\t"
-                                 "cmp %1, %4\n\t"
-                                 "mov %0, %1\n\t"
-                                 "bne 1f\n\t"
-                                 NACL_ALIGN()
-                                 MASK_REGISTER("%2", "al")
-                                 "swp %0, %3, [%2]\n\t"
-                                 "cmp %0, %1\n\t"
-                                 NACL_ALIGN()
-                                 MASK_REGISTER("%2", "ne")
-                                 "swpne %3, %0, [%2]\n\t"
-                                 "bne 0b\n\t"
-                                 "1:"
-                                 : "=&r" (a), "=&r" (b)
-                                 : "r" (dest), "r" (exch), "r" (comp)
-                                 : "cc", "memory");
-
-       return a;
-#endif
+       gint64 old_val;
+       do {
+               old_val = *dest;
+       } while (InterlockedCompareExchange64 (dest, old_val + add, old_val) != old_val);
+       return old_val;
 }
 
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
+static inline gint64 InterlockedIncrement64(volatile gint64 *val)
 {
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gpointer ret, tmp;
-       __asm__ __volatile__ (
-                               "dmb\n"
-                               "1:\n"
-                               NACL_ALIGN()
-                               "mov    %0, #0\n"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%2", "al")
-                               "ldrex %1, [%2]\n"
-                               "teq    %1, %3\n"
-                               "it eq\n"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%2", "eq")
-                               "strexeq %0, %4, [%2]\n"
-                               "teq %0, #0\n"
-                               "bne 1b\n"
-                               "dmb\n"
-                               : "=&r" (tmp), "=&r" (ret)
-                               : "r" (dest), "r" (comp), "r" (exch)
-                               : "memory", "cc");
-
-       return ret;
-#else
-       gpointer a, b;
-
-       __asm__ __volatile__ (    "0:\n\t"
-                                 NACL_ALIGN()
-                                 MASK_REGISTER("%2", "al")
-                                 "ldr %1, [%2]\n\t"
-                                 "cmp %1, %4\n\t"
-                                 "mov %0, %1\n\t"
-                                 "bne 1f\n\t"
-                                 NACL_ALIGN()
-                                 MASK_REGISTER("%2", "eq")
-                                 "swpeq %0, %3, [%2]\n\t"
-                                 "cmp %0, %1\n\t"
-                                 NACL_ALIGN()
-                                 MASK_REGISTER("%2", "ne")
-                                 "swpne %3, %0, [%2]\n\t"
-                                 "bne 0b\n\t"
-                                 "1:"
-                                 : "=&r" (a), "=&r" (b)
-                                 : "r" (dest), "r" (exch), "r" (comp)
-                                 : "cc", "memory");
-
-       return a;
-#endif
+       gint64 get, set;
+       do {
+               get = *val;
+               set = get + 1;
+       } while (InterlockedCompareExchange64 (val, set, get) != get);
+       return set;
 }
 
-static inline gint32 InterlockedIncrement(volatile gint32 *dest)
+static inline gint64 InterlockedDecrement64(volatile gint64 *val)
 {
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gint32 ret, flag;
-       __asm__ __volatile__ (
-                               "dmb\n"
-                               "1:\n"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%2", "al")
-                               "ldrex %0, [%2]\n"
-                               "add %0, %0, %3\n"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%2", "al")
-                               "strex %1, %0, [%2]\n"
-                               "teq %1, #0\n"
-                               "bne 1b\n"
-                               "dmb\n"
-                               : "=&r" (ret), "=&r" (flag)
-                               : "r" (dest), "r" (1)
-                               : "memory", "cc");
-
-       return ret;
-#else
-       gint32 a, b, c;
-
-       __asm__ __volatile__ (  "0:\n\t"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "al")
-                               "ldr %0, [%3]\n\t"
-                               "add %1, %0, %4\n\t"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "al")
-                               "swp %2, %1, [%3]\n\t"
-                               "cmp %0, %2\n\t"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "ne")
-                               "swpne %1, %2, [%3]\n\t"
-                               "bne 0b"
-                               : "=&r" (a), "=&r" (b), "=&r" (c)
-                               : "r" (dest), "r" (1)
-                               : "cc", "memory");
-
-       return b;
-#endif
+       gint64 get, set;
+       do {
+               get = *val;
+               set = get - 1;
+       } while (InterlockedCompareExchange64 (val, set, get) != get);
+       return set;
 }
 
-static inline gint32 InterlockedDecrement(volatile gint32 *dest)
+static inline gint64 InterlockedAdd64(volatile gint64 *dest, gint64 add)
 {
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gint32 ret, flag;
-       __asm__ __volatile__ (
-                               "dmb\n"
-                               "1:\n"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%2", "al")
-                               "ldrex %0, [%2]\n"
-                               "sub %0, %0, %3\n"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%2", "al")
-                               "strex %1, %0, [%2]\n"
-                               "teq %1, #0\n"
-                               "bne 1b\n"
-                               "dmb\n"
-                               : "=&r" (ret), "=&r" (flag)
-                               : "r" (dest), "r" (1)
-                               : "memory", "cc");
-
-       return ret;
-#else
-       gint32 a, b, c;
-
-       __asm__ __volatile__ (  "0:\n\t"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "al")
-                               "ldr %0, [%3]\n\t"
-                               "add %1, %0, %4\n\t"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "al")
-                               "swp %2, %1, [%3]\n\t"
-                               "cmp %0, %2\n\t"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "ne")
-                               "swpne %1, %2, [%3]\n\t"
-                               "bne 0b"
-                               : "=&r" (a), "=&r" (b), "=&r" (c)
-                               : "r" (dest), "r" (-1)
-                               : "cc", "memory");
-
-       return b;
-#endif
+       gint64 get, set;
+       do {
+               get = *dest;
+               set = get + add;
+       } while (InterlockedCompareExchange64 (dest, set, get) != get);
+       return set;
 }
 
-static inline gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch)
+static inline gint64 InterlockedRead64(volatile gint64 *src)
 {
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gint32 ret, flag;
-       __asm__ __volatile__ (
-                                 "dmb\n"
-                             "1:\n"
-                             NACL_ALIGN()
-                             MASK_REGISTER("%3", "al")
-                             "ldrex %0, [%3]\n"
-                             NACL_ALIGN()
-                             MASK_REGISTER("%3", "al")
-                             "strex %1, %2, [%3]\n"
-                             "teq %1, #0\n"
-                             "bne 1b\n"
-                                 "dmb\n"
-                             : "=&r" (ret), "=&r" (flag)
-                             : "r" (exch), "r" (dest)
-                             : "memory", "cc");
-       return ret;
-#else
-       gint32 a;
-
-       __asm__ __volatile__ (  NACL_ALIGN()
-                               MASK_REGISTER("%1", "al")
-                                "swp %0, %2, [%1]"
-                               : "=&r" (a)
-                               : "r" (dest), "r" (exch));
+       return InterlockedCompareExchange64 (src, 0, 0);
+}
 
-       return a;
 #endif
-}
 
-static inline gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch)
+static inline gpointer InterlockedReadPointer(volatile gpointer *src)
 {
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gpointer ret, flag;
-       __asm__ __volatile__ (
-                                 "dmb\n"
-                             "1:\n"
-                             NACL_ALIGN()
-                             MASK_REGISTER("%3", "al")
-                             "ldrex %0, [%3]\n"
-                             NACL_ALIGN()
-                             MASK_REGISTER("%3", "al")
-                             "strex %1, %2, [%3]\n"
-                             "teq %1, #0\n"
-                             "bne 1b\n"
-                                 "dmb\n"
-                             : "=&r" (ret), "=&r" (flag)
-                             : "r" (exch), "r" (dest)
-                             : "memory", "cc");
-       return ret;
-#else
-       gpointer a;
+       return InterlockedCompareExchangePointer (src, NULL, NULL);
+}
 
-       __asm__ __volatile__ (  NACL_ALIGN()
-                               MASK_REGISTER("%1", "al")
-                                "swp %0, %2, [%1]"
-                               : "=&r" (a)
-                               : "r" (dest), "r" (exch));
+static inline void InterlockedWritePointer(volatile gpointer *dst, gpointer val)
+{
+       InterlockedExchangePointer (dst, val);
+}
 
-       return a;
-#endif
+/* We always implement this in terms of a 64-bit cmpxchg since
+ * GCC doesn't have an intrisic to model it anyway. */
+static inline gint64 InterlockedExchange64(volatile gint64 *val, gint64 new_val)
+{
+       gint64 old_val;
+       do {
+               old_val = *val;
+       } while (InterlockedCompareExchange64 (val, new_val, old_val) != old_val);
+       return old_val;
 }
 
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add)
+static inline void InterlockedWrite64(volatile gint64 *dst, gint64 val)
 {
-#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7S__)
-       gint32 ret, tmp, flag;
-       __asm__ __volatile__ (
-                               "dmb\n"
-                               "1:\n"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "al")
-                               "ldrex %0, [%3]\n"
-                               "add %1, %0, %4\n"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "al")
-                               "strex %2, %1, [%3]\n"
-                               "teq %2, #0\n"
-                               "bne 1b\n"
-                               "dmb\n"
-                               : "=&r" (ret), "=&r" (tmp), "=&r" (flag)
-                               : "r" (dest), "r" (add)
-                               : "memory", "cc");
-
-       return ret;
-#else
-       int a, b, c;
-
-       __asm__ __volatile__ (  "0:\n\t"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "al")
-                               "ldr %0, [%3]\n\t"
-                               "add %1, %0, %4\n\t"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "al")
-                               "swp %2, %1, [%3]\n\t"
-                               "cmp %0, %2\n\t"
-                               NACL_ALIGN()
-                               MASK_REGISTER("%3", "ne")
-                               "swpne %1, %2, [%3]\n\t"
-                               "bne 0b"
-                               : "=&r" (a), "=&r" (b), "=&r" (c)
-                               : "r" (dest), "r" (add)
-                               : "cc", "memory");
-
-       return a;
-#endif
+       /* Nothing useful from GCC at all, so fall back to CAS. */
+       InterlockedExchange64 (dst, val);
 }
 
 #elif defined(__ia64__)
@@ -1074,159 +470,35 @@ static inline gint32 InterlockedExchangeAdd(gint32 volatile *val, gint32 add)
 #endif
 }
 
-#elif defined(__mips__)
-
-#if SIZEOF_REGISTER == 8
-#error "Not implemented."
-#endif
-
-static inline gint32 InterlockedIncrement(volatile gint32 *val)
-{
-       gint32 tmp, result = 0;
-
-       __asm__ __volatile__ ("    .set    mips32\n"
-                             "1:  ll      %0, %2\n"
-                             "    addu    %1, %0, 1\n"
-                              "    sc      %1, %2\n"
-                             "    beqz    %1, 1b\n"
-                             "    .set    mips0\n"
-                             : "=&r" (result), "=&r" (tmp), "=m" (*val)
-                             : "m" (*val));
-       return result + 1;
-}
-
-static inline gint32 InterlockedDecrement(volatile gint32 *val)
-{
-       gint32 tmp, result = 0;
-
-       __asm__ __volatile__ ("    .set    mips32\n"
-                             "1:  ll      %0, %2\n"
-                             "    subu    %1, %0, 1\n"
-                              "    sc      %1, %2\n"
-                             "    beqz    %1, 1b\n"
-                             "    .set    mips0\n"
-                             : "=&r" (result), "=&r" (tmp), "=m" (*val)
-                             : "m" (*val));
-       return result - 1;
-}
-
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
-                                               gint32 exch, gint32 comp) {
-       gint32 old, tmp;
-
-       __asm__ __volatile__ ("    .set    mips32\n"
-                             "1:  ll      %0, %2\n"
-                             "    bne     %0, %5, 2f\n"
-                             "    move    %1, %4\n"
-                              "    sc      %1, %2\n"
-                             "    beqz    %1, 1b\n"
-                             "2:  .set    mips0\n"
-                             : "=&r" (old), "=&r" (tmp), "=m" (*dest)
-                             : "m" (*dest), "r" (exch), "r" (comp));
-       return(old);
-}
-
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
-{
-       return (gpointer)(InterlockedCompareExchange((volatile gint32 *)(dest), (gint32)(exch), (gint32)(comp)));
-}
-
-static inline gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch)
-{
-       gint32 result, tmp;
-
-       __asm__ __volatile__ ("    .set    mips32\n"
-                             "1:  ll      %0, %2\n"
-                             "    move    %1, %4\n"
-                              "    sc      %1, %2\n"
-                             "    beqz    %1, 1b\n"
-                             "    .set    mips0\n"
-                             : "=&r" (result), "=&r" (tmp), "=m" (*dest)
-                             : "m" (*dest), "r" (exch));
-       return(result);
-}
-
-static inline gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch)
-{
-       return (gpointer)InterlockedExchange((volatile gint32 *)(dest), (gint32)(exch));
-}
-
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add)
-{
-        gint32 result, tmp;
-
-       __asm__ __volatile__ ("    .set    mips32\n"
-                             "1:  ll      %0, %2\n"
-                             "    addu    %1, %0, %4\n"
-                              "    sc      %1, %2\n"
-                             "    beqz    %1, 1b\n"
-                             "    .set    mips0\n"
-                             : "=&r" (result), "=&r" (tmp), "=m" (*dest)
-                             : "m" (*dest), "r" (add));
-        return result;
-}
-
 #else
 
 #define WAPI_NO_ATOMIC_ASM
 
 extern gint32 InterlockedCompareExchange(volatile gint32 *dest, gint32 exch, gint32 comp);
+extern gint64 InterlockedCompareExchange64(volatile gint64 *dest, gint64 exch, gint64 comp);
 extern gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp);
+extern gint32 InterlockedAdd(volatile gint32 *dest, gint32 add);
+extern gint64 InterlockedAdd64(volatile gint64 *dest, gint64 add);
 extern gint32 InterlockedIncrement(volatile gint32 *dest);
+extern gint64 InterlockedIncrement64(volatile gint64 *dest);
 extern gint32 InterlockedDecrement(volatile gint32 *dest);
+extern gint64 InterlockedDecrement64(volatile gint64 *dest);
 extern gint32 InterlockedExchange(volatile gint32 *dest, gint32 exch);
+extern gint64 InterlockedExchange64(volatile gint64 *dest, gint64 exch);
 extern gpointer InterlockedExchangePointer(volatile gpointer *dest, gpointer exch);
 extern gint32 InterlockedExchangeAdd(volatile gint32 *dest, gint32 add);
+extern gint64 InterlockedExchangeAdd64(volatile gint64 *dest, gint64 add);
+extern gint8 InterlockedRead8(volatile gint8 *src);
+extern gint16 InterlockedRead16(volatile gint16 *src);
+extern gint32 InterlockedRead(volatile gint32 *src);
+extern gint64 InterlockedRead64(volatile gint64 *src);
+extern gpointer InterlockedReadPointer(volatile gpointer *src);
+extern void InterlockedWrite8(volatile gint8 *dst, gint8 val);
+extern void InterlockedWrite16(volatile gint16 *dst, gint16 val);
+extern void InterlockedWrite(volatile gint32 *dst, gint32 val);
+extern void InterlockedWrite64(volatile gint64 *dst, gint64 val);
+extern void InterlockedWritePointer(volatile gpointer *dst, gpointer val);
 
 #endif
 
-/* Not yet used */
-#ifdef USE_GCC_ATOMIC_OPS
-
-static inline gint32 InterlockedCompareExchange(volatile gint32 *dest,
-                                               gint32 exch, gint32 comp)
-{
-       return __sync_val_compare_and_swap (dest, comp, exch);
-}
-
-static inline gpointer InterlockedCompareExchangePointer(volatile gpointer *dest, gpointer exch, gpointer comp)
-{
-       return __sync_val_compare_and_swap (dest, comp, exch);
-}
-
-static inline gint32 InterlockedIncrement(volatile gint32 *val)
-{
-       return __sync_add_and_fetch (val, 1);
-}
-
-static inline gint32 InterlockedDecrement(volatile gint32 *val)
-{
-       return __sync_add_and_fetch (val, -1);
-}
-
-static inline gint32 InterlockedExchange(volatile gint32 *val, gint32 new_val)
-{
-       gint32 old_val;
-       do {
-               old_val = *val;
-       } while (__sync_val_compare_and_swap (val, old_val, new_val) != old_val);
-       return old_val;
-}
-
-static inline gpointer InterlockedExchangePointer(volatile gpointer *val,
-                                                 gpointer new_val)
-{
-       gpointer old_val;
-       do {
-               old_val = *val;
-       } while (__sync_val_compare_and_swap (val, old_val, new_val) != old_val);
-       return old_val;
-}
-
-static inline gint32 InterlockedExchangeAdd(volatile gint32 *val, gint32 add)
-{
-       return __sync_fetch_and_add (val, add);
-}
-#endif
-
 #endif /* _WAPI_ATOMIC_H_ */
diff --git a/mono/utils/bsearch.c b/mono/utils/bsearch.c
new file mode 100644 (file)
index 0000000..47be444
--- /dev/null
@@ -0,0 +1,63 @@
+/*
+ * bsearch () implementation. Needed because some broken platforms
+ * have implementations that have unreasonable, non-standard
+ * requirements (e.g. "key must not be null"). Taken from NetBSD
+ * with some minor modifications.
+ *
+ * Copyright (c) 1990, 1993
+ *     The Regents of the University of California.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ *    may be used to endorse or promote products derived from this software
+ *    without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "mono/utils/bsearch.h"
+
+void *
+mono_binary_search (
+       const void *key,
+       const void *array,
+       size_t array_length,
+       size_t member_size,
+       BinarySearchComparer comparer)
+{
+       const char *base = array;
+       size_t lim;
+       int cmp;
+       const void *p;
+
+       for (lim = array_length; lim; lim >>= 1) {
+               p = base + (lim >> 1) * member_size;
+               cmp = (* comparer) (key, p);
+
+               if (!cmp)
+                       return (void *) p;
+               else if (cmp > 0) {
+                       base = (const char *) p + member_size;
+                       lim--;
+               }
+       }
+
+       return NULL;
+}
diff --git a/mono/utils/bsearch.h b/mono/utils/bsearch.h
new file mode 100644 (file)
index 0000000..82137ef
--- /dev/null
@@ -0,0 +1,18 @@
+#ifndef __MONO_BSEARCH_H__
+#define __MONO_BSEARCH_H__
+
+#include <stdlib.h>
+
+#include "mono/utils/mono-compiler.h"
+
+typedef int (* BinarySearchComparer) (const void *key, const void *member);
+
+void *
+mono_binary_search (
+       const void *key,
+       const void *array,
+       size_t array_length,
+       size_t member_size,
+       BinarySearchComparer comparer);
+
+#endif
index 9ca6ed4a0fa41835cc61ab7f5674bc92e39a4549..f83272f88e651859ccdb4cedcf19bdfbf1eeb1e2 100644 (file)
@@ -24,6 +24,7 @@
 /* Use mmap for allocating memory */
 #define HAVE_MORECORE 0
 #define NO_MALLINFO 1
+#include <mono/utils/dlmalloc.h>
 
 /*
 * Quickstart
@@ -2511,6 +2512,7 @@ static int init_mparams(void) {
   return 0;
 }
 
+#if 0
 /* support for mallopt */
 static int change_mparam(int param_number, int value) {
   size_t val = (size_t)value;
@@ -2533,6 +2535,7 @@ static int change_mparam(int param_number, int value) {
     return 0;
   }
 }
+#endif
 
 #if DEBUG
 /* ------------------------- Debugging Support --------------------------- */
@@ -2844,6 +2847,7 @@ static struct mallinfo internal_mallinfo(mstate m) {
 }
 #endif /* !NO_MALLINFO */
 
+#if 0
 static void internal_malloc_stats(mstate m) {
   if (!PREACTION(m)) {
     size_t maxfp = 0;
@@ -2875,6 +2879,7 @@ static void internal_malloc_stats(mstate m) {
     POSTACTION(m);
   }
 }
+#endif
 
 /* ----------------------- Operations on smallbins ----------------------- */
 
index 6b27a98c102380783ab77cce3c399e6008dbf2c8..074f947f291ff5be3bec063f56a14989be79c66a 100644 (file)
@@ -30,6 +30,7 @@ extern "C" {
 #endif
 
 #include <stddef.h>   /* for size_t */
+#include <mono/utils/mono-compiler.h>
 
 #if !ONLY_MSPACES
 
@@ -51,6 +52,9 @@ extern "C" {
 #define dlindependent_comalloc independent_comalloc
 #endif /* USE_DL_PREFIX */
 
+#ifdef ENABLE_EXTENSION_MODULE
+#include "../../../mono-extensions/mono/utils/dlmalloc.h"
+#endif
 
 /*
   malloc(size_t n)
index e889a522c496690f3d89fc9dd8932775085deb4d..19040885da612aaf9908a3dedec6831aab1b491e 100644 (file)
@@ -3,8 +3,10 @@
  *
  * Authors:
  *   Geoff Norton (gnorton@novell.com)
+ *   Rodrigo Kumpera (kumpera@gmail.com)
  *
  * (C) 2010 Novell, Inc.
+ * (C) 2013 Xamarin, Inc.
  */
 
 #include <config.h>
 #include "utils/mono-sigcontext.h"
 #include "mach-support.h"
 
+/* Known offsets used for TLS storage*/
+
+/* All OSX versions up to 10.8 */
+#define TLS_VECTOR_OFFSET_CATS 0x60
+#define TLS_VECTOR_OFFSET_10_9 0xe0
+
+static int tls_vector_offset;
+
 void *
 mono_mach_arch_get_ip (thread_state_t state)
 {
@@ -85,11 +95,11 @@ void *
 mono_mach_get_tls_address_from_thread (pthread_t thread, pthread_key_t key)
 {
        /* OSX stores TLS values in a hidden array inside the pthread_t structure
-        * They are keyed off a giant array offset 0x60 into the pointer.  This value
+        * They are keyed off a giant array from a known offset into the pointer.  This value
         * is baked into their pthread_getspecific implementation
         */
        intptr_t *p = (intptr_t *)thread;
-       intptr_t **tsd = (intptr_t **) ((char*)p + 0x60);
+       intptr_t **tsd = (intptr_t **) ((char*)p + tls_vector_offset);
 
        return (void *) &tsd [key];
 }
@@ -100,4 +110,29 @@ mono_mach_arch_get_tls_value_from_thread (pthread_t thread, guint32 key)
        return *(void**)mono_mach_get_tls_address_from_thread (thread, key);
 }
 
+void
+mono_mach_init (pthread_key_t key)
+{
+       void *old_value = pthread_getspecific (key);
+       void *canary = (void*)0xDEADBEEFu;
+
+       pthread_key_create (&key, NULL);
+       g_assert (old_value != canary);
+
+       pthread_setspecific (key, canary);
+
+       /*First we probe for cats*/
+       tls_vector_offset = TLS_VECTOR_OFFSET_CATS;
+       if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary)
+               goto ok;
+
+       tls_vector_offset = TLS_VECTOR_OFFSET_10_9;
+       if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary)
+               goto ok;
+
+       g_error ("could not discover the mach TLS offset");
+ok:
+       pthread_setspecific (key, old_value);
+}
+
 #endif
index bd1c79de85581c155ef8eb32f4c87861cf0293e2..eb5fd603514ef8a6d9c716858ad6d3dc9255d58c 100644 (file)
 #include <glib.h>
 #include <pthread.h>
 #include "utils/mono-sigcontext.h"
+#include "utils/mono-compiler.h"
 #include "mach-support.h"
 
+/* Known offsets used for TLS storage*/
+
+
+static const int known_tls_offsets[] = {
+       0x48, /*Found on iOS 6 */
+       0xA4,
+       0xA8,
+};
+
+#define TLS_PROBE_COUNT (sizeof (known_tls_offsets) / sizeof (int))
+
+/* This is 2 slots less than the known low */
+#define TLS_PROBE_LOW_WATERMARK 0x40
+/* This is 24 slots above the know high, which is the same diff as the knowns high-low*/
+#define TLS_PROBE_HIGH_WATERMARK 0x108
+
+static int tls_vector_offset;
+
 void *
 mono_mach_arch_get_ip (thread_state_t state)
 {
@@ -86,14 +105,14 @@ mono_mach_arch_set_thread_state (thread_port_t thread, thread_state_t state, mac
 void *
 mono_mach_get_tls_address_from_thread (pthread_t thread, pthread_key_t key)
 {
-       /* OSX stores TLS values in a hidden array inside the pthread_t structure
-        * They are keyed off a giant array offset 0x48 into the pointer.  This value
+       /* Mach stores TLS values in a hidden array inside the pthread_t structure
+        * They are keyed off a giant array from a known offset into the pointer. This value
         * is baked into their pthread_getspecific implementation
         */
        intptr_t *p = (intptr_t *) thread;
-       intptr_t **tsd = (intptr_t **) ((char*)p + 0x48 + (key << 2));
+       intptr_t **tsd = (intptr_t **) ((char*)p + tls_vector_offset);
 
-       return (void *)tsd;
+       return (void *) &tsd [key];
 }
 
 void *
@@ -102,4 +121,37 @@ mono_mach_arch_get_tls_value_from_thread (pthread_t thread, guint32 key)
        return *(void**)mono_mach_get_tls_address_from_thread (thread, key);
 }
 
+void
+mono_mach_init (pthread_key_t key)
+{
+       int i;
+       void *old_value = pthread_getspecific (key);
+       void *canary = (void*)0xDEADBEEFu;
+
+       pthread_key_create (&key, NULL);
+       g_assert (old_value != canary);
+
+       pthread_setspecific (key, canary);
+
+       /*First we probe for cats*/
+       for (i = 0; i < TLS_PROBE_COUNT; ++i) {
+               tls_vector_offset = known_tls_offsets [i];
+               if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary)
+                       goto ok;
+       }
+
+       /*Fallback to scanning a large range of offsets*/
+       for (i = TLS_PROBE_LOW_WATERMARK; i <= TLS_PROBE_HIGH_WATERMARK; i += 4) {
+               tls_vector_offset = i;
+               if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary) {
+                       g_warning ("Found new TLS offset at %d", i);
+                       goto ok;
+               }
+       }
+
+       g_error ("could not discover the mach TLS offset");
+ok:
+       pthread_setspecific (key, old_value);
+}
+
 #endif
index fbba8dc882e8c6b4cfa5f61fd013ce65a05f4d16..9fece2272160425161aa10e057a593e3183ab9e8 100644 (file)
@@ -70,4 +70,10 @@ mono_mach_arch_get_tls_value_from_thread (pthread_t thread, guint32 key)
 {
        g_assert_not_reached ();
 }
+
+void
+mono_mach_init (pthread_key_t key)
+{
+}
+
 #endif
index e65fe6bdeefe05a40f603c9d482fedbb2baa8b04..76d2b06beef149fdee73ddc7c1977bc6c2f40d42 100644 (file)
 #include "utils/mono-sigcontext.h"
 #include "mach-support.h"
 
+/* Known offsets used for TLS storage*/
+
+/* All OSX versions up to 10.8 */
+#define TLS_VECTOR_OFFSET_CATS 0x48
+#define TLS_VECTOR_OFFSET_10_9 0xb0
+
+static int tls_vector_offset;
+
 void *
 mono_mach_arch_get_ip (thread_state_t state)
 {
@@ -85,11 +93,11 @@ void *
 mono_mach_get_tls_address_from_thread (pthread_t thread, pthread_key_t key)
 {
        /* OSX stores TLS values in a hidden array inside the pthread_t structure
-        * They are keyed off a giant array offset 0x48 into the pointer.  This value
+        * They are keyed off a giant array from a known offset into the pointer.  This value
         * is baked into their pthread_getspecific implementation
         */
        intptr_t *p = (intptr_t *) thread;
-       intptr_t **tsd = (intptr_t **) ((char*)p + 0x48);
+       intptr_t **tsd = (intptr_t **) ((char*)p + tls_vector_offset);
 
        return (void *) &tsd [key];     
 }
@@ -100,5 +108,29 @@ mono_mach_arch_get_tls_value_from_thread (pthread_t thread, guint32 key)
        return *(void**)mono_mach_get_tls_address_from_thread (thread, key);
 }
 
+void
+mono_mach_init (pthread_key_t key)
+{
+       void *old_value = pthread_getspecific (key);
+       void *canary = (void*)0xDEADBEEFu;
+
+       pthread_key_create (&key, NULL);
+       g_assert (old_value != canary);
+
+       pthread_setspecific (key, canary);
+
+       /*First we probe for cats*/
+       tls_vector_offset = TLS_VECTOR_OFFSET_CATS;
+       if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary)
+               goto ok;
+
+       tls_vector_offset = TLS_VECTOR_OFFSET_10_9;
+       if (mono_mach_arch_get_tls_value_from_thread (pthread_self (), key) == canary)
+               goto ok;
+
+       g_error ("could not discover the mach TLS offset");
+ok:
+       pthread_setspecific (key, old_value);
+}
 
 #endif
index ffed22f53c994741b4cad802c8340ce62c39e6f8..55fd9850fc27e64d3ccbc43a4f96cb697cccbf40 100644 (file)
@@ -23,6 +23,7 @@ extern pthread_t pthread_from_mach_thread_np(mach_port_t);
 
 void *mono_mach_arch_get_ip (thread_state_t state) MONO_INTERNAL;
 void *mono_mach_arch_get_sp (thread_state_t state) MONO_INTERNAL;
+void mono_mach_init (pthread_key_t key) MONO_INTERNAL;
 
 int mono_mach_arch_get_mcontext_size (void) MONO_INTERNAL;
 void mono_mach_arch_thread_state_to_mcontext (thread_state_t state, void *context) MONO_INTERNAL;
index 935e48756824386508eeadb068aa46cd3c63b689..4a011d2361b1e086664fcc1ddc052d20521213ea 100644 (file)
@@ -24,6 +24,7 @@
 #if defined(__native_client_codegen__) && defined(__native_client__)
 #include <malloc.h>
 #include <nacl/nacl_dyncode.h>
+#include <mono/mini/mini.h>
 #endif
 
 static uintptr_t code_memory_used = 0;
@@ -49,11 +50,13 @@ static uintptr_t code_memory_used = 0;
 #endif
 #ifdef __native_client_codegen__
 /* For Google Native Client, all targets of indirect control flow need to    */
-/* be aligned to a 32-byte boundary. MIN_ALIGN was updated to 32 to force    */
-/* alignment for calls from tramp-x86.c to mono_global_codeman_reserve()     */
+/* be aligned to bundle boundary. 16 bytes on ARM, 32 bytes on x86.
+ * MIN_ALIGN was updated to force alignment for calls from
+ * tramp-<arch>.c to mono_global_codeman_reserve()     */
 /* and mono_domain_code_reserve().                                           */
 #undef MIN_ALIGN
-#define MIN_ALIGN 32
+#define MIN_ALIGN kNaClBundleSize
+
 #endif
 
 /* if a chunk has less than this amount of free space it's considered full */
@@ -127,6 +130,11 @@ nacl_is_code_address (void *target)
        return (char *)target < next_dynamic_code_addr;
 }
 
+/* Fill code buffer with arch-specific NOPs. */
+void
+mono_nacl_fill_code_buffer (guint8 *data, int size);
+
+#ifndef USE_JUMP_TABLES
 const int kMaxPatchDepth = 32;
 __thread unsigned char **patch_source_base = NULL;
 __thread unsigned char **patch_dest_base = NULL;
@@ -134,12 +142,6 @@ __thread int *patch_alloc_size = NULL;
 __thread int patch_current_depth = -1;
 __thread int allow_target_modification = 1;
 
-void
-nacl_allow_target_modification (int val)
-{
-       allow_target_modification = val;
-}
-
 static void
 nacl_jit_check_init ()
 {
@@ -149,7 +151,15 @@ nacl_jit_check_init ()
                patch_alloc_size = g_malloc (kMaxPatchDepth * sizeof(int));
        }
 }
+#endif
 
+void
+nacl_allow_target_modification (int val)
+{
+#ifndef USE_JUMP_TABLES
+        allow_target_modification = val;
+#endif /* USE_JUMP_TABLES */
+}
 
 /* Given a patch target, modify the target such that patching will work when
  * the code is copied to the data section.
@@ -157,6 +167,11 @@ nacl_jit_check_init ()
 void*
 nacl_modify_patch_target (unsigned char *target)
 {
+       /*
+        * There's no need in patch tricks for jumptables,
+        * as we always patch same jumptable.
+        */
+#ifndef USE_JUMP_TABLES
        /* This seems like a bit of an ugly way to do this but the advantage
         * is we don't have to worry about all the conditions in
         * mono_resolve_patch_target, and it can be used by all the bare uses
@@ -179,12 +194,18 @@ nacl_modify_patch_target (unsigned char *target)
                int target_offset = target - db;
                target = sb + target_offset;
        }
+#endif
        return target;
 }
 
 void*
 nacl_inverse_modify_patch_target (unsigned char *target)
 {
+       /*
+        * There's no need in patch tricks for jumptables,
+        * as we always patch same jumptable.
+        */
+#ifndef USE_JUMP_TABLES
        unsigned char *sb;
        unsigned char *db;
        int target_offset;
@@ -197,6 +218,7 @@ nacl_inverse_modify_patch_target (unsigned char *target)
 
        target_offset = target - sb;
        target = db + target_offset;
+#endif
        return target;
 }
 
@@ -319,11 +341,13 @@ mono_code_manager_new (void)
 #endif
        }
        cman->hash =  g_hash_table_new (NULL, NULL);
+# ifndef USE_JUMP_TABLES
        if (patch_source_base == NULL) {
                patch_source_base = g_malloc (kMaxPatchDepth * sizeof(unsigned char *));
                patch_dest_base = g_malloc (kMaxPatchDepth * sizeof(unsigned char *));
                patch_alloc_size = g_malloc (kMaxPatchDepth * sizeof(int));
        }
+# endif
 #endif
        return cman;
 }
@@ -631,6 +655,7 @@ mono_code_manager_reserve_align (MonoCodeManager *cman, int size, int alignment)
        /* Insert pointer to code space in hash, keyed by buffer ptr */
        g_hash_table_insert (cman->hash, temp_ptr, code_ptr);
 
+#ifndef USE_JUMP_TABLES
        nacl_jit_check_init ();
 
        patch_current_depth++;
@@ -638,6 +663,8 @@ mono_code_manager_reserve_align (MonoCodeManager *cman, int size, int alignment)
        patch_dest_base[patch_current_depth] = code_ptr;
        patch_alloc_size[patch_current_depth] = size;
        g_assert (patch_current_depth < kMaxPatchDepth);
+#endif
+
        return temp_ptr;
 #endif
 }
@@ -680,15 +707,13 @@ mono_code_manager_commit (MonoCodeManager *cman, void *data, int size, int newsi
 #else
        unsigned char *code;
        int status;
-       g_assert (newsize <= size);
+       g_assert (NACL_BUNDLE_ALIGN_UP(newsize) <= size);
        code = g_hash_table_lookup (cman->hash, data);
        g_assert (code != NULL);
-       /* Pad space after code with HLTs */
-       /* TODO: this is x86/amd64 specific */
-       while (newsize & kNaClBundleMask) {
-               *((char *)data + newsize) = 0xf4;
-               newsize++;
-       }
+       mono_nacl_fill_code_buffer ((uint8_t*)data + newsize, size - newsize);
+       newsize = NACL_BUNDLE_ALIGN_UP(newsize);
+       g_assert ((GPOINTER_TO_UINT (data) & kNaClBundleMask) == 0);
+       g_assert ((newsize & kNaClBundleMask) == 0);
        status = nacl_dyncode_create (code, data, newsize);
        if (status != 0) {
                unsigned char *codep;
@@ -700,10 +725,12 @@ mono_code_manager_commit (MonoCodeManager *cman, void *data, int size, int newsi
                g_assert_not_reached ();
        }
        g_hash_table_remove (cman->hash, data);
+# ifndef USE_JUMP_TABLES
        g_assert (data == patch_source_base[patch_current_depth]);
        g_assert (code == patch_dest_base[patch_current_depth]);
        patch_current_depth--;
        g_assert (patch_current_depth >= -1);
+# endif
        free (data);
 #endif
 }
@@ -746,3 +773,26 @@ mono_code_manager_size (MonoCodeManager *cman, int *used_size)
        return size;
 }
 
+#ifdef __native_client_codegen__
+# if defined(TARGET_ARM)
+/* Fill empty space with UDF instruction used as halt on ARM. */
+void
+mono_nacl_fill_code_buffer (guint8 *data, int size)
+{
+        guint32* data32 = (guint32*)data;
+        int i;
+        g_assert(size % 4 == 0);
+        for (i = 0; i < size / 4; i++)
+                data32[i] = 0xE7FEDEFF;
+}
+# elif (defined(TARGET_X86) || defined(TARGET_AMD64))
+/* Fill empty space with HLT instruction */
+void
+mono_nacl_fill_code_buffer(guint8 *data, int size)
+{
+        memset (data, 0xf4, size);
+}
+# else
+#  error "Not ported"
+# endif
+#endif
index 63411230dc3069ad87b5e3c7697520e6270cef6a..17d53b3b0328ab81161646b1e4fade010c367af2 100644 (file)
@@ -1,21 +1,23 @@
 #ifndef __MONO_CODEMAN_H__
 #define __MONO_CODEMAN_H__
 
+#include <mono/utils/mono-publib.h>
+
 typedef struct _MonoCodeManager MonoCodeManager;
 
-MonoCodeManager* mono_code_manager_new     (void);
-MonoCodeManager* mono_code_manager_new_dynamic (void);
-void             mono_code_manager_destroy (MonoCodeManager *cman);
-void             mono_code_manager_invalidate (MonoCodeManager *cman);
-void             mono_code_manager_set_read_only (MonoCodeManager *cman);
+MONO_API MonoCodeManager* mono_code_manager_new     (void);
+MONO_API MonoCodeManager* mono_code_manager_new_dynamic (void);
+MONO_API void             mono_code_manager_destroy (MonoCodeManager *cman);
+MONO_API void             mono_code_manager_invalidate (MonoCodeManager *cman);
+MONO_API void             mono_code_manager_set_read_only (MonoCodeManager *cman);
 
-void*            mono_code_manager_reserve_align (MonoCodeManager *cman, int size, int alignment);
+MONO_API void*            mono_code_manager_reserve_align (MonoCodeManager *cman, int size, int alignment);
 
-void*            mono_code_manager_reserve (MonoCodeManager *cman, int size);
-void             mono_code_manager_commit  (MonoCodeManager *cman, void *data, int size, int newsize);
-int              mono_code_manager_size    (MonoCodeManager *cman, int *used_size);
-void             mono_code_manager_init (void);
-void             mono_code_manager_cleanup (void);
+MONO_API void*            mono_code_manager_reserve (MonoCodeManager *cman, int size);
+MONO_API void             mono_code_manager_commit  (MonoCodeManager *cman, void *data, int size, int newsize);
+MONO_API int              mono_code_manager_size    (MonoCodeManager *cman, int *used_size);
+MONO_API void             mono_code_manager_init (void);
+MONO_API void             mono_code_manager_cleanup (void);
 
 /* find the extra block allocated to resolve branches close to code */
 typedef int    (*MonoCodeManagerFunc)      (void *data, int csize, int size, void *user_data);
@@ -23,12 +25,18 @@ void            mono_code_manager_foreach  (MonoCodeManager *cman, MonoCodeManag
 
 #if defined( __native_client_codegen__ ) && defined( __native_client__ )
 
+#ifdef __arm__
+#define kNaClBundleSize 16
+#else
 #define kNaClBundleSize 32
+#endif
 #define kNaClBundleMask (kNaClBundleSize-1)
 
+#ifndef USE_JUMP_TABLES
 extern __thread unsigned char **patch_source_base;
 extern __thread unsigned char **patch_dest_base;
 extern __thread int patch_current_depth;
+#endif
 
 int              nacl_is_code_address             (void *target);
 void*            nacl_code_manager_get_code_dest  (MonoCodeManager *cman, void *data);
index cc3d00cc50e27a764e002e3ae6a1bc6ce2564dec..6772dacfd503424548de5370bfb2792b81bb32c6 100644 (file)
 /* Deal with Microsoft C compiler differences */
 #ifdef _MSC_VER
 
+#include <math.h>
 #include <float.h>
 #define isnan(x)       _isnan(x)
 #define trunc(x)       (((x) < 0) ? ceil((x)) : floor((x)))
 
 #endif /* _MSC_VER */
 
-#if !defined(_MSC_VER) && !defined(PLATFORM_SOLARIS) && !defined(_WIN32) && !defined(__CYGWIN__) && HAVE_VISIBILITY_HIDDEN
+#if !defined(_MSC_VER) && !defined(PLATFORM_SOLARIS) && !defined(_WIN32) && !defined(__CYGWIN__) && !defined(MONOTOUCH) && HAVE_VISIBILITY_HIDDEN
 #define MONO_INTERNAL __attribute__ ((visibility ("hidden")))
 #if MONO_LLVM_LOADED
 #define MONO_LLVM_INTERNAL 
 
 #ifdef __GNUC__
 #define MONO_ALWAYS_INLINE __attribute__((always_inline))
+#elif defined(_MSC_VER)
+#define MONO_ALWAYS_INLINE __forceinline
 #else
 #define MONO_ALWAYS_INLINE
 #endif
old mode 100644 (file)
new mode 100755 (executable)
index 43ceb84..84409cf
@@ -105,6 +105,24 @@ typedef struct {
 #define MONO_CONTEXT_GET_SP(ctx) ((gpointer)((ctx)->esp))
 
 /*We set EAX to zero since we are clobering it anyway*/
+#ifdef _MSC_VER
+#define MONO_CONTEXT_GET_CURRENT(ctx) do { \
+       void *_ptr = &(ctx);                                                                                            \
+       __asm {                                                                                                                         \
+        __asm mov eax, _ptr                                                                                            \
+        __asm mov [eax+0x00], eax                                                                                      \
+        __asm mov [eax+0x04], ebx                                                                                      \
+        __asm mov [eax+0x08], ecx                                                                                      \
+        __asm mov [eax+0x0c], edx                                                                                      \
+        __asm mov [eax+0x10], ebp                                                                                      \
+        __asm mov [eax+0x14], esp                                                                                      \
+        __asm mov [eax+0x18], esi                                                                                      \
+        __asm mov [eax+0x1c], edi                                                                                      \
+        __asm call $+5                                                                                                         \
+        __asm pop dword ptr [eax+0x20]                                                                         \
+                }                                                                                                                              \
+       } while (0)
+#else
 #define MONO_CONTEXT_GET_CURRENT(ctx) \
        __asm__ __volatile__(   \
        "movl $0x0, 0x00(%0)\n" \
@@ -120,10 +138,9 @@ typedef struct {
        :       \
        : "a" (&(ctx))  \
        : "memory")
+#endif
 
-#if !defined(HOST_WIN32)
 #define MONO_ARCH_HAS_MONO_CONTEXT 1
-#endif
 
 #elif (defined(__x86_64__) && !defined(MONO_CROSS_COMPILE)) || (defined(TARGET_AMD64)) /* defined(__i386__) */
 
index 07aeb7902e3e9e714a5977035705f6216340f103..f18212f90bfdc535588ad8cf1ec5d455fe04f60f 100644 (file)
@@ -25,21 +25,21 @@ enum {
        MONO_COUNTER_LAST_SECTION
 };
 
-void mono_counters_enable (int section_mask);
+MONO_API void mono_counters_enable (int section_mask);
 
 /* 
  * register addr as the address of a counter of type type.
  * It may be a function pointer if MONO_COUNTER_CALLBACK is specified:
  * the function should return the value and take no arguments.
  */
-void mono_counters_register (const char* descr, int type, void *addr);
+MONO_API void mono_counters_register (const char* descr, int type, void *addr);
 
 /* 
  * Create a readable dump of the counters for section_mask sections (ORed section values)
  */
-void mono_counters_dump (int section_mask, FILE *outfile);
+MONO_API void mono_counters_dump (int section_mask, FILE *outfile);
 
-void mono_counters_cleanup (void);
+MONO_API void mono_counters_cleanup (void);
 
 typedef enum {
        MONO_RESOURCE_JIT_CODE, /* bytes */
@@ -50,9 +50,9 @@ typedef enum {
 
 typedef void (*MonoResourceCallback) (int resource_type, uintptr_t value, int is_soft);
 
-int  mono_runtime_resource_limit        (int resource_type, uintptr_t soft_limit, uintptr_t hard_limit);
-void mono_runtime_resource_set_callback (MonoResourceCallback callback);
-void mono_runtime_resource_check_limit  (int resource_type, uintptr_t value);
+MONO_API int  mono_runtime_resource_limit        (int resource_type, uintptr_t soft_limit, uintptr_t hard_limit);
+MONO_API void mono_runtime_resource_set_callback (MonoResourceCallback callback);
+MONO_API void mono_runtime_resource_check_limit  (int resource_type, uintptr_t value);
 
 #endif /* __MONO_COUNTERS_H__ */
 
index 4ef5d3e7e30288fef376dd62c2d8dd216ac9fc07..5cef8ee741b7e7cd21248da3a0de37ab2dc9cf05 100644 (file)
@@ -28,6 +28,7 @@
 
 #include <config.h>
 #include <glib.h>
+#include <mono/utils/mono-publib.h>
 
 G_BEGIN_DECLS
 
@@ -49,16 +50,16 @@ typedef struct {
 
 #endif
 
-void mono_md5_get_digest (const guchar *buffer, gint buffer_size, guchar digest[16]);
+MONO_API void mono_md5_get_digest (const guchar *buffer, gint buffer_size, guchar digest[16]);
 
 /* use this one when speed is needed */
 /* for use in provider code only */
-void mono_md5_get_digest_from_file (const gchar *filename, guchar digest[16]);
+MONO_API void mono_md5_get_digest_from_file (const gchar *filename, guchar digest[16]);
 
 /* raw routines */
-void mono_md5_init   (MonoMD5Context *ctx);
-void mono_md5_update (MonoMD5Context *ctx, const guchar *buf, guint32 len);
-void mono_md5_final  (MonoMD5Context *ctx, guchar digest[16]);
+MONO_API void mono_md5_init   (MonoMD5Context *ctx);
+MONO_API void mono_md5_update (MonoMD5Context *ctx, const guchar *buf, guint32 len);
+MONO_API void mono_md5_final  (MonoMD5Context *ctx, guchar digest[16]);
 
 #if !HAVE_COMMONCRYPTO_COMMONDIGEST_H
 
@@ -70,14 +71,14 @@ typedef struct {
 
 #endif
 
-void mono_sha1_get_digest (const guchar *buffer, gint buffer_size, guchar digest [20]);
-void mono_sha1_get_digest_from_file (const gchar *filename, guchar digest [20]);
+MONO_API void mono_sha1_get_digest (const guchar *buffer, gint buffer_size, guchar digest [20]);
+MONO_API void mono_sha1_get_digest_from_file (const gchar *filename, guchar digest [20]);
 
-void mono_sha1_init   (MonoSHA1Context* context);
-void mono_sha1_update (MonoSHA1Context* context, const guchar* data, guint32 len);
-void mono_sha1_final  (MonoSHA1Context* context, unsigned char digest[20]);
+MONO_API void mono_sha1_init   (MonoSHA1Context* context);
+MONO_API void mono_sha1_update (MonoSHA1Context* context, const guchar* data, guint32 len);
+MONO_API void mono_sha1_final  (MonoSHA1Context* context, unsigned char digest[20]);
 
-void mono_digest_get_public_token (guchar* token, const guchar *pubkey, guint32 len);
+MONO_API void mono_digest_get_public_token (guchar* token, const guchar *pubkey, guint32 len);
 
 G_END_DECLS
 #endif /* __MONO_DIGEST_H__ */
index 06945aed1b1a29158ab16a34078a8a8e9687ddb0..97b13c6c189b5d4707234e5de28797e82228b016 100644 (file)
@@ -23,10 +23,10 @@ typedef void* (*MonoDlFallbackLoad) (const char *name, int flags, char **err, vo
 typedef void* (*MonoDlFallbackSymbol) (void *handle, const char *name, char **err, void *user_data);
 typedef void* (*MonoDlFallbackClose) (void *handle, void *user_data);
 
-MonoDlFallbackHandler *mono_dl_fallback_register (MonoDlFallbackLoad load_func, MonoDlFallbackSymbol symbol_func,
+MONO_API MonoDlFallbackHandler *mono_dl_fallback_register (MonoDlFallbackLoad load_func, MonoDlFallbackSymbol symbol_func,
                                                  MonoDlFallbackClose close_func, void *user_data);
 
-void                   mono_dl_fallback_unregister (MonoDlFallbackHandler *handler);
+MONO_API void                   mono_dl_fallback_unregister (MonoDlFallbackHandler *handler);
 
 MONO_END_DECLS
 
index 2a8a697a1e7109c41c255299545d7cb3464dd642..78453e81ad0c1e12e11e325b87c9b3522146323e 100755 (executable)
@@ -13,7 +13,7 @@ typedef struct {
        void *addr;
 } MonoDlMapping;
 
-void mono_dl_register_library (const char *name, MonoDlMapping *mappings);
+MONO_API void mono_dl_register_library (const char *name, MonoDlMapping *mappings);
 
 MONO_END_DECLS
 
index 0950e96098ed758f7cdb9a86a74414c322eb8f53..8067240308997df026b0da010afd58a42157af1d 100644 (file)
@@ -71,4 +71,7 @@ mono_error_prepare_exception (MonoError *error, MonoError *error_out) MONO_INTER
 void
 mono_error_raise_exception (MonoError *error) MONO_INTERNAL;
 
+void
+mono_loader_set_error_from_mono_error (MonoError *oerror) MONO_INTERNAL;
+
 #endif
index d489475f7ec1bde58ca1035a030cb3530d286cd3..25bc906ba51f94bb6e585b19fa55a429996ea07b 100644 (file)
@@ -351,6 +351,53 @@ mono_error_set_from_loader_error (MonoError *oerror)
        mono_loader_clear_error ();
 }
 
+static const char*
+get_type_name (MonoErrorInternal *error)
+{
+       if (error->type_name)
+               return error->type_name;
+       if (error->klass)
+               return error->klass->name;
+       return "<unknown type>";
+}
+
+static const char*
+get_assembly_name (MonoErrorInternal *error)
+{
+       if (error->assembly_name)
+               return error->assembly_name;
+       if (error->klass && error->klass->image)
+               return error->klass->image->name;
+       return "<unknown assembly>";
+}
+
+void
+mono_loader_set_error_from_mono_error (MonoError *oerror)
+{
+       MonoErrorInternal *error = (MonoErrorInternal*)oerror;
+
+       switch (error->error_code) {
+       case MONO_ERROR_MISSING_METHOD:
+               mono_loader_set_error_method_load (get_type_name (error), error->member_name);
+               break;
+       case MONO_ERROR_MISSING_FIELD:
+               mono_loader_set_error_field_load (error->klass, error->member_name);
+               break;
+       case MONO_ERROR_TYPE_LOAD:
+               mono_loader_set_error_type_load (get_type_name (error), get_assembly_name (error));
+               break;
+       case MONO_ERROR_FILE_NOT_FOUND:
+               /* XXX can't recover if it's ref only or not */
+               mono_loader_set_error_assembly_load (get_assembly_name (error), FALSE);
+               break;
+       case MONO_ERROR_BAD_IMAGE:
+               mono_loader_set_error_bad_image (g_strdup (mono_internal_error_get_message (error)));
+               break;
+       default:
+               mono_loader_set_error_bad_image (g_strdup_printf ("Non translatable error: %s", mono_internal_error_get_message (error)));
+       }
+}
+
 void
 mono_error_set_out_of_memory (MonoError *oerror, const char *msg_format, ...)
 {
index b7d6029103941a5c2ebfb6201ee1c0efa9f93bbd..5652432adb15282bd0dc121df65e50604e9f81b5 100644 (file)
@@ -43,22 +43,22 @@ typedef struct {
 
 MONO_BEGIN_DECLS
 
-void
+MONO_API void
 mono_error_init (MonoError *error);
 
-void
+MONO_API void
 mono_error_init_flags (MonoError *error, unsigned short flags);
 
-void
+MONO_API void
 mono_error_cleanup (MonoError *error);
 
-mono_bool
+MONO_API mono_bool
 mono_error_ok (MonoError *error);
 
-unsigned short
+MONO_API unsigned short
 mono_error_get_error_code (MonoError *error);
 
-const char*
+MONO_API const char*
 mono_error_get_message (MonoError *error);
 
 MONO_END_DECLS
diff --git a/mono/utils/mono-hwcap-arm.c b/mono/utils/mono-hwcap-arm.c
new file mode 100644 (file)
index 0000000..2be0b02
--- /dev/null
@@ -0,0 +1,159 @@
+/*
+ * mono-hwcap-arm.c: ARM hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-arm.h"
+
+#if defined(HAVE_SYS_AUXV_H) && !defined(PLATFORM_ANDROID)
+#include <sys/auxv.h>
+#elif defined(__APPLE__)
+#include <mach/machine.h>
+#include <sys/sysctl.h>
+#include <sys/types.h>
+#else
+#include <stdio.h>
+#endif
+
+gboolean mono_hwcap_arm_is_v5 = FALSE;
+gboolean mono_hwcap_arm_is_v6 = FALSE;
+gboolean mono_hwcap_arm_is_v7 = FALSE;
+gboolean mono_hwcap_arm_is_v7s = FALSE;
+gboolean mono_hwcap_arm_has_vfp = FALSE;
+gboolean mono_hwcap_arm_has_thumb = FALSE;
+gboolean mono_hwcap_arm_has_thumb2 = FALSE;
+
+#if defined(MONO_CROSS_COMPILE)
+void
+mono_hwcap_arch_init (void)
+{
+}
+#else
+void
+mono_hwcap_arch_init (void)
+{
+#if defined(HAVE_SYS_AUXV_H) && !defined(PLATFORM_ANDROID)
+       unsigned long hwcap;
+       unsigned long platform;
+
+       if ((hwcap = getauxval(AT_HWCAP))) {
+               /* HWCAP_ARM_THUMB */
+               if (hwcap & 0x00000004)
+                       mono_hwcap_arm_has_thumb = TRUE;
+
+               /* HWCAP_ARM_VFP */
+               if (hwcap & 0x00000040)
+                       mono_hwcap_arm_has_vfp = TRUE;
+
+               /* TODO: Find a way to detect Thumb 2. */
+       }
+
+       if ((platform = getauxval(AT_PLATFORM))) {
+               const char *str = (const char *) platform;
+
+               if (str [1] >= '5')
+                       mono_hwcap_arm_is_v5 = TRUE;
+
+               if (str [1] >= '6')
+                       mono_hwcap_arm_is_v6 = TRUE;
+
+               if (str [1] >= '7')
+                       mono_hwcap_arm_is_v7 = TRUE;
+
+               /* TODO: Find a way to detect v7s. */
+       }
+#elif defined(__APPLE__)
+       cpu_subtype_t sub_type;
+       size_t length = sizeof (sub_type);
+
+       sysctlbyname ("hw.cpusubtype", &sub_type, &length, NULL, 0);
+
+       if (sub_type == CPU_SUBTYPE_ARM_V5TEJ || sub_type == CPU_SUBTYPE_ARM_XSCALE) {
+               mono_hwcap_arm_is_v5 = TRUE;
+       } else if (sub_type == CPU_SUBTYPE_ARM_V6) {
+               mono_hwcap_arm_is_v5 = TRUE;
+               mono_hwcap_arm_is_v6 = TRUE;
+       } else if (sub_type == CPU_SUBTYPE_ARM_V7 || sub_type == CPU_SUBTYPE_ARM_V7F || sub_type == CPU_SUBTYPE_ARM_V7K) {
+               mono_hwcap_arm_is_v5 = TRUE;
+               mono_hwcap_arm_is_v6 = TRUE;
+               mono_hwcap_arm_is_v7 = TRUE;
+       }
+
+       /* TODO: Find a way to detect features like Thumb and VFP. */
+#else
+       /* We can't use the auxiliary vector on Android due to
+        * permissions, so fall back to /proc/cpuinfo. We also
+        * hit this path if the target doesn't have sys/auxv.h.
+        */
+
+       char buf [512];
+       char *line;
+
+       FILE *file = fopen ("/proc/cpuinfo", "r");
+
+       if (file) {
+               while ((line = fgets (buf, 512, file))) {
+                       if (!strncmp (line, "Processor", 9)) {
+                               char *ver = strstr (line, "(v");
+
+                               if (ver) {
+                                       if (ver [2] >= '5')
+                                               mono_hwcap_arm_is_v5 = TRUE;
+
+                                       if (ver [2] >= '6')
+                                               mono_hwcap_arm_is_v6 = TRUE;
+
+                                       if (ver [2] >= '7')
+                                               mono_hwcap_arm_is_v7 = TRUE;
+
+                                       /* TODO: Find a way to detect v7s. */
+                               }
+
+                               continue;
+                       }
+
+                       if (!strncmp (line, "Features", 8)) {
+                               if (strstr (line, "thumb"))
+                                       mono_hwcap_arm_has_thumb = TRUE;
+
+                               /* TODO: Find a way to detect Thumb 2. */
+
+                               if (strstr (line, "vfp"))
+                                       mono_hwcap_arm_has_vfp = TRUE;
+
+                               continue;
+                       }
+               }
+
+               fclose (file);
+       }
+#endif
+}
+#endif
+
+void
+mono_hwcap_print(FILE *f)
+{
+       g_fprintf (f, "mono_hwcap_arm_is_v5 = %i\n", mono_hwcap_arm_is_v5);
+       g_fprintf (f, "mono_hwcap_arm_is_v6 = %i\n", mono_hwcap_arm_is_v6);
+       g_fprintf (f, "mono_hwcap_arm_is_v7 = %i\n", mono_hwcap_arm_is_v7);
+       g_fprintf (f, "mono_hwcap_arm_is_v7s = %i\n", mono_hwcap_arm_is_v7s);
+       g_fprintf (f, "mono_hwcap_arm_has_vfp = %i\n", mono_hwcap_arm_has_vfp);
+       g_fprintf (f, "mono_hwcap_arm_has_thumb = %i\n", mono_hwcap_arm_has_thumb);
+       g_fprintf (f, "mono_hwcap_arm_has_thumb2 = %i\n", mono_hwcap_arm_has_thumb2);
+}
diff --git a/mono/utils/mono-hwcap-arm.h b/mono/utils/mono-hwcap-arm.h
new file mode 100644 (file)
index 0000000..6bc9c3b
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef __MONO_UTILS_HWCAP_ARM_H__
+#define __MONO_UTILS_HWCAP_ARM_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+extern gboolean mono_hwcap_arm_is_v5;
+extern gboolean mono_hwcap_arm_is_v6;
+extern gboolean mono_hwcap_arm_is_v7;
+extern gboolean mono_hwcap_arm_is_v7s;
+extern gboolean mono_hwcap_arm_has_vfp;
+extern gboolean mono_hwcap_arm_has_thumb;
+extern gboolean mono_hwcap_arm_has_thumb2;
+
+#endif /* __MONO_UTILS_HWCAP_ARM_H__ */
diff --git a/mono/utils/mono-hwcap-ia64.c b/mono/utils/mono-hwcap-ia64.c
new file mode 100644 (file)
index 0000000..30590d7
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * mono-hwcap-ia64.c: Itanium hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-ia64.h"
+
+#if defined(MONO_CROSS_COMPILE)
+void
+mono_hwcap_arch_init (void)
+{
+}
+#else
+void
+mono_hwcap_arch_init (void)
+{
+       /* Nothing needed here yet. */
+}
+#endif
+
+void
+mono_hwcap_print (FILE *f)
+{
+}
diff --git a/mono/utils/mono-hwcap-ia64.h b/mono/utils/mono-hwcap-ia64.h
new file mode 100644 (file)
index 0000000..15b64a8
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __MONO_UTILS_HWCAP_IA64_H__
+#define __MONO_UTILS_HWCAP_IA64_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+/* Nothing needed here yet. */
+
+#endif /* __MONO_UTILS_HWCAP_IA64_H__ */
diff --git a/mono/utils/mono-hwcap-mips.c b/mono/utils/mono-hwcap-mips.c
new file mode 100644 (file)
index 0000000..c99b648
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * mono-hwcap-mips.c: MIPS hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-mips.h"
+
+#if defined(MONO_CROSS_COMPILE)
+void
+mono_hwcap_arch_init (void)
+{
+}
+#else
+void
+mono_hwcap_arch_init (void)
+{
+       /* Nothing needed here yet. */
+}
+#endif
+
+void
+mono_hwcap_print (FILE *f)
+{
+}
diff --git a/mono/utils/mono-hwcap-mips.h b/mono/utils/mono-hwcap-mips.h
new file mode 100644 (file)
index 0000000..dd0622a
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __MONO_UTILS_HWCAP_MIPS_H__
+#define __MONO_UTILS_HWCAP_MIPS_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+/* Nothing needed here yet. */
+
+#endif /* __MONO_UTILS_HWCAP_MIPS_H__ */
diff --git a/mono/utils/mono-hwcap-ppc.c b/mono/utils/mono-hwcap-ppc.c
new file mode 100644 (file)
index 0000000..1293d80
--- /dev/null
@@ -0,0 +1,84 @@
+/*
+ * mono-hwcap-ppc.c: PowerPC hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-ppc.h"
+
+#if defined(__linux__) && defined(HAVE_SYS_AUXV_H)
+#include <string.h>
+#include <sys/auxv.h>
+#endif
+
+gboolean mono_hwcap_ppc_has_icache_snoop = FALSE;
+gboolean mono_hwcap_ppc_is_isa_2x = FALSE;
+gboolean mono_hwcap_ppc_is_isa_64 = FALSE;
+gboolean mono_hwcap_ppc_has_move_fpr_gpr = FALSE;
+gboolean mono_hwcap_ppc_has_multiple_ls_units = FALSE;
+
+#if defined(MONO_CROSS_COMPILE)
+void
+mono_hwcap_arch_init (void)
+{
+}
+#else
+void
+mono_hwcap_arch_init (void)
+{
+#if defined(__linux__) && defined(HAVE_SYS_AUXV_H)
+       unsigned long hwcap;
+       unsigned long platform;
+
+       if ((hwcap = getauxval(AT_HWCAP))) {
+               /* PPC_FEATURE_ICACHE_SNOOP */
+               if (hwcap & 0x00002000)
+                       mono_hwcap_ppc_has_icache_snoop = TRUE;
+
+               /* PPC_FEATURE_POWER4, PPC_FEATURE_POWER5, PPC_FEATURE_POWER5_PLUS,
+                  PPC_FEATURE_CELL_BE, PPC_FEATURE_PA6T, PPC_FEATURE_ARCH_2_05 */
+               if (hwcap & (0x00080000 | 0x00040000 | 0x00020000 | 0x00010000 | 0x00000800 | 0x00001000))
+                       mono_hwcap_ppc_is_isa_2x = TRUE;
+
+               /* PPC_FEATURE_64 */
+               if (hwcap & 0x40000000)
+                       mono_hwcap_ppc_is_isa_64 = TRUE;
+
+               /* PPC_FEATURE_POWER6_EXT */
+               if (hwcap & 0x00000200)
+                       mono_hwcap_ppc_has_move_fpr_gpr = TRUE;
+       }
+
+       if ((platform = getauxval(AT_PLATFORM))) {
+               const char *str = (const char *) platform;
+
+               if (!strcmp (str, "ppc970") || (!strncmp (str, "power", 5) && str [5] >= '4' && str [5] <= '7'))
+                       mono_hwcap_ppc_has_multiple_ls_units = TRUE;
+       }
+#endif
+}
+#endif
+
+void
+mono_hwcap_print (FILE* f)
+{
+       g_fprintf (f, "mono_hwcap_ppc_has_icache_snoop = %i\n", mono_hwcap_ppc_has_icache_snoop);
+       g_fprintf (f, "mono_hwcap_ppc_is_isa_2x = %i\n", mono_hwcap_ppc_is_isa_2x);
+       g_fprintf (f, "mono_hwcap_ppc_is_isa_64 = %i\n", mono_hwcap_ppc_is_isa_64);
+       g_fprintf (f, "mono_hwcap_ppc_has_move_fpr_gpr = %i\n", mono_hwcap_ppc_has_move_fpr_gpr);
+       g_fprintf (f, "mono_hwcap_ppc_has_multiple_ls_units = %i\n", mono_hwcap_ppc_has_multiple_ls_units);
+}
diff --git a/mono/utils/mono-hwcap-ppc.h b/mono/utils/mono-hwcap-ppc.h
new file mode 100644 (file)
index 0000000..0ae2578
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef __MONO_UTILS_HWCAP_PPC_H__
+#define __MONO_UTILS_HWCAP_PPC_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+extern gboolean mono_hwcap_ppc_has_icache_snoop;
+extern gboolean mono_hwcap_ppc_is_isa_2x;
+extern gboolean mono_hwcap_ppc_is_isa_64;
+extern gboolean mono_hwcap_ppc_has_move_fpr_gpr;
+extern gboolean mono_hwcap_ppc_has_multiple_ls_units;
+
+#endif /* __MONO_UTILS_HWCAP_PPC_H__ */
diff --git a/mono/utils/mono-hwcap-s390x.c b/mono/utils/mono-hwcap-s390x.c
new file mode 100644 (file)
index 0000000..889df8a
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+ * mono-hwcap-s390x.c: S/390x hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-s390x.h"
+
+#include <signal.h>
+
+gboolean mono_hwcap_s390x_has_ld = FALSE;
+
+#if defined(MONO_CROSS_COMPILE)
+void
+mono_hwcap_arch_init (void)
+{
+}
+#else
+static void
+catch_sigill (int sig_no, siginfo_t *info, gpointer act)
+{
+       mono_hwcap_s390x_has_ld = FALSE;
+}
+
+void
+mono_hwcap_arch_init (void)
+{
+       mono_hwcap_s390x_has_ld = TRUE;
+
+       struct sigaction sa, *old_sa;
+
+       /* Determine if we have a long displacement facility
+        * by executing the STY instruction. If it fails, we
+        * catch the SIGILL and assume the answer is no.
+        */
+       sa.sa_sigaction = catch_sigill;
+       sigemptyset (&sa.sa_mask);
+       sa.sa_flags = SA_SIGINFO;
+
+       sigaction (SIGILL, &sa, old_sa);
+
+       __asm__ __volatile__ (
+               "LGHI\t0,1\n\t"
+               "LA\t1,%0\n\t"
+               ".byte\t0xe3,0x00,0x10,0x00,0x00,0x50\n\t"
+               : "=m" (mono_hwcap_s390x_has_ld)
+               :
+               : "0", "1"
+       );
+
+       sigaction (SIGILL, old_sa, NULL);
+}
+#endif
+
+void
+mono_hwcap_print (FILE *f)
+{
+       g_fprintf (f, "mono_hwcap_s390x_has_ld = %i\n", mono_hwcap_s390x_has_ld);
+}
diff --git a/mono/utils/mono-hwcap-s390x.h b/mono/utils/mono-hwcap-s390x.h
new file mode 100644 (file)
index 0000000..24c76a2
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __MONO_UTILS_HWCAP_S390X_H__
+#define __MONO_UTILS_HWCAP_S390X_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+extern gboolean mono_hwcap_s390x_has_ld;
+
+#endif /* __MONO_UTILS_HWCAP_S390X_H__ */
diff --git a/mono/utils/mono-hwcap-sparc.c b/mono/utils/mono-hwcap-sparc.c
new file mode 100644 (file)
index 0000000..f039ec2
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * mono-hwcap-sparc.c: SPARC hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-sparc.h"
+
+#include <string.h>
+
+#if !defined(__linux__)
+#include <sys/systeminfo.h>
+#else
+#include <unistd.h>
+#endif
+
+gboolean mono_hwcap_sparc_is_v9 = FALSE;
+
+#if defined(MONO_CROSS_COMPILE)
+void
+mono_hwcap_arch_init (void)
+{
+}
+#else
+void
+mono_hwcap_arch_init (void)
+{
+       char buf [1024];
+
+#if !defined(__linux__)
+       if (!sysinfo (SI_ISALIST, buf, 1024))
+               g_assert_not_reached ();
+#else
+       /* If the page size is 8192, we're on a 64-bit SPARC, which
+        * in turn means a v9 or better.
+        */
+       if (getpagesize () == 8192)
+               strcpy (buf, "sparcv9");
+       else
+               strcpy (buf, "sparcv8");
+#endif
+
+       mono_hwcap_sparc_is_v9 = strstr (buf, "sparcv9");
+}
+#endif
+
+void
+mono_hwcap_print (FILE *f)
+{
+       g_fprintf (f, "mono_hwcap_sparc_is_v9 = %i\n", mono_hwcap_sparc_is_v9);
+}
diff --git a/mono/utils/mono-hwcap-sparc.h b/mono/utils/mono-hwcap-sparc.h
new file mode 100644 (file)
index 0000000..98bcf8e
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef __MONO_UTILS_HWCAP_SPARC_H__
+#define __MONO_UTILS_HWCAP_SPARC_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+extern gboolean mono_hwcap_sparc_is_v9;
+
+#endif /* __MONO_UTILS_HWCAP_SPARC_H__ */
diff --git a/mono/utils/mono-hwcap-x86.c b/mono/utils/mono-hwcap-x86.c
new file mode 100644 (file)
index 0000000..3a8df6b
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * mono-hwcap-x86.c: x86 hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include "mono/utils/mono-hwcap-x86.h"
+
+#if defined(HAVE_UNISTD_H)
+#include <unistd.h>
+#endif
+
+#if defined(_MSC_VER)
+#include <intrin.h>
+#endif
+
+gboolean mono_hwcap_x86_is_xen = FALSE;
+gboolean mono_hwcap_x86_has_cmov = FALSE;
+gboolean mono_hwcap_x86_has_fcmov = FALSE;
+gboolean mono_hwcap_x86_has_sse1 = FALSE;
+gboolean mono_hwcap_x86_has_sse2 = FALSE;
+gboolean mono_hwcap_x86_has_sse3 = FALSE;
+gboolean mono_hwcap_x86_has_ssse3 = FALSE;
+gboolean mono_hwcap_x86_has_sse41 = FALSE;
+gboolean mono_hwcap_x86_has_sse42 = FALSE;
+gboolean mono_hwcap_x86_has_sse4a = FALSE;
+
+#if defined(MONO_CROSS_COMPILE)
+void
+mono_hwcap_arch_init (void)
+{
+}
+#else
+static gboolean
+cpuid (int id, int *p_eax, int *p_ebx, int *p_ecx, int *p_edx)
+{
+#if defined(_MSC_VER)
+       int info [4];
+#endif
+
+       /* First, make sure we can use cpuid if we're on 32-bit. */
+#if defined(TARGET_X86)
+       gboolean have_cpuid = FALSE;
+
+#if defined(_MSC_VER)
+       __asm {
+               pushfd
+               pop eax
+               mov edx, eax
+               xor eax, 0x200000
+               push eax
+               popfd
+               pushfd
+               pop eax
+               xor eax, edx
+               and eax, 0x200000
+               mov have_cpuid, eax
+       }
+#else
+       __asm__ __volatile__ (
+               "pushfl\n\t"
+               "popl\t%%eax\n\t"
+               "movl\t%%eax, %%edx\n\t"
+               "xorl\t$0x200000, %%eax\n\t"
+               "pushl\t%%eax\n\t"
+               "popfl\n\t"
+               "pushfl\n\t"
+               "popl\t%%eax\n\t"
+               "xorl\t%%edx, %%eax\n\t"
+               "andl\t$0x200000, %%eax\n\t"
+               "movl\t%%eax, %0\n\t"
+               : "=r" (have_cpuid)
+               :
+               : "%eax", "%edx"
+       );
+#endif
+
+       if (!have_cpuid)
+               return FALSE;
+#endif
+
+       /* Now issue the actual cpuid instruction. We can use
+          MSVC's __cpuid on both 32-bit and 64-bit. */
+#if defined(_MSC_VER)
+       __cpuid (info, id);
+       *p_eax = info [0];
+       *p_ebx = info [1];
+       *p_ecx = info [2];
+       *p_edx = info [3];
+#elif defined(TARGET_X86)
+       /* This complicated stuff is necessary because EBX
+          may be used by the compiler in PIC mode. */
+       __asm__ __volatile__ (
+               "xchgl\t%%ebx, %k1\n\t"
+               "cpuid\n\t"
+               "xchgl\t%%ebx, %k1\n\t"
+               : "=a" (*p_eax), "=&r" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
+               : "0" (id)
+       );
+#else
+       __asm__ __volatile__ (
+               "cpuid\n\t"
+               : "=a" (*p_eax), "=b" (*p_ebx), "=c" (*p_ecx), "=d" (*p_edx)
+               : "a" (id)
+       );
+#endif
+
+       return TRUE;
+}
+
+void
+mono_hwcap_arch_init (void)
+{
+       int eax, ebx, ecx, edx;
+
+       if (cpuid (1, &eax, &ebx, &ecx, &edx)) {
+               if (edx & (1 << 15)) {
+                       mono_hwcap_x86_has_cmov = TRUE;
+
+                       if (edx & 1)
+                               mono_hwcap_x86_has_fcmov = TRUE;
+               }
+
+               if (edx & (1 << 25))
+                       mono_hwcap_x86_has_sse1 = TRUE;
+
+               if (edx & (1 << 26))
+                       mono_hwcap_x86_has_sse2 = TRUE;
+
+               if (ecx & (1 << 0))
+                       mono_hwcap_x86_has_sse3 = TRUE;
+
+               if (ecx & (1 << 9))
+                       mono_hwcap_x86_has_ssse3 = TRUE;
+
+               if (ecx & (1 << 19))
+                       mono_hwcap_x86_has_sse41 = TRUE;
+
+               if (ecx & (1 << 20))
+                       mono_hwcap_x86_has_sse42 = TRUE;
+       }
+
+       if (cpuid (0x80000000, &eax, &ebx, &ecx, &edx)) {
+               if ((unsigned int) eax >= 0x80000001 && ebx == 0x68747541 && ecx == 0x444D4163 && edx == 0x69746E65) {
+                       if (cpuid (0x80000001, &eax, &ebx, &ecx, &edx)) {
+                               if (ecx & (1 << 6))
+                                       mono_hwcap_x86_has_sse4a = TRUE;
+                       }
+               }
+       }
+
+#if defined(HAVE_UNISTD_H)
+       mono_hwcap_x86_is_xen = !access ("/proc/xen", F_OK);
+#endif
+}
+#endif
+
+void
+mono_hwcap_print (FILE *f)
+{
+       g_fprintf (f, "mono_hwcap_x86_is_xen = %i\n", mono_hwcap_x86_is_xen);
+       g_fprintf (f, "mono_hwcap_x86_has_cmov = %i\n", mono_hwcap_x86_has_cmov);
+       g_fprintf (f, "mono_hwcap_x86_has_fcmov = %i\n", mono_hwcap_x86_has_fcmov);
+       g_fprintf (f, "mono_hwcap_x86_has_sse1 = %i\n", mono_hwcap_x86_has_sse1);
+       g_fprintf (f, "mono_hwcap_x86_has_sse2 = %i\n", mono_hwcap_x86_has_sse2);
+       g_fprintf (f, "mono_hwcap_x86_has_sse3 = %i\n", mono_hwcap_x86_has_sse3);
+       g_fprintf (f, "mono_hwcap_x86_has_ssse3 = %i\n", mono_hwcap_x86_has_ssse3);
+       g_fprintf (f, "mono_hwcap_x86_has_sse41 = %i\n", mono_hwcap_x86_has_sse41);
+       g_fprintf (f, "mono_hwcap_x86_has_sse42 = %i\n", mono_hwcap_x86_has_sse42);
+       g_fprintf (f, "mono_hwcap_x86_has_sse4a = %i\n", mono_hwcap_x86_has_sse4a);
+}
diff --git a/mono/utils/mono-hwcap-x86.h b/mono/utils/mono-hwcap-x86.h
new file mode 100644 (file)
index 0000000..5e1f4f7
--- /dev/null
@@ -0,0 +1,17 @@
+#ifndef __MONO_UTILS_HWCAP_X86_H__
+#define __MONO_UTILS_HWCAP_X86_H__
+
+#include "mono/utils/mono-hwcap.h"
+
+extern gboolean mono_hwcap_x86_is_xen;
+extern gboolean mono_hwcap_x86_has_cmov;
+extern gboolean mono_hwcap_x86_has_fcmov;
+extern gboolean mono_hwcap_x86_has_sse1;
+extern gboolean mono_hwcap_x86_has_sse2;
+extern gboolean mono_hwcap_x86_has_sse3;
+extern gboolean mono_hwcap_x86_has_ssse3;
+extern gboolean mono_hwcap_x86_has_sse41;
+extern gboolean mono_hwcap_x86_has_sse42;
+extern gboolean mono_hwcap_x86_has_sse4a;
+
+#endif /* __MONO_UTILS_HWCAP_X86_H__ */
diff --git a/mono/utils/mono-hwcap.c b/mono/utils/mono-hwcap.c
new file mode 100644 (file)
index 0000000..6ba7a5e
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * mono-hwcap.c: Hardware feature detection
+ *
+ * Authors:
+ *    Alex Rønne Petersen (alexrp@xamarin.com)
+ *    Elijah Taylor (elijahtaylor@google.com)
+ *    Miguel de Icaza (miguel@xamarin.com)
+ *    Neale Ferguson (Neale.Ferguson@SoftwareAG-usa.com)
+ *    Paolo Molaro (lupus@xamarin.com)
+ *    Rodrigo Kumpera (kumpera@gmail.com)
+ *    Sebastien Pouliot (sebastien@xamarin.com)
+ *    Zoltan Varga (vargaz@xamarin.com)
+ *
+ * Copyright 2003 Ximian, Inc.
+ * Copyright 2003-2011 Novell, Inc
+ * Copyright 2006 Broadcom
+ * Copyright 2007-2008 Andreas Faerber
+ * Copyright 2011-2013 Xamarin Inc
+ */
+
+#include <stdlib.h>
+
+#include "mono/utils/mono-hwcap.h"
+
+static gboolean hwcap_inited = FALSE;
+
+void
+mono_hwcap_init (void)
+{
+       const char *verbose = g_getenv ("MONO_VERBOSE_HWCAP");
+
+       if (hwcap_inited)
+               return;
+
+       mono_hwcap_arch_init ();
+
+       if (verbose)
+               mono_hwcap_print (stdout);
+}
diff --git a/mono/utils/mono-hwcap.h b/mono/utils/mono-hwcap.h
new file mode 100644 (file)
index 0000000..159701b
--- /dev/null
@@ -0,0 +1,50 @@
+#ifndef __MONO_UTILS_HWCAP_H__
+#define __MONO_UTILS_HWCAP_H__
+
+#include <stdio.h>
+#include <glib.h>
+
+#include "config.h"
+
+#include "mono/utils/mono-compiler.h"
+
+/* Call this function to perform hardware feature detection. Until
+ * this function has been called, all feature variables will be
+ * FALSE as a default.
+ *
+ * While this function can be called multiple times, doing so from
+ * several threads at the same time is not supported as it will
+ * result in an inconsistent state of the variables. Further,
+ * feature variables should not be read *while* this function is
+ * executing.
+ *
+ * To get at feature variables, include the appropriate header,
+ * e.g. mono-hwcap-x86.h for x86(-64).
+ */
+void mono_hwcap_init (void) MONO_INTERNAL;
+
+/* Implemented in mono-hwcap-$TARGET.c. Do not call. */
+void mono_hwcap_arch_init (void) MONO_INTERNAL;
+
+/* Print detected features to the given file. */
+void mono_hwcap_print (FILE *f) MONO_INTERNAL;
+
+/* Please note: If you're going to use the Linux auxiliary vector
+ * to detect CPU features, don't use any of the constant names in
+ * the hwcap.h header. This ties us to a particular version of the
+ * header, and since the values are guaranteed to be stable, hard-
+ * coding them is not that terrible.
+ *
+ * Also, please do not add assumptions to mono-hwcap. The code here
+ * is meant to *discover* facts about the hardware, not assume that
+ * some feature exists because of $arbitrary_preprocessor_define.
+ * If you have to make assumptions, do so elsewhere, e.g. in the
+ * Mini back end you're modifying.
+ *
+ * Finally, be conservative. If you can't determine precisely if a
+ * feature is present, assume that it isn't. In the rare cases where
+ * the hardware or operating system are lying, work around that in
+ * a different place, as with the rule above.
+ */
+
+#endif /* __MONO_UTILS_HWCAP_H__ */
index 2e6dedc77338d717e3853b508c0280653ebba516..bfe84f04f7d1d5bd92c60e5a6d1a284fa3ff7c93 100644 (file)
@@ -28,8 +28,8 @@ mono_trace_init (void)
        if(level_stack == NULL) {
                level_stack = g_queue_new();
 
-               mono_trace_set_mask_string(getenv("MONO_LOG_MASK"));
-               mono_trace_set_level_string(getenv("MONO_LOG_LEVEL"));
+               mono_trace_set_mask_string(g_getenv("MONO_LOG_MASK"));
+               mono_trace_set_level_string(g_getenv("MONO_LOG_LEVEL"));
        }
 }
 
index fc0745bec72528dce072121ee642039ca4a1c572..3f07378c769bc68b668eefdd378ca45e88dbfe7c 100644 (file)
@@ -4,10 +4,10 @@
 #include <mono/utils/mono-publib.h>
 MONO_BEGIN_DECLS
 
-void 
+MONO_API void 
 mono_trace_set_level_string (const char *value);
 
-void 
+MONO_API void 
 mono_trace_set_mask_string (const char *value);
 
 MONO_END_DECLS
index 90d14b6c611f9888839b22a5ca17db75b4bb6a99..46499c2a25a9e3a6081cab3928d040e32da2c34f 100644 (file)
@@ -3,16 +3,17 @@
 #define __MONO_SIGNBIT_H__
 
 #include <math.h>
+#include <mono/utils/mono-publib.h>
 
 #ifdef HAVE_SIGNBIT
 #define mono_signbit signbit
 #else
 #define mono_signbit(x) (sizeof (x) == sizeof (float) ? mono_signbit_float (x) : mono_signbit_double (x))
 
-int
+MONO_API int
 mono_signbit_double (double x);
 
-int
+MONO_API int
 mono_signbit_float (float x);
 
 #endif
index dd37c80660f11f04c43e5a67ac14952a5829fdeb..8b1c9663567dfd26d8afc9a24fa2e7d28cf90b91 100644 (file)
 
 #include <glib.h>
 
-#if defined(__x86_64__) || defined(TARGET_AMD64)
-#ifndef _MSC_VER
-static inline void mono_memory_barrier (void)
-{
-       __asm__ __volatile__ ("mfence" : : : "memory");
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-       __asm__ __volatile__ ("lfence" : : : "memory");
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-       __asm__ __volatile__ ("sfence" : : : "memory");
-}
-#else
-#include <intrin.h>
-
-static inline void mono_memory_barrier (void)
-{
-       _ReadWriteBarrier ();
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-       _ReadBarrier ();
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-       _WriteBarrier ();
-}
+#ifdef _MSC_VER
+#ifndef WIN32_LEAN_AND_MEAN
+#define WIN32_LEAN_AND_MEAN
 #endif
-#elif defined(__i386__) || defined(TARGET_X86)
-#ifndef _MSC_VER
-static inline void mono_memory_barrier (void)
-{
-       __asm__ __volatile__ ("lock; addl $0,0(%%esp)" : : : "memory");
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-       mono_memory_barrier ();
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-       mono_memory_barrier ();
-}
-#else
+#include <windows.h>
 #include <intrin.h>
 
 static inline void mono_memory_barrier (void)
 {
+       /* NOTE: _ReadWriteBarrier and friends only prevent the
+          compiler from reordering loads and stores. To prevent
+          the CPU from doing the same, we have to use the
+          MemoryBarrier macro which expands to e.g. a serializing
+          XCHG instruction on x86. Also note that the MemoryBarrier
+          macro does *not* imply _ReadWriteBarrier, so that call
+          cannot be eliminated. */
        _ReadWriteBarrier ();
+       MemoryBarrier ();
 }
 
 static inline void mono_memory_read_barrier (void)
 {
        _ReadBarrier ();
+       MemoryBarrier ();
 }
 
 static inline void mono_memory_write_barrier (void)
 {
        _WriteBarrier ();
+       MemoryBarrier ();
 }
-#endif
-#elif defined(sparc) || defined(__sparc__)
+#elif defined(USE_GCC_ATOMIC_OPS)
 static inline void mono_memory_barrier (void)
 {
-       __asm__ __volatile__ ("membar   #LoadLoad | #LoadStore | #StoreStore | #StoreLoad" : : : "memory");
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-       __asm__ __volatile__ ("membar   #LoadLoad" : : : "memory");
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-       __asm__ __volatile__ ("membar   #StoreStore" : : : "memory");
-}
-#elif defined(__s390__)
-static inline void mono_memory_barrier (void)
-{
-       __asm__ __volatile__ ("bcr 15,0" : : : "memory");
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-       mono_memory_barrier ();
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-       mono_memory_barrier ();
-}
-#elif defined(__ppc__) || defined(__powerpc__) || defined(__ppc64__)
-static inline void mono_memory_barrier (void)
-{
-       __asm__ __volatile__ ("sync" : : : "memory");
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-       mono_memory_barrier ();
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-       __asm__ __volatile__ ("eieio" : : : "memory");
-}
-
-#elif defined(__arm__)
-static inline void mono_memory_barrier (void)
-{
-#ifdef HAVE_ARMV6
-       __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r" (0) : "memory");
-#endif
+       __sync_synchronize ();
 }
 
 static inline void mono_memory_read_barrier (void)
@@ -160,21 +75,6 @@ static inline void mono_memory_write_barrier (void)
 {
        mono_memory_barrier ();
 }
-#elif defined(__mips__)
-static inline void mono_memory_barrier (void)
-{
-        __asm__ __volatile__ ("" : : : "memory");
-}
-
-static inline void mono_memory_read_barrier (void)
-{
-        mono_memory_barrier ();
-}
-
-static inline void mono_memory_write_barrier (void)
-{
-        mono_memory_barrier ();
-}
 #elif defined(MONO_CROSS_COMPILE)
 static inline void mono_memory_barrier (void)
 {
@@ -187,6 +87,8 @@ static inline void mono_memory_read_barrier (void)
 static inline void mono_memory_write_barrier (void)
 {
 }
+#else
+#error "Don't know how to do memory barriers!"
 #endif
 
 #endif /* _MONO_UTILS_MONO_MEMBAR_H_ */
index 3fd7bc4c75c839339ff334b4ddc63e4503c4ead3..a97a7cc16b213dcd170ee94ab7032a69450d5aad 100644 (file)
@@ -152,16 +152,17 @@ Acquire/release semantics macros.
        *(target) = (value);    \
 } while (0)
 
-#define mono_atomic_load_release(target) ({    \
-       typeof (*target) __tmp; \
+#define mono_atomic_load_release(_type,target) ({      \
+       _type __tmp;    \
        LOAD_RELEASE_FENCE;     \
        __tmp = *target;        \
        __tmp; })
 
-#define mono_atomic_load_acquire(target) ({    \
-       typeof (*target) __tmp = *target;       \
+#define mono_atomic_load_acquire(var,_type,target) do {        \
+       _type __tmp = *target;  \
        LOAD_ACQUIRE_FENCE;     \
-       __tmp; })
+       (var) = __tmp; \
+} while (0)
 
 #define mono_atomic_store_acquire(target,value) {      \
        *target = value;        \
index 087259fd15129cebee0d23876a50a24404706d2b..b2e245164f083f3c982837a2c81292e43334c73e 100644 (file)
@@ -491,7 +491,8 @@ shared_area_disabled (void)
        if (!use_shared_area) {
                if (g_getenv ("MONO_DISABLE_SHARED_AREA"))
                        use_shared_area = -1;
-               use_shared_area = 1;
+               else
+                       use_shared_area = 1;
        }
        return use_shared_area == -1;
 }
index 36997e074890904f61ed03cfb79fa8f2f43d7363..017bbcec5bb6aab1b023661caa5b2102b17469b7 100644 (file)
@@ -2,6 +2,7 @@
 #define __MONO_UTILS_MMAP_H__
 
 #include <glib.h>
+#include <mono/utils/mono-publib.h>
 
 enum {
        /* protection */
@@ -24,28 +25,28 @@ enum {
  */
 typedef struct _MonoFileMap MonoFileMap;
 
-MonoFileMap *mono_file_map_open  (const char* name);
-guint64      mono_file_map_size  (MonoFileMap *fmap);
-int          mono_file_map_fd    (MonoFileMap *fmap);
-int          mono_file_map_close (MonoFileMap *fmap);
-
-int   mono_pagesize   (void);
-void* mono_valloc     (void *addr, size_t length, int flags);
-void* mono_valloc_aligned (size_t length, size_t alignment, int flags);
-int   mono_vfree      (void *addr, size_t length);
-void* mono_file_map   (size_t length, int flags, int fd, guint64 offset, void **ret_handle);
-int   mono_file_unmap (void *addr, void *handle);
+MONO_API MonoFileMap *mono_file_map_open  (const char* name);
+MONO_API guint64      mono_file_map_size  (MonoFileMap *fmap);
+MONO_API int          mono_file_map_fd    (MonoFileMap *fmap);
+MONO_API int          mono_file_map_close (MonoFileMap *fmap);
+
+MONO_API int   mono_pagesize   (void);
+MONO_API void* mono_valloc     (void *addr, size_t length, int flags);
+MONO_API void* mono_valloc_aligned (size_t length, size_t alignment, int flags);
+MONO_API int   mono_vfree      (void *addr, size_t length);
+MONO_API void* mono_file_map   (size_t length, int flags, int fd, guint64 offset, void **ret_handle);
+MONO_API int   mono_file_unmap (void *addr, void *handle);
 #ifndef HOST_WIN32
-void* mono_file_map_fileio   (size_t length, int flags, int fd, guint64 offset, void **ret_handle);
-int   mono_file_unmap_fileio (void *addr, void *handle);
+MONO_API void* mono_file_map_fileio   (size_t length, int flags, int fd, guint64 offset, void **ret_handle);
+MONO_API int   mono_file_unmap_fileio (void *addr, void *handle);
 #endif
-int   mono_mprotect   (void *addr, size_t length, int flags);
+MONO_API int   mono_mprotect   (void *addr, size_t length, int flags);
 
-void* mono_shared_area         (void);
-void  mono_shared_area_remove  (void);
-void* mono_shared_area_for_pid (void *pid);
-void  mono_shared_area_unload  (void *area);
-int   mono_shared_area_instances (void **array, int count);
+MONO_API void* mono_shared_area         (void);
+MONO_API void  mono_shared_area_remove  (void);
+MONO_API void* mono_shared_area_for_pid (void *pid);
+MONO_API void  mono_shared_area_unload  (void *area);
+MONO_API int   mono_shared_area_instances (void **array, int count);
 
 /*
  * On systems where we have to load code into memory instead of mmaping
@@ -55,7 +56,7 @@ int   mono_shared_area_instances (void **array, int count);
 typedef void *(*mono_file_map_alloc_fn)   (size_t length);
 typedef void  (*mono_file_map_release_fn) (void *addr);
 
-void mono_file_map_set_allocator (mono_file_map_alloc_fn alloc, mono_file_map_release_fn release);
+MONO_API void mono_file_map_set_allocator (mono_file_map_alloc_fn alloc, mono_file_map_release_fn release);
                                  
 #endif /* __MONO_UTILS_MMAP_H__ */
 
index da381f665f142e9be870be1aa2eea05c84e18476..6abad5756b0a8fea1204a675ec34425ded02cdb5 100644 (file)
 #include <string.h>
 #include <errno.h>
 #include <assert.h>
+#include <mono/utils/mono-memory-model.h>
+
+#ifndef HOST_WIN32
 #include <sys/time.h>
+#endif
 
 #include "mono-mutex.h"
 
@@ -25,6 +29,7 @@
 #if defined(__APPLE__)
 #define _DARWIN_C_SOURCE
 #include <pthread_spis.h>
+#include <dlfcn.h>
 #endif
 
 #ifndef HAVE_PTHREAD_MUTEX_TIMEDLOCK
@@ -131,10 +136,18 @@ mono_mutex_init_suspend_safe (mono_mutex_t *mutex)
 #if defined(__APPLE__)
        int res;
        pthread_mutexattr_t attr;
+       static gboolean inited;
+       static int (*setpolicy_np) (pthread_mutexattr_t *, int);
+
+       if (!inited) {
+               setpolicy_np = dlsym (RTLD_NEXT, "pthread_mutexattr_setpolicy_np");
+               mono_atomic_store_release (&inited, TRUE);
+       }
 
        pthread_mutexattr_init (&attr);
        pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE);
-       pthread_mutexattr_setpolicy_np (&attr, _PTHREAD_MUTEX_POLICY_FIRSTFIT);
+       if (setpolicy_np)
+               setpolicy_np (&attr, _PTHREAD_MUTEX_POLICY_FIRSTFIT);
        res = pthread_mutex_init (mutex, &attr);
        pthread_mutexattr_destroy (&attr);
 
index a05ad99a4662a34ca259dd1d3ea971c832aae789..da0f5de0046b9f12372474057a0cfd01003a6b6b 100644 (file)
@@ -55,6 +55,8 @@ mono_networkinterface_list (int *size)
        if (size)
                *size = i;
 
+       if (!nilist)
+               nilist = g_malloc (sizeof (void*));
        nilist [i] = NULL;
        return nilist;
 }
@@ -79,8 +81,7 @@ mono_network_get_data (char* name, MonoNetworkData data, MonoNetworkError *error
                rx_fifo, rx_frame, tx_bytes, tx_packets, tx_errs, tx_drops,
                tx_fifo, tx_colls, tx_carrier, rx_multi;
 
-       if (error)
-               *error = MONO_NETWORK_ERROR_OTHER;
+       *error = MONO_NETWORK_ERROR_OTHER;
 
        f = fopen ("/proc/net/dev", "r");
        if (!f) 
@@ -96,6 +97,7 @@ mono_network_get_data (char* name, MonoNetworkData data, MonoNetworkError *error
 
                char *ptr;
                buf [sizeof (buf) - 1] = 0;
+               /* FIXME: This might potentially cause a buffer overflow for cname. */
                if ((ptr = strchr (buf, ':')) == NULL ||
                                (*ptr++ = 0, sscanf (buf, "%s", cname) != 1))
                        goto out;
index dcb69ef835239df447851189dfb3072dc5dce73c..1ce57b07c6fb6cc44b169896730c5850ece3f6c4 100644 (file)
@@ -2,9 +2,10 @@
 #define __MONO_PATH_H
 
 #include <glib.h>
+#include <mono/utils/mono-publib.h>
 
-gchar *mono_path_resolve_symlinks (const char *path);
-gchar *mono_path_canonicalize (const char *path);
+MONO_API gchar *mono_path_resolve_symlinks (const char *path);
+MONO_API gchar *mono_path_canonicalize (const char *path);
 
 #endif /* __MONO_PATH_H */
 
index f353fc53af4de7011b548af2edfcd3a91d82824b..7326254c35b100611a2bf1eee27c80e57a736ac4 100644 (file)
@@ -1,6 +1,17 @@
 #include "mono-poll.h"
 #include <errno.h>
 
+#ifdef DISABLE_SOCKETS
+#include <glib.h>
+
+int
+mono_poll (mono_pollfd *ufds, unsigned int nfds, int timeout)
+{
+       g_assert_not_reached ();
+       return -1;
+}
+#else
+
 #if defined(HAVE_POLL) && !defined(__APPLE__)
 int
 mono_poll (mono_pollfd *ufds, unsigned int nfds, int timeout)
@@ -114,3 +125,4 @@ mono_poll (mono_pollfd *ufds, unsigned int nfds, int timeout)
 
 #endif
 
+#endif /* #ifndef DISABLE_SOCKETS */
index 1d4c82afa5f8e09a1f56dd5afc3001a60b994800..835c36795a63269bb8aa022b97f236cd105d4e05 100644 (file)
@@ -1,6 +1,8 @@
 #ifndef MONO_POLL_H
 #define MONO_POLL_H
 
+#include <mono/utils/mono-publib.h>
+
 #include <config.h>
 #ifdef HAVE_SYS_TIME_H
 #include <sys/time.h>
@@ -42,7 +44,7 @@ typedef struct {
 
 #endif
 
-int mono_poll (mono_pollfd *ufds, unsigned int nfds, int timeout);
+MONO_API int mono_poll (mono_pollfd *ufds, unsigned int nfds, int timeout);
 
 #endif /* MONO_POLL_H */
 
index 250bdb9f4816dde3f40b140d8abd9d6afdc562de..01b8c1bb50c6f8b1098c1764758f5b5aac28c48e 100644 (file)
@@ -421,6 +421,8 @@ get_pid_status_item (int pid, const char *item, MonoProcessError *error, int mul
                ret = t_info.virtual_size;
        else if (strcmp (item, "Threads") == 0)
                ret = th_count;
+       else
+               ret = 0;
 
        mach_port_deallocate (mach_task_self (), task);
        
@@ -559,7 +561,7 @@ get_cpu_times (int cpu_id, gint64 *user, gint64 *systemt, gint64 *irq, gint64 *s
        char buf [256];
        char *s;
        int hz = get_user_hz ();
-       long long unsigned int user_ticks, nice_ticks, system_ticks, idle_ticks, iowait_ticks, irq_ticks, sirq_ticks;
+       guint64 user_ticks, nice_ticks, system_ticks, idle_ticks, iowait_ticks, irq_ticks, sirq_ticks;
        FILE *f = fopen ("/proc/stat", "r");
        if (!f)
                return;
@@ -576,7 +578,14 @@ get_cpu_times (int cpu_id, gint64 *user, gint64 *systemt, gint64 *irq, gint64 *s
                } else {
                        continue;
                }
-               sscanf (data, "%Lu %Lu %Lu %Lu %Lu %Lu %Lu", &user_ticks, &nice_ticks, &system_ticks, &idle_ticks, &iowait_ticks, &irq_ticks, &sirq_ticks);
+               
+               user_ticks = strtoull (data, &data, 10);
+               nice_ticks = strtoull (data, &data, 10);
+               system_ticks = strtoull (data, &data, 10);
+               idle_ticks = strtoull (data, &data, 10);
+               iowait_ticks = strtoull (data, &data, 10);
+               irq_ticks = strtoull (data, &data, 10);
+               sirq_ticks = strtoull (data, &data, 10);
                break;
        }
        fclose (f);
index 95630cf51f3c8833d5999878a05d07a8cc0b9d3c..0b24c7fbcd973ab42a1ca276418963bf0681a293 100644 (file)
 #define _MONO_PROPERTY_HASH_H_
 
 #include <glib.h>
+#include <mono/utils/mono-publib.h>
 
 G_BEGIN_DECLS
 
 typedef struct _MonoPropertyHash MonoPropertyHash;
 
-MonoPropertyHash* mono_property_hash_new (void);
+MONO_API MonoPropertyHash* mono_property_hash_new (void);
 
-void mono_property_hash_destroy (MonoPropertyHash *hash);
+MONO_API void mono_property_hash_destroy (MonoPropertyHash *hash);
 
-void mono_property_hash_insert (MonoPropertyHash *hash, gpointer object, guint32 property,
+MONO_API void mono_property_hash_insert (MonoPropertyHash *hash, gpointer object, guint32 property,
                                                                gpointer value);
 
 /* Remove all properties of OBJECT */
-void mono_property_hash_remove_object (MonoPropertyHash *hash, gpointer object);
+MONO_API void mono_property_hash_remove_object (MonoPropertyHash *hash, gpointer object);
 
-gpointer mono_property_hash_lookup (MonoPropertyHash *hash, gpointer object, guint32 property);
+MONO_API gpointer mono_property_hash_lookup (MonoPropertyHash *hash, gpointer object, guint32 property);
 
 G_END_DECLS
 
index 5b6e0ff40ed4ebd6f48287de175dac97ec09f37a..505592a862f58f104947341bd80f386c1b589695 100644 (file)
@@ -18,7 +18,9 @@
 MONO_BEGIN_DECLS
 
 /* VS 2010 and later have stdint.h */
-#if defined(_MSC_VER) && _MSC_VER < 1600
+#if defined(_MSC_VER)
+
+#if _MSC_VER < 1600
 
 typedef __int8                 int8_t;
 typedef unsigned __int8                uint8_t;
@@ -33,8 +35,28 @@ typedef unsigned __int64     uint64_t;
 
 #include <stdint.h>
 
+#endif
+
+#define MONO_API_EXPORT __declspec(dllexport)
+#define MONO_API_IMPORT __declspec(dllimport)
+
+#else
+
+#include <stdint.h>
+
+#define MONO_API_EXPORT
+#define MONO_API_IMPORT
+
 #endif /* end of compiler-specific stuff */
 
+#if !defined(MONO_STATIC_BUILD) && defined(MONO_DLL_EXPORT)
+       #define MONO_API MONO_API_EXPORT
+#elif !defined(MONO_STATIC_BUILD)
+       #define MONO_API MONO_API_IMPORT
+#else
+       #define MONO_API
+#endif
+
 typedef int32_t                mono_bool;
 typedef uint8_t                mono_byte;
 typedef uint16_t       mono_unichar2;
@@ -42,7 +64,7 @@ typedef uint16_t      mono_unichar2;
 typedef void   (*MonoFunc)     (void* data, void* user_data);
 typedef void   (*MonoHFunc)    (void* key, void* value, void* user_data);
 
-void mono_free (void *);
+MONO_API void mono_free (void *);
 
 #define MONO_CONST_RETURN const
 
index 6b9fa046bc344bb19a5543621930fb55f7933c81..68ff7dbe337805f0fd00b3bcbe3d7b119cc40a2d 100644 (file)
@@ -22,6 +22,9 @@
 #  ifdef USE_MACH_SEMA
 #    define TIMESPEC mach_timespec_t
 #    define WAIT_BLOCK(a,b) semaphore_timedwait (*(a), *(b))
+#  elif defined(__native_client__) && defined(USE_NEWLIB)
+#    define TIMESPEC struct timespec
+#    define WAIT_BLOCK(a, b) sem_trywait(a)
 #  elif defined(__OpenBSD__)
 #    define TIMESPEC struct timespec
 #    define WAIT_BLOCK(a) sem_trywait(a)
 #    define WAIT_BLOCK(a,b) sem_timedwait (a, b)
 #  endif
 
+#ifndef NSEC_PER_SEC
 #define NSEC_PER_SEC 1000000000
+#endif
+
 int
 mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable)
 {
index bde196a10a21c2fb7ae8f9d955ab1f93d59f6451..17dce622dfafecd33b64760f25d632e4963749ab 100644 (file)
@@ -17,6 +17,7 @@
 #include <semaphore.h>
 #endif
 #include <mono/io-layer/io-layer.h>
+#include <mono/utils/mono-publib.h>
 
 #if (defined (HAVE_SEMAPHORE_H) || defined (USE_MACH_SEMA)) && !defined(HOST_WIN32)
 #  define MONO_HAS_SEMAPHORES
@@ -46,11 +47,17 @@ typedef HANDLE MonoSemType;
 #define MONO_SEM_TIMEDWAIT(sem, timeout_ms) MONO_SEM_TIMEDWAIT_ALERTABLE(sem, timeout_ms, FALSE)
 #define MONO_SEM_TIMEDWAIT_ALERTABLE(sem, timeout_ms, alertable) mono_sem_timedwait ((sem), (timeout_ms), alertable) 
 
+#define MONO_SEM_WAIT_UNITERRUPTIBLE(sem) do { \
+       while (MONO_SEM_WAIT ((sem)) != 0) {    \
+               /*if (EINTR != errno) ABORT("sem_wait failed"); */      \
+       }       \
+} while (0)
+
 G_BEGIN_DECLS
 
-int mono_sem_wait (MonoSemType *sem, gboolean alertable);
-int mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable);
-int mono_sem_post (MonoSemType *sem);
+MONO_API int mono_sem_wait (MonoSemType *sem, gboolean alertable);
+MONO_API int mono_sem_timedwait (MonoSemType *sem, guint32 timeout_ms, gboolean alertable);
+MONO_API int mono_sem_post (MonoSemType *sem);
 
 G_END_DECLS
 #endif /* _MONO_SEMAPHORE_H_ */
diff --git a/mono/utils/mono-signal-handler.h b/mono/utils/mono-signal-handler.h
new file mode 100644 (file)
index 0000000..3a01146
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * mono-signal-handler.h: Handle signal handler differences across platforms
+ *
+ * Copyright (C) 2013 Xamarin Inc
+ */
+
+#ifndef __MONO_SIGNAL_HANDLER_H__
+#define __MONO_SIGNAL_HANDLER_H__
+
+#include "config.h"
+
+#ifdef ENABLE_EXTENSION_MODULE
+#include "../../../mono-extensions/mono/utils/mono-signal-handler.h"
+#endif
+/*
+Not all platforms support signal handlers in the same way. Some have the same concept but
+for some weird reason pass different kind of arguments.
+
+All signal handler helpers should go here so they can be properly shared across the JIT,
+utils and sgen.
+
+TODO: Cleanup & move mini's macros to here so they can leveraged by other parts.
+
+*/
+#ifndef MONO_SIGNAL_HANDLER_FUNC
+#define MONO_SIGNAL_HANDLER_FUNC(access, name, arglist) access void name arglist
+#endif
+
+#endif
index 21331fa1bd83e7069e7923ddba41348be6e984b6..d821f3c5e32b167c5b8c868668f0cb931da592da 100644 (file)
@@ -46,16 +46,22 @@ typedef struct {
        MonoJitInfo *ji;
        /*
         * Same as ji->method.
+        * Not valid if ASYNC_CONTEXT is true.
         */
        MonoMethod *method;
        /*
         * If ji->method is a gshared method, this is the actual method instance.
         * This is only filled if lookup for actual method was requested (MONO_UNWIND_LOOKUP_ACTUAL_METHOD)
+        * Not valid if ASYNC_CONTEXT is true.
         */
        MonoMethod *actual_method;
        /* The domain containing the code executed by this frame */
        MonoDomain *domain;
        gboolean managed;
+       /*
+        * Whenever this frame was loaded in async context.
+        */
+       gboolean async_context;
        int native_offset;
        /*
         * IL offset of this frame.
@@ -64,7 +70,7 @@ typedef struct {
         */
        int il_offset;
 
-       /*The next fields are only usefull for the jit*/
+       /* The next fields are only useful for the jit */
        gpointer lmf;
        guint32 unwind_info_len;
        guint8 *unwind_info;
index d94c42c25166c9217ef7c5df90e65db9943d2c17..8dba68fe7fba6b44855283f4fedaa16d2d49e013 100644 (file)
@@ -97,7 +97,7 @@ suspend_signal_handler (int _dummy, siginfo_t *info, void *context)
        /* thread_state_init_from_sigctx return FALSE if the current thread is detaching and suspend can't continue. */
        current->suspend_can_continue = ret;
 
-       MONO_SEM_POST (&current->suspend_semaphore);
+       MONO_SEM_POST (&current->begin_suspend_semaphore);
 
        /* This thread is doomed, all we can do is give up and let the suspender recover. */
        if (!ret)
@@ -201,7 +201,7 @@ mono_threads_core_suspend (MonoThreadInfo *info)
 {
        /*FIXME, check return value*/
        mono_threads_pthread_kill (info, mono_thread_get_abort_signal ());
-       while (MONO_SEM_WAIT (&info->suspend_semaphore) != 0) {
+       while (MONO_SEM_WAIT (&info->begin_suspend_semaphore) != 0) {
                /* g_assert (errno == EINTR); */
        }
        return info->suspend_can_continue;
@@ -221,7 +221,7 @@ mono_threads_core_resume (MonoThreadInfo *info)
 void
 mono_threads_platform_register (MonoThreadInfo *info)
 {
-       MONO_SEM_INIT (&info->suspend_semaphore, 0);
+       MONO_SEM_INIT (&info->begin_suspend_semaphore, 0);
 
 #if defined (PLATFORM_ANDROID)
        info->native_handle = (gpointer) gettid ();
@@ -231,7 +231,7 @@ mono_threads_platform_register (MonoThreadInfo *info)
 void
 mono_threads_platform_free (MonoThreadInfo *info)
 {
-       MONO_SEM_DESTROY (&info->suspend_semaphore);
+       MONO_SEM_DESTROY (&info->begin_suspend_semaphore);
 }
 
 MonoNativeThreadId
index feff58fdbe4660b80209ddc688d677fde57f3b9f..15f6451100760906ba579e1eb40ffaa47bd417c2 100644 (file)
 #include <mono/utils/mono-threads.h>
 #include <mono/utils/mono-tls.h>
 #include <mono/utils/hazard-pointer.h>
+#include <mono/utils/mono-memory-model.h>
 #include <mono/metadata/appdomain.h>
 #include <mono/metadata/domain-internals.h>
 
 #include <errno.h>
 
+#if defined(__MACH__)
+#include <mono/utils/mach-support.h>
+#endif
+
 #define THREADS_DEBUG(...)
 //#define THREADS_DEBUG(...) g_message(__VA_ARGS__)
 
@@ -33,8 +38,7 @@ The GC has to acquire this lock before starting a STW to make sure
 a runtime suspend won't make it wronly see a thread in a safepoint
 when it is in fact not.
 */
-static mono_mutex_t global_suspend_lock;
-
+static MonoSemType global_suspend_semaphore;
 
 static int thread_info_size;
 static MonoThreadInfoCallbacks threads_callbacks;
@@ -44,6 +48,9 @@ static MonoLinkedListSet thread_list;
 static gboolean disable_new_interrupt = FALSE;
 static gboolean mono_threads_inited = FALSE;
 
+static void mono_threads_unregister_current_thread (MonoThreadInfo *info);
+
+
 static inline void
 mono_hazard_pointer_clear_all (MonoThreadHazardPointers *hp, int retain)
 {
@@ -103,7 +110,7 @@ free_thread_info (gpointer mem)
 {
        MonoThreadInfo *info = mem;
 
-       mono_mutex_destroy (&info->suspend_lock);
+       MONO_SEM_DESTROY (&info->suspend_semaphore);
        MONO_SEM_DESTROY (&info->resume_semaphore);
        MONO_SEM_DESTROY (&info->finish_resume_semaphore);
        mono_threads_platform_free (info);
@@ -127,7 +134,7 @@ register_thread (MonoThreadInfo *info, gpointer baseptr)
        mono_thread_info_set_tid (info, mono_native_thread_id_get ());
        info->small_id = small_id;
 
-       mono_mutex_init_suspend_safe (&info->suspend_lock);
+       MONO_SEM_INIT (&info->suspend_semaphore, 1);
        MONO_SEM_INIT (&info->resume_semaphore, 0);
        MONO_SEM_INIT (&info->finish_resume_semaphore, 0);
 
@@ -145,10 +152,12 @@ register_thread (MonoThreadInfo *info, gpointer baseptr)
        }
 
        mono_threads_platform_register (info);
-
+       info->thread_state = STATE_RUNNING;
+       mono_thread_info_suspend_lock ();
        /*If this fail it means a given thread has been registered twice, which doesn't make sense. */
        result = mono_thread_info_insert (info);
        g_assert (result);
+       mono_thread_info_suspend_unlock ();
        return info;
 }
 
@@ -167,14 +176,30 @@ unregister_thread (void *arg)
         */
        mono_native_tls_set_value (small_id_key, GUINT_TO_POINTER (info->small_id + 1));
 
+       info->thread_state = STATE_SHUTTING_DOWN;
+
        /*
-       The unregister callback is reposible for calling mono_threads_unregister_current_thread
-       since it usually needs to be done in sync with the GC does a stop-the-world.
+       First perform the callback that requires no locks.
+       This callback has the potential of taking other locks, so we do it before.
+       After it completes, the thread remains functional.
+       */
+       if (threads_callbacks.thread_detach)
+               threads_callbacks.thread_detach (info);
+
+       mono_thread_info_suspend_lock ();
+
+       /*
+       Now perform the callback that must be done under locks.
+       This will render the thread useless and non-suspendable, so it must
+       be done while holding the suspend lock to give no other thread chance
+       to suspend it.
        */
        if (threads_callbacks.thread_unregister)
                threads_callbacks.thread_unregister (info);
-       else
-               mono_threads_unregister_current_thread (info);
+       mono_threads_unregister_current_thread (info);
+
+       info->thread_state = STATE_DEAD;
+       mono_thread_info_suspend_unlock ();
 
        /*now it's safe to free the thread info.*/
        mono_thread_hazardous_free_or_queue (info, free_thread_info, TRUE, FALSE);
@@ -186,20 +211,40 @@ unregister_thread (void *arg)
  * This must be called from the thread unregister callback and nowhere else.
  * The current thread must be passed as TLS might have already been cleaned up.
 */
-void
+static void
 mono_threads_unregister_current_thread (MonoThreadInfo *info)
 {
        gboolean result;
        g_assert (mono_thread_info_get_tid (info) == mono_native_thread_id_get ());
        result = mono_thread_info_remove (info);
        g_assert (result);
-
 }
 
 MonoThreadInfo*
 mono_thread_info_current (void)
 {
-       return mono_native_tls_get_value (thread_info_key);
+       MonoThreadInfo *info = (MonoThreadInfo*)mono_native_tls_get_value (thread_info_key);
+       if (info)
+               return info;
+
+       info = mono_thread_info_lookup (mono_native_thread_id_get ()); /*info on HP1*/
+
+       /*
+       We might be called during thread cleanup, but we cannot be called after cleanup as happened.
+       The way to distinguish between before, during and after cleanup is the following:
+
+       -If the TLS key is set, cleanup has not begun;
+       -If the TLS key is clean, but the thread remains registered, cleanup is in progress;
+       -If the thread is nowhere to be found, cleanup has finished.
+
+       We cannot function after cleanup since there's no way to ensure what will happen.
+       */
+       g_assert (info);
+
+       /*We're looking up the current thread which will not be freed until we finish running, so no need to keep it on a HP */
+       mono_hazard_pointer_clear (mono_hazard_pointer_get (), 1);
+
+       return info;
 }
 
 int
@@ -275,12 +320,16 @@ mono_threads_init (MonoThreadInfoCallbacks *callbacks, size_t info_size)
        res = mono_native_tls_alloc (&small_id_key, NULL);
        g_assert (res);
 
-       mono_mutex_init_suspend_safe (&global_suspend_lock);
+       MONO_SEM_INIT (&global_suspend_semaphore, 1);
 
        mono_lls_init (&thread_list, NULL);
        mono_thread_smr_init ();
        mono_threads_init_platform ();
 
+#if defined(__MACH__)
+       mono_mach_init (thread_info_key);
+#endif
+
        mono_threads_inited = TRUE;
 
        g_assert (sizeof (MonoNativeThreadId) <= sizeof (uintptr_t));
@@ -315,7 +364,7 @@ mono_thread_info_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel
        if (!info)
                return NULL;
 
-       mono_mutex_lock (&info->suspend_lock);
+       MONO_SEM_WAIT_UNITERRUPTIBLE (&info->suspend_semaphore);
 
        /*thread is on the process of detaching*/
        if (mono_thread_info_run_state (info) > STATE_RUNNING) {
@@ -328,12 +377,12 @@ mono_thread_info_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel
        if (info->suspend_count) {
                ++info->suspend_count;
                mono_hazard_pointer_clear (hp, 1);
-               mono_mutex_unlock (&info->suspend_lock);
+               MONO_SEM_POST (&info->suspend_semaphore);
                return info;
        }
 
        if (!mono_threads_core_suspend (info)) {
-               mono_mutex_unlock (&info->suspend_lock);
+               MONO_SEM_POST (&info->suspend_semaphore);
                mono_hazard_pointer_clear (hp, 1);
                return NULL;
        }
@@ -343,7 +392,7 @@ mono_thread_info_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel
 
        ++info->suspend_count;
        info->thread_state |= STATE_SUSPENDED;
-       mono_mutex_unlock (&info->suspend_lock);
+       MONO_SEM_POST (&info->suspend_semaphore);
        mono_hazard_pointer_clear (hp, 1);
 
        return info;
@@ -357,7 +406,7 @@ mono_thread_info_self_suspend (void)
        if (!info)
                return;
 
-       mono_mutex_lock (&info->suspend_lock);
+       MONO_SEM_WAIT_UNITERRUPTIBLE (&info->suspend_semaphore);
 
        THREADS_DEBUG ("self suspend IN COUNT %d\n", info->suspend_count);
 
@@ -369,11 +418,9 @@ mono_thread_info_self_suspend (void)
        ret = mono_threads_get_runtime_callbacks ()->thread_state_init_from_sigctx (&info->suspend_state, NULL);
        g_assert (ret);
 
-       mono_mutex_unlock (&info->suspend_lock);
+       MONO_SEM_POST (&info->suspend_semaphore);
 
-       while (MONO_SEM_WAIT (&info->resume_semaphore) != 0) {
-               /*if (EINTR != errno) ABORT("sem_wait failed"); */
-       }
+       MONO_SEM_WAIT_UNITERRUPTIBLE (&info->resume_semaphore);
 
        g_assert (!info->async_target); /*FIXME this should happen normally for suspend. */
        MONO_SEM_POST (&info->finish_resume_semaphore);
@@ -385,9 +432,7 @@ mono_thread_info_resume_internal (MonoThreadInfo *info)
        gboolean result;
        if (mono_thread_info_suspend_state (info) == STATE_SELF_SUSPENDED) {
                MONO_SEM_POST (&info->resume_semaphore);
-               while (MONO_SEM_WAIT (&info->finish_resume_semaphore) != 0) {
-                       /* g_assert (errno == EINTR); */
-               }
+               MONO_SEM_WAIT_UNITERRUPTIBLE (&info->finish_resume_semaphore);
                result = TRUE;
        } else {
                result = mono_threads_core_resume (info);
@@ -405,12 +450,12 @@ mono_thread_info_resume (MonoNativeThreadId tid)
        if (!info)
                return FALSE;
 
-       mono_mutex_lock (&info->suspend_lock);
+       MONO_SEM_WAIT_UNITERRUPTIBLE (&info->suspend_semaphore);
 
        THREADS_DEBUG ("resume %x IN COUNT %d\n",tid, info->suspend_count);
 
        if (info->suspend_count <= 0) {
-               mono_mutex_unlock (&info->suspend_lock);
+               MONO_SEM_POST (&info->suspend_semaphore);
                mono_hazard_pointer_clear (hp, 1);
                return FALSE;
        }
@@ -424,12 +469,19 @@ mono_thread_info_resume (MonoNativeThreadId tid)
        if (--info->suspend_count == 0)
                result = mono_thread_info_resume_internal (info);
 
-       mono_mutex_unlock (&info->suspend_lock);
+       MONO_SEM_POST (&info->suspend_semaphore);
        mono_hazard_pointer_clear (hp, 1);
+       mono_atomic_store_release (&mono_thread_info_current ()->inside_critical_region, FALSE);
 
        return result;
 }
 
+void
+mono_thread_info_finish_suspend (void)
+{
+       mono_atomic_store_release (&mono_thread_info_current ()->inside_critical_region, FALSE);
+}
+
 /*
 FIXME fix cardtable WB to be out of line and check with the runtime if the target is not the
 WB trampoline. Another option is to encode wb ranges in MonoJitInfo, but that is somewhat hard.
@@ -438,14 +490,19 @@ static gboolean
 is_thread_in_critical_region (MonoThreadInfo *info)
 {
        MonoMethod *method;
-       MonoJitInfo *ji = mono_jit_info_table_find (
+       MonoJitInfo *ji;
+
+       if (info->inside_critical_region)
+               return TRUE;
+
+       ji = mono_jit_info_table_find (
                info->suspend_state.unwind_data [MONO_UNWIND_DATA_DOMAIN],
                MONO_CONTEXT_GET_IP (&info->suspend_state.ctx));
 
        if (!ji)
                return FALSE;
 
-       method = ji->method;
+       method = mono_jit_info_get_method (ji);
 
        return threads_callbacks.mono_method_is_critical (method);
 }
@@ -497,6 +554,8 @@ mono_thread_info_safe_suspend_sync (MonoNativeThreadId id, gboolean interrupt_ke
                sleep_duration += 10;
        }
 
+       mono_atomic_store_release (&mono_thread_info_current ()->inside_critical_region, TRUE);
+
        mono_thread_info_suspend_unlock ();
        return info;
 }
@@ -527,13 +586,13 @@ STW to make sure no unsafe pending suspend is in progress.
 void
 mono_thread_info_suspend_lock (void)
 {
-       mono_mutex_lock (&global_suspend_lock);
+       MONO_SEM_WAIT_UNITERRUPTIBLE (&global_suspend_semaphore);
 }
 
 void
 mono_thread_info_suspend_unlock (void)
 {
-       mono_mutex_unlock (&global_suspend_lock);
+       MONO_SEM_POST (&global_suspend_semaphore);
 }
 
 void
@@ -600,3 +659,30 @@ mono_thread_info_new_interrupt_enabled (void)
 #endif
        return FALSE;
 }
+
+/*
+ * mono_thread_info_set_is_async_context:
+ *
+ *   Set whenever the current thread is in an async context. Some runtime functions might behave
+ * differently while in an async context in order to be async safe.
+ */
+void
+mono_thread_info_set_is_async_context (gboolean async_context)
+{
+       MonoThreadInfo *info = mono_thread_info_current ();
+
+       if (info)
+               info->is_async_context = async_context;
+}
+
+gboolean
+mono_thread_info_is_async_context (void)
+{
+       MonoThreadInfo *info = mono_thread_info_current ();
+
+       if (info)
+               return info->is_async_context;
+       else
+               return FALSE;
+}
+
index b30e9ac4c16716c201ce2cb1bf853b177014cadc..d06aea6e724569010f8d649c0933d7de97046a00 100644 (file)
@@ -76,10 +76,10 @@ and reduce the number of casts drastically.
 #endif
 
 enum {
-       STATE_STARTING                  = 0x01,
-       STATE_RUNNING                   = 0x02,
-       STATE_SHUTTING_DOWN             = 0x03,
-       STATE_DEAD                              = 0x04,
+       STATE_STARTING                  = 0x00,
+       STATE_RUNNING                   = 0x01,
+       STATE_SHUTTING_DOWN             = 0x02,
+       STATE_DEAD                              = 0x03,
        RUN_STATE_MASK                  = 0x0F,
 
        STATE_SUSPENDED                 = 0x10,
@@ -87,8 +87,8 @@ enum {
        SUSPEND_STATE_MASK              = 0xF0,
 };
 
-#define mono_thread_info_run_state(info) ((info)->thread_state & RUN_STATE_MASK)
-#define mono_thread_info_suspend_state(info) ((info)->thread_state & SUSPEND_STATE_MASK)
+#define mono_thread_info_run_state(info) (((MonoThreadInfo*)info)->thread_state & RUN_STATE_MASK)
+#define mono_thread_info_suspend_state(info) (((MonoThreadInfo*)info)->thread_state & SUSPEND_STATE_MASK)
 
 typedef struct {
        MonoLinkedListSetNode node;
@@ -99,8 +99,8 @@ typedef struct {
        /*Tells if this thread was created by the runtime or not.*/
        gboolean runtime_thread;
 
-       /* suspend machinery, fields protected by the suspend_lock */
-       mono_mutex_t suspend_lock;
+       /* suspend machinery, fields protected by suspend_semaphore */
+       MonoSemType suspend_semaphore;
        int suspend_count;
 
        MonoSemType finish_resume_semaphore;
@@ -108,7 +108,7 @@ typedef struct {
 
        /* only needed by the posix backend */ 
 #if (defined(_POSIX_VERSION) || defined(__native_client__)) && !defined (__MACH__)
-       MonoSemType suspend_semaphore;
+       MonoSemType begin_suspend_semaphore;
        gboolean syscall_break_signal;
        gboolean suspend_can_continue;
 #endif
@@ -119,15 +119,37 @@ typedef struct {
        /*async call machinery, thread MUST be suspended before accessing those fields*/
        void (*async_target)(void*);
        void *user_data;
+
+       /*
+       If true, this thread is running a critical region of code and cannot be suspended.
+       A critical session is implicitly started when you call mono_thread_info_safe_suspend_sync
+       and is ended when you call either mono_thread_info_resume or mono_thread_info_finish_suspend.
+       */
+       gboolean inside_critical_region;
+
+       /*
+        * If TRUE, the thread is in async context. Code can use this information to avoid async-unsafe
+        * operations like locking without having to pass an 'async' parameter around.
+        */
+       gboolean is_async_context;
 } MonoThreadInfo;
 
 typedef struct {
        void* (*thread_register)(THREAD_INFO_TYPE *info, void *baseaddr);
        /*
-       This callback is called after @info is removed from the thread list.
+       This callback is called with @info still on the thread list.
+       This call is made while holding the suspend lock, so don't do callbacks.
        SMR remains functional as its small_id has not been reclaimed.
        */
        void (*thread_unregister)(THREAD_INFO_TYPE *info);
+       /*
+       This callback is called right before thread_unregister. This is called
+       without any locks held so it's the place for complicated cleanup.
+
+       The thread must remain operational between this call and thread_unregister.
+       It must be possible to successfully suspend it after thread_unregister completes.
+       */
+       void (*thread_detach)(THREAD_INFO_TYPE *info);
        void (*thread_attach)(THREAD_INFO_TYPE *info);
        gboolean (*mono_method_is_critical) (void *method);
 #ifndef HOST_WIN32
@@ -144,13 +166,13 @@ typedef struct {
 /*
 Requires the world to be stoped
 */
-#define FOREACH_THREAD(thread) MONO_LLS_FOREACH (mono_thread_info_list_head (), thread, SgenThreadInfo*)
+#define FOREACH_THREAD(thread) MONO_LLS_FOREACH (mono_thread_info_list_head (), thread, THREAD_INFO_TYPE*)
 #define END_FOREACH_THREAD MONO_LLS_END_FOREACH
 
 /*
 Snapshot iteration.
 */
-#define FOREACH_THREAD_SAFE(thread) MONO_LLS_FOREACH_SAFE (mono_thread_info_list_head (), thread, SgenThreadInfo*)
+#define FOREACH_THREAD_SAFE(thread) MONO_LLS_FOREACH_SAFE (mono_thread_info_list_head (), thread, THREAD_INFO_TYPE*)
 #define END_FOREACH_THREAD_SAFE MONO_LLS_END_FOREACH_SAFE
 
 #define mono_thread_info_get_tid(info) ((MonoNativeThreadId)((MonoThreadInfo*)info)->node.key)
@@ -190,15 +212,18 @@ mono_thread_info_get_small_id (void) MONO_INTERNAL;
 MonoLinkedListSet*
 mono_thread_info_list_head (void) MONO_INTERNAL;
 
-MonoThreadInfo*
+THREAD_INFO_TYPE*
 mono_thread_info_lookup (MonoNativeThreadId id) MONO_INTERNAL;
 
-MonoThreadInfo*
+THREAD_INFO_TYPE*
 mono_thread_info_safe_suspend_sync (MonoNativeThreadId tid, gboolean interrupt_kernel) MONO_INTERNAL;
 
 gboolean
 mono_thread_info_resume (MonoNativeThreadId tid) MONO_INTERNAL;
 
+void
+mono_thread_info_finish_suspend (void) MONO_INTERNAL;
+
 void
 mono_thread_info_self_suspend (void) MONO_INTERNAL;
 
@@ -206,7 +231,7 @@ gboolean
 mono_thread_info_new_interrupt_enabled (void) MONO_INTERNAL;
 
 void
-mono_thread_info_setup_async_call (MonoThreadInfo *info, void (*target_func)(void*), void *user_data) MONO_INTERNAL;
+mono_thread_info_setup_async_call (THREAD_INFO_TYPE *info, void (*target_func)(void*), void *user_data) MONO_INTERNAL;
 
 void
 mono_thread_info_suspend_lock (void) MONO_INTERNAL;
@@ -214,15 +239,18 @@ mono_thread_info_suspend_lock (void) MONO_INTERNAL;
 void
 mono_thread_info_suspend_unlock (void) MONO_INTERNAL;
 
-void
-mono_threads_unregister_current_thread (THREAD_INFO_TYPE *info) MONO_INTERNAL;
-
 void
 mono_thread_info_disable_new_interrupt (gboolean disable) MONO_INTERNAL;
 
 void
 mono_thread_info_abort_socket_syscall_for_close (MonoNativeThreadId tid) MONO_INTERNAL;
 
+void
+mono_thread_info_set_is_async_context (gboolean async_context) MONO_INTERNAL;
+
+gboolean
+mono_thread_info_is_async_context (void) MONO_INTERNAL;
+
 #if !defined(HOST_WIN32)
 
 int
@@ -244,12 +272,12 @@ HANDLE
 
 /* Plartform specific functions DON'T use them */
 void mono_threads_init_platform (void) MONO_INTERNAL; //ok
-gboolean mono_threads_core_suspend (MonoThreadInfo *info) MONO_INTERNAL;
-gboolean mono_threads_core_resume (MonoThreadInfo *info) MONO_INTERNAL;
-void mono_threads_platform_register (MonoThreadInfo *info) MONO_INTERNAL; //ok
-void mono_threads_platform_free (MonoThreadInfo *info) MONO_INTERNAL;
-void mono_threads_core_interrupt (MonoThreadInfo *info) MONO_INTERNAL;
-void mono_threads_core_abort_syscall (MonoThreadInfo *info) MONO_INTERNAL;
+gboolean mono_threads_core_suspend (THREAD_INFO_TYPE *info) MONO_INTERNAL;
+gboolean mono_threads_core_resume (THREAD_INFO_TYPE *info) MONO_INTERNAL;
+void mono_threads_platform_register (THREAD_INFO_TYPE *info) MONO_INTERNAL; //ok
+void mono_threads_platform_free (THREAD_INFO_TYPE *info) MONO_INTERNAL;
+void mono_threads_core_interrupt (THREAD_INFO_TYPE *info) MONO_INTERNAL;
+void mono_threads_core_abort_syscall (THREAD_INFO_TYPE *info) MONO_INTERNAL;
 gboolean mono_threads_core_needs_abort_syscall (void) MONO_INTERNAL;
 
 MonoNativeThreadId mono_native_thread_id_get (void) MONO_INTERNAL;
diff --git a/mono/utils/mono-tls.c b/mono/utils/mono-tls.c
new file mode 100644 (file)
index 0000000..890f078
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * mono-tls.c: Low-level TLS support
+ *
+ * Copyright 2013 Xamarin, Inc (http://www.xamarin.com)
+ */
+
+#include "mono-tls.h"
+
+static int tls_offsets [TLS_KEY_NUM];
+static gboolean tls_offset_set [TLS_KEY_NUM];
+
+/*
+ * mono_tls_key_get_offset:
+ *
+ *   Return the TLS offset used by the TLS var identified by KEY, previously initialized by a call to
+ * mono_tls_key_set_offset (). Return -1 if the offset is not known.
+ */
+int
+mono_tls_key_get_offset (MonoTlsKey key)
+{
+       g_assert (tls_offset_set [key]);
+       return tls_offsets [key];
+}
+
+/*
+ * mono_tls_key_set_offset:
+ *
+ *   Set the TLS offset used by the TLS var identified by KEY.
+ */
+void
+mono_tls_key_set_offset (MonoTlsKey key, int offset)
+{
+       tls_offsets [key] = offset;
+       tls_offset_set [key] = TRUE;
+}
index c38708469f34d6adea5f7c3244f21e1158fb2eb2..485aea76f3a0f3e13bad9b2fb19e579c8e96dc27 100644 (file)
 #ifndef __MONO_TLS_H__
 #define __MONO_TLS_H__
 
+#include <glib.h>
+
+/* TLS entries used by the runtime */
+typedef enum {
+       /* mono_thread_internal_current () */
+       TLS_KEY_THREAD = 0,
+       TLS_KEY_JIT_TLS = 1,
+       /* mono_domain_get () */
+       TLS_KEY_DOMAIN = 2,
+       TLS_KEY_LMF = 3,
+       TLS_KEY_SGEN_THREAD_INFO = 4,
+       TLS_KEY_SGEN_TLAB_NEXT_ADDR = 5,
+       TLS_KEY_SGEN_TLAB_TEMP_END = 6,
+       TLS_KEY_BOEHM_GC_THREAD = 7,
+       TLS_KEY_LMF_ADDR = 8,
+       TLS_KEY_NUM = 9
+} MonoTlsKey;
 
 #ifdef HOST_WIN32
 
@@ -49,5 +66,7 @@ mono_native_tls_set_value (MonoNativeTlsKey key, gpointer value)
 
 #endif /* HOST_WIN32 */
 
+int mono_tls_key_get_offset (MonoTlsKey key);
+void mono_tls_key_set_offset (MonoTlsKey key, int offset);
 
 #endif /* __MONO_TLS_H__ */
index 96dc9eeed085f04059f4ccf75eaecd665d10bc00..1a92a8f7ef86a3fa84b518daaf6dd21fe6925cfc 100644 (file)
@@ -1,8 +1,9 @@
 #ifndef __MONO_URI_H
 #define __MONO_URI_H
 #include <glib.h>
+#include <mono/utils/mono-publib.h>
 
-gchar * mono_escape_uri_string (const gchar *string);
+MONO_API gchar * mono_escape_uri_string (const gchar *string);
 
 #endif /* __MONO_URI_H */
 
index 5ff68938f6d94ed70392744cc0e429be1c00278c..e113260d4a8dde077d498fdea9fd6d3d1cb2b7a1 100644 (file)
@@ -210,25 +210,17 @@ mono_bitset_count (const MonoBitSet *set) {
        count = 0;
        for (i = 0; i < set->size / BITS_PER_CHUNK; ++i) {
                d = set->data [i];
-               /* there is probably some asm code that can do this much faster */
-               if (d) {
-#if SIZEOF_VOID_P == 8
-                       /* http://www.jjj.de/bitwizardry/bitwizardrypage.html */
-                       d -=  (d>>1) & 0x5555555555555555;
-                       d  = ((d>>2) & 0x3333333333333333) + (d & 0x3333333333333333);
-                       d  = ((d>>4) + d) & 0x0f0f0f0f0f0f0f0f;
-                       d *= 0x0101010101010101;
-                       count += d >> 56;
+#ifdef __GNUC__
+               if (sizeof (gsize) == sizeof (unsigned long))
+                       count += __builtin_popcountl (d);
+               else
+                       count += __builtin_popcount (d);
 #else
-                       /* http://aggregate.org/MAGIC/ */
-                       d -= ((d >> 1) & 0x55555555);
-                       d = (((d >> 2) & 0x33333333) + (d & 0x33333333));
-                       d = (((d >> 4) + d) & 0x0f0f0f0f);
-                       d += (d >> 8);
-                       d += (d >> 16);
-                       count += (d & 0x0000003f);
-#endif
+               while (d) {
+                       count ++;
+                       d &= (d - 1);
                }
+#endif
        }
        return count;
 }
index 7ec53f60bcf91cf53c3ea6f87f77589f7b09fe4f..5bea9278394d1e7dd1a2f033c71cb2a47517807b 100644 (file)
@@ -2,6 +2,7 @@
 #define __MONO_BITSET_H__
 
 #include <glib.h>
+#include <mono/utils/mono-publib.h>
 
 /*
  * When embedding, you have to define MONO_ZERO_LEN_ARRAY before including any
@@ -62,56 +63,56 @@ enum {
  * Interface documentation by Dennis Haney.
  */
 
-guint32     mono_bitset_alloc_size   (guint32 max_size, guint32 flags);
+MONO_API guint32     mono_bitset_alloc_size   (guint32 max_size, guint32 flags);
 
-MonoBitSet* mono_bitset_new          (guint32 max_size, guint32 flags);
+MONO_API MonoBitSet* mono_bitset_new          (guint32 max_size, guint32 flags);
 
-MonoBitSet* mono_bitset_mem_new      (gpointer mem, guint32 max_size, guint32 flags);
+MONO_API MonoBitSet* mono_bitset_mem_new      (gpointer mem, guint32 max_size, guint32 flags);
 
-void        mono_bitset_free         (MonoBitSet *set); 
+MONO_API void        mono_bitset_free         (MonoBitSet *set); 
 
-void        mono_bitset_set          (MonoBitSet *set, guint32 pos);
+MONO_API void        mono_bitset_set          (MonoBitSet *set, guint32 pos);
 
-void        mono_bitset_set_all      (MonoBitSet *set);
+MONO_API void        mono_bitset_set_all      (MonoBitSet *set);
 
-int         mono_bitset_test         (const MonoBitSet *set, guint32 pos);
+MONO_API int         mono_bitset_test         (const MonoBitSet *set, guint32 pos);
 
-gsize       mono_bitset_test_bulk    (const MonoBitSet *set, guint32 pos);
+MONO_API gsize       mono_bitset_test_bulk    (const MonoBitSet *set, guint32 pos);
 
-void        mono_bitset_clear        (MonoBitSet *set, guint32 pos);
+MONO_API void        mono_bitset_clear        (MonoBitSet *set, guint32 pos);
 
-void        mono_bitset_clear_all    (MonoBitSet *set);
+MONO_API void        mono_bitset_clear_all    (MonoBitSet *set);
 
-void        mono_bitset_invert       (MonoBitSet *set);
+MONO_API void        mono_bitset_invert       (MonoBitSet *set);
 
-guint32     mono_bitset_size         (const MonoBitSet *set);
+MONO_API guint32     mono_bitset_size         (const MonoBitSet *set);
 
-guint32     mono_bitset_count        (const MonoBitSet *set);
+MONO_API guint32     mono_bitset_count        (const MonoBitSet *set);
 
-void        mono_bitset_low_high     (const MonoBitSet *set, guint32 *low, guint32 *high);
+MONO_API void        mono_bitset_low_high     (const MonoBitSet *set, guint32 *low, guint32 *high);
 
-int         mono_bitset_find_start   (const MonoBitSet *set);
+MONO_API int         mono_bitset_find_start   (const MonoBitSet *set);
 
-int         mono_bitset_find_first   (const MonoBitSet *set, gint pos);
+MONO_API int         mono_bitset_find_first   (const MonoBitSet *set, gint pos);
 
-int         mono_bitset_find_last    (const MonoBitSet *set, gint pos);
+MONO_API int         mono_bitset_find_last    (const MonoBitSet *set, gint pos);
 
-int         mono_bitset_find_first_unset (const MonoBitSet *set, gint pos);
+MONO_API int         mono_bitset_find_first_unset (const MonoBitSet *set, gint pos);
 
-MonoBitSet* mono_bitset_clone        (const MonoBitSet *set, guint32 new_size);
+MONO_API MonoBitSet* mono_bitset_clone        (const MonoBitSet *set, guint32 new_size);
 
-void        mono_bitset_copyto       (const MonoBitSet *src, MonoBitSet *dest);
+MONO_API void        mono_bitset_copyto       (const MonoBitSet *src, MonoBitSet *dest);
 
-void        mono_bitset_union        (MonoBitSet *dest, const MonoBitSet *src);
+MONO_API void        mono_bitset_union        (MonoBitSet *dest, const MonoBitSet *src);
 
-void        mono_bitset_intersection (MonoBitSet *dest, const MonoBitSet *src);
+MONO_API void        mono_bitset_intersection (MonoBitSet *dest, const MonoBitSet *src);
 
-void        mono_bitset_sub          (MonoBitSet *dest, const MonoBitSet *src);
+MONO_API void        mono_bitset_sub          (MonoBitSet *dest, const MonoBitSet *src);
 
-gboolean    mono_bitset_equal        (const MonoBitSet *src, const MonoBitSet *src1);
+MONO_API gboolean    mono_bitset_equal        (const MonoBitSet *src, const MonoBitSet *src1);
 
-void        mono_bitset_foreach      (MonoBitSet *set, MonoBitSetFunc func, gpointer data);
+MONO_API void        mono_bitset_foreach      (MonoBitSet *set, MonoBitSetFunc func, gpointer data);
 
-void        mono_bitset_intersection_2 (MonoBitSet *dest, const MonoBitSet *src1, const MonoBitSet *src2);
+MONO_API void        mono_bitset_intersection_2 (MonoBitSet *dest, const MonoBitSet *src1, const MonoBitSet *src2);
 
 #endif /* __MONO_BITSET_H__ */
index f1b66737e3a74ced1320c0434016b9bd5586a11a..8da0155669c77663585275a84ecea1d4c753e790 100644 (file)
 #define _MONO_STRENC_H_ 1
 
 #include <glib.h>
+#include <mono/utils/mono-publib.h>
 
-extern gunichar2 *mono_unicode_from_external (const gchar *in, gsize *bytes);
-extern gchar *mono_utf8_from_external (const gchar *in);
-extern gchar *mono_unicode_to_external (const gunichar2 *uni);
-extern gboolean mono_utf8_validate_and_len (const gchar *source, glong* oLength, const gchar** oEnd);
-extern gboolean mono_utf8_validate_and_len_with_bounds (const gchar *source, glong max_bytes, glong* oLength, const gchar** oEnd);
+extern MONO_API gunichar2 *mono_unicode_from_external (const gchar *in, gsize *bytes);
+extern MONO_API gchar *mono_utf8_from_external (const gchar *in);
+extern MONO_API gchar *mono_unicode_to_external (const gunichar2 *uni);
+extern MONO_API gboolean mono_utf8_validate_and_len (const gchar *source, glong* oLength, const gchar** oEnd);
+extern MONO_API gboolean mono_utf8_validate_and_len_with_bounds (const gchar *source, glong max_bytes, glong* oLength, const gchar** oEnd);
 
 #endif /* _MONO_STRENC_H_ */
index 708e485017c1fce347a87ce877fa3937a6f76399..d7b993409991182021565d76457cd7f4dc16ddf6 100644 (file)
@@ -2444,6 +2444,7 @@ mono_strtod
        return sign ? -dval(rv) : dval(rv);
        }
 
+#if 0
  static int
 quorem
 #ifdef KR_headers
@@ -2561,11 +2562,13 @@ quorem
                }
        return q;
        }
+#endif
 
 #ifndef MULTIPLE_THREADS
  static char *dtoa_result;
 #endif
 
+#if 0
  static char *
 #ifdef KR_headers
 rv_alloc(i) int i;
@@ -2629,7 +2632,6 @@ freedtoa(char *s)
 #endif
        }
 
-#if 0
 /* dtoa for IEEE arithmetic (dmg): convert double to ASCII string.
  *
  * Inspired by "How to Print Floating-Point Numbers Accurately" by
index 38cc49ba75ed5b12456a47e03f2b666b483c2172..048d96d0c63d6723b81b6120ffddec870034e0aa 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 5ec6d8aa5b976e43733439bd7049dfc731e056f2..37f1d70dfc3173e73902954c2a63c4dbc7df7443 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 76a7e8202e76593289daec05fd851debd94e3aa8..f5cf3627df74acdd4f11e4309f98dae74c1c9d28 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 97e87073491801e64428dea8df9c4a5b64ad46c8..ceb0619d28c0c57f4444ea45b25c7e6720a77346 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug_SGen|Win32">\r
       <Configuration>Debug_SGen</Configuration>\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <UseOfMfc>false</UseOfMfc>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
       <LinkLibraryDependencies>false</LinkLibraryDependencies>\r
     </ProjectReference>\r
     <Link>\r
-      <AdditionalDependencies>libgc.lib;libmonoruntimesgen.lib;libmonoutils.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>libmonoruntimesgen.lib;libmonoutils.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <ModuleDefinitionFile>monosgen.def</ModuleDefinitionFile>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
index 3965534b31db930f13e72c210bdf359fb9058c62..3ad4ff659156c03dce78025f41c2b2fec53d48b0 100644 (file)
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>\r
+<?xml version="1.0" encoding="utf-8"?>\r
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug_SGen|Win32">\r
     <ClCompile Include="..\mono\metadata\sgen-split-nursery.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-toggleref.c" />\r
     <ClCompile Include="..\mono\metadata\sgen-workers.c" />\r
+    <ClCompile Include="..\mono\metadata\sgen-fin-weak-hash.c" />\r
+    <ClCompile Include="..\mono\metadata\sgen-stw.c" />\r
     <ClCompile Include="..\mono\metadata\socket-io.c" />\r
     <ClCompile Include="..\mono\metadata\string-icalls.c" />\r
     <ClCompile Include="..\mono\metadata\sysmath.c" />\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v110</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
   <ImportGroup Label="ExtensionTargets">\r
   </ImportGroup>\r
-</Project>\r
+</Project>
\ No newline at end of file
index 7fd05c936bd43cfe4d622aa458333a4211dc5096..8c3ef282414391c568927e6c54bb370b7b0c2130 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
@@ -42,6 +42,7 @@
     <ClCompile Include="..\mono\utils\mono-math.c" />\r
     <ClCompile Include="..\mono\utils\mono-md5.c" />\r
     <ClCompile Include="..\mono\utils\mono-mmap.c" />\r
+    <ClCompile Include="..\mono\utils\mono-mutex.c" />\r
     <ClCompile Include="..\mono\utils\mono-networkinterfaces.c" />\r
     <ClCompile Include="..\mono\utils\mono-path.c" />\r
     <ClCompile Include="..\mono\utils\mono-poll.c" />\r
     <ClCompile Include="..\mono\utils\monobitset.c" />\r
     <ClCompile Include="..\mono\utils\strenc.c" />\r
     <ClCompile Include="..\mono\utils\strtod.c" />\r
+    <ClCompile Include="..\mono\utils\atomic.c" />\r
+    <ClCompile Include="..\mono\utils\mono-hwcap.c" />\r
+    <ClCompile Include="..\mono\utils\mono-hwcap-x86.c" />\r
+    <ClCompile Include="..\mono\utils\bsearch.c" />\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="..\mono\utils\dlmalloc.h" />\r
     <ClInclude Include="..\mono\utils\mono-membar.h" />\r
     <ClInclude Include="..\mono\utils\mono-memory-model.h" />\r
     <ClInclude Include="..\mono\utils\mono-mmap.h" />\r
+    <ClInclude Include="..\mono\utils\mono-mutex.h" />\r
     <ClInclude Include="..\mono\utils\mono-networkinterfaces.h" />\r
     <ClInclude Include="..\mono\utils\mono-path.h" />\r
     <ClInclude Include="..\mono\utils\mono-poll.h" />\r
     <ClInclude Include="..\mono\utils\strenc.h" />\r
     <ClInclude Include="..\mono\utils\strtod.h" />\r
     <ClInclude Include="..\mono\utils\valgrind.h" />\r
+    <ClInclude Include="..\mono\utils\atomic.h" />\r
+    <ClInclude Include="..\mono\utils\mono-hwcap.h" />\r
+    <ClInclude Include="..\mono\utils\mono-hwcap-x86.h" />\r
+    <ClInclude Include="..\mono\utils\bsearch.h" />\r
   </ItemGroup>\r
   <PropertyGroup Label="Globals">\r
     <ProjectGuid>{8FC2B0C8-51AD-49DF-851F-5D01A77A75E4}</ProjectGuid>\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>true</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>StaticLibrary</ConfigurationType>\r
     <UseDebugLibraries>false</UseDebugLibraries>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 0a4e772f4035b4e70d48f96c80809ec2dfbcef03..b0b447bc8c2c978e1667c27a17999ed47748bdf7 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 345a71e08b8bffb3b47846a5b9b7df61da98a927..7a264b225fb53512fe9c135939e897111567cf50 100644 (file)
@@ -331,6 +331,7 @@ mono_gc_walk_heap
 mono_gc_wbarrier_arrayref_copy
 mono_gc_wbarrier_generic_nostore
 mono_gc_wbarrier_generic_store
+mono_gc_wbarrier_generic_store_atomic
 mono_gc_wbarrier_object_copy
 mono_gc_wbarrier_set_arrayref
 mono_gc_wbarrier_set_field
index 4db2be0c8079abae4625d3e94dc159ef117bae4e..3ecf25bff1e7ea2cac166a736f947f6a5ce88391 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug_SGen|Win32">\r
       <Configuration>Debug_SGen</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_SGen|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
     </ClCompile>\r
     <ProjectReference />\r
     <Link>\r
-      <AdditionalDependencies>monosgen-2.0.lib;libgc.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>monosgen-2.0.lib;eglib.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>$(Platform)\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r
       <SubSystem>Console</SubSystem>\r
index b7ec16d205aac06e302b780fa18b29c5678469eb..b4b2c4e5d80ff5c1a97820c2774a9a6a27eabadc 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 02c88b38e7dccf8e6b67d00638633c243efdae7d..b9cae332c8e15b2f6857590b2f797d5dc4381b44 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 91caf879cd8608265162935889d5f005e153b3b7..f77df6ffae81890739e5eadd50d0029204d392c4 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index b6420a80652da74755c1b7fa19f32a368eb232e2..aafc552c829544f2195ebb41e7bc6e90c79e7cb6 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 6cb88477680f26283fce68974379902528fb19d7..d176f9520a79a1d42c7f92c15841470d589a4457 100644 (file)
@@ -331,6 +331,7 @@ mono_gc_walk_heap
 mono_gc_wbarrier_arrayref_copy
 mono_gc_wbarrier_generic_nostore
 mono_gc_wbarrier_generic_store
+mono_gc_wbarrier_generic_store_atomic
 mono_gc_wbarrier_object_copy
 mono_gc_wbarrier_set_arrayref
 mono_gc_wbarrier_set_field
index 2c6e2910d21e3c9e6b61ee1c1a698d57d85e5e2a..5e57c01b5dd91ad006d1752bfd865ecd40daa186 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 1ce7d6bfd657e6cfc931b3158b9c77d71490824c..d9d013ce515de9a5e2d235fdef6b1284ceb186ec 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index f4f68e476abcf8054eb79a0e44e610bd4b65898c..da7aaa3e67d3ac38c1f6ad4a5b463f4c52b5fd44 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 16e248f8de5ca68c15f382b203f2beb7d25dbffc..22a2c1bdaedeb5e7f38cc3b393b0efb9a78c14be 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index c67d32777796b03cdba40a978ba04c43dcbc2557..582cca988bcb30ff7a6a17a487f1afb3e8db89f4 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>DynamicLibrary</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 9c851c17164ef80eb23e872330d14b32ef49af7c..4f59de42901f35aab2c2f97fef345c84ea5f96fb 100644 (file)
 
 Microsoft Visual Studio Solution File, Format Version 12.00\r
 # Visual Studio 2012
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mcs-net_4_5", "..\..\mcs\mcs\mcs-net_4_5.csproj", "{AD97431A-3538-4597-9C5C-97137A9ECCA1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mcs-net_4_5", "..\..\mcs\mcs\mcs-net_4_5.csproj", "{C43E1948-715C-4711-9442-13652674CE49}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_4_0", "..\..\mcs\class/corlib\corlib-net_4_0.csproj", "{7B7210E5-3B98-492F-B57E-BD53A99C39B0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_4_0", "..\..\mcs\class/corlib\corlib-net_4_0.csproj", "{3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_4_5", "..\..\mcs\class/corlib\corlib-net_4_5.csproj", "{05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_4_5", "..\..\mcs\class/corlib\corlib-net_4_5.csproj", "{07C1F58B-9E99-47F8-A847-79EDA5157DA8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-tests-net_4_5", "..\..\mcs\class/corlib\corlib-tests-net_4_5.csproj", "{50D0CA30-64AF-4136-B43D-C43EDDE136C7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-tests-net_4_5", "..\..\mcs\class/corlib\corlib-tests-net_4_5.csproj", "{93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_0", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_4_0.csproj", "{97C3D4C4-2B27-40C2-94ED-9C0119AB785C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_0", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_4_0.csproj", "{7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0", "..\..\mcs\class/System\System-net_4_0.csproj", "{A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0", "..\..\mcs\class/System\System-net_4_0.csproj", "{267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_2_0-1", "..\..\mcs\class/System.XML\System.Xml-net_2_0-1.csproj", "{205A8E90-88CC-4B46-8151-87FA90B666A5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_2_0-1", "..\..\mcs\class/System.XML\System.Xml-net_2_0-1.csproj", "{D9776E38-7673-45F6-BF19-7B77830DF9CA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_2_0", "..\..\mcs\class/corlib\corlib-net_2_0.csproj", "{928D664D-8277-47B3-AB06-538D932143FE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-net_2_0", "..\..\mcs\class/corlib\corlib-net_2_0.csproj", "{EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0-2", "..\..\mcs\class/System\System-net_2_0-2.csproj", "{73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0-2", "..\..\mcs\class/System\System-net_2_0-2.csproj", "{79F25FD7-0D76-4526-AF39-1A648649A827}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_2_0", "..\..\mcs\class/System.XML\System.Xml-net_2_0.csproj", "{67A04408-CBEF-4B63-B975-29D827B0DBED}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_2_0", "..\..\mcs\class/System.XML\System.Xml-net_2_0.csproj", "{2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0", "..\..\mcs\class/System\System-net_2_0.csproj", "{0F9C68C1-0695-4DC0-8064-B0749F54DF34}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0", "..\..\mcs\class/System\System-net_2_0.csproj", "{245C754C-D6DE-4434-BA78-37A93E196236}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-build", "..\..\mcs\class/System.XML\System.Xml-build.csproj", "{A2433930-2BB3-4818-97D2-45A907CB7B3B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-build", "..\..\mcs\class/System.XML\System.Xml-build.csproj", "{D513888C-71DC-4A65-B753-668FF8FB2CAA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-build", "..\..\mcs\class/corlib\corlib-build.csproj", "{B8B2866D-592F-4888-A1CB-697AD0F3CADE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-build", "..\..\mcs\class/corlib\corlib-build.csproj", "{2BD930A2-88A9-4AD0-ADE7-1531552DF896}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-build", "..\..\mcs\class/System\System-build.csproj", "{4C8FFAF4-4FE9-4377-821B-AFD255791495}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-build", "..\..\mcs\class/System\System-build.csproj", "{DC4EE47D-CEB6-4592-994A-92C6B1D746FA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-basic", "..\..\mcs\class/System.XML\System.Xml-basic.csproj", "{E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-basic", "..\..\mcs\class/System.XML\System.Xml-basic.csproj", "{347CC78E-794E-4BEF-BDAB-A0437E367442}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-basic", "..\..\mcs\class/corlib\corlib-basic.csproj", "{B7BE46BA-4D0D-4CDB-A31D-772BDCFCFC8A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "corlib-basic", "..\..\mcs\class/corlib\corlib-basic.csproj", "{D9D617A3-31C7-4B72-A905-9E4274FC853B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-basic", "..\..\mcs\class/System\System-basic.csproj", "{EF086B78-3330-427F-86A2-B87B1AB095A0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-basic", "..\..\mcs\class/System\System-basic.csproj", "{269CBEEC-489D-4169-A4D8-CEAE9DB7E404}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-build", "..\..\mcs\class/Mono.Security\Mono.Security-build.csproj", "{4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-build-1", "..\..\mcs\class/System\System-build-1.csproj", "{83D197B9-A796-4A0D-B8F9-930DD9415615}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-build-1", "..\..\mcs\class/System\System-build-1.csproj", "{C3638457-A40E-4E70-81B4-54ACB31DD76D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-build", "..\..\mcs\class/Mono.Security\Mono.Security-build.csproj", "{FC2EF2C1-8774-4DFE-AE47-9574374D3591}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_2_0", "..\..\mcs\class/Mono.Security\Mono.Security-net_2_0.csproj", "{83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_2_0", "..\..\mcs\class/System.Configuration\System.Configuration-net_2_0.csproj", "{8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_2_0", "..\..\mcs\class/System.Configuration\System.Configuration-net_2_0.csproj", "{725170B0-51F0-46E2-A74D-F764B68553D6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0-1", "..\..\mcs\class/System\System-net_2_0-1.csproj", "{FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_2_0-1", "..\..\mcs\class/System\System-net_2_0-1.csproj", "{980C299E-664F-4905-B01C-19599BBE78FF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_2_0", "..\..\mcs\class/Mono.Security\Mono.Security-net_2_0.csproj", "{6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_2_0", "..\..\mcs\class/System.Security\System.Security-net_2_0.csproj", "{C596FD9E-2AC3-48E2-9661-F6F40C84F044}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_2_0", "..\..\mcs\class/System.Security\System.Security-net_2_0.csproj", "{1A468E0B-8690-4595-BBD7-D9A5002DFF26}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_0", "..\..\mcs\class/System.Core\System.Core-net_4_0.csproj", "{2590BECB-2660-49C6-93B1-B9E7D0796214}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_0", "..\..\mcs\class/System.Core\System.Core-net_4_0.csproj", "{D121EB80-19C6-4313-9BBE-6F66556CE8B7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5", "..\..\mcs\class/System\System-net_4_5.csproj", "{443B892C-060C-4829-839D-FE539CDEC5D9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5", "..\..\mcs\class/System\System-net_4_5.csproj", "{C86FCD4E-6A52-4595-8F9E-5270607D5EA9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_0-1", "..\..\mcs\class/System.XML\System.Xml-net_4_0-1.csproj", "{F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_0-1", "..\..\mcs\class/System.XML\System.Xml-net_4_0-1.csproj", "{51720A26-B4D9-4B84-8CB5-9CBA57477FBB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0-2", "..\..\mcs\class/System\System-net_4_0-2.csproj", "{1A075F2A-40CF-48B5-B817-8B03444DB7C6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0-2", "..\..\mcs\class/System\System-net_4_0-2.csproj", "{8260E24F-1471-4320-AB5B-7CC7B68521E3}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_0", "..\..\mcs\class/System.XML\System.Xml-net_4_0.csproj", "{18CD7C68-EF7C-4C7A-B8D6-FE9834145437}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_0", "..\..\mcs\class/System.XML\System.Xml-net_4_0.csproj", "{8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_4_0", "..\..\mcs\class/Mono.Security\Mono.Security-net_4_0.csproj", "{A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_4_0", "..\..\mcs\class/System.Configuration\System.Configuration-net_4_0.csproj", "{CA49630B-FD24-411F-9651-B15CA72CE5B8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_4_0", "..\..\mcs\class/System.Configuration\System.Configuration-net_4_0.csproj", "{610C7C77-5851-4B95-A3FE-B04E1B011E6A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0-1", "..\..\mcs\class/System\System-net_4_0-1.csproj", "{FCBCCC55-006E-41B2-A649-CF9A843E34BD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_0-1", "..\..\mcs\class/System\System-net_4_0-1.csproj", "{C57BB644-EEFC-475A-AF6F-43EF29C75933}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_4_0", "..\..\mcs\class/Mono.Security\Mono.Security-net_4_0.csproj", "{5E680987-7C43-48A0-9BF1-86124ACA78BD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_4_0", "..\..\mcs\class/System.Security\System.Security-net_4_0.csproj", "{BC281223-A7A5-415D-B4AA-59417DBFFBBB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_4_0", "..\..\mcs\class/System.Security\System.Security-net_4_0.csproj", "{DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-tests-net_4_5", "..\..\mcs\class/System\System-tests-net_4_5.csproj", "{977F7A36-972C-4139-81B6-1EF6A8F44857}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-tests-net_4_5", "..\..\mcs\class/System\System-tests-net_4_5.csproj", "{AF08418D-2ADF-47E1-9D2F-8A9A2FEBF4B1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_4_0", "..\..\mcs\class/System.Drawing\System.Drawing-net_4_0.csproj", "{0005126E-C0D0-4DA3-A2E2-E49592D3E164}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_4_0", "..\..\mcs\class/System.Drawing\System.Drawing-net_4_0.csproj", "{DE98E72C-2727-4737-AAFC-CC1228F4812C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_4_0", "..\..\mcs\class/System.Data\System.Data-net_4_0.csproj", "{6865A6A5-DF93-45C7-BE83-F06907EC81F8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_4_0", "..\..\mcs\class/System.Data\System.Data-net_4_0.csproj", "{BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_4_0", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj", "{801DF65A-F6B4-4D66-B415-9E8832E66F48}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_4_0", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_4_0.csproj", "{31465E05-7B4F-4209-8B9B-5F596A032D27}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_4_0", "..\..\mcs\class/System.Transactions\System.Transactions-net_4_0.csproj", "{46371E88-F274-4BE7-8587-444F4E6F7247}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_4_0", "..\..\mcs\class/System.Transactions\System.Transactions-net_4_0.csproj", "{91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_4_0", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_4_0.csproj", "{2038AFC9-B4E4-4A05-B57B-11B698CA67DF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_4_0", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_4_0.csproj", "{4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_5", "..\..\mcs\class/System.XML\System.Xml-net_4_5.csproj", "{9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_5", "..\..\mcs\class/System.XML\System.Xml-net_4_5.csproj", "{F96F7491-66DB-4291-8803-F2F165B33B55}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-tests-net_4_5", "..\..\mcs\class/System.XML\System.Xml-tests-net_4_5.csproj", "{C3A02669-DEEA-469D-930F-926DED9B53C6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-tests-net_4_5", "..\..\mcs\class/System.XML\System.Xml-tests-net_4_5.csproj", "{A2A5BBDB-A278-484E-811D-8FC5BA18444B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CompilerServices.SymbolWriter-net_4_5", "..\..\mcs\class/Mono.CompilerServices.SymbolWriter\Mono.CompilerServices.SymbolWriter-net_4_5.csproj", "{5C0B6042-9C59-4D58-A7C1-A912A0689066}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CompilerServices.SymbolWriter-net_4_5", "..\..\mcs\class/Mono.CompilerServices.SymbolWriter\Mono.CompilerServices.SymbolWriter-net_4_5.csproj", "{CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_5", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_4_5.csproj", "{6AB4F63B-4869-4380-89F4-B3547BDC8BD0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_4_5", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_4_5.csproj", "{9FB65E2F-34A9-42FF-AE94-2F101B951E4E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-tests-net_4_5", "..\..\mcs\class/Mono.Posix\Mono.Posix-tests-net_4_5.csproj", "{8A11FD7A-D62F-4130-9870-49486379AB1C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-tests-net_4_5", "..\..\mcs\class/Mono.Posix\Mono.Posix-tests-net_4_5.csproj", "{B915D688-A61F-4B8E-9110-16B76DB4446D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_5", "..\..\mcs\class/System.Core\System.Core-net_4_5.csproj", "{E77D8877-AEAD-4FDF-8A44-36AAA0B20653}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_4_5", "..\..\mcs\class/System.Core\System.Core-net_4_5.csproj", "{D8260595-C32F-4AC3-9C01-2CD2528CFA1D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-tests-net_4_5", "..\..\mcs\class/System.Core\System.Core-tests-net_4_5.csproj", "{E52212C3-8609-434F-A1B3-5A63C057C119}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-tests-net_4_5", "..\..\mcs\class/System.Core\System.Core-tests-net_4_5.csproj", "{9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_4_5", "..\..\mcs\class/Mono.Security\Mono.Security-net_4_5.csproj", "{0594F40C-A4D6-4FDD-8876-AF3824DEFDED}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-net_4_5", "..\..\mcs\class/Mono.Security\Mono.Security-net_4_5.csproj", "{99D172A2-7914-496C-9005-AA69F51195AF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-tests-net_4_5", "..\..\mcs\class/Mono.Security\Mono.Security-tests-net_4_5.csproj", "{D5968AB0-8856-49DC-9547-63530241BC22}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security-tests-net_4_5", "..\..\mcs\class/Mono.Security\Mono.Security-tests-net_4_5.csproj", "{2D07BA52-8035-4434-B4FD-9B87789B8286}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5-1", "..\..\mcs\class/System\System-net_4_5-1.csproj", "{B53B8417-E392-4660-86F0-54E7B7FAD4BA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5-1", "..\..\mcs\class/System\System-net_4_5-1.csproj", "{B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_4_5", "..\..\mcs\class/System.Security\System.Security-net_4_5.csproj", "{70AD32F9-8D9F-4EFB-A6DB-254203565D0A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-net_4_5", "..\..\mcs\class/System.Security\System.Security-net_4_5.csproj", "{C7510E1F-66A4-4076-B87B-889E219AAB3F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-tests-net_4_5", "..\..\mcs\class/System.Security\System.Security-tests-net_4_5.csproj", "{5AF47E2F-C295-4410-BB78-F08FE99C0E76}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security-tests-net_4_5", "..\..\mcs\class/System.Security\System.Security-tests-net_4_5.csproj", "{65F07468-96FC-4A71-8565-2CD7A50728CC}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_4_5", "..\..\mcs\class/System.Configuration\System.Configuration-net_4_5.csproj", "{847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-net_4_5", "..\..\mcs\class/System.Configuration\System.Configuration-net_4_5.csproj", "{CA2CD67B-1308-460D-BDBA-498F63DEAA31}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-tests-net_4_5", "..\..\mcs\class/System.Configuration\System.Configuration-tests-net_4_5.csproj", "{5592C0B6-11CF-43FB-A673-8386BBFEA147}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration-tests-net_4_5", "..\..\mcs\class/System.Configuration\System.Configuration-tests-net_4_5.csproj", "{A1C102BA-BFA1-4242-A44D-E041A6E37161}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5-2", "..\..\mcs\class/System\System-net_4_5-2.csproj", "{34966210-D64D-419C-94A4-9A6093CE5882}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System-net_4_5-2", "..\..\mcs\class/System\System-net_4_5-2.csproj", "{38FCD731-0E11-46F7-A31B-DCBE853AD8D7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_5-1", "..\..\mcs\class/System.XML\System.Xml-net_4_5-1.csproj", "{6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml-net_4_5-1", "..\..\mcs\class/System.XML\System.Xml-net_4_5-1.csproj", "{4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N-net_4_5", "..\..\mcs\class/I18N/Common\I18N-net_4_5.csproj", "{7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N-net_4_5", "..\..\mcs\class/I18N/Common\I18N-net_4_5.csproj", "{8A8D5677-ACBD-40B4-916D-B9B5451F713D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.West-net_4_5", "..\..\mcs\class/I18N/West\I18N.West-net_4_5.csproj", "{03E8A999-E329-44BB-8ED7-D60412068646}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.West-net_4_5", "..\..\mcs\class/I18N/West\I18N.West-net_4_5.csproj", "{5532F6F2-B136-4D85-9500-5D1C9E1D9335}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.West-tests-net_4_5", "..\..\mcs\class/I18N/West\I18N.West-tests-net_4_5.csproj", "{8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.West-tests-net_4_5", "..\..\mcs\class/I18N/West\I18N.West-tests-net_4_5.csproj", "{6977FA25-AB73-4DE7-B535-19C04DB9C29A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.MidEast-net_4_5", "..\..\mcs\class/I18N/MidEast\I18N.MidEast-net_4_5.csproj", "{2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.MidEast-net_4_5", "..\..\mcs\class/I18N/MidEast\I18N.MidEast-net_4_5.csproj", "{475537C3-F2C7-42FD-8AF9-871BC6266BAA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.MidEast-tests-net_4_5", "..\..\mcs\class/I18N/MidEast\I18N.MidEast-tests-net_4_5.csproj", "{ECF02624-8EE8-4466-8925-3EE595034B4D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.MidEast-tests-net_4_5", "..\..\mcs\class/I18N/MidEast\I18N.MidEast-tests-net_4_5.csproj", "{CF521447-730D-46F7-911F-0A1CFFB9B5CB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.Other-net_4_5", "..\..\mcs\class/I18N/Other\I18N.Other-net_4_5.csproj", "{9BBEC512-8833-4124-B826-777E45579059}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.Other-net_4_5", "..\..\mcs\class/I18N/Other\I18N.Other-net_4_5.csproj", "{7C1E1624-DAC7-4819-880B-852644622BF2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.Rare-net_4_5", "..\..\mcs\class/I18N/Rare\I18N.Rare-net_4_5.csproj", "{3C6256A3-3B1F-4CF8-9D91-016C855930DC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.Rare-net_4_5", "..\..\mcs\class/I18N/Rare\I18N.Rare-net_4_5.csproj", "{84879866-2AFD-4318-8C53-8951471B7369}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.CJK-net_4_5", "..\..\mcs\class/I18N/CJK\I18N.CJK-net_4_5.csproj", "{EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.CJK-net_4_5", "..\..\mcs\class/I18N/CJK\I18N.CJK-net_4_5.csproj", "{0CE11B15-9B31-4AD1-857C-55B69C027130}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.CJK-tests-net_4_5", "..\..\mcs\class/I18N/CJK\I18N.CJK-tests-net_4_5.csproj", "{D70CC755-05BF-4148-8A19-3F28EA6CA21D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "I18N.CJK-tests-net_4_5", "..\..\mcs\class/I18N/CJK\I18N.CJK-tests-net_4_5.csproj", "{9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_4_5", "..\..\mcs\class/System.Drawing\System.Drawing-net_4_5.csproj", "{4F2AADB3-6D4D-41C3-AC38-6AC970F97703}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_4_5", "..\..\mcs\class/System.Drawing\System.Drawing-net_4_5.csproj", "{945A4FD5-2184-44CC-9519-13AFC37ED81A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-tests-net_4_5", "..\..\mcs\class/System.Drawing\System.Drawing-tests-net_4_5.csproj", "{3F01DF0A-D726-4D86-8E47-DADB8EA4D994}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-tests-net_4_5", "..\..\mcs\class/System.Drawing\System.Drawing-tests-net_4_5.csproj", "{1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_4_0", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj", "{E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_4_0", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_0.csproj", "{562FC450-E53A-4CF5-AE5A-91973EBE5A28}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_4_5", "..\..\mcs\class/System.Transactions\System.Transactions-net_4_5.csproj", "{BED431C4-56B5-4990-A8E6-DCD02A331BC9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_4_5", "..\..\mcs\class/System.Transactions\System.Transactions-net_4_5.csproj", "{9C3F8EFB-4A3A-4BD1-9072-881F1F558781}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-tests-net_4_5", "..\..\mcs\class/System.Transactions\System.Transactions-tests-net_4_5.csproj", "{801B7F88-6DE4-48B9-A830-450BF14DBBA1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-tests-net_4_5", "..\..\mcs\class/System.Transactions\System.Transactions-tests-net_4_5.csproj", "{D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_4_5", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj", "{2B2808F7-930A-4416-A060-57D9F8DC879C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_4_5", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_4_5.csproj", "{20B32D23-8DD0-4291-A98F-C52A3E99DFE8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_4_5", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj", "{2BB65926-A803-484F-A2D2-05CED0254A28}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_4_5", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_4_5.csproj", "{9B26C34E-8E81-4857-A1CB-B50F407EE7E1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-tests-net_4_5", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-tests-net_4_5.csproj", "{48172E97-369D-408A-A5CB-DC3B34706C0B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-tests-net_4_5", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-tests-net_4_5.csproj", "{21E94E1F-226D-4BD3-9368-594C0553CE91}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net-net_4_0", "..\..\mcs\class/System.Net\System.Net-net_4_0.csproj", "{26480A1B-A6B9-4865-8492-C18019094CE4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net-net_4_0", "..\..\mcs\class/System.Net\System.Net-net_4_0.csproj", "{0653CFE2-4A19-4B91-A51F-793F8D516790}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_4_5", "..\..\mcs\class/System.Data\System.Data-net_4_5.csproj", "{5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_4_5", "..\..\mcs\class/System.Data\System.Data-net_4_5.csproj", "{663D8C81-B74E-4D44-8C59-2264C6942B30}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-tests-net_4_5", "..\..\mcs\class/System.Data\System.Data-tests-net_4_5.csproj", "{E763AC5D-E03A-4D54-8B0A-5F904B56FA69}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-tests-net_4_5", "..\..\mcs\class/System.Data\System.Data-tests-net_4_5.csproj", "{4C5A0721-050A-4457-8D1C-8FB58DA895DE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_4_0", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj", "{BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_4_0", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_0.csproj", "{F26434C1-BA3D-41FB-B560-C009CB72B1B6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accessibility-net_4_5", "..\..\mcs\class/Accessibility\Accessibility-net_4_5.csproj", "{7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accessibility-net_4_5", "..\..\mcs\class/Accessibility\Accessibility-net_4_5.csproj", "{121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.WebBrowser-net_4_5", "..\..\mcs\class/Mono.WebBrowser\Mono.WebBrowser-net_4_5.csproj", "{4F8F4004-E655-463C-8A0F-4F7C99AB85B5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.WebBrowser-net_4_5", "..\..\mcs\class/Mono.WebBrowser\Mono.WebBrowser-net_4_5.csproj", "{7D94F9AC-9F7A-4639-9E89-85083D77101D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_4_5", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj", "{E9E47642-19D3-48A0-81C4-D51810976A70}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_4_5", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_4_5.csproj", "{95593889-8509-4FFC-8EDE-C673FDA39FC8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-tests-net_4_5", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-tests-net_4_5.csproj", "{86595D30-C24E-4A0F-9419-499980DE4B79}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-tests-net_4_5", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-tests-net_4_5.csproj", "{287E4CA2-E854-4E18-AFEE-B71E893A30EA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-net_4_5", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj", "{ABF6A466-1744-4C43-8B68-C89EA10FBB67}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-net_4_5", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-net_4_5.csproj", "{409FF748-B765-4AB3-BCB1-72199B9E341C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-tests-net_4_5", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-tests-net_4_5.csproj", "{FCA901B7-B01E-4578-8C93-9BACB907AD22}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-tests-net_4_5", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-tests-net_4_5.csproj", "{16740D76-23DD-4BEC-87C6-948A8D766030}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_4_5", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj", "{14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_4_5", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_4_5.csproj", "{0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-tests-net_4_5", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-tests-net_4_5.csproj", "{F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-tests-net_4_5", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-tests-net_4_5.csproj", "{C044B1E6-B892-49DC-BD71-4C796BD8964A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.ApplicationServices-net_4_5", "..\..\mcs\class/System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj", "{AD80D595-2812-412E-9F06-2A91C7283A48}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.ApplicationServices-net_4_5", "..\..\mcs\class/System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_5.csproj", "{394BAC94-3126-4DAE-8C55-5547372BAB46}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5", "..\..\mcs\class/System.Web\System.Web-net_4_5.csproj", "{3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5", "..\..\mcs\class/System.Web\System.Web-net_4_5.csproj", "{0B03F192-EC11-49E5-A7F6-E97C0D559E51}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_4_0", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_4_0.csproj", "{C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_4_0", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_4_0.csproj", "{32FF1A9B-A989-43C0-BFBB-3808C7B2509F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0", "..\..\mcs\class/System.Web\System.Web-net_4_0.csproj", "{39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0", "..\..\mcs\class/System.Web\System.Web-net_4_0.csproj", "{BAC369E3-E94E-4E5A-97FF-0CF696D07814}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.ApplicationServices-net_4_0", "..\..\mcs\class/System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj", "{5D580843-B172-4BF3-AABD-116A64020C1C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.ApplicationServices-net_4_0", "..\..\mcs\class/System.Web.ApplicationServices\System.Web.ApplicationServices-net_4_0.csproj", "{8EF189A4-B862-4825-9938-00658C43B534}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_2_0", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_2_0.csproj", "{517B1616-9AF6-4C66-9BB9-73369E8A4222}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_2_0", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_2_0.csproj", "{71444193-6B64-4C1B-A87D-580CCB548952}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_2_0", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj", "{6A0BDCF6-4FFB-471F-B824-5AA24A47E076}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.EnterpriseServices-net_2_0", "..\..\mcs\class/System.EnterpriseServices\System.EnterpriseServices-net_2_0.csproj", "{92E7A483-839B-4EFA-A77D-16C68F051941}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_2_0", "..\..\mcs\class/System.Transactions\System.Transactions-net_2_0.csproj", "{A9F46CB3-7262-47D8-A9EB-9B789278F9EF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Transactions-net_2_0", "..\..\mcs\class/System.Transactions\System.Transactions-net_2_0.csproj", "{DD1B3195-5FEA-46A2-99B5-9839CA60485C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_2_0", "..\..\mcs\class/System.Web\System.Web-net_2_0.csproj", "{F30781EC-D410-4A00-BD91-0971E37DE140}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_2_0", "..\..\mcs\class/System.Web\System.Web-net_2_0.csproj", "{4796A339-E32F-476E-9D7D-69C771CD618C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_2_0", "..\..\mcs\class/System.Drawing\System.Drawing-net_2_0.csproj", "{0877A48B-2DF5-40A2-8714-ABBF2BD48987}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing-net_2_0", "..\..\mcs\class/System.Drawing\System.Drawing-net_2_0.csproj", "{CA7E5301-90D2-4C07-87B7-851AA216D4C9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_2_0", "..\..\mcs\class/System.Data\System.Data-net_2_0.csproj", "{B8CA1780-FF35-49B9-B385-C24BD0558109}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data-net_2_0", "..\..\mcs\class/System.Data\System.Data-net_2_0.csproj", "{49220562-83E1-49A2-971F-5D31C4AB0258}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_2_0", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_2_0.csproj", "{FDB86B5C-19F4-49DB-807F-CB0466C121A1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Tds-net_2_0", "..\..\mcs\class/Mono.Data.Tds\Mono.Data.Tds-net_2_0.csproj", "{99315C7A-EEDA-4247-96F4-14924760DB8B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_2_0", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj", "{6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Formatters.Soap-net_2_0", "..\..\mcs\class/System.Runtime.Serialization.Formatters.Soap\System.Runtime.Serialization.Formatters.Soap-net_2_0.csproj", "{85526C39-79CA-40DB-940A-3C83DF30DF85}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_2_0", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0.csproj", "{60E307F3-5E95-42FF-9B41-3FB8AD664AB6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Data.Sqlite-net_2_0", "..\..\mcs\class/Mono.Data.Sqlite\Mono.Data.Sqlite-net_2_0.csproj", "{991C45A8-3B22-45BB-B688-DBF8BA835992}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_2_0", "..\..\mcs\class/System.Core\System.Core-net_2_0.csproj", "{F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Core-net_2_0", "..\..\mcs\class/System.Core\System.Core-net_2_0.csproj", "{B91370A1-A33A-4F7A-BDF2-1E194AFA0869}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_2_0", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_2_0.csproj", "{BFC160FF-5B62-41D2-B039-52C469077AE0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Posix-net_2_0", "..\..\mcs\class/Mono.Posix\Mono.Posix-net_2_0.csproj", "{F83F663F-89F7-481C-941E-E4FE67867254}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_2_0", "..\..\mcs\class/Mono.Web\Mono.Web-net_2_0.csproj", "{4E0AB773-6BB3-4866-881F-B362A573C8DD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_2_0", "..\..\mcs\class/Mono.Web\Mono.Web-net_2_0.csproj", "{D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_4_0", "..\..\mcs\class/Mono.Web\Mono.Web-net_4_0.csproj", "{2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_4_0", "..\..\mcs\class/Mono.Web\Mono.Web-net_4_0.csproj", "{AA8CFAB1-B81C-434E-AA60-C2373B27EB56}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-tests-net_4_5", "..\..\mcs\class/System.Web\System.Web-tests-net_4_5.csproj", "{E63734B6-D4FC-4016-A3E3-4C98E408E559}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-tests-net_4_5", "..\..\mcs\class/System.Web\System.Web-tests-net_4_5.csproj", "{CEE0A26D-0700-446F-B515-5AFF610ACF5E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemWebTestShim-net_4_0", "..\..\mcs\class/SystemWebTestShim\SystemWebTestShim-net_4_0.csproj", "{2CA35670-6F91-4423-A36A-12560A182E0D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemWebTestShim-net_4_0", "..\..\mcs\class/SystemWebTestShim\SystemWebTestShim-net_4_0.csproj", "{08486D58-12AA-4B53-82F7-1B2C62EAE9D5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0-1", "..\..\mcs\class/System.Web\System.Web-net_4_0-1.csproj", "{D9409D43-8919-4A4C-A7B5-77383840CD35}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0-1", "..\..\mcs\class/System.Web\System.Web-net_4_0-1.csproj", "{77D30907-035D-4382-AA43-5A8EE294EA33}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_4_5", "..\..\mcs\class/Mono.Web\Mono.Web-net_4_5.csproj", "{ABD934FF-6F3A-40CB-85DB-98316F708226}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Web-net_4_5", "..\..\mcs\class/Mono.Web\Mono.Web-net_4_5.csproj", "{82BD591A-1377-41BD-9B2C-1037574BB935}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_4_5", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_4_5.csproj", "{5A9673B6-FC36-4B40-92F6-A9586B75EC57}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-net_4_5", "..\..\mcs\class/System.Web.Services\System.Web.Services-net_4_5.csproj", "{1CD96FCF-0288-4FA4-9451-47B0C2206186}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-tests-net_4_5", "..\..\mcs\class/System.Web.Services\System.Web.Services-tests-net_4_5.csproj", "{10182EEF-2616-46BB-894E-6820BFA07D45}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Services-tests-net_4_5", "..\..\mcs\class/System.Web.Services\System.Web.Services-tests-net_4_5.csproj", "{7DA0BC53-8555-4547-BAE6-BD72EF93B109}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5-1", "..\..\mcs\class/System.Web\System.Web-net_4_5-1.csproj", "{A945645C-6DF3-414E-B5F1-25DC35C95136}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5-1", "..\..\mcs\class/System.Web\System.Web-net_4_5-1.csproj", "{6CC04C44-1378-4502-B134-FE6D46B1A4B4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Remoting-net_4_5", "..\..\mcs\class/System.Runtime.Remoting\System.Runtime.Remoting-net_4_5.csproj", "{4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Remoting-net_4_5", "..\..\mcs\class/System.Runtime.Remoting\System.Runtime.Remoting-net_4_5.csproj", "{7E62A1A2-DEED-44AD-9FF2-178065ED8A44}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Remoting-tests-net_4_5", "..\..\mcs\class/System.Runtime.Remoting\System.Runtime.Remoting-tests-net_4_5.csproj", "{7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Remoting-tests-net_4_5", "..\..\mcs\class/System.Runtime.Remoting\System.Runtime.Remoting-tests-net_4_5.csproj", "{E19661F8-3BCE-48C0-A408-8F712F87A396}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration.Install-net_4_5", "..\..\mcs\class/System.Configuration.Install\System.Configuration.Install-net_4_5.csproj", "{348A36EC-8291-460B-9CC2-8CA8AD1759A2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration.Install-net_4_5", "..\..\mcs\class/System.Configuration.Install\System.Configuration.Install-net_4_5.csproj", "{D413E89D-CE81-4766-BBC1-AC17A3FD5C95}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Management-net_4_5", "..\..\mcs\class/System.Management\System.Management-net_4_5.csproj", "{A99FD368-6E3E-448C-83C5-A7D64762924E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Management-net_4_5", "..\..\mcs\class/System.Management\System.Management-net_4_5.csproj", "{07BD11C9-C562-4EC3-8B7E-26EA909393C0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.OracleClient-net_4_5", "..\..\mcs\class/System.Data.OracleClient\System.Data.OracleClient-net_4_5.csproj", "{7443D41A-D078-49E1-9A88-87902B6EDFFC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.OracleClient-net_4_5", "..\..\mcs\class/System.Data.OracleClient\System.Data.OracleClient-net_4_5.csproj", "{7EB08776-A0D3-415F-960A-58869EDFDA02}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.OracleClient-tests-net_4_5", "..\..\mcs\class/System.Data.OracleClient\System.Data.OracleClient-tests-net_4_5.csproj", "{93ABF627-F02A-4409-9BAE-0E564A43FC9A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.OracleClient-tests-net_4_5", "..\..\mcs\class/System.Data.OracleClient\System.Data.OracleClient-tests-net_4_5.csproj", "{228F1876-102C-4817-875C-1D80F17BADF9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.VisualC-net_4_5", "..\..\mcs\class/Microsoft.VisualC\Microsoft.VisualC-net_4_5.csproj", "{ED516751-8649-48D5-B1F3-2C450B2E45D1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.VisualC-net_4_5", "..\..\mcs\class/Microsoft.VisualC\Microsoft.VisualC-net_4_5.csproj", "{923568BE-5A8D-44A1-AA33-348679E6AAD7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cscompmgd-net_4_5", "..\..\mcs\class/Cscompmgd\Cscompmgd-net_4_5.csproj", "{AD666708-4CC0-4822-B670-26D59A2D32AF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cscompmgd-net_4_5", "..\..\mcs\class/Cscompmgd\Cscompmgd-net_4_5.csproj", "{C67F17EE-7E1C-4B87-B58B-11458749DD70}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cscompmgd-tests-net_4_5", "..\..\mcs\class/Cscompmgd\Cscompmgd-tests-net_4_5.csproj", "{C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Cscompmgd-tests-net_4_5", "..\..\mcs\class/Cscompmgd\Cscompmgd-tests-net_4_5.csproj", "{C7D8B744-96E6-42A0-82C0-C191C686D485}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-net_4_5", "..\..\mcs\class/System.Design\System.Design-net_4_5.csproj", "{C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-net_4_5", "..\..\mcs\class/System.Design\System.Design-net_4_5.csproj", "{2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing.Design-net_4_0", "..\..\mcs\class/System.Drawing.Design\System.Drawing.Design-net_4_0.csproj", "{6BFAB010-392A-4F3D-861D-19B5BEC476D5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing.Design-net_4_0", "..\..\mcs\class/System.Drawing.Design\System.Drawing.Design-net_4_0.csproj", "{8C367062-EFEF-4765-B1B1-5553608F6A60}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-net_4_0", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj", "{9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms-net_4_0", "..\..\mcs\class/Managed.Windows.Forms\System.Windows.Forms-net_4_0.csproj", "{41B3B369-328C-45B8-9F14-224641427A35}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accessibility-net_4_0", "..\..\mcs\class/Accessibility\Accessibility-net_4_0.csproj", "{B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Accessibility-net_4_0", "..\..\mcs\class/Accessibility\Accessibility-net_4_0.csproj", "{3C0E9135-1458-47F6-9076-17FFB1E3E32F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.WebBrowser-net_4_0", "..\..\mcs\class/Mono.WebBrowser\Mono.WebBrowser-net_4_0.csproj", "{48C35A26-B26A-4084-9A9A-7729D345B3B5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.WebBrowser-net_4_0", "..\..\mcs\class/Mono.WebBrowser\Mono.WebBrowser-net_4_0.csproj", "{A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-tests-net_4_5", "..\..\mcs\class/System.Design\System.Design-tests-net_4_5.csproj", "{BE037A30-EA31-40F1-BC2A-9FEAADDD435E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-tests-net_4_5", "..\..\mcs\class/System.Design\System.Design-tests-net_4_5.csproj", "{CF9157B2-D8CB-4C1E-9F92-7028CBD13DE0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PEAPI-net_4_5", "..\..\mcs\class/PEAPI\PEAPI-net_4_5.csproj", "{67C79BA1-2CF2-40B7-B362-1DCAF156AA25}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PEAPI-net_4_5", "..\..\mcs\class/PEAPI\PEAPI-net_4_5.csproj", "{465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Npgsql-net_4_5", "..\..\mcs\class/Npgsql\Npgsql-net_4_5.csproj", "{3404EE44-7E95-4619-93B8-C7B82ADEB8F5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Npgsql-net_4_5", "..\..\mcs\class/Npgsql\Npgsql-net_4_5.csproj", "{0E57DA52-274B-4E8D-A60D-3B87910B70E0}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Npgsql-tests-net_4_5", "..\..\mcs\class/Npgsql\Npgsql-tests-net_4_5.csproj", "{76A8C207-5DFF-435F-9F47-9C6E201AF8F4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Npgsql-tests-net_4_5", "..\..\mcs\class/Npgsql\Npgsql-tests-net_4_5.csproj", "{993AE1D3-7F06-482F-A90A-A06FD59B3FF5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commons.Xml.Relaxng-net_4_5", "..\..\mcs\class/Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_5.csproj", "{4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commons.Xml.Relaxng-net_4_5", "..\..\mcs\class/Commons.Xml.Relaxng\Commons.Xml.Relaxng-net_4_5.csproj", "{0C6297C3-66BE-4FD1-B9B0-057950B32E94}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commons.Xml.Relaxng-tests-net_4_5", "..\..\mcs\class/Commons.Xml.Relaxng\Commons.Xml.Relaxng-tests-net_4_5.csproj", "{BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Commons.Xml.Relaxng-tests-net_4_5", "..\..\mcs\class/Commons.Xml.Relaxng\Commons.Xml.Relaxng-tests-net_4_5.csproj", "{7694FE57-6BB7-478E-BB4E-C5187167804F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novell.Directory.Ldap-net_4_5", "..\..\mcs\class/Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj", "{74565932-18F5-4BEC-AAB6-98230A4B662C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novell.Directory.Ldap-net_4_5", "..\..\mcs\class/Novell.Directory.Ldap\Novell.Directory.Ldap-net_4_5.csproj", "{BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novell.Directory.Ldap-tests-net_4_5", "..\..\mcs\class/Novell.Directory.Ldap\Novell.Directory.Ldap-tests-net_4_5.csproj", "{2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Novell.Directory.Ldap-tests-net_4_5", "..\..\mcs\class/Novell.Directory.Ldap\Novell.Directory.Ldap-tests-net_4_5.csproj", "{91FFC577-CF58-43EB-BD06-D0233F588A5B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security.Win32-net_4_5", "..\..\mcs\class/Mono.Security.Win32\Mono.Security.Win32-net_4_5.csproj", "{D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Security.Win32-net_4_5", "..\..\mcs\class/Mono.Security.Win32\Mono.Security.Win32-net_4_5.csproj", "{A91ADA57-5818-4949-B584-CB5303EB8842}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.DirectoryServices-net_4_5", "..\..\mcs\class/System.DirectoryServices\System.DirectoryServices-net_4_5.csproj", "{97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.DirectoryServices-net_4_5", "..\..\mcs\class/System.DirectoryServices\System.DirectoryServices-net_4_5.csproj", "{F3D6D651-192F-4209-B272-7F8354D0CDB6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.DirectoryServices-tests-net_4_5", "..\..\mcs\class/System.DirectoryServices\System.DirectoryServices-tests-net_4_5.csproj", "{B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.DirectoryServices-tests-net_4_5", "..\..\mcs\class/System.DirectoryServices\System.DirectoryServices-tests-net_4_5.csproj", "{D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RabbitMQ.Client.Apigen-net_4_5", "..\..\mcs\class/RabbitMQ.Client/src/apigen\RabbitMQ.Client.Apigen-net_4_5.csproj", "{84ACFFEC-BB08-4715-B77B-091B827C55E3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RabbitMQ.Client.Apigen-net_4_5", "..\..\mcs\class/RabbitMQ.Client/src/apigen\RabbitMQ.Client.Apigen-net_4_5.csproj", "{EC71F150-48A7-4971-A37D-E519ABA830A3}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RabbitMQ.Client-net_4_5", "..\..\mcs\class/RabbitMQ.Client/src/client\RabbitMQ.Client-net_4_5.csproj", "{E4F02B09-E5BF-4DF9-9D55-58396821B80D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RabbitMQ.Client-net_4_5", "..\..\mcs\class/RabbitMQ.Client/src/client\RabbitMQ.Client-net_4_5.csproj", "{8BA87CBE-8098-4512-B008-A347E1EA281C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-net_4_5", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-net_4_5.csproj", "{3D737371-B7D6-49E4-AA91-F67EF2E07A45}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-net_4_5", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-net_4_5.csproj", "{1CB843E3-75E7-4115-9EE6-7B7262AC6C96}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-tests-net_4_5", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-tests-net_4_5.csproj", "{EBDF7A9B-728D-4D71-A603-3D840220FBE4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-tests-net_4_5", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-tests-net_4_5.csproj", "{3429D3B3-51DC-4236-9C5A-33C4F9E260FE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-net_4_0", "..\..\mcs\class/System.Messaging\System.Messaging-net_4_0.csproj", "{2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-net_4_0", "..\..\mcs\class/System.Messaging\System.Messaging-net_4_0.csproj", "{443D0D78-0A65-4288-80C2-B58011E3A5D1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration.Install-net_4_0", "..\..\mcs\class/System.Configuration.Install\System.Configuration.Install-net_4_0.csproj", "{878F802D-3249-41E8-8322-A32C406383C6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Configuration.Install-net_4_0", "..\..\mcs\class/System.Configuration.Install\System.Configuration.Install-net_4_0.csproj", "{3C248397-71FD-4A63-B4A5-9F2A28C4D983}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-net_4_0", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-net_4_0.csproj", "{7D27EF3B-540A-4BBD-873C-878ABC927401}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging-net_4_0", "..\..\mcs\class/Mono.Messaging\Mono.Messaging-net_4_0.csproj", "{CD0A320A-620E-42D0-86CD-2D32F5592E57}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-net_4_5", "..\..\mcs\class/System.Messaging\System.Messaging-net_4_5.csproj", "{47046600-6AFB-46AB-BCF6-8E9EDD67FA97}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-net_4_5", "..\..\mcs\class/System.Messaging\System.Messaging-net_4_5.csproj", "{A8B93174-06DF-4FC7-8E3E-45F395A943EB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-tests-net_4_5", "..\..\mcs\class/System.Messaging\System.Messaging-tests-net_4_5.csproj", "{CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Messaging-tests-net_4_5", "..\..\mcs\class/System.Messaging\System.Messaging-tests-net_4_5.csproj", "{2A3A7368-D302-4166-820C-8CB18138740C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging.RabbitMQ-net_4_5", "..\..\mcs\class/Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_5.csproj", "{6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging.RabbitMQ-net_4_5", "..\..\mcs\class/Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-net_4_5.csproj", "{114A51BC-8AB2-4B25-A9A7-CB78C43745B8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging.RabbitMQ-tests-net_4_5", "..\..\mcs\class/Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-tests-net_4_5.csproj", "{70EF0F9A-D878-4858-851E-7B7B6E69C75E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Messaging.RabbitMQ-tests-net_4_5", "..\..\mcs\class/Mono.Messaging.RabbitMQ\Mono.Messaging.RabbitMQ-tests-net_4_5.csproj", "{57115A1C-8C33-455E-A108-04DCD04808BD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceProcess-net_4_5", "..\..\mcs\class/System.ServiceProcess\System.ServiceProcess-net_4_5.csproj", "{4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceProcess-net_4_5", "..\..\mcs\class/System.ServiceProcess\System.ServiceProcess-net_4_5.csproj", "{99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceProcess-tests-net_4_5", "..\..\mcs\class/System.ServiceProcess\System.ServiceProcess-tests-net_4_5.csproj", "{F8218843-5463-4D1D-BD93-4E1A507FFAF9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceProcess-tests-net_4_5", "..\..\mcs\class/System.ServiceProcess\System.ServiceProcess-tests-net_4_5.csproj", "{D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing.Design-net_4_5", "..\..\mcs\class/System.Drawing.Design\System.Drawing.Design-net_4_5.csproj", "{167298A3-F7FD-41D9-888E-AAAD48074482}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Drawing.Design-net_4_5", "..\..\mcs\class/System.Drawing.Design\System.Drawing.Design-net_4_5.csproj", "{8B8B57E4-285A-409A-BA4A-290DE0055301}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-net_4_5-1", "..\..\mcs\class/System.Design\System.Design-net_4_5-1.csproj", "{2414C54A-9454-4B25-932C-0724CF003A6D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Design-net_4_5-1", "..\..\mcs\class/System.Design\System.Design-net_4_5-1.csproj", "{54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpZipLib-net_4_5", "..\..\mcs\class/ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5.csproj", "{C41C7048-6B86-43DB-9F5E-BED7A92CD56E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ICSharpCode.SharpZipLib-net_4_5", "..\..\mcs\class/ICSharpCode.SharpZipLib\ICSharpCode.SharpZipLib-net_4_5.csproj", "{039AD56A-E91B-4803-8328-287F70B61D14}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Http-net_4_5", "..\..\mcs\class/Mono.Http\Mono.Http-net_4_5.csproj", "{3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Http-net_4_5", "..\..\mcs\class/Mono.Http\Mono.Http-net_4_5.csproj", "{9F93BC7A-F061-4AF5-AF3C-F81692D20E89}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cairo-net_4_5", "..\..\mcs\class/Mono.Cairo\Mono.Cairo-net_4_5.csproj", "{78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cairo-net_4_5", "..\..\mcs\class/Mono.Cairo\Mono.Cairo-net_4_5.csproj", "{75114723-49E9-4351-A4FD-36DB9BC044E6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IBM.Data.DB2-net_4_5", "..\..\mcs\class/IBM.Data.DB2\IBM.Data.DB2-net_4_5.csproj", "{0A4E586A-047A-4C04-9821-265465A334F8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "IBM.Data.DB2-net_4_5", "..\..\mcs\class/IBM.Data.DB2\IBM.Data.DB2-net_4_5.csproj", "{61C7FBD9-B531-4292-8456-AAA6F9E650C4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomMarshalers-net_4_5", "..\..\mcs\class/CustomMarshalers\CustomMarshalers-net_4_5.csproj", "{69C23F98-A766-46FB-B83F-2F22BFC3E897}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomMarshalers-net_4_5", "..\..\mcs\class/CustomMarshalers\CustomMarshalers-net_4_5.csproj", "{417E7FEB-E054-44F0-81FF-A896F4018DC7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSystem.C-net_4_5", "..\..\mcs\class/OpenSystem.C\OpenSystem.C-net_4_5.csproj", "{10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSystem.C-net_4_5", "..\..\mcs\class/OpenSystem.C\OpenSystem.C-net_4_5.csproj", "{2E94B160-349C-4138-8922-208B3B8175F2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil-net_4_5", "..\..\mcs\class/Mono.Cecil\Mono.Cecil-net_4_5.csproj", "{9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil-net_4_5", "..\..\mcs\class/Mono.Cecil\Mono.Cecil-net_4_5.csproj", "{954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Mdb-net_4_5", "..\..\mcs\class/Mono.Cecil.Mdb\Mono.Cecil.Mdb-net_4_5.csproj", "{571A830B-5A77-4918-897F-100BDFD66F5E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Cecil.Mdb-net_4_5", "..\..\mcs\class/Mono.Cecil.Mdb\Mono.Cecil.Mdb-net_4_5.csproj", "{9ABB7BB9-5EA1-4081-B205-5658A602C1F5}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Debugger.Soft-net_4_5", "..\..\mcs\class/Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_5.csproj", "{1B3407DC-BF9A-4679-BC2E-AF1322032D3D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Debugger.Soft-net_4_5", "..\..\mcs\class/Mono.Debugger.Soft\Mono.Debugger.Soft-net_4_5.csproj", "{21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Debugger.Soft-tests-net_4_5", "..\..\mcs\class/Mono.Debugger.Soft\Mono.Debugger.Soft-tests-net_4_5.csproj", "{FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Debugger.Soft-tests-net_4_5", "..\..\mcs\class/Mono.Debugger.Soft\Mono.Debugger.Soft-tests-net_4_5.csproj", "{FBA53F04-D998-43D8-8538-C11EE71EEB70}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemWebTestShim-net_4_5", "..\..\mcs\class/SystemWebTestShim\SystemWebTestShim-net_4_5.csproj", "{AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SystemWebTestShim-net_4_5", "..\..\mcs\class/SystemWebTestShim\SystemWebTestShim-net_4_5.csproj", "{3D24376B-ECC8-4E7B-9433-C77CC67880AA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Framework-net_4_5", "..\..\mcs\class/Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj", "{58CD6625-5643-4A3F-84E6-5568E8573A49}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Framework-net_4_5", "..\..\mcs\class/Microsoft.Build.Framework\Microsoft.Build.Framework-net_4_5.csproj", "{2BAFB878-D329-46A5-93AF-5A4ECD403A13}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Framework-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Framework\Microsoft.Build.Framework-tests-net_4_5.csproj", "{D35940CE-3A36-4AE4-850F-C022247AE9F2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Framework-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Framework\Microsoft.Build.Framework-tests-net_4_5.csproj", "{DB6937A9-D27A-42AB-A044-1DB4B1F97414}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Utilities-net_4_5", "..\..\mcs\class/Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj", "{B20027FF-D5D8-4AD3-8F5F-535556916D36}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Utilities-net_4_5", "..\..\mcs\class/Microsoft.Build.Utilities\Microsoft.Build.Utilities-net_4_5.csproj", "{5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Utilities-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Utilities\Microsoft.Build.Utilities-tests-net_4_5.csproj", "{766E5895-AE1B-44F9-928C-34FAEE15CA64}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Utilities-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Utilities\Microsoft.Build.Utilities-tests-net_4_5.csproj", "{7E7B683B-FA73-492D-A59B-E13AF28F8B21}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Engine-net_4_5", "..\..\mcs\class/Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj", "{7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Engine-net_4_5", "..\..\mcs\class/Microsoft.Build.Engine\Microsoft.Build.Engine-net_4_5.csproj", "{0DA63190-E6E1-41C5-B683-A54FADBE61CB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Engine-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Engine\Microsoft.Build.Engine-tests-net_4_5.csproj", "{53D1041C-C85A-4DD3-9C65-6DC879737A0F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Engine-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Engine\Microsoft.Build.Engine-tests-net_4_5.csproj", "{AE80331E-4C95-4F65-BE43-0C3011661AE1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Tasks-net_4_5", "..\..\mcs\class/Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5.csproj", "{09B16AF2-4480-4F66-995B-6FEFD9C67546}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Tasks-net_4_5", "..\..\mcs\class/Microsoft.Build.Tasks\Microsoft.Build.Tasks-net_4_5.csproj", "{B0995E00-BF37-4B8A-8229-285C060E5957}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Tasks-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Tasks\Microsoft.Build.Tasks-tests-net_4_5.csproj", "{7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build.Tasks-tests-net_4_5", "..\..\mcs\class/Microsoft.Build.Tasks\Microsoft.Build.Tasks-tests-net_4_5.csproj", "{E572DA55-C0E6-42BA-9BCF-05B2C777D15B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Linq-net_4_5", "..\..\mcs\class/System.Xml.Linq\System.Xml.Linq-net_4_5.csproj", "{50961B0B-5BEC-4058-9246-5CEEE888CEC8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Linq-net_4_5", "..\..\mcs\class/System.Xml.Linq\System.Xml.Linq-net_4_5.csproj", "{A581C8A4-F031-43BA-A744-042ECD6EA6FE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Linq-tests-net_4_5", "..\..\mcs\class/System.Xml.Linq\System.Xml.Linq-tests-net_4_5.csproj", "{04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Linq-tests-net_4_5", "..\..\mcs\class/System.Xml.Linq\System.Xml.Linq-tests-net_4_5.csproj", "{20A3B729-8CAB-4480-84BF-07E8CECE4CDB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-net_4_5", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj", "{088AB4AB-1904-4365-A74B-F7557A034945}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-net_4_5", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-net_4_5.csproj", "{E90544E8-C031-49EE-BB6F-8688382E8618}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-tests-net_4_5", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-tests-net_4_5.csproj", "{8748B03E-D19A-4A32-B0BC-67DE3F224EDC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-tests-net_4_5", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-tests-net_4_5.csproj", "{DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-net_4_0", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-net_4_0.csproj", "{93532CB9-2FFB-4458-820F-BA280A6E6796}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-net_4_0", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-net_4_0.csproj", "{3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-net_4_0", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj", "{B3C699B6-74B4-4B41-901E-32E57D0909AC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization-net_4_0", "..\..\mcs\class/System.Runtime.Serialization\System.Runtime.Serialization-net_4_0.csproj", "{4F614C6C-A83E-4C3C-859B-0548391F519E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-net_4_0", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-net_4_0.csproj", "{4326E85E-00B2-47F8-9A54-A8E15021CBA3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-net_4_0", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-net_4_0.csproj", "{F3D909C0-D548-4FBC-BA04-BC8A445954EA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0-2", "..\..\mcs\class/System.Web\System.Web-net_4_0-2.csproj", "{909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_0-2", "..\..\mcs\class/System.Web\System.Web-net_4_0-2.csproj", "{C410B7A1-AC09-4CBB-9F20-AC9473811B40}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel.Selectors-net_4_0", "..\..\mcs\class/System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0.csproj", "{DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel.Selectors-net_4_0", "..\..\mcs\class/System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_0.csproj", "{45FB5242-B51C-43BC-A7B5-75E5E17C4E95}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.DataSetExtensions-net_4_5", "..\..\mcs\class/System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_5.csproj", "{99723243-801A-4F86-A51B-F88737F567B2}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.DataSetExtensions-net_4_5", "..\..\mcs\class/System.Data.DataSetExtensions\System.Data.DataSetExtensions-net_4_5.csproj", "{CE1B7764-9679-451A-9ACB-697088B116F1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.DataSetExtensions-tests-net_4_5", "..\..\mcs\class/System.Data.DataSetExtensions\System.Data.DataSetExtensions-tests-net_4_5.csproj", "{EAFF9F04-A5B5-458E-860B-76D7B2B7D745}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.DataSetExtensions-tests-net_4_5", "..\..\mcs\class/System.Data.DataSetExtensions\System.Data.DataSetExtensions-tests-net_4_5.csproj", "{53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Linq-net_4_5", "..\..\mcs\class/System.Data.Linq\System.Data.Linq-net_4_5.csproj", "{8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Linq-net_4_5", "..\..\mcs\class/System.Data.Linq\System.Data.Linq-net_4_5.csproj", "{D5F1C909-8875-4D37-8CC1-30851258C594}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Linq-tests-net_4_5", "..\..\mcs\class/System.Data.Linq\System.Data.Linq-tests-net_4_5.csproj", "{1FC59170-4045-4778-81DA-EC3EAAE7670C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Linq-tests-net_4_5", "..\..\mcs\class/System.Data.Linq\System.Data.Linq-tests-net_4_5.csproj", "{1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5-2", "..\..\mcs\class/System.Web\System.Web-net_4_5-2.csproj", "{B467A47F-0589-44F2-987D-8E1D6D4A8ED8}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web-net_4_5-2", "..\..\mcs\class/System.Web\System.Web-net_4_5-2.csproj", "{93406A57-422B-4A7E-886A-B37F2E97DB78}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Abstractions-net_4_5", "..\..\mcs\class/System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj", "{4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Abstractions-net_4_5", "..\..\mcs\class/System.Web.Abstractions\System.Web.Abstractions-net_4_5.csproj", "{C035D4D2-D112-49A6-87B8-E47469BBDA4F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Abstractions-tests-net_4_5", "..\..\mcs\class/System.Web.Abstractions\System.Web.Abstractions-tests-net_4_5.csproj", "{4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Abstractions-tests-net_4_5", "..\..\mcs\class/System.Web.Abstractions\System.Web.Abstractions-tests-net_4_5.csproj", "{3AD60A26-BA14-4B61-9293-D98C1BF9552C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Routing-net_4_5", "..\..\mcs\class/System.Web.Routing\System.Web.Routing-net_4_5.csproj", "{6D8FBB29-646A-4F94-B80D-04DD8768F1E7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Routing-net_4_5", "..\..\mcs\class/System.Web.Routing\System.Web.Routing-net_4_5.csproj", "{83FDEDF8-E46D-437E-8CEF-DD2C36E05324}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Routing-tests-net_4_5", "..\..\mcs\class/System.Web.Routing\System.Web.Routing-tests-net_4_5.csproj", "{0A2B6514-DC20-4DC3-A976-622FEA39D4EB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Routing-tests-net_4_5", "..\..\mcs\class/System.Web.Routing\System.Web.Routing-tests-net_4_5.csproj", "{8E750A9D-7421-408C-B859-62A8C92D3FE2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-net_4_5", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-net_4_5.csproj", "{1B9AFE07-4230-4DE0-8A9F-C277179098FF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-net_4_5", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-net_4_5.csproj", "{1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-tests-net_4_5", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-tests-net_4_5.csproj", "{79CC8709-A8CF-4AB2-8077-924F769AC65E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel-tests-net_4_5", "..\..\mcs\class/System.IdentityModel\System.IdentityModel-tests-net_4_5.csproj", "{74D8D6B9-1D98-4F19-A834-A0C603AD1482}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel.Selectors-net_4_5", "..\..\mcs\class/System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5.csproj", "{C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IdentityModel.Selectors-net_4_5", "..\..\mcs\class/System.IdentityModel.Selectors\System.IdentityModel.Selectors-net_4_5.csproj", "{5889C0B9-25DF-4405-A240-AC0615F4B3EB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-net_4_5", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-net_4_5.csproj", "{CF2A0D90-EB73-49B1-900B-BCE40990B404}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-net_4_5", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-net_4_5.csproj", "{0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-tests-net_4_5", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-tests-net_4_5.csproj", "{D1B6CD53-1030-468E-AAF4-4D2253086D25}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel-tests-net_4_5", "..\..\mcs\class/System.ServiceModel\System.ServiceModel-tests-net_4_5.csproj", "{5F59D153-79FB-4348-B615-419F2DA69166}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions-net_4_5", "..\..\mcs\class/System.Web.Extensions\System.Web.Extensions-net_4_5.csproj", "{88F3463D-A057-4531-AEE8-802F5B6342E9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions-net_4_5", "..\..\mcs\class/System.Web.Extensions\System.Web.Extensions-net_4_5.csproj", "{74E571CD-0506-4A52-B780-FDA9445675FB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions-tests-net_4_5", "..\..\mcs\class/System.Web.Extensions\System.Web.Extensions-tests-net_4_5.csproj", "{496386B9-294B-4D76-A15F-2C25E7E6A941}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions-tests-net_4_5", "..\..\mcs\class/System.Web.Extensions\System.Web.Extensions-tests-net_4_5.csproj", "{F70BF1C1-23E0-449D-966D-0A0657F0AB02}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions.Design-net_4_5", "..\..\mcs\class/System.Web.Extensions.Design\System.Web.Extensions.Design-net_4_5.csproj", "{B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Extensions.Design-net_4_5", "..\..\mcs\class/System.Web.Extensions.Design\System.Web.Extensions.Design-net_4_5.csproj", "{9F8B1088-2610-4E4D-A6E4-EDF2771104D9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.DataAnnotations-net_4_5", "..\..\mcs\class/System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj", "{AB2C11F0-259B-4B85-A1BB-9243CD007A9E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.DataAnnotations-net_4_5", "..\..\mcs\class/System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-net_4_5.csproj", "{64E625C0-AA4E-44DC-98F4-352D552F2EF8}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.DataAnnotations-tests-net_4_5", "..\..\mcs\class/System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-tests-net_4_5.csproj", "{DB1D4B02-5F4D-4383-905E-82205D8F1D76}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.DataAnnotations-tests-net_4_5", "..\..\mcs\class/System.ComponentModel.DataAnnotations\System.ComponentModel.DataAnnotations-tests-net_4_5.csproj", "{8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.DynamicData-net_4_5", "..\..\mcs\class/System.Web.DynamicData\System.Web.DynamicData-net_4_5.csproj", "{FCB921CD-F90B-453A-A546-F47CCC019EF3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.DynamicData-net_4_5", "..\..\mcs\class/System.Web.DynamicData\System.Web.DynamicData-net_4_5.csproj", "{02E0DC5C-2182-45D8-95E3-FF5ED16C318E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.DynamicData-tests-net_4_5", "..\..\mcs\class/System.Web.DynamicData\System.Web.DynamicData-tests-net_4_5.csproj", "{8178EA24-D36C-43EC-8783-6325059CBA5E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.DynamicData-tests-net_4_5", "..\..\mcs\class/System.Web.DynamicData\System.Web.DynamicData-tests-net_4_5.csproj", "{1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Web-net_4_5", "..\..\mcs\class/System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj", "{89390ACC-32C7-45EE-A169-BA1A4EEE6C47}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Web-net_4_5", "..\..\mcs\class/System.ServiceModel.Web\System.ServiceModel.Web-net_4_5.csproj", "{BC669CAE-D6F8-49B9-8AC3-68B48BD70587}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Web-tests-net_4_5", "..\..\mcs\class/System.ServiceModel.Web\System.ServiceModel.Web-tests-net_4_5.csproj", "{4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Web-tests-net_4_5", "..\..\mcs\class/System.ServiceModel.Web\System.ServiceModel.Web-tests-net_4_5.csproj", "{E8E13C56-208F-44E9-B0F9-F1A4996C595A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Mvc2-net_4_5", "..\..\mcs\class/System.Web.Mvc2\System.Web.Mvc2-net_4_5.csproj", "{5CC8078D-0307-481D-AAAE-EE62ED123A61}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Mvc2-net_4_5", "..\..\mcs\class/System.Web.Mvc2\System.Web.Mvc2-net_4_5.csproj", "{C4643395-6B5B-47D9-BD50-9F6804478AFD}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.C5-net_4_5", "..\..\mcs\class/Mono.C5\Mono.C5-net_4_5.csproj", "{557C0FF1-A6FA-4B27-92A2-98A59CD740E1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.C5-net_4_5", "..\..\mcs\class/Mono.C5\Mono.C5-net_4_5.csproj", "{E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.C5-tests-net_4_5", "..\..\mcs\class/Mono.C5\Mono.C5-tests-net_4_5.csproj", "{EF1AE0BA-B984-4149-8968-0337A4D9BDA4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.C5-tests-net_4_5", "..\..\mcs\class/Mono.C5\Mono.C5-tests-net_4_5.csproj", "{9A686629-45E0-431D-975C-BEDF137D75F1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Management-net_4_5", "..\..\mcs\class/Mono.Management\Mono.Management-net_4_5.csproj", "{962D9F06-30EC-4E71-B921-36FB856365A6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Management-net_4_5", "..\..\mcs\class/Mono.Management\Mono.Management-net_4_5.csproj", "{E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Options-net_4_5", "..\..\mcs\class/Mono.Options\Mono.Options-net_4_5.csproj", "{01DD131B-233A-4BA2-AFCA-80FB5743449E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Options-net_4_5", "..\..\mcs\class/Mono.Options\Mono.Options-net_4_5.csproj", "{4F4AE80E-7DB0-49A9-B508-80A328137181}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Options-tests-net_4_5", "..\..\mcs\class/Mono.Options\Mono.Options-tests-net_4_5.csproj", "{57A29A4C-18F1-43BA-8DC4-00810C45368C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Options-tests-net_4_5", "..\..\mcs\class/Mono.Options\Mono.Options-tests-net_4_5.csproj", "{1AC76475-2AAB-431E-BD97-444CD5AF1191}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Simd-net_4_5", "..\..\mcs\class/Mono.Simd\Mono.Simd-net_4_5.csproj", "{E845A9A8-0491-4D18-B5B5-32DE93E21328}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Simd-net_4_5", "..\..\mcs\class/Mono.Simd\Mono.Simd-net_4_5.csproj", "{05D8BAFE-64FA-4F09-AC7B-86627DFF136F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Tasklets-net_4_5", "..\..\mcs\class/Mono.Tasklets\Mono.Tasklets-net_4_5.csproj", "{203E023D-A06D-49EA-9316-612A16FA5C88}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Tasklets-net_4_5", "..\..\mcs\class/Mono.Tasklets\Mono.Tasklets-net_4_5.csproj", "{33307B59-24A6-4100-9E0C-F65613FE95AA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Dynamic-net_4_5", "..\..\mcs\class/System.Dynamic\System.Dynamic-net_4_5.csproj", "{ADDB864A-84AC-41AB-A978-268B68E98EAF}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Dynamic-net_4_5", "..\..\mcs\class/System.Dynamic\System.Dynamic-net_4_5.csproj", "{FB9F6B34-05B5-444F-885E-FF87DA721F12}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CSharp-net_4_5", "..\..\mcs\class/Mono.CSharp\Mono.CSharp-net_4_5.csproj", "{2D329C5C-24DA-4D80-B594-C996334758B6}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CSharp-net_4_5", "..\..\mcs\class/Mono.CSharp\Mono.CSharp-net_4_5.csproj", "{D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CSharp-tests-net_4_5", "..\..\mcs\class/Mono.CSharp\Mono.CSharp-tests-net_4_5.csproj", "{364E6D64-019A-40A1-90A2-BBFD6EF542C5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CSharp-tests-net_4_5", "..\..\mcs\class/Mono.CSharp\Mono.CSharp-tests-net_4_5.csproj", "{A05D5D7B-744A-4E62-9B38-4B5149AA955A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moonlight.Build.Tasks-net_4_5", "..\..\mcs\class/Moonlight.Build.Tasks\Moonlight.Build.Tasks-net_4_5.csproj", "{29C03463-6071-4FB2-83D2-B5497B35E090}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Moonlight.Build.Tasks-net_4_5", "..\..\mcs\class/Moonlight.Build.Tasks\Moonlight.Build.Tasks-net_4_5.csproj", "{C1BA77F3-938B-4598-BD75-5E9578827F47}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net-net_4_5", "..\..\mcs\class/System.Net\System.Net-net_4_5.csproj", "{204C086B-F0B0-4570-89F1-50245F0E0491}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net-net_4_5", "..\..\mcs\class/System.Net\System.Net-net_4_5.csproj", "{ADF802C8-DED6-4991-A5AE-34B8F1440EE4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json-net_4_5", "..\..\mcs\class/System.Json\System.Json-net_4_5.csproj", "{DBD6E6AA-45EA-4844-989B-C95A001A0440}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json-net_4_5", "..\..\mcs\class/System.Json\System.Json-net_4_5.csproj", "{EB9696AB-2203-48F1-92B4-86BD28340248}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json-tests-net_4_5", "..\..\mcs\class/System.Json\System.Json-tests-net_4_5.csproj", "{4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json-tests-net_4_5", "..\..\mcs\class/System.Json\System.Json-tests-net_4_5.csproj", "{704ADB45-E58F-432D-955A-69E3B5DDEE77}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Numerics-net_4_5", "..\..\mcs\class/System.Numerics\System.Numerics-net_4_5.csproj", "{C807E510-3FB6-4C77-A7CC-6EAC73823C3C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Numerics-net_4_5", "..\..\mcs\class/System.Numerics\System.Numerics-net_4_5.csproj", "{9A7E3AA8-1EB4-4A43-A806-636E6B220A76}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Numerics-tests-net_4_5", "..\..\mcs\class/System.Numerics\System.Numerics-tests-net_4_5.csproj", "{0FCF1047-D9AE-48DA-B794-5505284027A9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Numerics-tests-net_4_5", "..\..\mcs\class/System.Numerics\System.Numerics-tests-net_4_5.csproj", "{1A3E2D13-1CE7-43CB-9748-9C7D586A897F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CSharp-net_4_5", "..\..\mcs\class/Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj", "{94E8FEFF-9695-4F77-A8AB-85370336FE0D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.CSharp-net_4_5", "..\..\mcs\class/Microsoft.CSharp\Microsoft.CSharp-net_4_5.csproj", "{AC2AB4A1-8005-4458-8B2B-614DA9BBC644}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build-net_4_5", "..\..\mcs\class/Microsoft.Build\Microsoft.Build-net_4_5.csproj", "{47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build-net_4_5", "..\..\mcs\class/Microsoft.Build\Microsoft.Build-net_4_5.csproj", "{D8A2B8F2-F52B-44D5-A868-C344682749E2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build-tests-net_4_5", "..\..\mcs\class/Microsoft.Build\Microsoft.Build-tests-net_4_5.csproj", "{9DDFB8FD-C017-44D3-82D4-129AF99D667D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Build-tests-net_4_5", "..\..\mcs\class/Microsoft.Build\Microsoft.Build-tests-net_4_5.csproj", "{E34212A3-F152-4A6F-88F7-7A4D0324D11C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms.DataVisualization-net_4_5", "..\..\mcs\class/System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_5.csproj", "{6CE40A14-711E-46EE-BAB4-AD83134C373E}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms.DataVisualization-net_4_5", "..\..\mcs\class/System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-net_4_5.csproj", "{47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms.DataVisualization-tests-net_4_5", "..\..\mcs\class/System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-tests-net_4_5.csproj", "{05F331B4-99A2-4DCA-9283-EA1589BCDF39}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows.Forms.DataVisualization-tests-net_4_5", "..\..\mcs\class/System.Windows.Forms.DataVisualization\System.Windows.Forms.DataVisualization-tests-net_4_5.csproj", "{B1643A3E-B53E-4264-8CA3-27533EF662CB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xaml-net_4_5", "..\..\mcs\class/System.Xaml\System.Xaml-net_4_5.csproj", "{690E0C87-8516-4F5D-B105-1FEDC19AE99A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xaml-net_4_5", "..\..\mcs\class/System.Xaml\System.Xaml-net_4_5.csproj", "{2E8547F9-AE9C-4179-BC88-C0695369170B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xaml-tests-net_4_5", "..\..\mcs\class/System.Xaml\System.Xaml-tests-net_4_5.csproj", "{2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xaml-tests-net_4_5", "..\..\mcs\class/System.Xaml\System.Xaml-tests-net_4_5.csproj", "{10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsBase-net_4_5", "..\..\mcs\class/WindowsBase\WindowsBase-net_4_5.csproj", "{6D23A57D-01AF-4266-8E58-C16E732FCF81}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsBase-net_4_5", "..\..\mcs\class/WindowsBase\WindowsBase-net_4_5.csproj", "{0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsBase-tests-net_4_5", "..\..\mcs\class/WindowsBase\WindowsBase-tests-net_4_5.csproj", "{AB097D8E-4AD6-4120-B75C-306E274727D4}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsBase-tests-net_4_5", "..\..\mcs\class/WindowsBase\WindowsBase-tests-net_4_5.csproj", "{E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Routing-net_4_5", "..\..\mcs\class/System.ServiceModel.Routing\System.ServiceModel.Routing-net_4_5.csproj", "{74243378-7F6B-4B8D-81E3-E61C7AD8B87D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Routing-net_4_5", "..\..\mcs\class/System.ServiceModel.Routing\System.ServiceModel.Routing-net_4_5.csproj", "{C60066A8-6929-44CD-BD9F-4556AFFC0087}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Discovery-net_4_5", "..\..\mcs\class/System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_5.csproj", "{C06900FB-F604-4640-AFDC-000BF6BB38CC}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Discovery-net_4_5", "..\..\mcs\class/System.ServiceModel.Discovery\System.ServiceModel.Discovery-net_4_5.csproj", "{875503E2-28DA-4301-99D4-9A897BDC06F1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Discovery-tests-net_4_5", "..\..\mcs\class/System.ServiceModel.Discovery\System.ServiceModel.Discovery-tests-net_4_5.csproj", "{BB7A44E8-2F00-4A87-843D-5387CD8611E3}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Discovery-tests-net_4_5", "..\..\mcs\class/System.ServiceModel.Discovery\System.ServiceModel.Discovery-tests-net_4_5.csproj", "{C776055D-B157-4022-8926-DC1DCE41832F}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Caching-net_4_5", "..\..\mcs\class/System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj", "{8645A982-AA1E-48CB-B996-7FCC4F8703CE}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Caching-net_4_5", "..\..\mcs\class/System.Runtime.Caching\System.Runtime.Caching-net_4_5.csproj", "{C18ABE89-33D2-4780-93BE-AB89B8187581}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Caching-tests-net_4_5", "..\..\mcs\class/System.Runtime.Caching\System.Runtime.Caching-tests-net_4_5.csproj", "{8AA31784-B653-4727-B8AD-ED2756AF1C3D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Caching-tests-net_4_5", "..\..\mcs\class/System.Runtime.Caching\System.Runtime.Caching-tests-net_4_5.csproj", "{CE2E44C6-7B7F-43BB-992D-44749DFA7D71}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.DurableInstancing-net_4_5", "..\..\mcs\class/System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_5.csproj", "{C07F9E49-E65C-40C7-A3BD-02F932A33C2A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.DurableInstancing-net_4_5", "..\..\mcs\class/System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-net_4_5.csproj", "{DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.DurableInstancing-tests-net_4_5", "..\..\mcs\class/System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-tests-net_4_5.csproj", "{590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.DurableInstancing-tests-net_4_5", "..\..\mcs\class/System.Runtime.DurableInstancing\System.Runtime.DurableInstancing-tests-net_4_5.csproj", "{6D34CFEC-13B9-4E34-A253-CE4E46322542}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Parallel-net_4_5", "..\..\mcs\class/Mono.Parallel\Mono.Parallel-net_4_5.csproj", "{B43E74BB-F4C0-462C-B86A-7108208A22A0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Parallel-net_4_5", "..\..\mcs\class/Mono.Parallel\Mono.Parallel-net_4_5.csproj", "{FD8BB787-B115-4DED-ACB0-2858546FC16D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Parallel-tests-net_4_5", "..\..\mcs\class/Mono.Parallel\Mono.Parallel-tests-net_4_5.csproj", "{1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.Parallel-tests-net_4_5", "..\..\mcs\class/Mono.Parallel\Mono.Parallel-tests-net_4_5.csproj", "{42F035A7-4FCD-4526-9D82-E7D3D4350AC1}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Interfaces-net_4_5", "..\..\mcs\class/System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj", "{1CA793F9-A71D-4534-B684-D77AF04AB96F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Interfaces-net_4_5", "..\..\mcs\class/System.Reactive.Interfaces\System.Reactive.Interfaces-net_4_5.csproj", "{D80FD091-3F53-4879-B0BB-08897139CF97}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Core-net_4_5", "..\..\mcs\class/System.Reactive.Core\System.Reactive.Core-net_4_5.csproj", "{422D6DBA-72EE-4876-9EC3-78DEE759CAA9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Core-net_4_5", "..\..\mcs\class/System.Reactive.Core\System.Reactive.Core-net_4_5.csproj", "{CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Linq-net_4_5", "..\..\mcs\class/System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj", "{924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Linq-net_4_5", "..\..\mcs\class/System.Reactive.Linq\System.Reactive.Linq-net_4_5.csproj", "{83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.PlatformServices-net_4_5", "..\..\mcs\class/System.Reactive.PlatformServices\System.Reactive.PlatformServices-net_4_5.csproj", "{A01E9CA8-9B09-4D80-923B-67E8B60D2723}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.PlatformServices-net_4_5", "..\..\mcs\class/System.Reactive.PlatformServices\System.Reactive.PlatformServices-net_4_5.csproj", "{6A74098E-D4D5-4D6F-A673-8E95CBF8726E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Providers-net_4_5", "..\..\mcs\class/System.Reactive.Providers\System.Reactive.Providers-net_4_5.csproj", "{3EC882EF-A451-467F-BE31-CE6E98A538F0}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Providers-net_4_5", "..\..\mcs\class/System.Reactive.Providers\System.Reactive.Providers-net_4_5.csproj", "{03DD638D-4D60-42BB-94D6-3C7112C62C20}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Runtime.Remoting-net_4_5", "..\..\mcs\class/System.Reactive.Runtime.Remoting\System.Reactive.Runtime.Remoting-net_4_5.csproj", "{F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Runtime.Remoting-net_4_5", "..\..\mcs\class/System.Reactive.Runtime.Remoting\System.Reactive.Runtime.Remoting-net_4_5.csproj", "{5462ACB9-395E-4152-8292-B24612453210}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Windows.Forms-net_4_5", "..\..\mcs\class/System.Reactive.Windows.Forms\System.Reactive.Windows.Forms-net_4_5.csproj", "{AB071CEE-330F-4AA3-B73C-9154150914C1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Windows.Forms-net_4_5", "..\..\mcs\class/System.Reactive.Windows.Forms\System.Reactive.Windows.Forms-net_4_5.csproj", "{A12A96AC-3AAD-417A-90FB-B40573189AC4}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Windows.Threading-net_4_5", "..\..\mcs\class/System.Reactive.Windows.Threading\System.Reactive.Windows.Threading-net_4_5.csproj", "{490E03A7-434E-41D6-B134-BD090A9CE383}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Windows.Threading-net_4_5", "..\..\mcs\class/System.Reactive.Windows.Threading\System.Reactive.Windows.Threading-net_4_5.csproj", "{6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Experimental-net_4_5", "..\..\mcs\class/System.Reactive.Experimental\System.Reactive.Experimental-net_4_5.csproj", "{6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Experimental-net_4_5", "..\..\mcs\class/System.Reactive.Experimental\System.Reactive.Experimental-net_4_5.csproj", "{36C5B564-9E57-4DD3-ADA4-4EC79402B02E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Debugger-net_4_5", "..\..\mcs\class/System.Reactive.Debugger\System.Reactive.Debugger-net_4_5.csproj", "{6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reactive.Debugger-net_4_5", "..\..\mcs\class/System.Reactive.Debugger\System.Reactive.Debugger-net_4_5.csproj", "{68AE2077-862E-4351-A159-D3CD817059CF}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Web.Infrastructure-net_4_5", "..\..\mcs\class/Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5.csproj", "{ADFD4824-AEDB-445C-9B52-D0E0A9318B87}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Web.Infrastructure-net_4_5", "..\..\mcs\class/Microsoft.Web.Infrastructure\Microsoft.Web.Infrastructure-net_4_5.csproj", "{4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.Data-net_4_5", "..\..\mcs\class/WebMatrix.Data\WebMatrix.Data-net_4_5.csproj", "{37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.Data-net_4_5", "..\..\mcs\class/WebMatrix.Data\WebMatrix.Data-net_4_5.csproj", "{A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.Data-tests-net_4_5", "..\..\mcs\class/WebMatrix.Data\WebMatrix.Data-tests-net_4_5.csproj", "{57596539-1B39-4CF2-9586-383EF5AB45DB}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WebMatrix.Data-tests-net_4_5", "..\..\mcs\class/WebMatrix.Data\WebMatrix.Data-tests-net_4_5.csproj", "{4D33E714-F07E-44AC-9998-705170E29818}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services.Client-net_4_5", "..\..\mcs\class/System.Data.Services.Client\System.Data.Services.Client-net_4_5.csproj", "{515D27B3-F7B6-4F0D-9CF6-521F7D37118D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services.Client-net_4_5", "..\..\mcs\class/System.Data.Services.Client\System.Data.Services.Client-net_4_5.csproj", "{05D23556-E085-4A30-A6AF-8F39651CA284}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services-net_4_5", "..\..\mcs\class/System.Data.Services\System.Data.Services-net_4_5.csproj", "{16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services-net_4_5", "..\..\mcs\class/System.Data.Services\System.Data.Services-net_4_5.csproj", "{90405849-4C66-4BF7-B9F6-E0D81995231B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services-tests-net_4_5", "..\..\mcs\class/System.Data.Services\System.Data.Services-tests-net_4_5.csproj", "{9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Data.Services-tests-net_4_5", "..\..\mcs\class/System.Data.Services\System.Data.Services-tests-net_4_5.csproj", "{FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json.Microsoft-net_4_5", "..\..\mcs\class/System.Json.Microsoft\System.Json.Microsoft-net_4_5.csproj", "{DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json.Microsoft-net_4_5", "..\..\mcs\class/System.Json.Microsoft\System.Json.Microsoft-net_4_5.csproj", "{A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json.Microsoft-tests-net_4_5", "..\..\mcs\class/System.Json.Microsoft\System.Json.Microsoft-tests-net_4_5.csproj", "{831B40B7-11F7-4B33-B5C7-26989628D70C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Json.Microsoft-tests-net_4_5", "..\..\mcs\class/System.Json.Microsoft\System.Json.Microsoft-tests-net_4_5.csproj", "{5E2117E9-A72D-4842-AD28-87FE0AAF5417}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "monodoc-net_4_5", "..\..\mcs\class/monodoc\monodoc-net_4_5.csproj", "{DB76C87C-DD25-4563-9DD0-7914A84CC11D}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "monodoc-net_4_5", "..\..\mcs\class/monodoc\monodoc-net_4_5.csproj", "{46C0366B-72E7-4482-A6C4-4C8CE8318BDA}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "monodoc-tests-net_4_5", "..\..\mcs\class/monodoc\monodoc-tests-net_4_5.csproj", "{20C68AFD-8518-4A78-91B4-747C71CB7589}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "monodoc-tests-net_4_5", "..\..\mcs\class/monodoc\monodoc-tests-net_4_5.csproj", "{AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Dataflow-net_4_5", "..\..\mcs\class/System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-net_4_5.csproj", "{D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Dataflow-net_4_5", "..\..\mcs\class/System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-net_4_5.csproj", "{82B719BA-7803-4832-B837-42928A0E1CEB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Dataflow-tests-net_4_5", "..\..\mcs\class/System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-tests-net_4_5.csproj", "{F87B162C-A83C-45FD-8FED-FFFB1E4C002C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Dataflow-tests-net_4_5", "..\..\mcs\class/System.Threading.Tasks.Dataflow\System.Threading.Tasks.Dataflow-tests-net_4_5.csproj", "{8A83591A-6906-48BF-BB8E-1515D264B2D7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.Composition-net_4_5", "..\..\mcs\class/System.ComponentModel.Composition\System.ComponentModel.Composition-net_4_5.csproj", "{F0F5AB89-1FCB-400C-B20F-90063C272C28}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.Composition-net_4_5", "..\..\mcs\class/System.ComponentModel.Composition\System.ComponentModel.Composition-net_4_5.csproj", "{5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http-net_4_5", "..\..\mcs\class/System.Net.Http\System.Net.Http-net_4_5.csproj", "{46CFCFD7-D328-4896-86F2-215A6577548C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http-net_4_5", "..\..\mcs\class/System.Net.Http\System.Net.Http-net_4_5.csproj", "{BE71D058-35CB-4623-AA66-631C7EB5F139}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http-tests-net_4_5", "..\..\mcs\class/System.Net.Http\System.Net.Http-tests-net_4_5.csproj", "{A99841AC-505D-4E3F-8EC7-17232A175EB9}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http-tests-net_4_5", "..\..\mcs\class/System.Net.Http\System.Net.Http-tests-net_4_5.csproj", "{7F42459F-0D03-42BF-BC81-7EDF54F78C05}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Razor-net_4_5", "..\..\mcs\class/System.Web.Razor\System.Web.Razor-net_4_5.csproj", "{2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http.WebRequest-net_4_5", "..\..\mcs\class/System.Net.Http.WebRequest\System.Net.Http.WebRequest-net_4_5.csproj", "{36096AD5-68E4-46E0-B9A0-FC29DBCC9B15}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Deployment-net_4_5", "..\..\mcs\class/System.Web.WebPages.Deployment\System.Web.WebPages.Deployment-net_4_5.csproj", "{20363524-CE98-4FCB-8477-AF79DDC1A909}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Razor-net_4_5", "..\..\mcs\class/System.Web.Razor\System.Web.Razor-net_4_5.csproj", "{030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages-net_4_5", "..\..\mcs\class/System.Web.WebPages\System.Web.WebPages-net_4_5.csproj", "{4A2FA66A-594D-4A7B-9943-B7956C46D856}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Deployment-net_4_5", "..\..\mcs\class/System.Web.WebPages.Deployment\System.Web.WebPages.Deployment-net_4_5.csproj", "{0089F43D-5A83-46A4-9299-A98B0A86A70A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Razor-net_4_5", "..\..\mcs\class/System.Web.WebPages.Razor\System.Web.WebPages.Razor-net_4_5.csproj", "{D8E8B136-69B6-461F-872A-9C0F12272D53}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages-net_4_5", "..\..\mcs\class/System.Web.WebPages\System.Web.WebPages-net_4_5.csproj", "{E9421151-F425-415F-8D32-5F28974E3C72}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Mvc3-net_4_5", "..\..\mcs\class/System.Web.Mvc3\System.Web.Mvc3-net_4_5.csproj", "{5797142C-571A-4B83-B837-0821D077236A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.WebPages.Razor-net_4_5", "..\..\mcs\class/System.Web.WebPages.Razor\System.Web.WebPages.Razor-net_4_5.csproj", "{7A8432CA-9024-4496-A751-18AEFC8932E7}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http.Formatting-net_4_5", "..\..\mcs\class/System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5.csproj", "{23304250-6657-44F1-851B-8EF6C5A9CEF7}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Mvc3-net_4_5", "..\..\mcs\class/System.Web.Mvc3\System.Web.Mvc3-net_4_5.csproj", "{3DB9B990-AE64-4B64-8A75-3797970AF64A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Http-net_4_5", "..\..\mcs\class/System.Web.Http\System.Web.Http-net_4_5.csproj", "{0410DC95-B046-49E0-954A-A2CDA3368100}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Http.Formatting-net_4_5", "..\..\mcs\class/System.Net.Http.Formatting\System.Net.Http.Formatting-net_4_5.csproj", "{9BDDA23D-1ABF-477A-AAA6-CD489033208E}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Http.SelfHost-net_4_5", "..\..\mcs\class/System.Web.Http.SelfHost\System.Web.Http.SelfHost-net_4_5.csproj", "{53C6EE8D-8590-4805-B016-FD9C8E360A21}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Http-net_4_5", "..\..\mcs\class/System.Web.Http\System.Web.Http-net_4_5.csproj", "{9E5FB1DD-0691-445E-8048-C90981B6948D}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFramework-net_4_5", "..\..\mcs\class/EntityFramework\EntityFramework-net_4_5.csproj", "{AABFEC11-0171-447F-9093-6E118257D22C}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Web.Http.SelfHost-net_4_5", "..\..\mcs\class/System.Web.Http.SelfHost\System.Web.Http.SelfHost-net_4_5.csproj", "{00562AD9-16A9-4A82-8236-9FFCC0FC9B26}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFramework.SqlServer-net_4_5", "..\..\mcs\class/EntityFramework.SqlServer\EntityFramework.SqlServer-net_4_5.csproj", "{0CEF008D-47D4-49DC-9B67-C1CC73F40D77}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFramework-net_4_5", "..\..\mcs\class/EntityFramework\EntityFramework-net_4_5.csproj", "{7AC4183B-FA37-45D9-9069-47336EB37D0A}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CodeContracts-net_4_5", "..\..\mcs\class/Mono.CodeContracts\Mono.CodeContracts-net_4_5.csproj", "{BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EntityFramework.SqlServer-net_4_5", "..\..\mcs\class/EntityFramework.SqlServer\EntityFramework.SqlServer-net_4_5.csproj", "{2D2DDD2D-5AE7-458B-B626-4475D671A7F9}"
 EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CodeContracts-tests-net_4_5", "..\..\mcs\class/Mono.CodeContracts\Mono.CodeContracts-tests-net_4_5.csproj", "{F3D6F2CB-120A-401F-92B5-59D88F932C4A}"
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CodeContracts-net_4_5", "..\..\mcs\class/Mono.CodeContracts\Mono.CodeContracts-net_4_5.csproj", "{61E5E4CF-E818-44D1-B718-70EE46F2B85D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mono.CodeContracts-tests-net_4_5", "..\..\mcs\class/Mono.CodeContracts\Mono.CodeContracts-tests-net_4_5.csproj", "{BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.Compression-net_4_5", "..\..\mcs\class/System.IO.Compression\System.IO.Compression-net_4_5.csproj", "{75C86F9F-5D58-4DDE-AADE-362D15CD395A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO.Compression.FileSystem-net_4_5", "..\..\mcs\class/System.IO.Compression.FileSystem\System.IO.Compression.FileSystem-net_4_5.csproj", "{FD39D99F-0489-4AA5-990D-46A03BB78A1A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Windows-net_4_5", "..\..\mcs\class/System.Windows\System.Windows-net_4_5.csproj", "{D5662433-D835-47CA-BA45-E186255D48EB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.Serialization-net_4_5", "..\..\mcs\class/System.Xml.Serialization\System.Xml.Serialization-net_4_5.csproj", "{FE15E8BF-7546-4A4E-AD88-55AED8C3CBB3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime-net_4_5", "..\..\mcs\class/Facades/System.Runtime\System.Runtime-net_4_5.csproj", "{EDE6E598-F2C2-4E50-8D2C-F9EE48DD52BE}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Linq-net_4_5", "..\..\mcs\class/Facades/System.Linq\System.Linq-net_4_5.csproj", "{449CB31C-BD0B-4350-A82A-D0F4EE76F1C8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.XmlSerializer-net_4_5", "..\..\mcs\class/Facades/System.Xml.XmlSerializer\System.Xml.XmlSerializer-net_4_5.csproj", "{FC137D2C-3EE5-4DDC-8BE8-17DCCC4624DC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Primitives-net_4_5", "..\..\mcs\class/Facades/System.ServiceModel.Primitives\System.ServiceModel.Primitives-net_4_5.csproj", "{06851BAA-6E25-4DEA-87E6-93D5BE894976}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.ReaderWriter-net_4_5", "..\..\mcs\class/Facades/System.Xml.ReaderWriter\System.Xml.ReaderWriter-net_4_5.csproj", "{86450EE5-13B2-4F59-8C0B-13EEF614ED79}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Diagnostics.Debug-net_4_5", "..\..\mcs\class/Facades/System.Diagnostics.Debug\System.Diagnostics.Debug-net_4_5.csproj", "{41BDC045-34C4-490C-A7B7-C826689DE03F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Extensions-net_4_5", "..\..\mcs\class/Facades/System.Runtime.Extensions\System.Runtime.Extensions-net_4_5.csproj", "{EC155D19-0F07-4ED0-BB51-A1792B4AF2EC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Diagnostics.Tools-net_4_5", "..\..\mcs\class/Facades/System.Diagnostics.Tools\System.Diagnostics.Tools-net_4_5.csproj", "{D8AD74BA-B169-400B-89EE-BC64E04E5A88}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Collections-net_4_5", "..\..\mcs\class/Facades/System.Collections\System.Collections-net_4_5.csproj", "{41117A9D-0DAC-42F2-BBB7-44621610838F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.EventBasedAsync-net_4_5", "..\..\mcs\class/Facades/System.ComponentModel.EventBasedAsync\System.ComponentModel.EventBasedAsync-net_4_5.csproj", "{F7093FF5-BB89-471B-83F6-509C7B32360D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel-net_4_5", "..\..\mcs\class/Facades/System.ComponentModel\System.ComponentModel-net_4_5.csproj", "{2BD41344-9F19-4972-B3A7-6CAA80E60F1F}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ObjectModel-net_4_5", "..\..\mcs\class/Facades/System.ObjectModel\System.ObjectModel-net_4_5.csproj", "{8C685929-4B19-408E-975E-D14039889A7A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Text.RegularExpressions-net_4_5", "..\..\mcs\class/Facades/System.Text.RegularExpressions\System.Text.RegularExpressions-net_4_5.csproj", "{C27D0C3E-DD75-4E27-B70A-50D9DF48ECC0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading-net_4_5", "..\..\mcs\class/Facades/System.Threading\System.Threading-net_4_5.csproj", "{708A9F7F-4511-4AA3-A35E-3C9FB945E103}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.InteropServices-net_4_5", "..\..\mcs\class/Facades/System.Runtime.InteropServices\System.Runtime.InteropServices-net_4_5.csproj", "{1FE96A47-EA1F-4043-95C0-9A511AA095D7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reflection-net_4_5", "..\..\mcs\class/Facades/System.Reflection\System.Reflection-net_4_5.csproj", "{2A9DFBB5-AE84-489E-BD5C-19A721461836}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Globalization-net_4_5", "..\..\mcs\class/Facades/System.Globalization\System.Globalization-net_4_5.csproj", "{20594AA3-D09B-4751-93B6-16AED2B965BC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.IO-net_4_5", "..\..\mcs\class/Facades/System.IO\System.IO-net_4_5.csproj", "{9B796831-5CFB-4783-9CB6-56ABE02AA4B4}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reflection.Primitives-net_4_5", "..\..\mcs\class/Facades/System.Reflection.Primitives\System.Reflection.Primitives-net_4_5.csproj", "{0153FD8E-87C1-4828-BA17-5DCE9ACEF3A2}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Resources.ResourceManager-net_4_5", "..\..\mcs\class/Facades/System.Resources.ResourceManager\System.Resources.ResourceManager-net_4_5.csproj", "{DEA6829A-AAAA-4927-8C14-C6B22F4E875E}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Security.Principal-net_4_5", "..\..\mcs\class/Facades/System.Security.Principal\System.Security.Principal-net_4_5.csproj", "{A5E05FB9-6ACC-49B1-86DE-233378C8A616}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Text.Encoding-net_4_5", "..\..\mcs\class/Facades/System.Text.Encoding\System.Text.Encoding-net_4_5.csproj", "{33772F45-1E93-4C47-87CD-74B75C304345}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Text.Encoding.Extensions-net_4_5", "..\..\mcs\class/Facades/System.Text.Encoding.Extensions\System.Text.Encoding.Extensions-net_4_5.csproj", "{FA366919-E9AA-4B3B-BEE0-753010021EBC}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Linq.Queryable-net_4_5", "..\..\mcs\class/Facades/System.Linq.Queryable\System.Linq.Queryable-net_4_5.csproj", "{C06DBBA4-D7A1-4B22-A513-A670C489392C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Linq.Expressions-net_4_5", "..\..\mcs\class/Facades/System.Linq.Expressions\System.Linq.Expressions-net_4_5.csproj", "{F4225D55-F85F-41CF-B886-2EA80BC621C7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Primitives-net_4_5", "..\..\mcs\class/Facades/System.Net.Primitives\System.Net.Primitives-net_4_5.csproj", "{8ABEAF4B-A0E4-486D-8DEA-F8F1A1B13835}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.Requests-net_4_5", "..\..\mcs\class/Facades/System.Net.Requests\System.Net.Requests-net_4_5.csproj", "{B23EA10F-1BAC-46D0-AFAD-F8E87F9BF5EB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Net.NetworkInformation-net_4_5", "..\..\mcs\class/Facades/System.Net.NetworkInformation\System.Net.NetworkInformation-net_4_5.csproj", "{202B203B-093C-4C40-B4FA-950CE4F138E7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Primitives-net_4_5", "..\..\mcs\class/Facades/System.Runtime.Serialization.Primitives\System.Runtime.Serialization.Primitives-net_4_5.csproj", "{4F627E32-59E1-4560-9254-A5F6AEEA49D0}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Xml-net_4_5", "..\..\mcs\class/Facades/System.Runtime.Serialization.Xml\System.Runtime.Serialization.Xml-net_4_5.csproj", "{F5C32B79-74F0-452C-9DA4-3010910DA071}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Serialization.Json-net_4_5", "..\..\mcs\class/Facades/System.Runtime.Serialization.Json\System.Runtime.Serialization.Json-net_4_5.csproj", "{A435BDB8-2601-4D5B-AD78-7E5575E1DD37}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ServiceModel.Http-net_4_5", "..\..\mcs\class/Facades/System.ServiceModel.Http\System.ServiceModel.Http-net_4_5.csproj", "{B979CA0D-CF48-4A33-AC27-FC8CC12E009D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Xml.XDocument-net_4_5", "..\..\mcs\class/Facades/System.Xml.XDocument\System.Xml.XDocument-net_4_5.csproj", "{06EB86BE-A440-44C2-B11E-9C2A05CD9DAB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks-net_4_5", "..\..\mcs\class/Facades/System.Threading.Tasks\System.Threading.Tasks-net_4_5.csproj", "{8D758ECB-8294-41E7-A239-B31194C7FD4D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Diagnostics.Contracts-net_4_5", "..\..\mcs\class/Facades/System.Diagnostics.Contracts\System.Diagnostics.Contracts-net_4_5.csproj", "{A1AE0E86-573D-4B50-8078-3EB8744924C7}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Dynamic.Runtime-net_4_5", "..\..\mcs\class/Facades/System.Dynamic.Runtime\System.Dynamic.Runtime-net_4_5.csproj", "{DDCB4935-5269-4DFB-9B7B-D01655DDC29C}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.ComponentModel.Annotations-net_4_5", "..\..\mcs\class/Facades/System.ComponentModel.Annotations\System.ComponentModel.Annotations-net_4_5.csproj", "{C08613F0-C5E5-4FF2-A8F0-516BA0B39688}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Runtime.Numerics-net_4_5", "..\..\mcs\class/Facades/System.Runtime.Numerics\System.Runtime.Numerics-net_4_5.csproj", "{60725AA0-76C0-46AA-9E9A-793D5EB671F8}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Linq.Parallel-net_4_5", "..\..\mcs\class/Facades/System.Linq.Parallel\System.Linq.Parallel-net_4_5.csproj", "{F3509D69-1160-463A-8607-68E5E34EC5F5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Collections.Concurrent-net_4_5", "..\..\mcs\class/Facades/System.Collections.Concurrent\System.Collections.Concurrent-net_4_5.csproj", "{9933A0E4-D6A6-465B-814A-4B2E1860C931}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Threading.Tasks.Parallel-net_4_5", "..\..\mcs\class/Facades/System.Threading.Tasks.Parallel\System.Threading.Tasks.Parallel-net_4_5.csproj", "{EEA0DCB3-83BF-4BCF-BF77-5A43E289945A}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "System.Reflection.Extensions-net_4_5", "..\..\mcs\class/Facades/System.Reflection.Extensions\System.Reflection.Extensions-net_4_5.csproj", "{A0351AB5-FB39-49C2-9A16-856E3CE38288}"
 EndProject
 Global
        GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -549,1090 +643,1278 @@ Global
                Release|Any CPU = Release|Any CPU
        EndGlobalSection
        GlobalSection(ProjectConfigurationPlatforms) = postSolution
-               {AD97431A-3538-4597-9C5C-97137A9ECCA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AD97431A-3538-4597-9C5C-97137A9ECCA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AD97431A-3538-4597-9C5C-97137A9ECCA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AD97431A-3538-4597-9C5C-97137A9ECCA1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7B7210E5-3B98-492F-B57E-BD53A99C39B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7B7210E5-3B98-492F-B57E-BD53A99C39B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7B7210E5-3B98-492F-B57E-BD53A99C39B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7B7210E5-3B98-492F-B57E-BD53A99C39B0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {05A7A0C2-6946-4CF5-9ED3-44AB0B428C4E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {50D0CA30-64AF-4136-B43D-C43EDDE136C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {50D0CA30-64AF-4136-B43D-C43EDDE136C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {50D0CA30-64AF-4136-B43D-C43EDDE136C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {50D0CA30-64AF-4136-B43D-C43EDDE136C7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {97C3D4C4-2B27-40C2-94ED-9C0119AB785C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {97C3D4C4-2B27-40C2-94ED-9C0119AB785C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {97C3D4C4-2B27-40C2-94ED-9C0119AB785C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {97C3D4C4-2B27-40C2-94ED-9C0119AB785C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A8B97A8D-D9F3-4BE5-926D-CE7E7C57FE6D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {205A8E90-88CC-4B46-8151-87FA90B666A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {205A8E90-88CC-4B46-8151-87FA90B666A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {205A8E90-88CC-4B46-8151-87FA90B666A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {205A8E90-88CC-4B46-8151-87FA90B666A5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {928D664D-8277-47B3-AB06-538D932143FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {928D664D-8277-47B3-AB06-538D932143FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {928D664D-8277-47B3-AB06-538D932143FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {928D664D-8277-47B3-AB06-538D932143FE}.Release|Any CPU.Build.0 = Release|Any CPU
-               {73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {73E16B85-93E9-44B4-A1AB-FDD7AEB08FB7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {67A04408-CBEF-4B63-B975-29D827B0DBED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {67A04408-CBEF-4B63-B975-29D827B0DBED}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {67A04408-CBEF-4B63-B975-29D827B0DBED}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {67A04408-CBEF-4B63-B975-29D827B0DBED}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0F9C68C1-0695-4DC0-8064-B0749F54DF34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0F9C68C1-0695-4DC0-8064-B0749F54DF34}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0F9C68C1-0695-4DC0-8064-B0749F54DF34}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0F9C68C1-0695-4DC0-8064-B0749F54DF34}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A2433930-2BB3-4818-97D2-45A907CB7B3B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A2433930-2BB3-4818-97D2-45A907CB7B3B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A2433930-2BB3-4818-97D2-45A907CB7B3B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A2433930-2BB3-4818-97D2-45A907CB7B3B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B8B2866D-592F-4888-A1CB-697AD0F3CADE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B8B2866D-592F-4888-A1CB-697AD0F3CADE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B8B2866D-592F-4888-A1CB-697AD0F3CADE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B8B2866D-592F-4888-A1CB-697AD0F3CADE}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4C8FFAF4-4FE9-4377-821B-AFD255791495}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4C8FFAF4-4FE9-4377-821B-AFD255791495}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4C8FFAF4-4FE9-4377-821B-AFD255791495}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4C8FFAF4-4FE9-4377-821B-AFD255791495}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E9DD3F8E-CFA0-4B07-885F-B37A3932A81D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B7BE46BA-4D0D-4CDB-A31D-772BDCFCFC8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B7BE46BA-4D0D-4CDB-A31D-772BDCFCFC8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B7BE46BA-4D0D-4CDB-A31D-772BDCFCFC8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B7BE46BA-4D0D-4CDB-A31D-772BDCFCFC8A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EF086B78-3330-427F-86A2-B87B1AB095A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EF086B78-3330-427F-86A2-B87B1AB095A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EF086B78-3330-427F-86A2-B87B1AB095A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EF086B78-3330-427F-86A2-B87B1AB095A0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4D1ABD9E-B23B-4C1F-9DF1-7E3407EC3914}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C3638457-A40E-4E70-81B4-54ACB31DD76D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C3638457-A40E-4E70-81B4-54ACB31DD76D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C3638457-A40E-4E70-81B4-54ACB31DD76D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C3638457-A40E-4E70-81B4-54ACB31DD76D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {83A0F0D3-5813-4805-8AC5-8E8B0DC55B9D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {725170B0-51F0-46E2-A74D-F764B68553D6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {725170B0-51F0-46E2-A74D-F764B68553D6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {725170B0-51F0-46E2-A74D-F764B68553D6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {725170B0-51F0-46E2-A74D-F764B68553D6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {980C299E-664F-4905-B01C-19599BBE78FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {980C299E-664F-4905-B01C-19599BBE78FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {980C299E-664F-4905-B01C-19599BBE78FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {980C299E-664F-4905-B01C-19599BBE78FF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C596FD9E-2AC3-48E2-9661-F6F40C84F044}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C596FD9E-2AC3-48E2-9661-F6F40C84F044}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C596FD9E-2AC3-48E2-9661-F6F40C84F044}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C596FD9E-2AC3-48E2-9661-F6F40C84F044}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2590BECB-2660-49C6-93B1-B9E7D0796214}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2590BECB-2660-49C6-93B1-B9E7D0796214}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2590BECB-2660-49C6-93B1-B9E7D0796214}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2590BECB-2660-49C6-93B1-B9E7D0796214}.Release|Any CPU.Build.0 = Release|Any CPU
-               {443B892C-060C-4829-839D-FE539CDEC5D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {443B892C-060C-4829-839D-FE539CDEC5D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {443B892C-060C-4829-839D-FE539CDEC5D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {443B892C-060C-4829-839D-FE539CDEC5D9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F9E777F8-E3F2-4E19-8DC9-2D1BB6B380A6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1A075F2A-40CF-48B5-B817-8B03444DB7C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1A075F2A-40CF-48B5-B817-8B03444DB7C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1A075F2A-40CF-48B5-B817-8B03444DB7C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1A075F2A-40CF-48B5-B817-8B03444DB7C6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {18CD7C68-EF7C-4C7A-B8D6-FE9834145437}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {18CD7C68-EF7C-4C7A-B8D6-FE9834145437}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {18CD7C68-EF7C-4C7A-B8D6-FE9834145437}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {18CD7C68-EF7C-4C7A-B8D6-FE9834145437}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A2DAEB75-C366-4B5F-8BDD-9B3234A1ABFA}.Release|Any CPU.Build.0 = Release|Any CPU
-               {610C7C77-5851-4B95-A3FE-B04E1B011E6A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {610C7C77-5851-4B95-A3FE-B04E1B011E6A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {610C7C77-5851-4B95-A3FE-B04E1B011E6A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {610C7C77-5851-4B95-A3FE-B04E1B011E6A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C57BB644-EEFC-475A-AF6F-43EF29C75933}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C57BB644-EEFC-475A-AF6F-43EF29C75933}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C57BB644-EEFC-475A-AF6F-43EF29C75933}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C57BB644-EEFC-475A-AF6F-43EF29C75933}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BC281223-A7A5-415D-B4AA-59417DBFFBBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BC281223-A7A5-415D-B4AA-59417DBFFBBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BC281223-A7A5-415D-B4AA-59417DBFFBBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BC281223-A7A5-415D-B4AA-59417DBFFBBB}.Release|Any CPU.Build.0 = Release|Any CPU
-               {977F7A36-972C-4139-81B6-1EF6A8F44857}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {977F7A36-972C-4139-81B6-1EF6A8F44857}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {977F7A36-972C-4139-81B6-1EF6A8F44857}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {977F7A36-972C-4139-81B6-1EF6A8F44857}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0005126E-C0D0-4DA3-A2E2-E49592D3E164}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0005126E-C0D0-4DA3-A2E2-E49592D3E164}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0005126E-C0D0-4DA3-A2E2-E49592D3E164}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0005126E-C0D0-4DA3-A2E2-E49592D3E164}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6865A6A5-DF93-45C7-BE83-F06907EC81F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6865A6A5-DF93-45C7-BE83-F06907EC81F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6865A6A5-DF93-45C7-BE83-F06907EC81F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6865A6A5-DF93-45C7-BE83-F06907EC81F8}.Release|Any CPU.Build.0 = Release|Any CPU
-               {801DF65A-F6B4-4D66-B415-9E8832E66F48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {801DF65A-F6B4-4D66-B415-9E8832E66F48}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {801DF65A-F6B4-4D66-B415-9E8832E66F48}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {801DF65A-F6B4-4D66-B415-9E8832E66F48}.Release|Any CPU.Build.0 = Release|Any CPU
-               {46371E88-F274-4BE7-8587-444F4E6F7247}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {46371E88-F274-4BE7-8587-444F4E6F7247}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {46371E88-F274-4BE7-8587-444F4E6F7247}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {46371E88-F274-4BE7-8587-444F4E6F7247}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2038AFC9-B4E4-4A05-B57B-11B698CA67DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2038AFC9-B4E4-4A05-B57B-11B698CA67DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2038AFC9-B4E4-4A05-B57B-11B698CA67DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2038AFC9-B4E4-4A05-B57B-11B698CA67DF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9E7D0EEC-475C-4829-8A0D-74FBB76D25E6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C3A02669-DEEA-469D-930F-926DED9B53C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C3A02669-DEEA-469D-930F-926DED9B53C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C3A02669-DEEA-469D-930F-926DED9B53C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C3A02669-DEEA-469D-930F-926DED9B53C6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5C0B6042-9C59-4D58-A7C1-A912A0689066}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5C0B6042-9C59-4D58-A7C1-A912A0689066}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5C0B6042-9C59-4D58-A7C1-A912A0689066}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5C0B6042-9C59-4D58-A7C1-A912A0689066}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6AB4F63B-4869-4380-89F4-B3547BDC8BD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6AB4F63B-4869-4380-89F4-B3547BDC8BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6AB4F63B-4869-4380-89F4-B3547BDC8BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6AB4F63B-4869-4380-89F4-B3547BDC8BD0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8A11FD7A-D62F-4130-9870-49486379AB1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8A11FD7A-D62F-4130-9870-49486379AB1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8A11FD7A-D62F-4130-9870-49486379AB1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8A11FD7A-D62F-4130-9870-49486379AB1C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E77D8877-AEAD-4FDF-8A44-36AAA0B20653}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E77D8877-AEAD-4FDF-8A44-36AAA0B20653}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E77D8877-AEAD-4FDF-8A44-36AAA0B20653}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E77D8877-AEAD-4FDF-8A44-36AAA0B20653}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E52212C3-8609-434F-A1B3-5A63C057C119}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E52212C3-8609-434F-A1B3-5A63C057C119}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E52212C3-8609-434F-A1B3-5A63C057C119}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E52212C3-8609-434F-A1B3-5A63C057C119}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0594F40C-A4D6-4FDD-8876-AF3824DEFDED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0594F40C-A4D6-4FDD-8876-AF3824DEFDED}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0594F40C-A4D6-4FDD-8876-AF3824DEFDED}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0594F40C-A4D6-4FDD-8876-AF3824DEFDED}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D5968AB0-8856-49DC-9547-63530241BC22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D5968AB0-8856-49DC-9547-63530241BC22}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D5968AB0-8856-49DC-9547-63530241BC22}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D5968AB0-8856-49DC-9547-63530241BC22}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B53B8417-E392-4660-86F0-54E7B7FAD4BA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B53B8417-E392-4660-86F0-54E7B7FAD4BA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B53B8417-E392-4660-86F0-54E7B7FAD4BA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B53B8417-E392-4660-86F0-54E7B7FAD4BA}.Release|Any CPU.Build.0 = Release|Any CPU
-               {70AD32F9-8D9F-4EFB-A6DB-254203565D0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {70AD32F9-8D9F-4EFB-A6DB-254203565D0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {70AD32F9-8D9F-4EFB-A6DB-254203565D0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {70AD32F9-8D9F-4EFB-A6DB-254203565D0A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5AF47E2F-C295-4410-BB78-F08FE99C0E76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5AF47E2F-C295-4410-BB78-F08FE99C0E76}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5AF47E2F-C295-4410-BB78-F08FE99C0E76}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5AF47E2F-C295-4410-BB78-F08FE99C0E76}.Release|Any CPU.Build.0 = Release|Any CPU
-               {847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {847BF7E9-DEFB-43C9-8410-CA775ADC0E8A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5592C0B6-11CF-43FB-A673-8386BBFEA147}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5592C0B6-11CF-43FB-A673-8386BBFEA147}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5592C0B6-11CF-43FB-A673-8386BBFEA147}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5592C0B6-11CF-43FB-A673-8386BBFEA147}.Release|Any CPU.Build.0 = Release|Any CPU
-               {34966210-D64D-419C-94A4-9A6093CE5882}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {34966210-D64D-419C-94A4-9A6093CE5882}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {34966210-D64D-419C-94A4-9A6093CE5882}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {34966210-D64D-419C-94A4-9A6093CE5882}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6374B2FC-93C6-4FD0-8CF0-8EB12F5AC71D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7B4FFC09-308A-4341-912F-A9ADAEDEDBEA}.Release|Any CPU.Build.0 = Release|Any CPU
-               {03E8A999-E329-44BB-8ED7-D60412068646}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {03E8A999-E329-44BB-8ED7-D60412068646}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {03E8A999-E329-44BB-8ED7-D60412068646}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {03E8A999-E329-44BB-8ED7-D60412068646}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8F7F90F0-97DB-4E98-83AE-C2E28E9B512A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2616FDAC-EC98-417B-A95C-C2E2D1ECB3F2}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ECF02624-8EE8-4466-8925-3EE595034B4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ECF02624-8EE8-4466-8925-3EE595034B4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ECF02624-8EE8-4466-8925-3EE595034B4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ECF02624-8EE8-4466-8925-3EE595034B4D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9BBEC512-8833-4124-B826-777E45579059}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9BBEC512-8833-4124-B826-777E45579059}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9BBEC512-8833-4124-B826-777E45579059}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9BBEC512-8833-4124-B826-777E45579059}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3C6256A3-3B1F-4CF8-9D91-016C855930DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3C6256A3-3B1F-4CF8-9D91-016C855930DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3C6256A3-3B1F-4CF8-9D91-016C855930DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3C6256A3-3B1F-4CF8-9D91-016C855930DC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EF5108EC-6916-4ADE-AB7D-919F89F1FEE1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D70CC755-05BF-4148-8A19-3F28EA6CA21D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D70CC755-05BF-4148-8A19-3F28EA6CA21D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D70CC755-05BF-4148-8A19-3F28EA6CA21D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D70CC755-05BF-4148-8A19-3F28EA6CA21D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4F2AADB3-6D4D-41C3-AC38-6AC970F97703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4F2AADB3-6D4D-41C3-AC38-6AC970F97703}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4F2AADB3-6D4D-41C3-AC38-6AC970F97703}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4F2AADB3-6D4D-41C3-AC38-6AC970F97703}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3F01DF0A-D726-4D86-8E47-DADB8EA4D994}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3F01DF0A-D726-4D86-8E47-DADB8EA4D994}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3F01DF0A-D726-4D86-8E47-DADB8EA4D994}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3F01DF0A-D726-4D86-8E47-DADB8EA4D994}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E81B377C-E5E0-4C5A-BC4D-43CB5E5E0C78}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BED431C4-56B5-4990-A8E6-DCD02A331BC9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BED431C4-56B5-4990-A8E6-DCD02A331BC9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BED431C4-56B5-4990-A8E6-DCD02A331BC9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BED431C4-56B5-4990-A8E6-DCD02A331BC9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {801B7F88-6DE4-48B9-A830-450BF14DBBA1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {801B7F88-6DE4-48B9-A830-450BF14DBBA1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {801B7F88-6DE4-48B9-A830-450BF14DBBA1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {801B7F88-6DE4-48B9-A830-450BF14DBBA1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2B2808F7-930A-4416-A060-57D9F8DC879C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2B2808F7-930A-4416-A060-57D9F8DC879C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2B2808F7-930A-4416-A060-57D9F8DC879C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2B2808F7-930A-4416-A060-57D9F8DC879C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2BB65926-A803-484F-A2D2-05CED0254A28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2BB65926-A803-484F-A2D2-05CED0254A28}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2BB65926-A803-484F-A2D2-05CED0254A28}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2BB65926-A803-484F-A2D2-05CED0254A28}.Release|Any CPU.Build.0 = Release|Any CPU
-               {48172E97-369D-408A-A5CB-DC3B34706C0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {48172E97-369D-408A-A5CB-DC3B34706C0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {48172E97-369D-408A-A5CB-DC3B34706C0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {48172E97-369D-408A-A5CB-DC3B34706C0B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {26480A1B-A6B9-4865-8492-C18019094CE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {26480A1B-A6B9-4865-8492-C18019094CE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {26480A1B-A6B9-4865-8492-C18019094CE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {26480A1B-A6B9-4865-8492-C18019094CE4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5CAB0F19-4A6F-4B4B-96DA-5677F88E2EF6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E763AC5D-E03A-4D54-8B0A-5F904B56FA69}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E763AC5D-E03A-4D54-8B0A-5F904B56FA69}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E763AC5D-E03A-4D54-8B0A-5F904B56FA69}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E763AC5D-E03A-4D54-8B0A-5F904B56FA69}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BB9B46F0-18EB-4FCF-9C63-461E5FAF205B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7ADBB6D9-FE98-4735-B4AC-6589F4D7BFFD}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4F8F4004-E655-463C-8A0F-4F7C99AB85B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4F8F4004-E655-463C-8A0F-4F7C99AB85B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4F8F4004-E655-463C-8A0F-4F7C99AB85B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4F8F4004-E655-463C-8A0F-4F7C99AB85B5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E9E47642-19D3-48A0-81C4-D51810976A70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E9E47642-19D3-48A0-81C4-D51810976A70}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E9E47642-19D3-48A0-81C4-D51810976A70}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E9E47642-19D3-48A0-81C4-D51810976A70}.Release|Any CPU.Build.0 = Release|Any CPU
-               {86595D30-C24E-4A0F-9419-499980DE4B79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {86595D30-C24E-4A0F-9419-499980DE4B79}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {86595D30-C24E-4A0F-9419-499980DE4B79}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {86595D30-C24E-4A0F-9419-499980DE4B79}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ABF6A466-1744-4C43-8B68-C89EA10FBB67}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ABF6A466-1744-4C43-8B68-C89EA10FBB67}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ABF6A466-1744-4C43-8B68-C89EA10FBB67}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ABF6A466-1744-4C43-8B68-C89EA10FBB67}.Release|Any CPU.Build.0 = Release|Any CPU
-               {FCA901B7-B01E-4578-8C93-9BACB907AD22}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {FCA901B7-B01E-4578-8C93-9BACB907AD22}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {FCA901B7-B01E-4578-8C93-9BACB907AD22}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {FCA901B7-B01E-4578-8C93-9BACB907AD22}.Release|Any CPU.Build.0 = Release|Any CPU
-               {14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {14095E63-DAB5-4DCD-A8A5-4C9E8CEBAC80}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F321F0E8-4A6A-4BF7-AF40-0EDD9A914066}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AD80D595-2812-412E-9F06-2A91C7283A48}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AD80D595-2812-412E-9F06-2A91C7283A48}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AD80D595-2812-412E-9F06-2A91C7283A48}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AD80D595-2812-412E-9F06-2A91C7283A48}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3E18A3C5-C18A-44C3-9E0E-E391BA8CA1CC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C2B09EC6-61CB-4CF0-A6D8-A094C2EDF8A0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {39A1EC4F-EA9D-47DE-9E7D-8213F87E0502}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5D580843-B172-4BF3-AABD-116A64020C1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5D580843-B172-4BF3-AABD-116A64020C1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5D580843-B172-4BF3-AABD-116A64020C1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5D580843-B172-4BF3-AABD-116A64020C1C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {517B1616-9AF6-4C66-9BB9-73369E8A4222}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {517B1616-9AF6-4C66-9BB9-73369E8A4222}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {517B1616-9AF6-4C66-9BB9-73369E8A4222}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {517B1616-9AF6-4C66-9BB9-73369E8A4222}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6A0BDCF6-4FFB-471F-B824-5AA24A47E076}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6A0BDCF6-4FFB-471F-B824-5AA24A47E076}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6A0BDCF6-4FFB-471F-B824-5AA24A47E076}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6A0BDCF6-4FFB-471F-B824-5AA24A47E076}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A9F46CB3-7262-47D8-A9EB-9B789278F9EF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A9F46CB3-7262-47D8-A9EB-9B789278F9EF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A9F46CB3-7262-47D8-A9EB-9B789278F9EF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A9F46CB3-7262-47D8-A9EB-9B789278F9EF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F30781EC-D410-4A00-BD91-0971E37DE140}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F30781EC-D410-4A00-BD91-0971E37DE140}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F30781EC-D410-4A00-BD91-0971E37DE140}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F30781EC-D410-4A00-BD91-0971E37DE140}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0877A48B-2DF5-40A2-8714-ABBF2BD48987}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0877A48B-2DF5-40A2-8714-ABBF2BD48987}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0877A48B-2DF5-40A2-8714-ABBF2BD48987}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0877A48B-2DF5-40A2-8714-ABBF2BD48987}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B8CA1780-FF35-49B9-B385-C24BD0558109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B8CA1780-FF35-49B9-B385-C24BD0558109}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B8CA1780-FF35-49B9-B385-C24BD0558109}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B8CA1780-FF35-49B9-B385-C24BD0558109}.Release|Any CPU.Build.0 = Release|Any CPU
-               {FDB86B5C-19F4-49DB-807F-CB0466C121A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {FDB86B5C-19F4-49DB-807F-CB0466C121A1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {FDB86B5C-19F4-49DB-807F-CB0466C121A1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {FDB86B5C-19F4-49DB-807F-CB0466C121A1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6E23CCE9-9FA5-48CE-A648-6D7A9BB2E23C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {60E307F3-5E95-42FF-9B41-3FB8AD664AB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {60E307F3-5E95-42FF-9B41-3FB8AD664AB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {60E307F3-5E95-42FF-9B41-3FB8AD664AB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {60E307F3-5E95-42FF-9B41-3FB8AD664AB6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F684BA24-FC9A-4BAB-8CF3-ACC489E6B88E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BFC160FF-5B62-41D2-B039-52C469077AE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BFC160FF-5B62-41D2-B039-52C469077AE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BFC160FF-5B62-41D2-B039-52C469077AE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BFC160FF-5B62-41D2-B039-52C469077AE0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4E0AB773-6BB3-4866-881F-B362A573C8DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4E0AB773-6BB3-4866-881F-B362A573C8DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4E0AB773-6BB3-4866-881F-B362A573C8DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4E0AB773-6BB3-4866-881F-B362A573C8DD}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2C2BA4BC-CDE5-46D0-A225-9E84EE42997F}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E63734B6-D4FC-4016-A3E3-4C98E408E559}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E63734B6-D4FC-4016-A3E3-4C98E408E559}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E63734B6-D4FC-4016-A3E3-4C98E408E559}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E63734B6-D4FC-4016-A3E3-4C98E408E559}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2CA35670-6F91-4423-A36A-12560A182E0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2CA35670-6F91-4423-A36A-12560A182E0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2CA35670-6F91-4423-A36A-12560A182E0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2CA35670-6F91-4423-A36A-12560A182E0D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D9409D43-8919-4A4C-A7B5-77383840CD35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D9409D43-8919-4A4C-A7B5-77383840CD35}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D9409D43-8919-4A4C-A7B5-77383840CD35}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D9409D43-8919-4A4C-A7B5-77383840CD35}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ABD934FF-6F3A-40CB-85DB-98316F708226}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ABD934FF-6F3A-40CB-85DB-98316F708226}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ABD934FF-6F3A-40CB-85DB-98316F708226}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ABD934FF-6F3A-40CB-85DB-98316F708226}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5A9673B6-FC36-4B40-92F6-A9586B75EC57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5A9673B6-FC36-4B40-92F6-A9586B75EC57}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5A9673B6-FC36-4B40-92F6-A9586B75EC57}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5A9673B6-FC36-4B40-92F6-A9586B75EC57}.Release|Any CPU.Build.0 = Release|Any CPU
-               {10182EEF-2616-46BB-894E-6820BFA07D45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {10182EEF-2616-46BB-894E-6820BFA07D45}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {10182EEF-2616-46BB-894E-6820BFA07D45}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {10182EEF-2616-46BB-894E-6820BFA07D45}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A945645C-6DF3-414E-B5F1-25DC35C95136}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A945645C-6DF3-414E-B5F1-25DC35C95136}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A945645C-6DF3-414E-B5F1-25DC35C95136}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A945645C-6DF3-414E-B5F1-25DC35C95136}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4DB64CBC-A1A0-4EF6-9AC8-EABD847E9553}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7F9CCA1F-1778-4BB6-A8B6-D761429B4B8C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {348A36EC-8291-460B-9CC2-8CA8AD1759A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {348A36EC-8291-460B-9CC2-8CA8AD1759A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {348A36EC-8291-460B-9CC2-8CA8AD1759A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {348A36EC-8291-460B-9CC2-8CA8AD1759A2}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A99FD368-6E3E-448C-83C5-A7D64762924E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A99FD368-6E3E-448C-83C5-A7D64762924E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A99FD368-6E3E-448C-83C5-A7D64762924E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A99FD368-6E3E-448C-83C5-A7D64762924E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7443D41A-D078-49E1-9A88-87902B6EDFFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7443D41A-D078-49E1-9A88-87902B6EDFFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7443D41A-D078-49E1-9A88-87902B6EDFFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7443D41A-D078-49E1-9A88-87902B6EDFFC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {93ABF627-F02A-4409-9BAE-0E564A43FC9A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {93ABF627-F02A-4409-9BAE-0E564A43FC9A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {93ABF627-F02A-4409-9BAE-0E564A43FC9A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {93ABF627-F02A-4409-9BAE-0E564A43FC9A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ED516751-8649-48D5-B1F3-2C450B2E45D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ED516751-8649-48D5-B1F3-2C450B2E45D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ED516751-8649-48D5-B1F3-2C450B2E45D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ED516751-8649-48D5-B1F3-2C450B2E45D1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AD666708-4CC0-4822-B670-26D59A2D32AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AD666708-4CC0-4822-B670-26D59A2D32AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AD666708-4CC0-4822-B670-26D59A2D32AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AD666708-4CC0-4822-B670-26D59A2D32AF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C5D5DEB9-74DC-42FF-93C7-3316E4567B0E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C0EEF402-0A7C-4FF1-8AE8-0D53850AB70E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6BFAB010-392A-4F3D-861D-19B5BEC476D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6BFAB010-392A-4F3D-861D-19B5BEC476D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6BFAB010-392A-4F3D-861D-19B5BEC476D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6BFAB010-392A-4F3D-861D-19B5BEC476D5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9C3BBC65-D0E9-4E9D-96B9-9ECB51E1C329}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B710DF58-F63B-4C6B-AA01-9C2DEEBCEB92}.Release|Any CPU.Build.0 = Release|Any CPU
-               {48C35A26-B26A-4084-9A9A-7729D345B3B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {48C35A26-B26A-4084-9A9A-7729D345B3B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {48C35A26-B26A-4084-9A9A-7729D345B3B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {48C35A26-B26A-4084-9A9A-7729D345B3B5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BE037A30-EA31-40F1-BC2A-9FEAADDD435E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BE037A30-EA31-40F1-BC2A-9FEAADDD435E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BE037A30-EA31-40F1-BC2A-9FEAADDD435E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BE037A30-EA31-40F1-BC2A-9FEAADDD435E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {67C79BA1-2CF2-40B7-B362-1DCAF156AA25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {67C79BA1-2CF2-40B7-B362-1DCAF156AA25}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {67C79BA1-2CF2-40B7-B362-1DCAF156AA25}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {67C79BA1-2CF2-40B7-B362-1DCAF156AA25}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3404EE44-7E95-4619-93B8-C7B82ADEB8F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3404EE44-7E95-4619-93B8-C7B82ADEB8F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3404EE44-7E95-4619-93B8-C7B82ADEB8F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3404EE44-7E95-4619-93B8-C7B82ADEB8F5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {76A8C207-5DFF-435F-9F47-9C6E201AF8F4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {76A8C207-5DFF-435F-9F47-9C6E201AF8F4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {76A8C207-5DFF-435F-9F47-9C6E201AF8F4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {76A8C207-5DFF-435F-9F47-9C6E201AF8F4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4B2DAC6F-0527-4042-97C0-0B576ECA1A1C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BA4C18A4-EF3B-42DD-957A-5C1BF4EE6359}.Release|Any CPU.Build.0 = Release|Any CPU
-               {74565932-18F5-4BEC-AAB6-98230A4B662C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {74565932-18F5-4BEC-AAB6-98230A4B662C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {74565932-18F5-4BEC-AAB6-98230A4B662C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {74565932-18F5-4BEC-AAB6-98230A4B662C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2B9B735A-BF18-4FB6-B576-8ED42BA8E1FF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D044BF49-7C7C-4E7D-8A1B-4A7DA133E4B8}.Release|Any CPU.Build.0 = Release|Any CPU
-               {97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {97C8B52D-2E89-4EB1-856C-C9BD3A75A56B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B7DE9FFF-1E5D-464F-9C4B-5A6DA9D6EBC3}.Release|Any CPU.Build.0 = Release|Any CPU
-               {84ACFFEC-BB08-4715-B77B-091B827C55E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {84ACFFEC-BB08-4715-B77B-091B827C55E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {84ACFFEC-BB08-4715-B77B-091B827C55E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {84ACFFEC-BB08-4715-B77B-091B827C55E3}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E4F02B09-E5BF-4DF9-9D55-58396821B80D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E4F02B09-E5BF-4DF9-9D55-58396821B80D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E4F02B09-E5BF-4DF9-9D55-58396821B80D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E4F02B09-E5BF-4DF9-9D55-58396821B80D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3D737371-B7D6-49E4-AA91-F67EF2E07A45}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3D737371-B7D6-49E4-AA91-F67EF2E07A45}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3D737371-B7D6-49E4-AA91-F67EF2E07A45}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3D737371-B7D6-49E4-AA91-F67EF2E07A45}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EBDF7A9B-728D-4D71-A603-3D840220FBE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EBDF7A9B-728D-4D71-A603-3D840220FBE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EBDF7A9B-728D-4D71-A603-3D840220FBE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EBDF7A9B-728D-4D71-A603-3D840220FBE4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2651037E-FD2B-4BBC-B655-CC3F0B0E4BD0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {878F802D-3249-41E8-8322-A32C406383C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {878F802D-3249-41E8-8322-A32C406383C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {878F802D-3249-41E8-8322-A32C406383C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {878F802D-3249-41E8-8322-A32C406383C6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7D27EF3B-540A-4BBD-873C-878ABC927401}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7D27EF3B-540A-4BBD-873C-878ABC927401}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7D27EF3B-540A-4BBD-873C-878ABC927401}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7D27EF3B-540A-4BBD-873C-878ABC927401}.Release|Any CPU.Build.0 = Release|Any CPU
-               {47046600-6AFB-46AB-BCF6-8E9EDD67FA97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {47046600-6AFB-46AB-BCF6-8E9EDD67FA97}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {47046600-6AFB-46AB-BCF6-8E9EDD67FA97}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {47046600-6AFB-46AB-BCF6-8E9EDD67FA97}.Release|Any CPU.Build.0 = Release|Any CPU
-               {CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {CF3B58EF-C823-47AD-B77F-ACAF6C2DE9DC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6D4FFAA7-A96E-4C35-A87C-E368C0553EA4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {70EF0F9A-D878-4858-851E-7B7B6E69C75E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {70EF0F9A-D878-4858-851E-7B7B6E69C75E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {70EF0F9A-D878-4858-851E-7B7B6E69C75E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {70EF0F9A-D878-4858-851E-7B7B6E69C75E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4F0B9DF5-C9AC-43CE-9229-BAE2B3C4AE52}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F8218843-5463-4D1D-BD93-4E1A507FFAF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F8218843-5463-4D1D-BD93-4E1A507FFAF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F8218843-5463-4D1D-BD93-4E1A507FFAF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F8218843-5463-4D1D-BD93-4E1A507FFAF9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {167298A3-F7FD-41D9-888E-AAAD48074482}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {167298A3-F7FD-41D9-888E-AAAD48074482}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {167298A3-F7FD-41D9-888E-AAAD48074482}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {167298A3-F7FD-41D9-888E-AAAD48074482}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2414C54A-9454-4B25-932C-0724CF003A6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2414C54A-9454-4B25-932C-0724CF003A6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2414C54A-9454-4B25-932C-0724CF003A6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2414C54A-9454-4B25-932C-0724CF003A6D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C41C7048-6B86-43DB-9F5E-BED7A92CD56E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C41C7048-6B86-43DB-9F5E-BED7A92CD56E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C41C7048-6B86-43DB-9F5E-BED7A92CD56E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C41C7048-6B86-43DB-9F5E-BED7A92CD56E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3B625FA4-DABF-4F64-9D38-D4005EE6ECD5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {78AEDB9D-4DB6-4EB5-BDCD-1DFAB7467761}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0A4E586A-047A-4C04-9821-265465A334F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0A4E586A-047A-4C04-9821-265465A334F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0A4E586A-047A-4C04-9821-265465A334F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0A4E586A-047A-4C04-9821-265465A334F8}.Release|Any CPU.Build.0 = Release|Any CPU
-               {69C23F98-A766-46FB-B83F-2F22BFC3E897}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {69C23F98-A766-46FB-B83F-2F22BFC3E897}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {69C23F98-A766-46FB-B83F-2F22BFC3E897}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {69C23F98-A766-46FB-B83F-2F22BFC3E897}.Release|Any CPU.Build.0 = Release|Any CPU
-               {10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {10F0CA9C-5F98-4091-BF3B-DDD0F6FF44DC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9BFFD90A-EB1C-4D47-9340-BA59FCC77CAE}.Release|Any CPU.Build.0 = Release|Any CPU
-               {571A830B-5A77-4918-897F-100BDFD66F5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {571A830B-5A77-4918-897F-100BDFD66F5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {571A830B-5A77-4918-897F-100BDFD66F5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {571A830B-5A77-4918-897F-100BDFD66F5E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1B3407DC-BF9A-4679-BC2E-AF1322032D3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1B3407DC-BF9A-4679-BC2E-AF1322032D3D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1B3407DC-BF9A-4679-BC2E-AF1322032D3D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1B3407DC-BF9A-4679-BC2E-AF1322032D3D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {FE0507AC-F903-45C9-8CB3-CBEFF973F2C1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AE07E358-96C7-44C4-86EE-BDB6DC0DC1B1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {58CD6625-5643-4A3F-84E6-5568E8573A49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {58CD6625-5643-4A3F-84E6-5568E8573A49}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {58CD6625-5643-4A3F-84E6-5568E8573A49}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {58CD6625-5643-4A3F-84E6-5568E8573A49}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D35940CE-3A36-4AE4-850F-C022247AE9F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D35940CE-3A36-4AE4-850F-C022247AE9F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D35940CE-3A36-4AE4-850F-C022247AE9F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D35940CE-3A36-4AE4-850F-C022247AE9F2}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B20027FF-D5D8-4AD3-8F5F-535556916D36}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B20027FF-D5D8-4AD3-8F5F-535556916D36}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B20027FF-D5D8-4AD3-8F5F-535556916D36}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B20027FF-D5D8-4AD3-8F5F-535556916D36}.Release|Any CPU.Build.0 = Release|Any CPU
-               {766E5895-AE1B-44F9-928C-34FAEE15CA64}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {766E5895-AE1B-44F9-928C-34FAEE15CA64}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {766E5895-AE1B-44F9-928C-34FAEE15CA64}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {766E5895-AE1B-44F9-928C-34FAEE15CA64}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7B2ECE3C-F8E5-4C63-8FD5-AB490EF63872}.Release|Any CPU.Build.0 = Release|Any CPU
-               {53D1041C-C85A-4DD3-9C65-6DC879737A0F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {53D1041C-C85A-4DD3-9C65-6DC879737A0F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {53D1041C-C85A-4DD3-9C65-6DC879737A0F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {53D1041C-C85A-4DD3-9C65-6DC879737A0F}.Release|Any CPU.Build.0 = Release|Any CPU
-               {09B16AF2-4480-4F66-995B-6FEFD9C67546}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {09B16AF2-4480-4F66-995B-6FEFD9C67546}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {09B16AF2-4480-4F66-995B-6FEFD9C67546}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {09B16AF2-4480-4F66-995B-6FEFD9C67546}.Release|Any CPU.Build.0 = Release|Any CPU
-               {7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {7E029CF3-FBE0-48F4-A802-1536E1E2FCFF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {50961B0B-5BEC-4058-9246-5CEEE888CEC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {50961B0B-5BEC-4058-9246-5CEEE888CEC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {50961B0B-5BEC-4058-9246-5CEEE888CEC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {50961B0B-5BEC-4058-9246-5CEEE888CEC8}.Release|Any CPU.Build.0 = Release|Any CPU
-               {04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {04C9F589-3AA1-4BCA-ABC1-ABBC7527783E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {088AB4AB-1904-4365-A74B-F7557A034945}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {088AB4AB-1904-4365-A74B-F7557A034945}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {088AB4AB-1904-4365-A74B-F7557A034945}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {088AB4AB-1904-4365-A74B-F7557A034945}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8748B03E-D19A-4A32-B0BC-67DE3F224EDC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8748B03E-D19A-4A32-B0BC-67DE3F224EDC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8748B03E-D19A-4A32-B0BC-67DE3F224EDC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8748B03E-D19A-4A32-B0BC-67DE3F224EDC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {93532CB9-2FFB-4458-820F-BA280A6E6796}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {93532CB9-2FFB-4458-820F-BA280A6E6796}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {93532CB9-2FFB-4458-820F-BA280A6E6796}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {93532CB9-2FFB-4458-820F-BA280A6E6796}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B3C699B6-74B4-4B41-901E-32E57D0909AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B3C699B6-74B4-4B41-901E-32E57D0909AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B3C699B6-74B4-4B41-901E-32E57D0909AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B3C699B6-74B4-4B41-901E-32E57D0909AC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4326E85E-00B2-47F8-9A54-A8E15021CBA3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4326E85E-00B2-47F8-9A54-A8E15021CBA3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4326E85E-00B2-47F8-9A54-A8E15021CBA3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4326E85E-00B2-47F8-9A54-A8E15021CBA3}.Release|Any CPU.Build.0 = Release|Any CPU
-               {909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {909BD42B-05C0-4147-BC2A-0F79A0A2B9DA}.Release|Any CPU.Build.0 = Release|Any CPU
-               {DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {DF2AB58D-92EE-4B36-BCBC-5B78135CDC95}.Release|Any CPU.Build.0 = Release|Any CPU
-               {99723243-801A-4F86-A51B-F88737F567B2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {99723243-801A-4F86-A51B-F88737F567B2}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {99723243-801A-4F86-A51B-F88737F567B2}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {99723243-801A-4F86-A51B-F88737F567B2}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EAFF9F04-A5B5-458E-860B-76D7B2B7D745}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EAFF9F04-A5B5-458E-860B-76D7B2B7D745}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EAFF9F04-A5B5-458E-860B-76D7B2B7D745}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EAFF9F04-A5B5-458E-860B-76D7B2B7D745}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8BBB6858-599C-41C5-AD49-0FE5A0DEE7DF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1FC59170-4045-4778-81DA-EC3EAAE7670C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1FC59170-4045-4778-81DA-EC3EAAE7670C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1FC59170-4045-4778-81DA-EC3EAAE7670C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1FC59170-4045-4778-81DA-EC3EAAE7670C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B467A47F-0589-44F2-987D-8E1D6D4A8ED8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B467A47F-0589-44F2-987D-8E1D6D4A8ED8}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B467A47F-0589-44F2-987D-8E1D6D4A8ED8}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B467A47F-0589-44F2-987D-8E1D6D4A8ED8}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4B6EE92C-A0F1-4274-ACAA-8DF5BF2BEC80}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4EB0E45D-D6AE-4CBA-8771-2CDDCAB24372}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6D8FBB29-646A-4F94-B80D-04DD8768F1E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6D8FBB29-646A-4F94-B80D-04DD8768F1E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6D8FBB29-646A-4F94-B80D-04DD8768F1E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6D8FBB29-646A-4F94-B80D-04DD8768F1E7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0A2B6514-DC20-4DC3-A976-622FEA39D4EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0A2B6514-DC20-4DC3-A976-622FEA39D4EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0A2B6514-DC20-4DC3-A976-622FEA39D4EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0A2B6514-DC20-4DC3-A976-622FEA39D4EB}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1B9AFE07-4230-4DE0-8A9F-C277179098FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1B9AFE07-4230-4DE0-8A9F-C277179098FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1B9AFE07-4230-4DE0-8A9F-C277179098FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1B9AFE07-4230-4DE0-8A9F-C277179098FF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {79CC8709-A8CF-4AB2-8077-924F769AC65E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {79CC8709-A8CF-4AB2-8077-924F769AC65E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {79CC8709-A8CF-4AB2-8077-924F769AC65E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {79CC8709-A8CF-4AB2-8077-924F769AC65E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C4CA97AC-04DA-4651-ACD5-B619AEB4A6E1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {CF2A0D90-EB73-49B1-900B-BCE40990B404}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {CF2A0D90-EB73-49B1-900B-BCE40990B404}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {CF2A0D90-EB73-49B1-900B-BCE40990B404}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {CF2A0D90-EB73-49B1-900B-BCE40990B404}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D1B6CD53-1030-468E-AAF4-4D2253086D25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D1B6CD53-1030-468E-AAF4-4D2253086D25}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D1B6CD53-1030-468E-AAF4-4D2253086D25}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D1B6CD53-1030-468E-AAF4-4D2253086D25}.Release|Any CPU.Build.0 = Release|Any CPU
-               {88F3463D-A057-4531-AEE8-802F5B6342E9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {88F3463D-A057-4531-AEE8-802F5B6342E9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {88F3463D-A057-4531-AEE8-802F5B6342E9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {88F3463D-A057-4531-AEE8-802F5B6342E9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {496386B9-294B-4D76-A15F-2C25E7E6A941}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {496386B9-294B-4D76-A15F-2C25E7E6A941}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {496386B9-294B-4D76-A15F-2C25E7E6A941}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {496386B9-294B-4D76-A15F-2C25E7E6A941}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B1C41A6E-22FC-4208-8B2A-9CBDE0B80FFF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AB2C11F0-259B-4B85-A1BB-9243CD007A9E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AB2C11F0-259B-4B85-A1BB-9243CD007A9E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AB2C11F0-259B-4B85-A1BB-9243CD007A9E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AB2C11F0-259B-4B85-A1BB-9243CD007A9E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {DB1D4B02-5F4D-4383-905E-82205D8F1D76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {DB1D4B02-5F4D-4383-905E-82205D8F1D76}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {DB1D4B02-5F4D-4383-905E-82205D8F1D76}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {DB1D4B02-5F4D-4383-905E-82205D8F1D76}.Release|Any CPU.Build.0 = Release|Any CPU
-               {FCB921CD-F90B-453A-A546-F47CCC019EF3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {FCB921CD-F90B-453A-A546-F47CCC019EF3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {FCB921CD-F90B-453A-A546-F47CCC019EF3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {FCB921CD-F90B-453A-A546-F47CCC019EF3}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8178EA24-D36C-43EC-8783-6325059CBA5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8178EA24-D36C-43EC-8783-6325059CBA5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8178EA24-D36C-43EC-8783-6325059CBA5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8178EA24-D36C-43EC-8783-6325059CBA5E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {89390ACC-32C7-45EE-A169-BA1A4EEE6C47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {89390ACC-32C7-45EE-A169-BA1A4EEE6C47}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {89390ACC-32C7-45EE-A169-BA1A4EEE6C47}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {89390ACC-32C7-45EE-A169-BA1A4EEE6C47}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4EE7AB4A-30BD-4795-AF12-1BFFA4108CF7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5CC8078D-0307-481D-AAAE-EE62ED123A61}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5CC8078D-0307-481D-AAAE-EE62ED123A61}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5CC8078D-0307-481D-AAAE-EE62ED123A61}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5CC8078D-0307-481D-AAAE-EE62ED123A61}.Release|Any CPU.Build.0 = Release|Any CPU
-               {557C0FF1-A6FA-4B27-92A2-98A59CD740E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {557C0FF1-A6FA-4B27-92A2-98A59CD740E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {557C0FF1-A6FA-4B27-92A2-98A59CD740E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {557C0FF1-A6FA-4B27-92A2-98A59CD740E1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {EF1AE0BA-B984-4149-8968-0337A4D9BDA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {EF1AE0BA-B984-4149-8968-0337A4D9BDA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {EF1AE0BA-B984-4149-8968-0337A4D9BDA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {EF1AE0BA-B984-4149-8968-0337A4D9BDA4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {962D9F06-30EC-4E71-B921-36FB856365A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {962D9F06-30EC-4E71-B921-36FB856365A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {962D9F06-30EC-4E71-B921-36FB856365A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {962D9F06-30EC-4E71-B921-36FB856365A6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {01DD131B-233A-4BA2-AFCA-80FB5743449E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {01DD131B-233A-4BA2-AFCA-80FB5743449E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {01DD131B-233A-4BA2-AFCA-80FB5743449E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {01DD131B-233A-4BA2-AFCA-80FB5743449E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {57A29A4C-18F1-43BA-8DC4-00810C45368C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {57A29A4C-18F1-43BA-8DC4-00810C45368C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {57A29A4C-18F1-43BA-8DC4-00810C45368C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {57A29A4C-18F1-43BA-8DC4-00810C45368C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {E845A9A8-0491-4D18-B5B5-32DE93E21328}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {E845A9A8-0491-4D18-B5B5-32DE93E21328}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {E845A9A8-0491-4D18-B5B5-32DE93E21328}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {E845A9A8-0491-4D18-B5B5-32DE93E21328}.Release|Any CPU.Build.0 = Release|Any CPU
-               {203E023D-A06D-49EA-9316-612A16FA5C88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {203E023D-A06D-49EA-9316-612A16FA5C88}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {203E023D-A06D-49EA-9316-612A16FA5C88}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {203E023D-A06D-49EA-9316-612A16FA5C88}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ADDB864A-84AC-41AB-A978-268B68E98EAF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ADDB864A-84AC-41AB-A978-268B68E98EAF}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ADDB864A-84AC-41AB-A978-268B68E98EAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ADDB864A-84AC-41AB-A978-268B68E98EAF}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2D329C5C-24DA-4D80-B594-C996334758B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2D329C5C-24DA-4D80-B594-C996334758B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2D329C5C-24DA-4D80-B594-C996334758B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2D329C5C-24DA-4D80-B594-C996334758B6}.Release|Any CPU.Build.0 = Release|Any CPU
-               {364E6D64-019A-40A1-90A2-BBFD6EF542C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {364E6D64-019A-40A1-90A2-BBFD6EF542C5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {364E6D64-019A-40A1-90A2-BBFD6EF542C5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {364E6D64-019A-40A1-90A2-BBFD6EF542C5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {29C03463-6071-4FB2-83D2-B5497B35E090}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {29C03463-6071-4FB2-83D2-B5497B35E090}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {29C03463-6071-4FB2-83D2-B5497B35E090}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {29C03463-6071-4FB2-83D2-B5497B35E090}.Release|Any CPU.Build.0 = Release|Any CPU
-               {204C086B-F0B0-4570-89F1-50245F0E0491}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {204C086B-F0B0-4570-89F1-50245F0E0491}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {204C086B-F0B0-4570-89F1-50245F0E0491}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {204C086B-F0B0-4570-89F1-50245F0E0491}.Release|Any CPU.Build.0 = Release|Any CPU
-               {DBD6E6AA-45EA-4844-989B-C95A001A0440}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {DBD6E6AA-45EA-4844-989B-C95A001A0440}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {DBD6E6AA-45EA-4844-989B-C95A001A0440}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {DBD6E6AA-45EA-4844-989B-C95A001A0440}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4E2A4405-91F8-4A5F-9925-D16C0AE8BBB5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C807E510-3FB6-4C77-A7CC-6EAC73823C3C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C807E510-3FB6-4C77-A7CC-6EAC73823C3C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C807E510-3FB6-4C77-A7CC-6EAC73823C3C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C807E510-3FB6-4C77-A7CC-6EAC73823C3C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0FCF1047-D9AE-48DA-B794-5505284027A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0FCF1047-D9AE-48DA-B794-5505284027A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0FCF1047-D9AE-48DA-B794-5505284027A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0FCF1047-D9AE-48DA-B794-5505284027A9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {94E8FEFF-9695-4F77-A8AB-85370336FE0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {94E8FEFF-9695-4F77-A8AB-85370336FE0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {94E8FEFF-9695-4F77-A8AB-85370336FE0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {94E8FEFF-9695-4F77-A8AB-85370336FE0D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {47E4681E-7A08-482D-8D5E-4AA5A3E1E96B}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9DDFB8FD-C017-44D3-82D4-129AF99D667D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9DDFB8FD-C017-44D3-82D4-129AF99D667D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9DDFB8FD-C017-44D3-82D4-129AF99D667D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9DDFB8FD-C017-44D3-82D4-129AF99D667D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6CE40A14-711E-46EE-BAB4-AD83134C373E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6CE40A14-711E-46EE-BAB4-AD83134C373E}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6CE40A14-711E-46EE-BAB4-AD83134C373E}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6CE40A14-711E-46EE-BAB4-AD83134C373E}.Release|Any CPU.Build.0 = Release|Any CPU
-               {05F331B4-99A2-4DCA-9283-EA1589BCDF39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {05F331B4-99A2-4DCA-9283-EA1589BCDF39}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {05F331B4-99A2-4DCA-9283-EA1589BCDF39}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {05F331B4-99A2-4DCA-9283-EA1589BCDF39}.Release|Any CPU.Build.0 = Release|Any CPU
-               {690E0C87-8516-4F5D-B105-1FEDC19AE99A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {690E0C87-8516-4F5D-B105-1FEDC19AE99A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {690E0C87-8516-4F5D-B105-1FEDC19AE99A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {690E0C87-8516-4F5D-B105-1FEDC19AE99A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2990557C-6AC5-4C9E-83B5-F47B0B9B48DD}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6D23A57D-01AF-4266-8E58-C16E732FCF81}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6D23A57D-01AF-4266-8E58-C16E732FCF81}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6D23A57D-01AF-4266-8E58-C16E732FCF81}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6D23A57D-01AF-4266-8E58-C16E732FCF81}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AB097D8E-4AD6-4120-B75C-306E274727D4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AB097D8E-4AD6-4120-B75C-306E274727D4}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AB097D8E-4AD6-4120-B75C-306E274727D4}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AB097D8E-4AD6-4120-B75C-306E274727D4}.Release|Any CPU.Build.0 = Release|Any CPU
-               {74243378-7F6B-4B8D-81E3-E61C7AD8B87D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {74243378-7F6B-4B8D-81E3-E61C7AD8B87D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {74243378-7F6B-4B8D-81E3-E61C7AD8B87D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {74243378-7F6B-4B8D-81E3-E61C7AD8B87D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C06900FB-F604-4640-AFDC-000BF6BB38CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C06900FB-F604-4640-AFDC-000BF6BB38CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C06900FB-F604-4640-AFDC-000BF6BB38CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C06900FB-F604-4640-AFDC-000BF6BB38CC}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BB7A44E8-2F00-4A87-843D-5387CD8611E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BB7A44E8-2F00-4A87-843D-5387CD8611E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BB7A44E8-2F00-4A87-843D-5387CD8611E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BB7A44E8-2F00-4A87-843D-5387CD8611E3}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8645A982-AA1E-48CB-B996-7FCC4F8703CE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8645A982-AA1E-48CB-B996-7FCC4F8703CE}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8645A982-AA1E-48CB-B996-7FCC4F8703CE}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8645A982-AA1E-48CB-B996-7FCC4F8703CE}.Release|Any CPU.Build.0 = Release|Any CPU
-               {8AA31784-B653-4727-B8AD-ED2756AF1C3D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {8AA31784-B653-4727-B8AD-ED2756AF1C3D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {8AA31784-B653-4727-B8AD-ED2756AF1C3D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {8AA31784-B653-4727-B8AD-ED2756AF1C3D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {C07F9E49-E65C-40C7-A3BD-02F932A33C2A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {C07F9E49-E65C-40C7-A3BD-02F932A33C2A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {C07F9E49-E65C-40C7-A3BD-02F932A33C2A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {C07F9E49-E65C-40C7-A3BD-02F932A33C2A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {590FFFA8-EFBA-4B65-87A7-FB3B42C9FF02}.Release|Any CPU.Build.0 = Release|Any CPU
-               {B43E74BB-F4C0-462C-B86A-7108208A22A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {B43E74BB-F4C0-462C-B86A-7108208A22A0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {B43E74BB-F4C0-462C-B86A-7108208A22A0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {B43E74BB-F4C0-462C-B86A-7108208A22A0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1D2E5242-8084-4C3C-8461-F9B0DF7D0F32}.Release|Any CPU.Build.0 = Release|Any CPU
-               {1CA793F9-A71D-4534-B684-D77AF04AB96F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {1CA793F9-A71D-4534-B684-D77AF04AB96F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {1CA793F9-A71D-4534-B684-D77AF04AB96F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {1CA793F9-A71D-4534-B684-D77AF04AB96F}.Release|Any CPU.Build.0 = Release|Any CPU
-               {422D6DBA-72EE-4876-9EC3-78DEE759CAA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {422D6DBA-72EE-4876-9EC3-78DEE759CAA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {422D6DBA-72EE-4876-9EC3-78DEE759CAA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {422D6DBA-72EE-4876-9EC3-78DEE759CAA9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {924F9DA0-6AEB-4250-AE3C-DFF80FF3C231}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A01E9CA8-9B09-4D80-923B-67E8B60D2723}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A01E9CA8-9B09-4D80-923B-67E8B60D2723}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A01E9CA8-9B09-4D80-923B-67E8B60D2723}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A01E9CA8-9B09-4D80-923B-67E8B60D2723}.Release|Any CPU.Build.0 = Release|Any CPU
-               {3EC882EF-A451-467F-BE31-CE6E98A538F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {3EC882EF-A451-467F-BE31-CE6E98A538F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {3EC882EF-A451-467F-BE31-CE6E98A538F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {3EC882EF-A451-467F-BE31-CE6E98A538F0}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F2A9349E-4A1E-4FA2-86D7-E970CF54C6A5}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AB071CEE-330F-4AA3-B73C-9154150914C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AB071CEE-330F-4AA3-B73C-9154150914C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AB071CEE-330F-4AA3-B73C-9154150914C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AB071CEE-330F-4AA3-B73C-9154150914C1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {490E03A7-434E-41D6-B134-BD090A9CE383}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {490E03A7-434E-41D6-B134-BD090A9CE383}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {490E03A7-434E-41D6-B134-BD090A9CE383}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {490E03A7-434E-41D6-B134-BD090A9CE383}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6DDBDFA1-00F6-4584-801D-A2FC8691AEE1}.Release|Any CPU.Build.0 = Release|Any CPU
-               {6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {6B1ABEA7-1774-41A8-B6B6-5A3CFDED2882}.Release|Any CPU.Build.0 = Release|Any CPU
-               {ADFD4824-AEDB-445C-9B52-D0E0A9318B87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {ADFD4824-AEDB-445C-9B52-D0E0A9318B87}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {ADFD4824-AEDB-445C-9B52-D0E0A9318B87}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {ADFD4824-AEDB-445C-9B52-D0E0A9318B87}.Release|Any CPU.Build.0 = Release|Any CPU
-               {37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {37C82B59-9992-4A8F-AC90-C2D77D3BDF8F}.Release|Any CPU.Build.0 = Release|Any CPU
-               {57596539-1B39-4CF2-9586-383EF5AB45DB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {57596539-1B39-4CF2-9586-383EF5AB45DB}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {57596539-1B39-4CF2-9586-383EF5AB45DB}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {57596539-1B39-4CF2-9586-383EF5AB45DB}.Release|Any CPU.Build.0 = Release|Any CPU
-               {515D27B3-F7B6-4F0D-9CF6-521F7D37118D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {515D27B3-F7B6-4F0D-9CF6-521F7D37118D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {515D27B3-F7B6-4F0D-9CF6-521F7D37118D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {515D27B3-F7B6-4F0D-9CF6-521F7D37118D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {16E0F17C-FBA5-46E2-97D1-E04E9E0CBB6D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {9C91B0D3-EEDF-4914-A1D1-13360A6B7A8F}.Release|Any CPU.Build.0 = Release|Any CPU
-               {DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {DC000DEB-DEAE-4B93-994A-F9EB4DFB9901}.Release|Any CPU.Build.0 = Release|Any CPU
-               {831B40B7-11F7-4B33-B5C7-26989628D70C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {831B40B7-11F7-4B33-B5C7-26989628D70C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {831B40B7-11F7-4B33-B5C7-26989628D70C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {831B40B7-11F7-4B33-B5C7-26989628D70C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {DB76C87C-DD25-4563-9DD0-7914A84CC11D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {DB76C87C-DD25-4563-9DD0-7914A84CC11D}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {DB76C87C-DD25-4563-9DD0-7914A84CC11D}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {DB76C87C-DD25-4563-9DD0-7914A84CC11D}.Release|Any CPU.Build.0 = Release|Any CPU
-               {20C68AFD-8518-4A78-91B4-747C71CB7589}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {20C68AFD-8518-4A78-91B4-747C71CB7589}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {20C68AFD-8518-4A78-91B4-747C71CB7589}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {20C68AFD-8518-4A78-91B4-747C71CB7589}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D7EDCA7E-F61D-4D8A-8540-B0DDAED8A927}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F87B162C-A83C-45FD-8FED-FFFB1E4C002C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F87B162C-A83C-45FD-8FED-FFFB1E4C002C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F87B162C-A83C-45FD-8FED-FFFB1E4C002C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F87B162C-A83C-45FD-8FED-FFFB1E4C002C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F0F5AB89-1FCB-400C-B20F-90063C272C28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F0F5AB89-1FCB-400C-B20F-90063C272C28}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F0F5AB89-1FCB-400C-B20F-90063C272C28}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F0F5AB89-1FCB-400C-B20F-90063C272C28}.Release|Any CPU.Build.0 = Release|Any CPU
-               {46CFCFD7-D328-4896-86F2-215A6577548C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {46CFCFD7-D328-4896-86F2-215A6577548C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {46CFCFD7-D328-4896-86F2-215A6577548C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {46CFCFD7-D328-4896-86F2-215A6577548C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {A99841AC-505D-4E3F-8EC7-17232A175EB9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {A99841AC-505D-4E3F-8EC7-17232A175EB9}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {A99841AC-505D-4E3F-8EC7-17232A175EB9}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {A99841AC-505D-4E3F-8EC7-17232A175EB9}.Release|Any CPU.Build.0 = Release|Any CPU
-               {2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {2AE9CF93-986F-4C13-AD77-5E40FCDD0DB7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {20363524-CE98-4FCB-8477-AF79DDC1A909}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {20363524-CE98-4FCB-8477-AF79DDC1A909}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {20363524-CE98-4FCB-8477-AF79DDC1A909}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {20363524-CE98-4FCB-8477-AF79DDC1A909}.Release|Any CPU.Build.0 = Release|Any CPU
-               {4A2FA66A-594D-4A7B-9943-B7956C46D856}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {4A2FA66A-594D-4A7B-9943-B7956C46D856}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {4A2FA66A-594D-4A7B-9943-B7956C46D856}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {4A2FA66A-594D-4A7B-9943-B7956C46D856}.Release|Any CPU.Build.0 = Release|Any CPU
-               {D8E8B136-69B6-461F-872A-9C0F12272D53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {D8E8B136-69B6-461F-872A-9C0F12272D53}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {D8E8B136-69B6-461F-872A-9C0F12272D53}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {D8E8B136-69B6-461F-872A-9C0F12272D53}.Release|Any CPU.Build.0 = Release|Any CPU
-               {5797142C-571A-4B83-B837-0821D077236A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {5797142C-571A-4B83-B837-0821D077236A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {5797142C-571A-4B83-B837-0821D077236A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {5797142C-571A-4B83-B837-0821D077236A}.Release|Any CPU.Build.0 = Release|Any CPU
-               {23304250-6657-44F1-851B-8EF6C5A9CEF7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {23304250-6657-44F1-851B-8EF6C5A9CEF7}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {23304250-6657-44F1-851B-8EF6C5A9CEF7}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {23304250-6657-44F1-851B-8EF6C5A9CEF7}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0410DC95-B046-49E0-954A-A2CDA3368100}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0410DC95-B046-49E0-954A-A2CDA3368100}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0410DC95-B046-49E0-954A-A2CDA3368100}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0410DC95-B046-49E0-954A-A2CDA3368100}.Release|Any CPU.Build.0 = Release|Any CPU
-               {53C6EE8D-8590-4805-B016-FD9C8E360A21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {53C6EE8D-8590-4805-B016-FD9C8E360A21}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {53C6EE8D-8590-4805-B016-FD9C8E360A21}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {53C6EE8D-8590-4805-B016-FD9C8E360A21}.Release|Any CPU.Build.0 = Release|Any CPU
-               {AABFEC11-0171-447F-9093-6E118257D22C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {AABFEC11-0171-447F-9093-6E118257D22C}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {AABFEC11-0171-447F-9093-6E118257D22C}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {AABFEC11-0171-447F-9093-6E118257D22C}.Release|Any CPU.Build.0 = Release|Any CPU
-               {0CEF008D-47D4-49DC-9B67-C1CC73F40D77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {0CEF008D-47D4-49DC-9B67-C1CC73F40D77}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {0CEF008D-47D4-49DC-9B67-C1CC73F40D77}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {0CEF008D-47D4-49DC-9B67-C1CC73F40D77}.Release|Any CPU.Build.0 = Release|Any CPU
-               {BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {BFDC3628-3992-4BA9-B95F-E0DAF5A8D247}.Release|Any CPU.Build.0 = Release|Any CPU
-               {F3D6F2CB-120A-401F-92B5-59D88F932C4A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-               {F3D6F2CB-120A-401F-92B5-59D88F932C4A}.Debug|Any CPU.Build.0 = Debug|Any CPU
-               {F3D6F2CB-120A-401F-92B5-59D88F932C4A}.Release|Any CPU.ActiveCfg = Release|Any CPU
-               {F3D6F2CB-120A-401F-92B5-59D88F932C4A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C43E1948-715C-4711-9442-13652674CE49}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C43E1948-715C-4711-9442-13652674CE49}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C43E1948-715C-4711-9442-13652674CE49}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C43E1948-715C-4711-9442-13652674CE49}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3874F10B-9AE4-4A7E-873B-42FFDCE80CB7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {07C1F58B-9E99-47F8-A847-79EDA5157DA8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {07C1F58B-9E99-47F8-A847-79EDA5157DA8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {07C1F58B-9E99-47F8-A847-79EDA5157DA8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {07C1F58B-9E99-47F8-A847-79EDA5157DA8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {93EE601C-8B43-4AE1-B417-7BDCD0FE4C95}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7ADB0D4D-F0ED-4C82-BEE3-D261699A390B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {267C4423-C2E5-4EA8-9F3B-F2B13EFA4CCC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D9776E38-7673-45F6-BF19-7B77830DF9CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D9776E38-7673-45F6-BF19-7B77830DF9CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D9776E38-7673-45F6-BF19-7B77830DF9CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D9776E38-7673-45F6-BF19-7B77830DF9CA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EB7444A6-C3E6-4224-BDB0-63CA3B4F2B87}.Release|Any CPU.Build.0 = Release|Any CPU
+               {79F25FD7-0D76-4526-AF39-1A648649A827}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {79F25FD7-0D76-4526-AF39-1A648649A827}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {79F25FD7-0D76-4526-AF39-1A648649A827}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {79F25FD7-0D76-4526-AF39-1A648649A827}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2EB99669-03DF-4DF7-9B20-0B6E6C9DBFEF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {245C754C-D6DE-4434-BA78-37A93E196236}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {245C754C-D6DE-4434-BA78-37A93E196236}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {245C754C-D6DE-4434-BA78-37A93E196236}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {245C754C-D6DE-4434-BA78-37A93E196236}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D513888C-71DC-4A65-B753-668FF8FB2CAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D513888C-71DC-4A65-B753-668FF8FB2CAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D513888C-71DC-4A65-B753-668FF8FB2CAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D513888C-71DC-4A65-B753-668FF8FB2CAA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2BD930A2-88A9-4AD0-ADE7-1531552DF896}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2BD930A2-88A9-4AD0-ADE7-1531552DF896}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2BD930A2-88A9-4AD0-ADE7-1531552DF896}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2BD930A2-88A9-4AD0-ADE7-1531552DF896}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DC4EE47D-CEB6-4592-994A-92C6B1D746FA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DC4EE47D-CEB6-4592-994A-92C6B1D746FA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DC4EE47D-CEB6-4592-994A-92C6B1D746FA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DC4EE47D-CEB6-4592-994A-92C6B1D746FA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {347CC78E-794E-4BEF-BDAB-A0437E367442}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {347CC78E-794E-4BEF-BDAB-A0437E367442}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {347CC78E-794E-4BEF-BDAB-A0437E367442}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {347CC78E-794E-4BEF-BDAB-A0437E367442}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D9D617A3-31C7-4B72-A905-9E4274FC853B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D9D617A3-31C7-4B72-A905-9E4274FC853B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D9D617A3-31C7-4B72-A905-9E4274FC853B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D9D617A3-31C7-4B72-A905-9E4274FC853B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {269CBEEC-489D-4169-A4D8-CEAE9DB7E404}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {269CBEEC-489D-4169-A4D8-CEAE9DB7E404}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {269CBEEC-489D-4169-A4D8-CEAE9DB7E404}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {269CBEEC-489D-4169-A4D8-CEAE9DB7E404}.Release|Any CPU.Build.0 = Release|Any CPU
+               {83D197B9-A796-4A0D-B8F9-930DD9415615}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {83D197B9-A796-4A0D-B8F9-930DD9415615}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {83D197B9-A796-4A0D-B8F9-930DD9415615}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {83D197B9-A796-4A0D-B8F9-930DD9415615}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FC2EF2C1-8774-4DFE-AE47-9574374D3591}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FC2EF2C1-8774-4DFE-AE47-9574374D3591}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FC2EF2C1-8774-4DFE-AE47-9574374D3591}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FC2EF2C1-8774-4DFE-AE47-9574374D3591}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8131BE5D-BE64-4BA5-A62D-FAC4BE0A0B53}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FE5BDC7B-FCD6-4351-B638-656CAFA12CAB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6785B2B5-3B06-48F3-9E6C-99B23B9AAC4F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1A468E0B-8690-4595-BBD7-D9A5002DFF26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1A468E0B-8690-4595-BBD7-D9A5002DFF26}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1A468E0B-8690-4595-BBD7-D9A5002DFF26}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1A468E0B-8690-4595-BBD7-D9A5002DFF26}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D121EB80-19C6-4313-9BBE-6F66556CE8B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D121EB80-19C6-4313-9BBE-6F66556CE8B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D121EB80-19C6-4313-9BBE-6F66556CE8B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D121EB80-19C6-4313-9BBE-6F66556CE8B7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C86FCD4E-6A52-4595-8F9E-5270607D5EA9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C86FCD4E-6A52-4595-8F9E-5270607D5EA9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C86FCD4E-6A52-4595-8F9E-5270607D5EA9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C86FCD4E-6A52-4595-8F9E-5270607D5EA9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {51720A26-B4D9-4B84-8CB5-9CBA57477FBB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {51720A26-B4D9-4B84-8CB5-9CBA57477FBB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {51720A26-B4D9-4B84-8CB5-9CBA57477FBB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {51720A26-B4D9-4B84-8CB5-9CBA57477FBB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8260E24F-1471-4320-AB5B-7CC7B68521E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8260E24F-1471-4320-AB5B-7CC7B68521E3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8260E24F-1471-4320-AB5B-7CC7B68521E3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8260E24F-1471-4320-AB5B-7CC7B68521E3}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8BF2FA62-9F71-4D96-A5D6-3DD903B25ED8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CA49630B-FD24-411F-9651-B15CA72CE5B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CA49630B-FD24-411F-9651-B15CA72CE5B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CA49630B-FD24-411F-9651-B15CA72CE5B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CA49630B-FD24-411F-9651-B15CA72CE5B8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FCBCCC55-006E-41B2-A649-CF9A843E34BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FCBCCC55-006E-41B2-A649-CF9A843E34BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FCBCCC55-006E-41B2-A649-CF9A843E34BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FCBCCC55-006E-41B2-A649-CF9A843E34BD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5E680987-7C43-48A0-9BF1-86124ACA78BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5E680987-7C43-48A0-9BF1-86124ACA78BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5E680987-7C43-48A0-9BF1-86124ACA78BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5E680987-7C43-48A0-9BF1-86124ACA78BD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DE980ED1-84A5-4B5B-A707-8D1BB4E2BDD5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AF08418D-2ADF-47E1-9D2F-8A9A2FEBF4B1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AF08418D-2ADF-47E1-9D2F-8A9A2FEBF4B1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AF08418D-2ADF-47E1-9D2F-8A9A2FEBF4B1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AF08418D-2ADF-47E1-9D2F-8A9A2FEBF4B1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DE98E72C-2727-4737-AAFC-CC1228F4812C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DE98E72C-2727-4737-AAFC-CC1228F4812C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DE98E72C-2727-4737-AAFC-CC1228F4812C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DE98E72C-2727-4737-AAFC-CC1228F4812C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BC1890C0-51E5-48D0-8DBA-B1DD23468F9C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {31465E05-7B4F-4209-8B9B-5F596A032D27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {31465E05-7B4F-4209-8B9B-5F596A032D27}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {31465E05-7B4F-4209-8B9B-5F596A032D27}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {31465E05-7B4F-4209-8B9B-5F596A032D27}.Release|Any CPU.Build.0 = Release|Any CPU
+               {91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {91AF1828-5F39-42D2-AAAB-EAEF2DCFBA4B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4DA7FF20-BC1E-496E-BA80-FAD46C54EC1D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F96F7491-66DB-4291-8803-F2F165B33B55}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F96F7491-66DB-4291-8803-F2F165B33B55}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F96F7491-66DB-4291-8803-F2F165B33B55}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F96F7491-66DB-4291-8803-F2F165B33B55}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A2A5BBDB-A278-484E-811D-8FC5BA18444B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A2A5BBDB-A278-484E-811D-8FC5BA18444B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A2A5BBDB-A278-484E-811D-8FC5BA18444B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A2A5BBDB-A278-484E-811D-8FC5BA18444B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CBA2EEEA-4D6F-45B5-ADE2-7C86D3B2A449}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9FB65E2F-34A9-42FF-AE94-2F101B951E4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9FB65E2F-34A9-42FF-AE94-2F101B951E4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9FB65E2F-34A9-42FF-AE94-2F101B951E4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9FB65E2F-34A9-42FF-AE94-2F101B951E4E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B915D688-A61F-4B8E-9110-16B76DB4446D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B915D688-A61F-4B8E-9110-16B76DB4446D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B915D688-A61F-4B8E-9110-16B76DB4446D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B915D688-A61F-4B8E-9110-16B76DB4446D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D8260595-C32F-4AC3-9C01-2CD2528CFA1D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D8260595-C32F-4AC3-9C01-2CD2528CFA1D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D8260595-C32F-4AC3-9C01-2CD2528CFA1D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D8260595-C32F-4AC3-9C01-2CD2528CFA1D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9837CA8F-8FA7-4CE9-8BE8-BE4D5A236CDE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {99D172A2-7914-496C-9005-AA69F51195AF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {99D172A2-7914-496C-9005-AA69F51195AF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {99D172A2-7914-496C-9005-AA69F51195AF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {99D172A2-7914-496C-9005-AA69F51195AF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2D07BA52-8035-4434-B4FD-9B87789B8286}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2D07BA52-8035-4434-B4FD-9B87789B8286}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2D07BA52-8035-4434-B4FD-9B87789B8286}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2D07BA52-8035-4434-B4FD-9B87789B8286}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B05F1D3D-6D46-4D62-8088-1F6ECFD319EA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C7510E1F-66A4-4076-B87B-889E219AAB3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C7510E1F-66A4-4076-B87B-889E219AAB3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C7510E1F-66A4-4076-B87B-889E219AAB3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C7510E1F-66A4-4076-B87B-889E219AAB3F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {65F07468-96FC-4A71-8565-2CD7A50728CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {65F07468-96FC-4A71-8565-2CD7A50728CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {65F07468-96FC-4A71-8565-2CD7A50728CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {65F07468-96FC-4A71-8565-2CD7A50728CC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CA2CD67B-1308-460D-BDBA-498F63DEAA31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CA2CD67B-1308-460D-BDBA-498F63DEAA31}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CA2CD67B-1308-460D-BDBA-498F63DEAA31}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CA2CD67B-1308-460D-BDBA-498F63DEAA31}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A1C102BA-BFA1-4242-A44D-E041A6E37161}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A1C102BA-BFA1-4242-A44D-E041A6E37161}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A1C102BA-BFA1-4242-A44D-E041A6E37161}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A1C102BA-BFA1-4242-A44D-E041A6E37161}.Release|Any CPU.Build.0 = Release|Any CPU
+               {38FCD731-0E11-46F7-A31B-DCBE853AD8D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {38FCD731-0E11-46F7-A31B-DCBE853AD8D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {38FCD731-0E11-46F7-A31B-DCBE853AD8D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {38FCD731-0E11-46F7-A31B-DCBE853AD8D7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4ED6CCE8-8E8A-4D82-8BCA-3EA4D4203AA4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8A8D5677-ACBD-40B4-916D-B9B5451F713D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8A8D5677-ACBD-40B4-916D-B9B5451F713D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8A8D5677-ACBD-40B4-916D-B9B5451F713D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8A8D5677-ACBD-40B4-916D-B9B5451F713D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5532F6F2-B136-4D85-9500-5D1C9E1D9335}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5532F6F2-B136-4D85-9500-5D1C9E1D9335}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5532F6F2-B136-4D85-9500-5D1C9E1D9335}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5532F6F2-B136-4D85-9500-5D1C9E1D9335}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6977FA25-AB73-4DE7-B535-19C04DB9C29A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6977FA25-AB73-4DE7-B535-19C04DB9C29A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6977FA25-AB73-4DE7-B535-19C04DB9C29A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6977FA25-AB73-4DE7-B535-19C04DB9C29A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {475537C3-F2C7-42FD-8AF9-871BC6266BAA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {475537C3-F2C7-42FD-8AF9-871BC6266BAA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {475537C3-F2C7-42FD-8AF9-871BC6266BAA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {475537C3-F2C7-42FD-8AF9-871BC6266BAA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CF521447-730D-46F7-911F-0A1CFFB9B5CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CF521447-730D-46F7-911F-0A1CFFB9B5CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CF521447-730D-46F7-911F-0A1CFFB9B5CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CF521447-730D-46F7-911F-0A1CFFB9B5CB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7C1E1624-DAC7-4819-880B-852644622BF2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7C1E1624-DAC7-4819-880B-852644622BF2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7C1E1624-DAC7-4819-880B-852644622BF2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7C1E1624-DAC7-4819-880B-852644622BF2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {84879866-2AFD-4318-8C53-8951471B7369}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {84879866-2AFD-4318-8C53-8951471B7369}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {84879866-2AFD-4318-8C53-8951471B7369}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {84879866-2AFD-4318-8C53-8951471B7369}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0CE11B15-9B31-4AD1-857C-55B69C027130}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0CE11B15-9B31-4AD1-857C-55B69C027130}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0CE11B15-9B31-4AD1-857C-55B69C027130}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0CE11B15-9B31-4AD1-857C-55B69C027130}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9F1843D9-A9D4-4D87-8CC9-B4AF53DE0196}.Release|Any CPU.Build.0 = Release|Any CPU
+               {945A4FD5-2184-44CC-9519-13AFC37ED81A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {945A4FD5-2184-44CC-9519-13AFC37ED81A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {945A4FD5-2184-44CC-9519-13AFC37ED81A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {945A4FD5-2184-44CC-9519-13AFC37ED81A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1DFD7DE0-7771-4EE5-93B7-60551C6D3C6F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {562FC450-E53A-4CF5-AE5A-91973EBE5A28}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {562FC450-E53A-4CF5-AE5A-91973EBE5A28}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {562FC450-E53A-4CF5-AE5A-91973EBE5A28}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {562FC450-E53A-4CF5-AE5A-91973EBE5A28}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9C3F8EFB-4A3A-4BD1-9072-881F1F558781}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9C3F8EFB-4A3A-4BD1-9072-881F1F558781}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9C3F8EFB-4A3A-4BD1-9072-881F1F558781}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9C3F8EFB-4A3A-4BD1-9072-881F1F558781}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D1129EE6-1E08-4393-8EF2-EA2EA6C1D5A9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {20B32D23-8DD0-4291-A98F-C52A3E99DFE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {20B32D23-8DD0-4291-A98F-C52A3E99DFE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {20B32D23-8DD0-4291-A98F-C52A3E99DFE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {20B32D23-8DD0-4291-A98F-C52A3E99DFE8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9B26C34E-8E81-4857-A1CB-B50F407EE7E1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9B26C34E-8E81-4857-A1CB-B50F407EE7E1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9B26C34E-8E81-4857-A1CB-B50F407EE7E1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9B26C34E-8E81-4857-A1CB-B50F407EE7E1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {21E94E1F-226D-4BD3-9368-594C0553CE91}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {21E94E1F-226D-4BD3-9368-594C0553CE91}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {21E94E1F-226D-4BD3-9368-594C0553CE91}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {21E94E1F-226D-4BD3-9368-594C0553CE91}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0653CFE2-4A19-4B91-A51F-793F8D516790}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0653CFE2-4A19-4B91-A51F-793F8D516790}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0653CFE2-4A19-4B91-A51F-793F8D516790}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0653CFE2-4A19-4B91-A51F-793F8D516790}.Release|Any CPU.Build.0 = Release|Any CPU
+               {663D8C81-B74E-4D44-8C59-2264C6942B30}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {663D8C81-B74E-4D44-8C59-2264C6942B30}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {663D8C81-B74E-4D44-8C59-2264C6942B30}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {663D8C81-B74E-4D44-8C59-2264C6942B30}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4C5A0721-050A-4457-8D1C-8FB58DA895DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4C5A0721-050A-4457-8D1C-8FB58DA895DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4C5A0721-050A-4457-8D1C-8FB58DA895DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4C5A0721-050A-4457-8D1C-8FB58DA895DE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F26434C1-BA3D-41FB-B560-C009CB72B1B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F26434C1-BA3D-41FB-B560-C009CB72B1B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F26434C1-BA3D-41FB-B560-C009CB72B1B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F26434C1-BA3D-41FB-B560-C009CB72B1B6}.Release|Any CPU.Build.0 = Release|Any CPU
+               {121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {121E7DB9-FC04-46DF-8CF1-18B5A3FEE1B5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7D94F9AC-9F7A-4639-9E89-85083D77101D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7D94F9AC-9F7A-4639-9E89-85083D77101D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7D94F9AC-9F7A-4639-9E89-85083D77101D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7D94F9AC-9F7A-4639-9E89-85083D77101D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {95593889-8509-4FFC-8EDE-C673FDA39FC8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {95593889-8509-4FFC-8EDE-C673FDA39FC8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {95593889-8509-4FFC-8EDE-C673FDA39FC8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {95593889-8509-4FFC-8EDE-C673FDA39FC8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {287E4CA2-E854-4E18-AFEE-B71E893A30EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {287E4CA2-E854-4E18-AFEE-B71E893A30EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {287E4CA2-E854-4E18-AFEE-B71E893A30EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {287E4CA2-E854-4E18-AFEE-B71E893A30EA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {409FF748-B765-4AB3-BCB1-72199B9E341C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {409FF748-B765-4AB3-BCB1-72199B9E341C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {409FF748-B765-4AB3-BCB1-72199B9E341C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {409FF748-B765-4AB3-BCB1-72199B9E341C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {16740D76-23DD-4BEC-87C6-948A8D766030}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {16740D76-23DD-4BEC-87C6-948A8D766030}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {16740D76-23DD-4BEC-87C6-948A8D766030}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {16740D76-23DD-4BEC-87C6-948A8D766030}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0ECDAF31-B581-4319-A1B3-1CDF1FF1BA0B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C044B1E6-B892-49DC-BD71-4C796BD8964A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C044B1E6-B892-49DC-BD71-4C796BD8964A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C044B1E6-B892-49DC-BD71-4C796BD8964A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C044B1E6-B892-49DC-BD71-4C796BD8964A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {394BAC94-3126-4DAE-8C55-5547372BAB46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {394BAC94-3126-4DAE-8C55-5547372BAB46}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {394BAC94-3126-4DAE-8C55-5547372BAB46}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {394BAC94-3126-4DAE-8C55-5547372BAB46}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0B03F192-EC11-49E5-A7F6-E97C0D559E51}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0B03F192-EC11-49E5-A7F6-E97C0D559E51}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0B03F192-EC11-49E5-A7F6-E97C0D559E51}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0B03F192-EC11-49E5-A7F6-E97C0D559E51}.Release|Any CPU.Build.0 = Release|Any CPU
+               {32FF1A9B-A989-43C0-BFBB-3808C7B2509F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {32FF1A9B-A989-43C0-BFBB-3808C7B2509F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {32FF1A9B-A989-43C0-BFBB-3808C7B2509F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {32FF1A9B-A989-43C0-BFBB-3808C7B2509F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BAC369E3-E94E-4E5A-97FF-0CF696D07814}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BAC369E3-E94E-4E5A-97FF-0CF696D07814}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BAC369E3-E94E-4E5A-97FF-0CF696D07814}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BAC369E3-E94E-4E5A-97FF-0CF696D07814}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8EF189A4-B862-4825-9938-00658C43B534}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8EF189A4-B862-4825-9938-00658C43B534}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8EF189A4-B862-4825-9938-00658C43B534}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8EF189A4-B862-4825-9938-00658C43B534}.Release|Any CPU.Build.0 = Release|Any CPU
+               {71444193-6B64-4C1B-A87D-580CCB548952}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {71444193-6B64-4C1B-A87D-580CCB548952}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {71444193-6B64-4C1B-A87D-580CCB548952}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {71444193-6B64-4C1B-A87D-580CCB548952}.Release|Any CPU.Build.0 = Release|Any CPU
+               {92E7A483-839B-4EFA-A77D-16C68F051941}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {92E7A483-839B-4EFA-A77D-16C68F051941}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {92E7A483-839B-4EFA-A77D-16C68F051941}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {92E7A483-839B-4EFA-A77D-16C68F051941}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DD1B3195-5FEA-46A2-99B5-9839CA60485C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DD1B3195-5FEA-46A2-99B5-9839CA60485C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DD1B3195-5FEA-46A2-99B5-9839CA60485C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DD1B3195-5FEA-46A2-99B5-9839CA60485C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4796A339-E32F-476E-9D7D-69C771CD618C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4796A339-E32F-476E-9D7D-69C771CD618C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4796A339-E32F-476E-9D7D-69C771CD618C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4796A339-E32F-476E-9D7D-69C771CD618C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CA7E5301-90D2-4C07-87B7-851AA216D4C9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CA7E5301-90D2-4C07-87B7-851AA216D4C9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CA7E5301-90D2-4C07-87B7-851AA216D4C9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CA7E5301-90D2-4C07-87B7-851AA216D4C9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {49220562-83E1-49A2-971F-5D31C4AB0258}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {49220562-83E1-49A2-971F-5D31C4AB0258}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {49220562-83E1-49A2-971F-5D31C4AB0258}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {49220562-83E1-49A2-971F-5D31C4AB0258}.Release|Any CPU.Build.0 = Release|Any CPU
+               {99315C7A-EEDA-4247-96F4-14924760DB8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {99315C7A-EEDA-4247-96F4-14924760DB8B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {99315C7A-EEDA-4247-96F4-14924760DB8B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {99315C7A-EEDA-4247-96F4-14924760DB8B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {85526C39-79CA-40DB-940A-3C83DF30DF85}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {85526C39-79CA-40DB-940A-3C83DF30DF85}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {85526C39-79CA-40DB-940A-3C83DF30DF85}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {85526C39-79CA-40DB-940A-3C83DF30DF85}.Release|Any CPU.Build.0 = Release|Any CPU
+               {991C45A8-3B22-45BB-B688-DBF8BA835992}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {991C45A8-3B22-45BB-B688-DBF8BA835992}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {991C45A8-3B22-45BB-B688-DBF8BA835992}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {991C45A8-3B22-45BB-B688-DBF8BA835992}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B91370A1-A33A-4F7A-BDF2-1E194AFA0869}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B91370A1-A33A-4F7A-BDF2-1E194AFA0869}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B91370A1-A33A-4F7A-BDF2-1E194AFA0869}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B91370A1-A33A-4F7A-BDF2-1E194AFA0869}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F83F663F-89F7-481C-941E-E4FE67867254}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F83F663F-89F7-481C-941E-E4FE67867254}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F83F663F-89F7-481C-941E-E4FE67867254}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F83F663F-89F7-481C-941E-E4FE67867254}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D0D311A2-725A-4413-B7FA-EF61E2A4C0C0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AA8CFAB1-B81C-434E-AA60-C2373B27EB56}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AA8CFAB1-B81C-434E-AA60-C2373B27EB56}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AA8CFAB1-B81C-434E-AA60-C2373B27EB56}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AA8CFAB1-B81C-434E-AA60-C2373B27EB56}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CEE0A26D-0700-446F-B515-5AFF610ACF5E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CEE0A26D-0700-446F-B515-5AFF610ACF5E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CEE0A26D-0700-446F-B515-5AFF610ACF5E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CEE0A26D-0700-446F-B515-5AFF610ACF5E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {08486D58-12AA-4B53-82F7-1B2C62EAE9D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {08486D58-12AA-4B53-82F7-1B2C62EAE9D5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {08486D58-12AA-4B53-82F7-1B2C62EAE9D5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {08486D58-12AA-4B53-82F7-1B2C62EAE9D5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {77D30907-035D-4382-AA43-5A8EE294EA33}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {77D30907-035D-4382-AA43-5A8EE294EA33}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {77D30907-035D-4382-AA43-5A8EE294EA33}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {77D30907-035D-4382-AA43-5A8EE294EA33}.Release|Any CPU.Build.0 = Release|Any CPU
+               {82BD591A-1377-41BD-9B2C-1037574BB935}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {82BD591A-1377-41BD-9B2C-1037574BB935}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {82BD591A-1377-41BD-9B2C-1037574BB935}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {82BD591A-1377-41BD-9B2C-1037574BB935}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1CD96FCF-0288-4FA4-9451-47B0C2206186}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1CD96FCF-0288-4FA4-9451-47B0C2206186}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1CD96FCF-0288-4FA4-9451-47B0C2206186}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1CD96FCF-0288-4FA4-9451-47B0C2206186}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7DA0BC53-8555-4547-BAE6-BD72EF93B109}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7DA0BC53-8555-4547-BAE6-BD72EF93B109}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7DA0BC53-8555-4547-BAE6-BD72EF93B109}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7DA0BC53-8555-4547-BAE6-BD72EF93B109}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6CC04C44-1378-4502-B134-FE6D46B1A4B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6CC04C44-1378-4502-B134-FE6D46B1A4B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6CC04C44-1378-4502-B134-FE6D46B1A4B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6CC04C44-1378-4502-B134-FE6D46B1A4B4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7E62A1A2-DEED-44AD-9FF2-178065ED8A44}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7E62A1A2-DEED-44AD-9FF2-178065ED8A44}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7E62A1A2-DEED-44AD-9FF2-178065ED8A44}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7E62A1A2-DEED-44AD-9FF2-178065ED8A44}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E19661F8-3BCE-48C0-A408-8F712F87A396}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E19661F8-3BCE-48C0-A408-8F712F87A396}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E19661F8-3BCE-48C0-A408-8F712F87A396}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E19661F8-3BCE-48C0-A408-8F712F87A396}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D413E89D-CE81-4766-BBC1-AC17A3FD5C95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D413E89D-CE81-4766-BBC1-AC17A3FD5C95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D413E89D-CE81-4766-BBC1-AC17A3FD5C95}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D413E89D-CE81-4766-BBC1-AC17A3FD5C95}.Release|Any CPU.Build.0 = Release|Any CPU
+               {07BD11C9-C562-4EC3-8B7E-26EA909393C0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {07BD11C9-C562-4EC3-8B7E-26EA909393C0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {07BD11C9-C562-4EC3-8B7E-26EA909393C0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {07BD11C9-C562-4EC3-8B7E-26EA909393C0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7EB08776-A0D3-415F-960A-58869EDFDA02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7EB08776-A0D3-415F-960A-58869EDFDA02}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7EB08776-A0D3-415F-960A-58869EDFDA02}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7EB08776-A0D3-415F-960A-58869EDFDA02}.Release|Any CPU.Build.0 = Release|Any CPU
+               {228F1876-102C-4817-875C-1D80F17BADF9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {228F1876-102C-4817-875C-1D80F17BADF9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {228F1876-102C-4817-875C-1D80F17BADF9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {228F1876-102C-4817-875C-1D80F17BADF9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {923568BE-5A8D-44A1-AA33-348679E6AAD7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {923568BE-5A8D-44A1-AA33-348679E6AAD7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {923568BE-5A8D-44A1-AA33-348679E6AAD7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {923568BE-5A8D-44A1-AA33-348679E6AAD7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C67F17EE-7E1C-4B87-B58B-11458749DD70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C67F17EE-7E1C-4B87-B58B-11458749DD70}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C67F17EE-7E1C-4B87-B58B-11458749DD70}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C67F17EE-7E1C-4B87-B58B-11458749DD70}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C7D8B744-96E6-42A0-82C0-C191C686D485}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C7D8B744-96E6-42A0-82C0-C191C686D485}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C7D8B744-96E6-42A0-82C0-C191C686D485}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C7D8B744-96E6-42A0-82C0-C191C686D485}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2ABC2A54-EF46-42A3-BCCD-A58070E5D2F0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8C367062-EFEF-4765-B1B1-5553608F6A60}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8C367062-EFEF-4765-B1B1-5553608F6A60}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8C367062-EFEF-4765-B1B1-5553608F6A60}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8C367062-EFEF-4765-B1B1-5553608F6A60}.Release|Any CPU.Build.0 = Release|Any CPU
+               {41B3B369-328C-45B8-9F14-224641427A35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {41B3B369-328C-45B8-9F14-224641427A35}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {41B3B369-328C-45B8-9F14-224641427A35}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {41B3B369-328C-45B8-9F14-224641427A35}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3C0E9135-1458-47F6-9076-17FFB1E3E32F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3C0E9135-1458-47F6-9076-17FFB1E3E32F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3C0E9135-1458-47F6-9076-17FFB1E3E32F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3C0E9135-1458-47F6-9076-17FFB1E3E32F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A0DF2D35-BA97-4CAB-90C6-1C4463186C3E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CF9157B2-D8CB-4C1E-9F92-7028CBD13DE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CF9157B2-D8CB-4C1E-9F92-7028CBD13DE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CF9157B2-D8CB-4C1E-9F92-7028CBD13DE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CF9157B2-D8CB-4C1E-9F92-7028CBD13DE0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {465CE08E-9F33-4EA5-9AAB-A03DEBFAF671}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0E57DA52-274B-4E8D-A60D-3B87910B70E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0E57DA52-274B-4E8D-A60D-3B87910B70E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0E57DA52-274B-4E8D-A60D-3B87910B70E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0E57DA52-274B-4E8D-A60D-3B87910B70E0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {993AE1D3-7F06-482F-A90A-A06FD59B3FF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {993AE1D3-7F06-482F-A90A-A06FD59B3FF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {993AE1D3-7F06-482F-A90A-A06FD59B3FF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {993AE1D3-7F06-482F-A90A-A06FD59B3FF5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0C6297C3-66BE-4FD1-B9B0-057950B32E94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0C6297C3-66BE-4FD1-B9B0-057950B32E94}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0C6297C3-66BE-4FD1-B9B0-057950B32E94}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0C6297C3-66BE-4FD1-B9B0-057950B32E94}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7694FE57-6BB7-478E-BB4E-C5187167804F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7694FE57-6BB7-478E-BB4E-C5187167804F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7694FE57-6BB7-478E-BB4E-C5187167804F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7694FE57-6BB7-478E-BB4E-C5187167804F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BEF2A1BC-18C4-4D92-875B-DABEBC2D6B8C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {91FFC577-CF58-43EB-BD06-D0233F588A5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {91FFC577-CF58-43EB-BD06-D0233F588A5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {91FFC577-CF58-43EB-BD06-D0233F588A5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {91FFC577-CF58-43EB-BD06-D0233F588A5B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A91ADA57-5818-4949-B584-CB5303EB8842}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A91ADA57-5818-4949-B584-CB5303EB8842}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A91ADA57-5818-4949-B584-CB5303EB8842}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A91ADA57-5818-4949-B584-CB5303EB8842}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F3D6D651-192F-4209-B272-7F8354D0CDB6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F3D6D651-192F-4209-B272-7F8354D0CDB6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F3D6D651-192F-4209-B272-7F8354D0CDB6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F3D6D651-192F-4209-B272-7F8354D0CDB6}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D358D57B-1CF3-4DBC-B5F7-17B69814B7DE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EC71F150-48A7-4971-A37D-E519ABA830A3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EC71F150-48A7-4971-A37D-E519ABA830A3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EC71F150-48A7-4971-A37D-E519ABA830A3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EC71F150-48A7-4971-A37D-E519ABA830A3}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8BA87CBE-8098-4512-B008-A347E1EA281C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8BA87CBE-8098-4512-B008-A347E1EA281C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8BA87CBE-8098-4512-B008-A347E1EA281C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8BA87CBE-8098-4512-B008-A347E1EA281C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1CB843E3-75E7-4115-9EE6-7B7262AC6C96}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1CB843E3-75E7-4115-9EE6-7B7262AC6C96}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1CB843E3-75E7-4115-9EE6-7B7262AC6C96}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1CB843E3-75E7-4115-9EE6-7B7262AC6C96}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3429D3B3-51DC-4236-9C5A-33C4F9E260FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3429D3B3-51DC-4236-9C5A-33C4F9E260FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3429D3B3-51DC-4236-9C5A-33C4F9E260FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3429D3B3-51DC-4236-9C5A-33C4F9E260FE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {443D0D78-0A65-4288-80C2-B58011E3A5D1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {443D0D78-0A65-4288-80C2-B58011E3A5D1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {443D0D78-0A65-4288-80C2-B58011E3A5D1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {443D0D78-0A65-4288-80C2-B58011E3A5D1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3C248397-71FD-4A63-B4A5-9F2A28C4D983}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3C248397-71FD-4A63-B4A5-9F2A28C4D983}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3C248397-71FD-4A63-B4A5-9F2A28C4D983}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3C248397-71FD-4A63-B4A5-9F2A28C4D983}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CD0A320A-620E-42D0-86CD-2D32F5592E57}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CD0A320A-620E-42D0-86CD-2D32F5592E57}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CD0A320A-620E-42D0-86CD-2D32F5592E57}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CD0A320A-620E-42D0-86CD-2D32F5592E57}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A8B93174-06DF-4FC7-8E3E-45F395A943EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A8B93174-06DF-4FC7-8E3E-45F395A943EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A8B93174-06DF-4FC7-8E3E-45F395A943EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A8B93174-06DF-4FC7-8E3E-45F395A943EB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2A3A7368-D302-4166-820C-8CB18138740C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2A3A7368-D302-4166-820C-8CB18138740C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2A3A7368-D302-4166-820C-8CB18138740C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2A3A7368-D302-4166-820C-8CB18138740C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {114A51BC-8AB2-4B25-A9A7-CB78C43745B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {114A51BC-8AB2-4B25-A9A7-CB78C43745B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {114A51BC-8AB2-4B25-A9A7-CB78C43745B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {114A51BC-8AB2-4B25-A9A7-CB78C43745B8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {57115A1C-8C33-455E-A108-04DCD04808BD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {57115A1C-8C33-455E-A108-04DCD04808BD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {57115A1C-8C33-455E-A108-04DCD04808BD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {57115A1C-8C33-455E-A108-04DCD04808BD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {99FAEDEC-48C5-4B12-8707-13A8CF11CFEF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D86B8C00-9D5A-46D0-8BF0-49E4D7606EAD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8B8B57E4-285A-409A-BA4A-290DE0055301}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8B8B57E4-285A-409A-BA4A-290DE0055301}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8B8B57E4-285A-409A-BA4A-290DE0055301}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8B8B57E4-285A-409A-BA4A-290DE0055301}.Release|Any CPU.Build.0 = Release|Any CPU
+               {54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {54B3EC1E-F177-4E17-B4B9-ADF5C4AEE9B4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {039AD56A-E91B-4803-8328-287F70B61D14}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {039AD56A-E91B-4803-8328-287F70B61D14}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {039AD56A-E91B-4803-8328-287F70B61D14}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {039AD56A-E91B-4803-8328-287F70B61D14}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9F93BC7A-F061-4AF5-AF3C-F81692D20E89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9F93BC7A-F061-4AF5-AF3C-F81692D20E89}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9F93BC7A-F061-4AF5-AF3C-F81692D20E89}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9F93BC7A-F061-4AF5-AF3C-F81692D20E89}.Release|Any CPU.Build.0 = Release|Any CPU
+               {75114723-49E9-4351-A4FD-36DB9BC044E6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {75114723-49E9-4351-A4FD-36DB9BC044E6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {75114723-49E9-4351-A4FD-36DB9BC044E6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {75114723-49E9-4351-A4FD-36DB9BC044E6}.Release|Any CPU.Build.0 = Release|Any CPU
+               {61C7FBD9-B531-4292-8456-AAA6F9E650C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {61C7FBD9-B531-4292-8456-AAA6F9E650C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {61C7FBD9-B531-4292-8456-AAA6F9E650C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {61C7FBD9-B531-4292-8456-AAA6F9E650C4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {417E7FEB-E054-44F0-81FF-A896F4018DC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {417E7FEB-E054-44F0-81FF-A896F4018DC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {417E7FEB-E054-44F0-81FF-A896F4018DC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {417E7FEB-E054-44F0-81FF-A896F4018DC7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2E94B160-349C-4138-8922-208B3B8175F2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2E94B160-349C-4138-8922-208B3B8175F2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2E94B160-349C-4138-8922-208B3B8175F2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2E94B160-349C-4138-8922-208B3B8175F2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {954D1C17-36C2-4EE1-A1B6-144E8AB18FB4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9ABB7BB9-5EA1-4081-B205-5658A602C1F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9ABB7BB9-5EA1-4081-B205-5658A602C1F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9ABB7BB9-5EA1-4081-B205-5658A602C1F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9ABB7BB9-5EA1-4081-B205-5658A602C1F5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {21F6D72C-2C4D-4108-9BC5-C01FAFFCEF8E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FBA53F04-D998-43D8-8538-C11EE71EEB70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FBA53F04-D998-43D8-8538-C11EE71EEB70}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FBA53F04-D998-43D8-8538-C11EE71EEB70}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FBA53F04-D998-43D8-8538-C11EE71EEB70}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3D24376B-ECC8-4E7B-9433-C77CC67880AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3D24376B-ECC8-4E7B-9433-C77CC67880AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3D24376B-ECC8-4E7B-9433-C77CC67880AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3D24376B-ECC8-4E7B-9433-C77CC67880AA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2BAFB878-D329-46A5-93AF-5A4ECD403A13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2BAFB878-D329-46A5-93AF-5A4ECD403A13}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2BAFB878-D329-46A5-93AF-5A4ECD403A13}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2BAFB878-D329-46A5-93AF-5A4ECD403A13}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DB6937A9-D27A-42AB-A044-1DB4B1F97414}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DB6937A9-D27A-42AB-A044-1DB4B1F97414}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DB6937A9-D27A-42AB-A044-1DB4B1F97414}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DB6937A9-D27A-42AB-A044-1DB4B1F97414}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5CD66EA1-51EB-48EE-8C1C-DDFD23E22C38}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7E7B683B-FA73-492D-A59B-E13AF28F8B21}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7E7B683B-FA73-492D-A59B-E13AF28F8B21}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7E7B683B-FA73-492D-A59B-E13AF28F8B21}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7E7B683B-FA73-492D-A59B-E13AF28F8B21}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0DA63190-E6E1-41C5-B683-A54FADBE61CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0DA63190-E6E1-41C5-B683-A54FADBE61CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0DA63190-E6E1-41C5-B683-A54FADBE61CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0DA63190-E6E1-41C5-B683-A54FADBE61CB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AE80331E-4C95-4F65-BE43-0C3011661AE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AE80331E-4C95-4F65-BE43-0C3011661AE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AE80331E-4C95-4F65-BE43-0C3011661AE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AE80331E-4C95-4F65-BE43-0C3011661AE1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B0995E00-BF37-4B8A-8229-285C060E5957}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B0995E00-BF37-4B8A-8229-285C060E5957}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B0995E00-BF37-4B8A-8229-285C060E5957}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B0995E00-BF37-4B8A-8229-285C060E5957}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E572DA55-C0E6-42BA-9BCF-05B2C777D15B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E572DA55-C0E6-42BA-9BCF-05B2C777D15B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E572DA55-C0E6-42BA-9BCF-05B2C777D15B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E572DA55-C0E6-42BA-9BCF-05B2C777D15B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A581C8A4-F031-43BA-A744-042ECD6EA6FE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A581C8A4-F031-43BA-A744-042ECD6EA6FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A581C8A4-F031-43BA-A744-042ECD6EA6FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A581C8A4-F031-43BA-A744-042ECD6EA6FE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {20A3B729-8CAB-4480-84BF-07E8CECE4CDB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {20A3B729-8CAB-4480-84BF-07E8CECE4CDB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {20A3B729-8CAB-4480-84BF-07E8CECE4CDB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {20A3B729-8CAB-4480-84BF-07E8CECE4CDB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E90544E8-C031-49EE-BB6F-8688382E8618}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E90544E8-C031-49EE-BB6F-8688382E8618}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E90544E8-C031-49EE-BB6F-8688382E8618}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E90544E8-C031-49EE-BB6F-8688382E8618}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DC1A3B5B-AFAC-4EE0-B9B8-6664F9E744B7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3353D8EA-FB17-4A46-B7B6-82D55B12BD5D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4F614C6C-A83E-4C3C-859B-0548391F519E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4F614C6C-A83E-4C3C-859B-0548391F519E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4F614C6C-A83E-4C3C-859B-0548391F519E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4F614C6C-A83E-4C3C-859B-0548391F519E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F3D909C0-D548-4FBC-BA04-BC8A445954EA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F3D909C0-D548-4FBC-BA04-BC8A445954EA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F3D909C0-D548-4FBC-BA04-BC8A445954EA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F3D909C0-D548-4FBC-BA04-BC8A445954EA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C410B7A1-AC09-4CBB-9F20-AC9473811B40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C410B7A1-AC09-4CBB-9F20-AC9473811B40}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C410B7A1-AC09-4CBB-9F20-AC9473811B40}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C410B7A1-AC09-4CBB-9F20-AC9473811B40}.Release|Any CPU.Build.0 = Release|Any CPU
+               {45FB5242-B51C-43BC-A7B5-75E5E17C4E95}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {45FB5242-B51C-43BC-A7B5-75E5E17C4E95}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {45FB5242-B51C-43BC-A7B5-75E5E17C4E95}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {45FB5242-B51C-43BC-A7B5-75E5E17C4E95}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CE1B7764-9679-451A-9ACB-697088B116F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CE1B7764-9679-451A-9ACB-697088B116F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CE1B7764-9679-451A-9ACB-697088B116F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CE1B7764-9679-451A-9ACB-697088B116F1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {53BEA1F5-AA08-429E-BD7A-EAD4DF7B9EE1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D5F1C909-8875-4D37-8CC1-30851258C594}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D5F1C909-8875-4D37-8CC1-30851258C594}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D5F1C909-8875-4D37-8CC1-30851258C594}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D5F1C909-8875-4D37-8CC1-30851258C594}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1D746BE5-4458-4F6F-B87F-8B3EEEE2DD46}.Release|Any CPU.Build.0 = Release|Any CPU
+               {93406A57-422B-4A7E-886A-B37F2E97DB78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {93406A57-422B-4A7E-886A-B37F2E97DB78}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {93406A57-422B-4A7E-886A-B37F2E97DB78}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {93406A57-422B-4A7E-886A-B37F2E97DB78}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C035D4D2-D112-49A6-87B8-E47469BBDA4F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C035D4D2-D112-49A6-87B8-E47469BBDA4F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C035D4D2-D112-49A6-87B8-E47469BBDA4F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C035D4D2-D112-49A6-87B8-E47469BBDA4F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3AD60A26-BA14-4B61-9293-D98C1BF9552C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3AD60A26-BA14-4B61-9293-D98C1BF9552C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3AD60A26-BA14-4B61-9293-D98C1BF9552C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3AD60A26-BA14-4B61-9293-D98C1BF9552C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {83FDEDF8-E46D-437E-8CEF-DD2C36E05324}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {83FDEDF8-E46D-437E-8CEF-DD2C36E05324}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {83FDEDF8-E46D-437E-8CEF-DD2C36E05324}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {83FDEDF8-E46D-437E-8CEF-DD2C36E05324}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8E750A9D-7421-408C-B859-62A8C92D3FE2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8E750A9D-7421-408C-B859-62A8C92D3FE2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8E750A9D-7421-408C-B859-62A8C92D3FE2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8E750A9D-7421-408C-B859-62A8C92D3FE2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1B8CCB0F-D7EC-421E-B5E3-9F107139FE7E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {74D8D6B9-1D98-4F19-A834-A0C603AD1482}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {74D8D6B9-1D98-4F19-A834-A0C603AD1482}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {74D8D6B9-1D98-4F19-A834-A0C603AD1482}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {74D8D6B9-1D98-4F19-A834-A0C603AD1482}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5889C0B9-25DF-4405-A240-AC0615F4B3EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5889C0B9-25DF-4405-A240-AC0615F4B3EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5889C0B9-25DF-4405-A240-AC0615F4B3EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5889C0B9-25DF-4405-A240-AC0615F4B3EB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0EDE201B-DEE2-486E-8DF2-F18F9D6239B9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5F59D153-79FB-4348-B615-419F2DA69166}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5F59D153-79FB-4348-B615-419F2DA69166}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5F59D153-79FB-4348-B615-419F2DA69166}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5F59D153-79FB-4348-B615-419F2DA69166}.Release|Any CPU.Build.0 = Release|Any CPU
+               {74E571CD-0506-4A52-B780-FDA9445675FB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {74E571CD-0506-4A52-B780-FDA9445675FB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {74E571CD-0506-4A52-B780-FDA9445675FB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {74E571CD-0506-4A52-B780-FDA9445675FB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F70BF1C1-23E0-449D-966D-0A0657F0AB02}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F70BF1C1-23E0-449D-966D-0A0657F0AB02}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F70BF1C1-23E0-449D-966D-0A0657F0AB02}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F70BF1C1-23E0-449D-966D-0A0657F0AB02}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9F8B1088-2610-4E4D-A6E4-EDF2771104D9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9F8B1088-2610-4E4D-A6E4-EDF2771104D9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9F8B1088-2610-4E4D-A6E4-EDF2771104D9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9F8B1088-2610-4E4D-A6E4-EDF2771104D9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {64E625C0-AA4E-44DC-98F4-352D552F2EF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {64E625C0-AA4E-44DC-98F4-352D552F2EF8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {64E625C0-AA4E-44DC-98F4-352D552F2EF8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {64E625C0-AA4E-44DC-98F4-352D552F2EF8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8A46F1CA-4F8B-4EE5-A5E3-AC67291311F3}.Release|Any CPU.Build.0 = Release|Any CPU
+               {02E0DC5C-2182-45D8-95E3-FF5ED16C318E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {02E0DC5C-2182-45D8-95E3-FF5ED16C318E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {02E0DC5C-2182-45D8-95E3-FF5ED16C318E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {02E0DC5C-2182-45D8-95E3-FF5ED16C318E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1500FD28-7DB2-40B3-BAB2-A8FBE3960A4E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BC669CAE-D6F8-49B9-8AC3-68B48BD70587}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BC669CAE-D6F8-49B9-8AC3-68B48BD70587}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BC669CAE-D6F8-49B9-8AC3-68B48BD70587}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BC669CAE-D6F8-49B9-8AC3-68B48BD70587}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E8E13C56-208F-44E9-B0F9-F1A4996C595A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E8E13C56-208F-44E9-B0F9-F1A4996C595A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E8E13C56-208F-44E9-B0F9-F1A4996C595A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E8E13C56-208F-44E9-B0F9-F1A4996C595A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C4643395-6B5B-47D9-BD50-9F6804478AFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C4643395-6B5B-47D9-BD50-9F6804478AFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C4643395-6B5B-47D9-BD50-9F6804478AFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C4643395-6B5B-47D9-BD50-9F6804478AFD}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E8DC0734-B7DB-4CA3-9DF2-4103F35B8A39}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9A686629-45E0-431D-975C-BEDF137D75F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9A686629-45E0-431D-975C-BEDF137D75F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9A686629-45E0-431D-975C-BEDF137D75F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9A686629-45E0-431D-975C-BEDF137D75F1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E8BE3F98-6FE7-4EBD-8FAC-7CDADFE26096}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4F4AE80E-7DB0-49A9-B508-80A328137181}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4F4AE80E-7DB0-49A9-B508-80A328137181}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4F4AE80E-7DB0-49A9-B508-80A328137181}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4F4AE80E-7DB0-49A9-B508-80A328137181}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1AC76475-2AAB-431E-BD97-444CD5AF1191}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1AC76475-2AAB-431E-BD97-444CD5AF1191}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1AC76475-2AAB-431E-BD97-444CD5AF1191}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1AC76475-2AAB-431E-BD97-444CD5AF1191}.Release|Any CPU.Build.0 = Release|Any CPU
+               {05D8BAFE-64FA-4F09-AC7B-86627DFF136F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {05D8BAFE-64FA-4F09-AC7B-86627DFF136F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {05D8BAFE-64FA-4F09-AC7B-86627DFF136F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {05D8BAFE-64FA-4F09-AC7B-86627DFF136F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {33307B59-24A6-4100-9E0C-F65613FE95AA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {33307B59-24A6-4100-9E0C-F65613FE95AA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {33307B59-24A6-4100-9E0C-F65613FE95AA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {33307B59-24A6-4100-9E0C-F65613FE95AA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FB9F6B34-05B5-444F-885E-FF87DA721F12}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FB9F6B34-05B5-444F-885E-FF87DA721F12}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FB9F6B34-05B5-444F-885E-FF87DA721F12}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FB9F6B34-05B5-444F-885E-FF87DA721F12}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D8ECB9E8-884D-4BC4-8854-BA89701C9FC3}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A05D5D7B-744A-4E62-9B38-4B5149AA955A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A05D5D7B-744A-4E62-9B38-4B5149AA955A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A05D5D7B-744A-4E62-9B38-4B5149AA955A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A05D5D7B-744A-4E62-9B38-4B5149AA955A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C1BA77F3-938B-4598-BD75-5E9578827F47}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C1BA77F3-938B-4598-BD75-5E9578827F47}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C1BA77F3-938B-4598-BD75-5E9578827F47}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C1BA77F3-938B-4598-BD75-5E9578827F47}.Release|Any CPU.Build.0 = Release|Any CPU
+               {ADF802C8-DED6-4991-A5AE-34B8F1440EE4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {ADF802C8-DED6-4991-A5AE-34B8F1440EE4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {ADF802C8-DED6-4991-A5AE-34B8F1440EE4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {ADF802C8-DED6-4991-A5AE-34B8F1440EE4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EB9696AB-2203-48F1-92B4-86BD28340248}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EB9696AB-2203-48F1-92B4-86BD28340248}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EB9696AB-2203-48F1-92B4-86BD28340248}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EB9696AB-2203-48F1-92B4-86BD28340248}.Release|Any CPU.Build.0 = Release|Any CPU
+               {704ADB45-E58F-432D-955A-69E3B5DDEE77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {704ADB45-E58F-432D-955A-69E3B5DDEE77}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {704ADB45-E58F-432D-955A-69E3B5DDEE77}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {704ADB45-E58F-432D-955A-69E3B5DDEE77}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9A7E3AA8-1EB4-4A43-A806-636E6B220A76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9A7E3AA8-1EB4-4A43-A806-636E6B220A76}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9A7E3AA8-1EB4-4A43-A806-636E6B220A76}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9A7E3AA8-1EB4-4A43-A806-636E6B220A76}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1A3E2D13-1CE7-43CB-9748-9C7D586A897F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1A3E2D13-1CE7-43CB-9748-9C7D586A897F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1A3E2D13-1CE7-43CB-9748-9C7D586A897F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1A3E2D13-1CE7-43CB-9748-9C7D586A897F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AC2AB4A1-8005-4458-8B2B-614DA9BBC644}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AC2AB4A1-8005-4458-8B2B-614DA9BBC644}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AC2AB4A1-8005-4458-8B2B-614DA9BBC644}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AC2AB4A1-8005-4458-8B2B-614DA9BBC644}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D8A2B8F2-F52B-44D5-A868-C344682749E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D8A2B8F2-F52B-44D5-A868-C344682749E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D8A2B8F2-F52B-44D5-A868-C344682749E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D8A2B8F2-F52B-44D5-A868-C344682749E2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E34212A3-F152-4A6F-88F7-7A4D0324D11C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E34212A3-F152-4A6F-88F7-7A4D0324D11C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E34212A3-F152-4A6F-88F7-7A4D0324D11C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E34212A3-F152-4A6F-88F7-7A4D0324D11C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {47FD8F07-F207-478D-B9D7-4CE5DC4A52B6}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B1643A3E-B53E-4264-8CA3-27533EF662CB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B1643A3E-B53E-4264-8CA3-27533EF662CB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B1643A3E-B53E-4264-8CA3-27533EF662CB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B1643A3E-B53E-4264-8CA3-27533EF662CB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2E8547F9-AE9C-4179-BC88-C0695369170B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2E8547F9-AE9C-4179-BC88-C0695369170B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2E8547F9-AE9C-4179-BC88-C0695369170B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2E8547F9-AE9C-4179-BC88-C0695369170B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {10779E1B-BD7F-4FE1-81BB-E4EE8BAA0B83}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0BE7F9C7-58D0-42F5-A177-1DA6CAE06A94}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E0DEF2F1-BC80-48E8-8387-13CC5B03BE5B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C60066A8-6929-44CD-BD9F-4556AFFC0087}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C60066A8-6929-44CD-BD9F-4556AFFC0087}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C60066A8-6929-44CD-BD9F-4556AFFC0087}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C60066A8-6929-44CD-BD9F-4556AFFC0087}.Release|Any CPU.Build.0 = Release|Any CPU
+               {875503E2-28DA-4301-99D4-9A897BDC06F1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {875503E2-28DA-4301-99D4-9A897BDC06F1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {875503E2-28DA-4301-99D4-9A897BDC06F1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {875503E2-28DA-4301-99D4-9A897BDC06F1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C776055D-B157-4022-8926-DC1DCE41832F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C776055D-B157-4022-8926-DC1DCE41832F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C776055D-B157-4022-8926-DC1DCE41832F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C776055D-B157-4022-8926-DC1DCE41832F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C18ABE89-33D2-4780-93BE-AB89B8187581}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C18ABE89-33D2-4780-93BE-AB89B8187581}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C18ABE89-33D2-4780-93BE-AB89B8187581}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C18ABE89-33D2-4780-93BE-AB89B8187581}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CE2E44C6-7B7F-43BB-992D-44749DFA7D71}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CE2E44C6-7B7F-43BB-992D-44749DFA7D71}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CE2E44C6-7B7F-43BB-992D-44749DFA7D71}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CE2E44C6-7B7F-43BB-992D-44749DFA7D71}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DD189B9C-5CB4-4CB8-988C-90C36AB0BDA2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6D34CFEC-13B9-4E34-A253-CE4E46322542}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6D34CFEC-13B9-4E34-A253-CE4E46322542}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6D34CFEC-13B9-4E34-A253-CE4E46322542}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6D34CFEC-13B9-4E34-A253-CE4E46322542}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FD8BB787-B115-4DED-ACB0-2858546FC16D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FD8BB787-B115-4DED-ACB0-2858546FC16D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FD8BB787-B115-4DED-ACB0-2858546FC16D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FD8BB787-B115-4DED-ACB0-2858546FC16D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {42F035A7-4FCD-4526-9D82-E7D3D4350AC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {42F035A7-4FCD-4526-9D82-E7D3D4350AC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {42F035A7-4FCD-4526-9D82-E7D3D4350AC1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {42F035A7-4FCD-4526-9D82-E7D3D4350AC1}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D80FD091-3F53-4879-B0BB-08897139CF97}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D80FD091-3F53-4879-B0BB-08897139CF97}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D80FD091-3F53-4879-B0BB-08897139CF97}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D80FD091-3F53-4879-B0BB-08897139CF97}.Release|Any CPU.Build.0 = Release|Any CPU
+               {CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {CC4B4666-F6F2-4E54-8AF9-656A76A3F0DF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {83E7D015-CA2B-4B3D-A764-DB8C3A9B3EEE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6A74098E-D4D5-4D6F-A673-8E95CBF8726E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6A74098E-D4D5-4D6F-A673-8E95CBF8726E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6A74098E-D4D5-4D6F-A673-8E95CBF8726E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6A74098E-D4D5-4D6F-A673-8E95CBF8726E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {03DD638D-4D60-42BB-94D6-3C7112C62C20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {03DD638D-4D60-42BB-94D6-3C7112C62C20}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {03DD638D-4D60-42BB-94D6-3C7112C62C20}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {03DD638D-4D60-42BB-94D6-3C7112C62C20}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5462ACB9-395E-4152-8292-B24612453210}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5462ACB9-395E-4152-8292-B24612453210}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5462ACB9-395E-4152-8292-B24612453210}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5462ACB9-395E-4152-8292-B24612453210}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A12A96AC-3AAD-417A-90FB-B40573189AC4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A12A96AC-3AAD-417A-90FB-B40573189AC4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A12A96AC-3AAD-417A-90FB-B40573189AC4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A12A96AC-3AAD-417A-90FB-B40573189AC4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {6E6F15CD-2244-4DD8-AD9E-02FECE17DB0D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {36C5B564-9E57-4DD3-ADA4-4EC79402B02E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {36C5B564-9E57-4DD3-ADA4-4EC79402B02E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {36C5B564-9E57-4DD3-ADA4-4EC79402B02E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {36C5B564-9E57-4DD3-ADA4-4EC79402B02E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {68AE2077-862E-4351-A159-D3CD817059CF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {68AE2077-862E-4351-A159-D3CD817059CF}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {68AE2077-862E-4351-A159-D3CD817059CF}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {68AE2077-862E-4351-A159-D3CD817059CF}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4EEAD998-2E72-4435-9BC3-9A3C1DDC59A7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A7DB00D7-81EF-4197-9F87-D6EBDFDBD88E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4D33E714-F07E-44AC-9998-705170E29818}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4D33E714-F07E-44AC-9998-705170E29818}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4D33E714-F07E-44AC-9998-705170E29818}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4D33E714-F07E-44AC-9998-705170E29818}.Release|Any CPU.Build.0 = Release|Any CPU
+               {05D23556-E085-4A30-A6AF-8F39651CA284}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {05D23556-E085-4A30-A6AF-8F39651CA284}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {05D23556-E085-4A30-A6AF-8F39651CA284}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {05D23556-E085-4A30-A6AF-8F39651CA284}.Release|Any CPU.Build.0 = Release|Any CPU
+               {90405849-4C66-4BF7-B9F6-E0D81995231B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {90405849-4C66-4BF7-B9F6-E0D81995231B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {90405849-4C66-4BF7-B9F6-E0D81995231B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {90405849-4C66-4BF7-B9F6-E0D81995231B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FCB4DC7D-7B4C-4BD6-98CA-4F5AA08CB18B}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A0CB0E7E-B383-4EE6-A7B8-E553318C3DBE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5E2117E9-A72D-4842-AD28-87FE0AAF5417}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5E2117E9-A72D-4842-AD28-87FE0AAF5417}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5E2117E9-A72D-4842-AD28-87FE0AAF5417}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5E2117E9-A72D-4842-AD28-87FE0AAF5417}.Release|Any CPU.Build.0 = Release|Any CPU
+               {46C0366B-72E7-4482-A6C4-4C8CE8318BDA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {46C0366B-72E7-4482-A6C4-4C8CE8318BDA}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {46C0366B-72E7-4482-A6C4-4C8CE8318BDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {46C0366B-72E7-4482-A6C4-4C8CE8318BDA}.Release|Any CPU.Build.0 = Release|Any CPU
+               {AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {AAE2ADEF-2160-40D7-B7E4-37C96ADBAC8C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {82B719BA-7803-4832-B837-42928A0E1CEB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {82B719BA-7803-4832-B837-42928A0E1CEB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {82B719BA-7803-4832-B837-42928A0E1CEB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {82B719BA-7803-4832-B837-42928A0E1CEB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8A83591A-6906-48BF-BB8E-1515D264B2D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8A83591A-6906-48BF-BB8E-1515D264B2D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8A83591A-6906-48BF-BB8E-1515D264B2D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8A83591A-6906-48BF-BB8E-1515D264B2D7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {5FA3AE70-F92C-4D4E-80A6-2B7BD55655BB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BE71D058-35CB-4623-AA66-631C7EB5F139}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BE71D058-35CB-4623-AA66-631C7EB5F139}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BE71D058-35CB-4623-AA66-631C7EB5F139}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BE71D058-35CB-4623-AA66-631C7EB5F139}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7F42459F-0D03-42BF-BC81-7EDF54F78C05}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7F42459F-0D03-42BF-BC81-7EDF54F78C05}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7F42459F-0D03-42BF-BC81-7EDF54F78C05}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7F42459F-0D03-42BF-BC81-7EDF54F78C05}.Release|Any CPU.Build.0 = Release|Any CPU
+               {36096AD5-68E4-46E0-B9A0-FC29DBCC9B15}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {36096AD5-68E4-46E0-B9A0-FC29DBCC9B15}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {36096AD5-68E4-46E0-B9A0-FC29DBCC9B15}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {36096AD5-68E4-46E0-B9A0-FC29DBCC9B15}.Release|Any CPU.Build.0 = Release|Any CPU
+               {030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {030FB9AF-B3A5-4FCB-B59C-E1C90675CD42}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0089F43D-5A83-46A4-9299-A98B0A86A70A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0089F43D-5A83-46A4-9299-A98B0A86A70A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0089F43D-5A83-46A4-9299-A98B0A86A70A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0089F43D-5A83-46A4-9299-A98B0A86A70A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {E9421151-F425-415F-8D32-5F28974E3C72}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {E9421151-F425-415F-8D32-5F28974E3C72}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {E9421151-F425-415F-8D32-5F28974E3C72}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {E9421151-F425-415F-8D32-5F28974E3C72}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7A8432CA-9024-4496-A751-18AEFC8932E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7A8432CA-9024-4496-A751-18AEFC8932E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7A8432CA-9024-4496-A751-18AEFC8932E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7A8432CA-9024-4496-A751-18AEFC8932E7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {3DB9B990-AE64-4B64-8A75-3797970AF64A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {3DB9B990-AE64-4B64-8A75-3797970AF64A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {3DB9B990-AE64-4B64-8A75-3797970AF64A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {3DB9B990-AE64-4B64-8A75-3797970AF64A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9BDDA23D-1ABF-477A-AAA6-CD489033208E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9BDDA23D-1ABF-477A-AAA6-CD489033208E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9BDDA23D-1ABF-477A-AAA6-CD489033208E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9BDDA23D-1ABF-477A-AAA6-CD489033208E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9E5FB1DD-0691-445E-8048-C90981B6948D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9E5FB1DD-0691-445E-8048-C90981B6948D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9E5FB1DD-0691-445E-8048-C90981B6948D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9E5FB1DD-0691-445E-8048-C90981B6948D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {00562AD9-16A9-4A82-8236-9FFCC0FC9B26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {00562AD9-16A9-4A82-8236-9FFCC0FC9B26}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {00562AD9-16A9-4A82-8236-9FFCC0FC9B26}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {00562AD9-16A9-4A82-8236-9FFCC0FC9B26}.Release|Any CPU.Build.0 = Release|Any CPU
+               {7AC4183B-FA37-45D9-9069-47336EB37D0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {7AC4183B-FA37-45D9-9069-47336EB37D0A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {7AC4183B-FA37-45D9-9069-47336EB37D0A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {7AC4183B-FA37-45D9-9069-47336EB37D0A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2D2DDD2D-5AE7-458B-B626-4475D671A7F9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2D2DDD2D-5AE7-458B-B626-4475D671A7F9}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2D2DDD2D-5AE7-458B-B626-4475D671A7F9}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2D2DDD2D-5AE7-458B-B626-4475D671A7F9}.Release|Any CPU.Build.0 = Release|Any CPU
+               {61E5E4CF-E818-44D1-B718-70EE46F2B85D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {61E5E4CF-E818-44D1-B718-70EE46F2B85D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {61E5E4CF-E818-44D1-B718-70EE46F2B85D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {61E5E4CF-E818-44D1-B718-70EE46F2B85D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {BB5DAECF-1B34-480C-B8EC-C1DAEEE56B89}.Release|Any CPU.Build.0 = Release|Any CPU
+               {75C86F9F-5D58-4DDE-AADE-362D15CD395A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {75C86F9F-5D58-4DDE-AADE-362D15CD395A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {75C86F9F-5D58-4DDE-AADE-362D15CD395A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {75C86F9F-5D58-4DDE-AADE-362D15CD395A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FD39D99F-0489-4AA5-990D-46A03BB78A1A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FD39D99F-0489-4AA5-990D-46A03BB78A1A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FD39D99F-0489-4AA5-990D-46A03BB78A1A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FD39D99F-0489-4AA5-990D-46A03BB78A1A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D5662433-D835-47CA-BA45-E186255D48EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D5662433-D835-47CA-BA45-E186255D48EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D5662433-D835-47CA-BA45-E186255D48EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D5662433-D835-47CA-BA45-E186255D48EB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FE15E8BF-7546-4A4E-AD88-55AED8C3CBB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FE15E8BF-7546-4A4E-AD88-55AED8C3CBB3}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FE15E8BF-7546-4A4E-AD88-55AED8C3CBB3}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FE15E8BF-7546-4A4E-AD88-55AED8C3CBB3}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EDE6E598-F2C2-4E50-8D2C-F9EE48DD52BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EDE6E598-F2C2-4E50-8D2C-F9EE48DD52BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EDE6E598-F2C2-4E50-8D2C-F9EE48DD52BE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EDE6E598-F2C2-4E50-8D2C-F9EE48DD52BE}.Release|Any CPU.Build.0 = Release|Any CPU
+               {449CB31C-BD0B-4350-A82A-D0F4EE76F1C8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {449CB31C-BD0B-4350-A82A-D0F4EE76F1C8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {449CB31C-BD0B-4350-A82A-D0F4EE76F1C8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {449CB31C-BD0B-4350-A82A-D0F4EE76F1C8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FC137D2C-3EE5-4DDC-8BE8-17DCCC4624DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FC137D2C-3EE5-4DDC-8BE8-17DCCC4624DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FC137D2C-3EE5-4DDC-8BE8-17DCCC4624DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FC137D2C-3EE5-4DDC-8BE8-17DCCC4624DC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {06851BAA-6E25-4DEA-87E6-93D5BE894976}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {06851BAA-6E25-4DEA-87E6-93D5BE894976}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {06851BAA-6E25-4DEA-87E6-93D5BE894976}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {06851BAA-6E25-4DEA-87E6-93D5BE894976}.Release|Any CPU.Build.0 = Release|Any CPU
+               {86450EE5-13B2-4F59-8C0B-13EEF614ED79}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {86450EE5-13B2-4F59-8C0B-13EEF614ED79}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {86450EE5-13B2-4F59-8C0B-13EEF614ED79}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {86450EE5-13B2-4F59-8C0B-13EEF614ED79}.Release|Any CPU.Build.0 = Release|Any CPU
+               {41BDC045-34C4-490C-A7B7-C826689DE03F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {41BDC045-34C4-490C-A7B7-C826689DE03F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {41BDC045-34C4-490C-A7B7-C826689DE03F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {41BDC045-34C4-490C-A7B7-C826689DE03F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EC155D19-0F07-4ED0-BB51-A1792B4AF2EC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EC155D19-0F07-4ED0-BB51-A1792B4AF2EC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EC155D19-0F07-4ED0-BB51-A1792B4AF2EC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EC155D19-0F07-4ED0-BB51-A1792B4AF2EC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {D8AD74BA-B169-400B-89EE-BC64E04E5A88}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {D8AD74BA-B169-400B-89EE-BC64E04E5A88}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {D8AD74BA-B169-400B-89EE-BC64E04E5A88}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {D8AD74BA-B169-400B-89EE-BC64E04E5A88}.Release|Any CPU.Build.0 = Release|Any CPU
+               {41117A9D-0DAC-42F2-BBB7-44621610838F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {41117A9D-0DAC-42F2-BBB7-44621610838F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {41117A9D-0DAC-42F2-BBB7-44621610838F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {41117A9D-0DAC-42F2-BBB7-44621610838F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F7093FF5-BB89-471B-83F6-509C7B32360D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F7093FF5-BB89-471B-83F6-509C7B32360D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F7093FF5-BB89-471B-83F6-509C7B32360D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F7093FF5-BB89-471B-83F6-509C7B32360D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2BD41344-9F19-4972-B3A7-6CAA80E60F1F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2BD41344-9F19-4972-B3A7-6CAA80E60F1F}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2BD41344-9F19-4972-B3A7-6CAA80E60F1F}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2BD41344-9F19-4972-B3A7-6CAA80E60F1F}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8C685929-4B19-408E-975E-D14039889A7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8C685929-4B19-408E-975E-D14039889A7A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8C685929-4B19-408E-975E-D14039889A7A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8C685929-4B19-408E-975E-D14039889A7A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C27D0C3E-DD75-4E27-B70A-50D9DF48ECC0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C27D0C3E-DD75-4E27-B70A-50D9DF48ECC0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C27D0C3E-DD75-4E27-B70A-50D9DF48ECC0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C27D0C3E-DD75-4E27-B70A-50D9DF48ECC0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {708A9F7F-4511-4AA3-A35E-3C9FB945E103}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {708A9F7F-4511-4AA3-A35E-3C9FB945E103}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {708A9F7F-4511-4AA3-A35E-3C9FB945E103}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {708A9F7F-4511-4AA3-A35E-3C9FB945E103}.Release|Any CPU.Build.0 = Release|Any CPU
+               {1FE96A47-EA1F-4043-95C0-9A511AA095D7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {1FE96A47-EA1F-4043-95C0-9A511AA095D7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {1FE96A47-EA1F-4043-95C0-9A511AA095D7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {1FE96A47-EA1F-4043-95C0-9A511AA095D7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {2A9DFBB5-AE84-489E-BD5C-19A721461836}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {2A9DFBB5-AE84-489E-BD5C-19A721461836}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {2A9DFBB5-AE84-489E-BD5C-19A721461836}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {2A9DFBB5-AE84-489E-BD5C-19A721461836}.Release|Any CPU.Build.0 = Release|Any CPU
+               {20594AA3-D09B-4751-93B6-16AED2B965BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {20594AA3-D09B-4751-93B6-16AED2B965BC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {20594AA3-D09B-4751-93B6-16AED2B965BC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {20594AA3-D09B-4751-93B6-16AED2B965BC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9B796831-5CFB-4783-9CB6-56ABE02AA4B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9B796831-5CFB-4783-9CB6-56ABE02AA4B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9B796831-5CFB-4783-9CB6-56ABE02AA4B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9B796831-5CFB-4783-9CB6-56ABE02AA4B4}.Release|Any CPU.Build.0 = Release|Any CPU
+               {0153FD8E-87C1-4828-BA17-5DCE9ACEF3A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {0153FD8E-87C1-4828-BA17-5DCE9ACEF3A2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {0153FD8E-87C1-4828-BA17-5DCE9ACEF3A2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {0153FD8E-87C1-4828-BA17-5DCE9ACEF3A2}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DEA6829A-AAAA-4927-8C14-C6B22F4E875E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DEA6829A-AAAA-4927-8C14-C6B22F4E875E}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DEA6829A-AAAA-4927-8C14-C6B22F4E875E}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DEA6829A-AAAA-4927-8C14-C6B22F4E875E}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A5E05FB9-6ACC-49B1-86DE-233378C8A616}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A5E05FB9-6ACC-49B1-86DE-233378C8A616}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A5E05FB9-6ACC-49B1-86DE-233378C8A616}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A5E05FB9-6ACC-49B1-86DE-233378C8A616}.Release|Any CPU.Build.0 = Release|Any CPU
+               {33772F45-1E93-4C47-87CD-74B75C304345}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {33772F45-1E93-4C47-87CD-74B75C304345}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {33772F45-1E93-4C47-87CD-74B75C304345}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {33772F45-1E93-4C47-87CD-74B75C304345}.Release|Any CPU.Build.0 = Release|Any CPU
+               {FA366919-E9AA-4B3B-BEE0-753010021EBC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {FA366919-E9AA-4B3B-BEE0-753010021EBC}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {FA366919-E9AA-4B3B-BEE0-753010021EBC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {FA366919-E9AA-4B3B-BEE0-753010021EBC}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C06DBBA4-D7A1-4B22-A513-A670C489392C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C06DBBA4-D7A1-4B22-A513-A670C489392C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C06DBBA4-D7A1-4B22-A513-A670C489392C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C06DBBA4-D7A1-4B22-A513-A670C489392C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F4225D55-F85F-41CF-B886-2EA80BC621C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F4225D55-F85F-41CF-B886-2EA80BC621C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F4225D55-F85F-41CF-B886-2EA80BC621C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F4225D55-F85F-41CF-B886-2EA80BC621C7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8ABEAF4B-A0E4-486D-8DEA-F8F1A1B13835}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8ABEAF4B-A0E4-486D-8DEA-F8F1A1B13835}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8ABEAF4B-A0E4-486D-8DEA-F8F1A1B13835}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8ABEAF4B-A0E4-486D-8DEA-F8F1A1B13835}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B23EA10F-1BAC-46D0-AFAD-F8E87F9BF5EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B23EA10F-1BAC-46D0-AFAD-F8E87F9BF5EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B23EA10F-1BAC-46D0-AFAD-F8E87F9BF5EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B23EA10F-1BAC-46D0-AFAD-F8E87F9BF5EB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {202B203B-093C-4C40-B4FA-950CE4F138E7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {202B203B-093C-4C40-B4FA-950CE4F138E7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {202B203B-093C-4C40-B4FA-950CE4F138E7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {202B203B-093C-4C40-B4FA-950CE4F138E7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {4F627E32-59E1-4560-9254-A5F6AEEA49D0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {4F627E32-59E1-4560-9254-A5F6AEEA49D0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {4F627E32-59E1-4560-9254-A5F6AEEA49D0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {4F627E32-59E1-4560-9254-A5F6AEEA49D0}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F5C32B79-74F0-452C-9DA4-3010910DA071}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F5C32B79-74F0-452C-9DA4-3010910DA071}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F5C32B79-74F0-452C-9DA4-3010910DA071}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F5C32B79-74F0-452C-9DA4-3010910DA071}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A435BDB8-2601-4D5B-AD78-7E5575E1DD37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A435BDB8-2601-4D5B-AD78-7E5575E1DD37}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A435BDB8-2601-4D5B-AD78-7E5575E1DD37}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A435BDB8-2601-4D5B-AD78-7E5575E1DD37}.Release|Any CPU.Build.0 = Release|Any CPU
+               {B979CA0D-CF48-4A33-AC27-FC8CC12E009D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {B979CA0D-CF48-4A33-AC27-FC8CC12E009D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {B979CA0D-CF48-4A33-AC27-FC8CC12E009D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {B979CA0D-CF48-4A33-AC27-FC8CC12E009D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {06EB86BE-A440-44C2-B11E-9C2A05CD9DAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {06EB86BE-A440-44C2-B11E-9C2A05CD9DAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {06EB86BE-A440-44C2-B11E-9C2A05CD9DAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {06EB86BE-A440-44C2-B11E-9C2A05CD9DAB}.Release|Any CPU.Build.0 = Release|Any CPU
+               {8D758ECB-8294-41E7-A239-B31194C7FD4D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {8D758ECB-8294-41E7-A239-B31194C7FD4D}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {8D758ECB-8294-41E7-A239-B31194C7FD4D}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {8D758ECB-8294-41E7-A239-B31194C7FD4D}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A1AE0E86-573D-4B50-8078-3EB8744924C7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A1AE0E86-573D-4B50-8078-3EB8744924C7}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A1AE0E86-573D-4B50-8078-3EB8744924C7}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A1AE0E86-573D-4B50-8078-3EB8744924C7}.Release|Any CPU.Build.0 = Release|Any CPU
+               {DDCB4935-5269-4DFB-9B7B-D01655DDC29C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {DDCB4935-5269-4DFB-9B7B-D01655DDC29C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {DDCB4935-5269-4DFB-9B7B-D01655DDC29C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {DDCB4935-5269-4DFB-9B7B-D01655DDC29C}.Release|Any CPU.Build.0 = Release|Any CPU
+               {C08613F0-C5E5-4FF2-A8F0-516BA0B39688}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {C08613F0-C5E5-4FF2-A8F0-516BA0B39688}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {C08613F0-C5E5-4FF2-A8F0-516BA0B39688}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {C08613F0-C5E5-4FF2-A8F0-516BA0B39688}.Release|Any CPU.Build.0 = Release|Any CPU
+               {60725AA0-76C0-46AA-9E9A-793D5EB671F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {60725AA0-76C0-46AA-9E9A-793D5EB671F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {60725AA0-76C0-46AA-9E9A-793D5EB671F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {60725AA0-76C0-46AA-9E9A-793D5EB671F8}.Release|Any CPU.Build.0 = Release|Any CPU
+               {F3509D69-1160-463A-8607-68E5E34EC5F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {F3509D69-1160-463A-8607-68E5E34EC5F5}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {F3509D69-1160-463A-8607-68E5E34EC5F5}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {F3509D69-1160-463A-8607-68E5E34EC5F5}.Release|Any CPU.Build.0 = Release|Any CPU
+               {9933A0E4-D6A6-465B-814A-4B2E1860C931}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {9933A0E4-D6A6-465B-814A-4B2E1860C931}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {9933A0E4-D6A6-465B-814A-4B2E1860C931}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {9933A0E4-D6A6-465B-814A-4B2E1860C931}.Release|Any CPU.Build.0 = Release|Any CPU
+               {EEA0DCB3-83BF-4BCF-BF77-5A43E289945A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {EEA0DCB3-83BF-4BCF-BF77-5A43E289945A}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {EEA0DCB3-83BF-4BCF-BF77-5A43E289945A}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {EEA0DCB3-83BF-4BCF-BF77-5A43E289945A}.Release|Any CPU.Build.0 = Release|Any CPU
+               {A0351AB5-FB39-49C2-9A16-856E3CE38288}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+               {A0351AB5-FB39-49C2-9A16-856E3CE38288}.Debug|Any CPU.Build.0 = Debug|Any CPU
+               {A0351AB5-FB39-49C2-9A16-856E3CE38288}.Release|Any CPU.ActiveCfg = Release|Any CPU
+               {A0351AB5-FB39-49C2-9A16-856E3CE38288}.Release|Any CPU.Build.0 = Release|Any CPU
        EndGlobalSection
        GlobalSection(SolutionProperties) = preSolution
                HideSolutionNode = FALSE
index 631a9aaa1d19c81b3b7f1de01946bf03f3390dd6..e5fdc5ad3a2ac9a0d7ce30c0631ca82651b58139 100644 (file)
@@ -28,7 +28,7 @@
       <library_output>./../../class/lib/basic/tmp/System.dll</library_output>
       <fx_version>2.0</fx_version>
       <profile>basic</profile>
-      <response>System.dll.sources</response>
+      <response>./../../build/deps/basic_System.dll.sources</response>
     </project>
     <project dir="class/System.XML" library="System.Xml-basic">
       <boot>true</boot>
@@ -48,7 +48,7 @@
       <library_output>./../../class/lib/basic/tmp/System.dll</library_output>
       <fx_version>2.0</fx_version>
       <profile>basic</profile>
-      <response>System.dll.sources</response>
+      <response>./../../build/deps/basic_System.dll.sources</response>
     </project>
     <project dir="class/Mono.Security" library="Mono.Security-basic">
       <boot>true</boot>
     </project>
     <project dir="class/corlib" library="corlib-tests-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -debug -optimize -r:./../../class/lib/net_2_0/mscorlib.dll -debug+ -debug:full -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS</flags>
+      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -debug -optimize -r:./../../class/lib/net_2_0/mscorlib.dll -debug -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS -resource:Test/resources/Resources.resources</flags>
       <output>corlib_test_net_2_0.dll</output>
       <built_sources></built_sources>
       <library_output>corlib_test_net_2_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_2_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_2_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_2_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_2_0-1">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_2_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_2_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_2_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_2_0-2">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_2_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_2_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_2_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_2_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_2_0.dll</library_output>
     </project>
     <project dir="class/System.Net" library="System.Net-net_2_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_2_1 -d:NET_2_0 -d:NET_1_1 -d:NET_3_5 -nowarn:1720</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_3_5 -nowarn:1720</flags>
       <output>System.Net.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_2_0/System.Net.dll</library_output>
     </project>
     <project dir="tools/mkbundle" library="mkbundle-net_2_0">
       <boot></boot>
-      <flags>/codepage:65001 -r:Mono.Posix.dll -r:ICSharpCode.SharpZipLib.dll -resource:template.c -resource:template_z.c -resource:template_main.c -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <flags>/codepage:65001 -resource:template.c -resource:template_z.c -resource:template_main.c -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE -d:NET_1_1 -d:NET_2_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_2_0 -r:mscorlib.dll -debug -optimize /noconfig</flags>
       <output>mkbundle.exe</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_2_0/mkbundle.exe</library_output>
     </project>
     <project dir="class/corlib" library="corlib-tests-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -optimize -r:./../../class/lib/net_4_0/mscorlib.dll -debug+ -debug:full -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS</flags>
+      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -optimize -r:./../../class/lib/net_4_0/mscorlib.dll -debug -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS -resource:Test/resources/Resources.resources</flags>
       <output>corlib_test_net_4_0.dll</output>
       <built_sources></built_sources>
       <library_output>corlib_test_net_4_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_0-1">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_0.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_0-2">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_0/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_0/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_0.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_0.dll</library_output>
     </project>
     <project dir="class/System.Net" library="System.Net-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_2_1 -d:NET_2_0 -d:NET_1_1 -d:NET_3_5 -nowarn:1720</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_3_5 -nowarn:1720</flags>
       <output>System.Net.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_0/System.Net.dll</library_output>
     </project>
     <project dir="class/monodoc" library="monodoc-tests-net_4_0">
       <boot>false</boot>
-      <flags>/codepage:65001 /nowarn:618,612,672,809 /define:LEGACY_MODE -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/monodoc.dll /r:System.Core.dll /r:System.Xml.dll</flags>
+      <flags>/codepage:65001 /nowarn:618,612,672,809 /define:LEGACY_MODE -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_0 -r:mscorlib.dll -optimize -r:./../../class/lib/net_4_0/monodoc.dll /r:System.dll /r:System.Core.dll /r:System.Xml.dll</flags>
       <output>monodoc_test_net_4_0.dll</output>
       <built_sources></built_sources>
       <library_output>monodoc_test_net_4_0.dll</library_output>
     </project>
     <project dir="class/corlib" library="corlib-tests-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -debug -optimize -r:./../../class/lib/net_4_5/mscorlib.dll -debug+ -debug:full -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS</flags>
+      <flags>/codepage:65001 -unsafe -nostdlib -nowarn:612,618 -d:INSIDE_CORLIB -d:LIBC -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -debug -optimize -r:./../../class/lib/net_4_5/mscorlib.dll -debug -nowarn:168,219,618,672 -unsafe -r:Mono.Posix.dll -r:System.Core.dll -define:MONO_DATACONVERTER_STATIC_METHODS -resource:Test/resources/Resources.resources</flags>
       <output>corlib_test_net_4_5.dll</output>
       <built_sources></built_sources>
       <library_output>corlib_test_net_4_5.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_5.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_5.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_5-1">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_5.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_5.dll</library_output>
     </project>
     <project dir="class/System" library="System-net_4_5-2">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -nowarn:618 -d:CONFIGURATION_2_0 -unsafe -resource:resources/Asterisk.wav -resource:resources/Beep.wav -resource:resources/Exclamation.wav -resource:resources/Hand.wav -resource:resources/Question.wav -r:PrebuiltSystem=../lib/net_4_5/System.dll -d:XML_DEP -r:System.Xml.dll -d:SECURITY_DEP -r:MonoSecurity=Mono.Security.dll -d:CONFIGURATION_DEP -r:System.Configuration.dll</flags>
       <output>System.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/tmp/System.dll</library_output>
     </project>
     <project dir="class/System" library="System-tests-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:0618 -nowarn:219 -nowarn:67 -nowarn:169 -nowarn:612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/System.dll -r:System.Drawing.dll -r:Mono.Security.dll -r:System.Data -r:System.Xml.dll -r:System.Core.dll -nowarn:618,672,219,67,169,612 -resource:Test/System/test-uri-props.txt,test-uri-props.txt -resource:Test/System/test-uri-props-manual.txt,test-uri-props-manual.txt -resource:Test/System/test-uri-relative-props.txt,test-uri-relative-props.txt -r:System.Configuration</flags>
       <output>System_test_net_4_5.dll</output>
       <built_sources></built_sources>
       <library_output>System_test_net_4_5.dll</library_output>
     </project>
     <project dir="class/System.Net" library="System.Net-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_2_1 -d:NET_2_0 -d:NET_1_1 -d:NET_3_5 -nowarn:1720</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -unsafe -r:System.dll -r:System.Core.dll -r:System.Xml.dll -d:NET_3_5 -nowarn:1720</flags>
       <output>System.Net.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Net.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Interfaces" library="System.Reactive.Interfaces-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Interfaces.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Interfaces.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Core" library="System.Reactive.Core-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Core.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Core.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Linq" library="System.Reactive.Linq-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Linq.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Linq.dll</library_output>
     </project>
     <project dir="class/System.Reactive.PlatformServices" library="System.Reactive.PlatformServices-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.PlatformServices.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.PlatformServices.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Providers" library="System.Reactive.Providers-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Providers.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Providers.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Runtime.Remoting" library="System.Reactive.Runtime.Remoting-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Runtime.Remoting.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Runtime.Remoting.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Windows.Forms" library="System.Reactive.Windows.Forms-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -r:System.Windows.Forms.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -r:System.Windows.Forms.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Windows.Forms.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Windows.Forms.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Windows.Threading" library="System.Reactive.Windows.Threading-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -r:WindowsBase.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -r:WindowsBase.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Windows.Threading.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Windows.Threading.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Experimental" library="System.Reactive.Experimental-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Experimental.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Experimental.dll</library_output>
     </project>
     <project dir="class/System.Reactive.Debugger" library="System.Reactive.Debugger-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC</flags>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig @more_build_args -r:System.dll -r:System.Core.dll -r:System.Reactive.Interfaces.dll -r:System.Reactive.Core.dll -r:System.Reactive.Linq.dll -d:HAS_EDI -d:PREFERASYNC -d:PREFER_ASYNC -d:HAS_AWAIT</flags>
       <output>System.Reactive.Debugger.dll</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/System.Reactive.Debugger.dll</library_output>
     </project>
     <project dir="class/monodoc" library="monodoc-tests-net_4_5">
       <boot>false</boot>
-      <flags>/codepage:65001 /nowarn:618,612,672,809 /define:LEGACY_MODE -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/monodoc.dll /r:System.Core.dll /r:System.Xml.dll</flags>
+      <flags>/codepage:65001 /nowarn:618,612,672,809 /define:LEGACY_MODE -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize -r:./../../class/lib/net_4_5/monodoc.dll /r:System.dll /r:System.Core.dll /r:System.Xml.dll</flags>
       <output>monodoc_test_net_4_5.dll</output>
       <built_sources></built_sources>
       <library_output>monodoc_test_net_4_5.dll</library_output>
       <profile>net_4_5</profile>
       <response>./../../build/deps/System.Net.Http_test_net_4_5.dll.response</response>
     </project>
+    <project dir="class/System.Net.Http.WebRequest" library="System.Net.Http.WebRequest-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -r:System.Net.Http.dll -r:System.dll</flags>
+      <output>System.Net.Http.WebRequest.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_5/System.Net.Http.WebRequest.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Net.Http.WebRequest.dll.sources</response>
+    </project>
     <project dir="class/System.Web.Razor" library="System.Web.Razor-net_4_5">
       <boot>false</boot>
       <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /warn:1 /keyfile:../winfx.pub -delaysign /r:System.dll /r:System.Core.dll /d:ASPNETWEBPAGES /resource:System.Web.Razor.Resources.RazorResources.resources /resource:System.Web.Razor.Common.CommonResources.resources</flags>
       <profile>net_4_5</profile>
       <response>System.Web.Http.SelfHost.dll.sources</response>
     </project>
+    <project dir="class/System.Web.Http.WebHost" library="">
+      <boot></boot>
+      <flags></flags>
+      <output></output>
+      <built_sources></built_sources>
+      <library_output></library_output>
+      <fx_version></fx_version>
+      <profile></profile>
+      <response></response>
+    </project>
+    <project dir="System.Web.Http.WebHost-net_4_5" library="">
+      <boot></boot>
+      <flags></flags>
+      <output></output>
+      <built_sources></built_sources>
+      <library_output></library_output>
+      <fx_version></fx_version>
+      <profile></profile>
+      <response></response>
+    </project>
     <project dir="class/EntityFramework" library="EntityFramework-net_4_5">
       <boot>false</boot>
       <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig -r:System.Data.dll -r:System.Transactions.dll -r:System.Xml.Linq.dll -r:System.Configuration.dll -r:System.ComponentModel.DataAnnotations.dll -r:System.Runtime.Serialization.dll -r:System.dll -r:System.Xml.dll -r:System.Core.dll -r:Microsoft.CSharp.dll -keyfile:../ecma.pub -delaysign -warn:1 -resource:System.Data.Entity.Properties.Resources.resources -resource:System.Data.Entity.Properties.Resources.Migrate.resources -resource:System.Data.Entity.Properties.Resources.PowerShell.resources -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/System.Data.Resources.DbProviderServices.ConceptualSchemaDefinition.csdl -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/System.Data.Resources.DbProviderServices.ConceptualSchemaDefinitionVersion3.csdl -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/System.Data.Resources.ProviderServices.ProviderManifest.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.AnnotationSchema.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.CodeGenerationSchema.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.CSDLSchema_1.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.CSDLSchema_1_1.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.CSDLSchema_2.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.CSDLSchema_3.xsd -resource:System.Data.Resources.EntityStoreSchemaGenerator.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.SSDLSchema.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.SSDLSchema_2.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/EntityModel/System.Data.Resources.SSDLSchema_3.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/MappingSpecification/System.Data.Resources.CSMSL_1.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/MappingSpecification/System.Data.Resources.CSMSL_2.xsd -resource:../../../external/entityframework/src/EntityFramework/Resources/System/Data/MappingSpecification/System.Data.Resources.CSMSL_3.xsd</flags>
       <profile>net_4_5</profile>
       <response>./../../build/deps/Mono.CodeContracts_test_net_4_5.dll.response</response>
     </project>
+    <project dir="class/System.IO.Compression" library="System.IO.Compression-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.IO.Compression.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_5/System.IO.Compression.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.IO.Compression.dll.sources</response>
+    </project>
+    <project dir="class/System.IO.Compression.FileSystem" library="System.IO.Compression.FileSystem-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System /r:System.IO.Compression.dll</flags>
+      <output>System.IO.Compression.FileSystem.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_5/System.IO.Compression.FileSystem.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.IO.Compression.FileSystem.dll.sources</response>
+    </project>
+    <project dir="class/System.Windows" library="System.Windows-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Windows.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_5/System.Windows.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Windows.dll.sources</response>
+    </project>
+    <project dir="class/System.Xml.Serialization" library="System.Xml.Serialization-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Xml /r:System.ServiceModel</flags>
+      <output>System.Xml.Serialization.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../class/lib/net_4_5/System.Xml.Serialization.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Xml.Serialization.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime" library="System.Runtime-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System /r:System.Core /r:System.ComponentModel.Composition</flags>
+      <output>System.Runtime.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Linq" library="System.Linq-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Linq.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Linq.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Linq.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Xml.XmlSerializer" library="System.Xml.XmlSerializer-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Xml</flags>
+      <output>System.Xml.XmlSerializer.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Xml.XmlSerializer.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Xml.XmlSerializer.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ServiceModel.Primitives" library="System.ServiceModel.Primitives-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.ServiceModel /r:System.Xml</flags>
+      <output>System.ServiceModel.Primitives.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ServiceModel.Primitives.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ServiceModel.Primitives.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Xml.ReaderWriter" library="System.Xml.ReaderWriter-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Xml</flags>
+      <output>System.Xml.ReaderWriter.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Xml.ReaderWriter.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Xml.ReaderWriter.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Diagnostics.Debug" library="System.Diagnostics.Debug-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Diagnostics.Debug.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Diagnostics.Debug.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Diagnostics.Debug.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.Extensions" library="System.Runtime.Extensions-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Runtime.Extensions.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.Extensions.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.Extensions.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Diagnostics.Tools" library="System.Diagnostics.Tools-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Diagnostics.Tools.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Diagnostics.Tools.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Diagnostics.Tools.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Collections" library="System.Collections-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System /r:System.Core</flags>
+      <output>System.Collections.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Collections.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Collections.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ComponentModel.EventBasedAsync" library="System.ComponentModel.EventBasedAsync-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.ComponentModel.EventBasedAsync.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ComponentModel.EventBasedAsync.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ComponentModel.EventBasedAsync.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ComponentModel" library="System.ComponentModel-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.ComponentModel.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ComponentModel.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ComponentModel.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ObjectModel" library="System.ObjectModel-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.ObjectModel.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ObjectModel.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ObjectModel.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Text.RegularExpressions" library="System.Text.RegularExpressions-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Text.RegularExpressions.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Text.RegularExpressions.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Text.RegularExpressions.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Threading" library="System.Threading-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Threading.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Threading.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Threading.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.InteropServices" library="System.Runtime.InteropServices-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Runtime.InteropServices.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.InteropServices.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.InteropServices.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Reflection" library="System.Reflection-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Reflection.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Reflection.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Reflection.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Globalization" library="System.Globalization-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Globalization.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Globalization.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Globalization.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.IO" library="System.IO-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.IO.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.IO.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.IO.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Reflection.Primitives" library="System.Reflection.Primitives-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Reflection.Primitives.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Reflection.Primitives.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Reflection.Primitives.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Resources.ResourceManager" library="System.Resources.ResourceManager-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Resources.ResourceManager.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Resources.ResourceManager.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Resources.ResourceManager.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Security.Principal" library="System.Security.Principal-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Security.Principal.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Security.Principal.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Security.Principal.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Text.Encoding" library="System.Text.Encoding-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Text.Encoding.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Text.Encoding.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Text.Encoding.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Text.Encoding.Extensions" library="System.Text.Encoding.Extensions-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Text.Encoding.Extensions.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Text.Encoding.Extensions.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Text.Encoding.Extensions.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Linq.Queryable" library="System.Linq.Queryable-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Linq.Queryable.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Linq.Queryable.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Linq.Queryable.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Linq.Expressions" library="System.Linq.Expressions-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Linq.Expressions.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Linq.Expressions.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Linq.Expressions.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Net.Primitives" library="System.Net.Primitives-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Net.Primitives.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Net.Primitives.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Net.Primitives.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Net.Requests" library="System.Net.Requests-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Net.Requests.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Net.Requests.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Net.Requests.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Net.NetworkInformation" library="System.Net.NetworkInformation-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Net.NetworkInformation.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Net.NetworkInformation.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Net.NetworkInformation.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.Serialization.Primitives" library="System.Runtime.Serialization.Primitives-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Runtime.Serialization /r:System.Xml</flags>
+      <output>System.Runtime.Serialization.Primitives.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.Serialization.Primitives.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.Serialization.Primitives.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.Serialization.Xml" library="System.Runtime.Serialization.Xml-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Runtime.Serialization /r:System.Xml</flags>
+      <output>System.Runtime.Serialization.Xml.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.Serialization.Xml.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.Serialization.Xml.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.Serialization.Json" library="System.Runtime.Serialization.Json-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Runtime.Serialization /r:System.Xml</flags>
+      <output>System.Runtime.Serialization.Json.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.Serialization.Json.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.Serialization.Json.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ServiceModel.Http" library="System.ServiceModel.Http-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.ServiceModel</flags>
+      <output>System.ServiceModel.Http.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ServiceModel.Http.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ServiceModel.Http.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Xml.XDocument" library="System.Xml.XDocument-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Xml.Linq /r:System.Xml</flags>
+      <output>System.Xml.XDocument.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Xml.XDocument.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Xml.XDocument.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Threading.Tasks" library="System.Threading.Tasks-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Threading.Tasks.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Threading.Tasks.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Threading.Tasks.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Diagnostics.Contracts" library="System.Diagnostics.Contracts-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Diagnostics.Contracts.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Diagnostics.Contracts.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Diagnostics.Contracts.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Dynamic.Runtime" library="System.Dynamic.Runtime-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Dynamic.Runtime.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Dynamic.Runtime.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Dynamic.Runtime.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.ComponentModel.Annotations" library="System.ComponentModel.Annotations-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.ComponentModel.DataAnnotations</flags>
+      <output>System.ComponentModel.Annotations.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.ComponentModel.Annotations.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.ComponentModel.Annotations.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Runtime.Numerics" library="System.Runtime.Numerics-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Numerics</flags>
+      <output>System.Runtime.Numerics.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Runtime.Numerics.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Runtime.Numerics.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Linq.Parallel" library="System.Linq.Parallel-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Core /r:System</flags>
+      <output>System.Linq.Parallel.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Linq.Parallel.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Linq.Parallel.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Collections.Concurrent" library="System.Collections.Concurrent-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System</flags>
+      <output>System.Collections.Concurrent.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Collections.Concurrent.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Collections.Concurrent.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Threading.Tasks.Parallel" library="System.Threading.Tasks.Parallel-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Threading.Tasks.Parallel.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Threading.Tasks.Parallel.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Threading.Tasks.Parallel.dll.sources</response>
+    </project>
+    <project dir="class/Facades/System.Reflection.Extensions" library="System.Reflection.Extensions-net_4_5">
+      <boot>false</boot>
+      <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <output>System.Reflection.Extensions.dll</output>
+      <built_sources></built_sources>
+      <library_output>./../../../class/lib/net_4_5/Facades/System.Reflection.Extensions.dll</library_output>
+      <fx_version>4.5</fx_version>
+      <profile>net_4_5</profile>
+      <response>System.Reflection.Extensions.dll.sources</response>
+    </project>
     <project dir="nunit24/NUnit.Framework/framework" library="NUnit.Framework-net_4_5">
       <boot>false</boot>
       <flags>/codepage:65001 -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig /r:System.Xml.dll /r:System.dll /d:StronglyNamedAssembly -warn:1</flags>
     </project>
     <project dir="tools/mkbundle" library="mkbundle-net_4_5">
       <boot></boot>
-      <flags>/codepage:65001 -r:Mono.Posix.dll -r:ICSharpCode.SharpZipLib.dll -resource:template.c -resource:template_z.c -resource:template_main.c -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
+      <flags>/codepage:65001 -resource:template.c -resource:template_z.c -resource:template_main.c -d:STATIC,NO_SYMBOL_WRITER,NO_AUTHENTICODE -d:NET_1_1 -d:NET_2_0 -d:NET_3_0 -d:NET_3_5 -d:NET_4_0 -d:NET_4_5 -nowarn:1699 -nostdlib -lib:./../../class/lib/net_4_5 -r:mscorlib.dll -debug -optimize /noconfig</flags>
       <output>mkbundle.exe</output>
       <built_sources></built_sources>
       <library_output>./../../class/lib/net_4_5/mkbundle.exe</library_output>
index 475b32b1ae9165b492c2f14f8e27cdb43391cb83..ecfc8d6953c2c425241da579a84e2ce28e4d254a 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index f28c1e351a1f47ff52c79ad650cbcf35967e4a39..3159e42dbb82f9e1cca8e6ccd4a1fa93f00d1eba 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index a25b55e99813b0de771262f276765644d9d99f7e..69a9aefb9c0520e2952dd187cb6317620c5e553e 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 4125f7569d93ae5c9699fceca8c2fd10d2b21f73..8ec30a352f2d7ebbb1973164d584c3c912448348 100644 (file)
@@ -1,5 +1,5 @@
 ï»¿<?xml version="1.0" encoding="utf-8"?>\r
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
+<Project DefaultTargets="Build" ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">\r
   <ItemGroup Label="ProjectConfigurations">\r
     <ProjectConfiguration Include="Debug|Win32">\r
       <Configuration>Debug</Configuration>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">\r
     <ConfigurationType>Application</ConfigurationType>\r
     <CharacterSet>Unicode</CharacterSet>\r
+    <PlatformToolset>v120</PlatformToolset>\r
   </PropertyGroup>\r
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />\r
   <ImportGroup Label="ExtensionSettings">\r
index 4ab2c674cb49b90c634c6c156d0b0d057b216296..6263590c1108efd95c39f3d7d8e55b06d367f34b 100644 (file)
@@ -17,7 +17,9 @@
        <Copy source="{sourcedir}\mono\data\net_2_0\DefaultWsdlHelpGenerator.aspx" destination="{destdir}\etc\mono\2.0\DefaultWsdlHelpGenerator.aspx" />\r
        <Copy source="{sourcedir}\mono\data\net_2_0\settings.map" destination="{destdir}\etc\mono\2.0\settings.map" />\r
        <Copy source="{sourcedir}\mono\data\net_2_0\web.config" destination="{destdir}\etc\mono\2.0\web.config" />\r
-       <Copy source="{sourcedir}\mono\data\net_2_0\Browsers\Compat.browser" destination="{destdir}\etc\mono\2.0\Browsers\Compat.browser" />\r
+       <Copy source="{sourcedir}\mono\data\Browsers\Compat.browser" destination="{destdir}\etc\mono\2.0\Browsers\Compat.browser" />\r
+       <Copy source="{sourcedir}\mono\data\Browsers\Compat.browser" destination="{destdir}\etc\mono\4.0\Browsers\Compat.browser" />\r
+       <Copy source="{sourcedir}\mono\data\Browsers\Compat.browser" destination="{destdir}\etc\mono\4.5\Browsers\Compat.browser" />\r
        <Copy source="{sourcedir}\mono\data\browscap.ini" destination="{destdir}\etc\mono\browscap.ini" />\r
 \r
        <!-- Bring in xulrunner -->\r
 \r
        <!-- Build the wix includes files -->\r
        <WixInclude installeronly="true" root="{destdir}" wixfiles="{destdir}\Files.wxi" wixcomponents="{destdir}\Components.wxi"/>\r
-</Assemblies>
\ No newline at end of file
+</Assemblies>\r
index 93b44b4bdc35670eea40ffebd7619e5dc8b57e17..809ee028d46371f0d71379a9dd065bd0be3469ba 100644 (file)
@@ -6,13 +6,15 @@ etctmp = etc
 symlinks = etc/mono/1.0/machine.config etc/mono/2.0/machine.config etc/mono/2.0/web.config etc/mono/browscap.ini etc/mono/2.0/Browsers/Compat.browser
 
 if INSTALL_4_0
-symlinks += etc/mono/4.0/machine.config etc/mono/4.0/web.config etc/mono/4.5/web.config etc/mono/4.5/machine.config
+symlinks += etc/mono/4.0/machine.config etc/mono/4.0/web.config etc/mono/4.5/web.config etc/mono/4.5/machine.config etc/mono/4.0/Browsers/Compat.browser etc/mono/4.5/Browsers/Compat.browser
 endif
 
 etc/mono/2.0/machine.config: $(top_srcdir)/data/net_2_0/machine.config
 etc/mono/2.0/web.config: $(top_srcdir)/data/net_2_0/web.config
 etc/mono/browscap.ini: $(top_srcdir)/data/browscap.ini
-etc/mono/2.0/Browsers/Compat.browser: $(top_srcdir)/data/net_2_0/Browsers/Compat.browser
+etc/mono/2.0/Browsers/Compat.browser: $(top_srcdir)/data/Browsers/Compat.browser
+etc/mono/4.0/Browsers/Compat.browser: $(top_srcdir)/data/Browsers/Compat.browser
+etc/mono/4.5/Browsers/Compat.browser: $(top_srcdir)/data/Browsers/Compat.browser
 etc/mono/4.0/machine.config: $(top_srcdir)/data/net_4_0/machine.config
 etc/mono/4.0/web.config: $(top_srcdir)/data/net_4_0/web.config
 etc/mono/4.5/machine.config: $(top_srcdir)/data/net_4_5/machine.config
@@ -23,38 +25,11 @@ $(symlinks):
 
 SUPPORT_FILES = $(symlinks) mono-wrapper etc/mono/config
 
-if MOONLIGHT
-moon-do-basic: Makefile $(SUPPORT_FILES)
-       cd $(mcs_topdir)/ && $(MAKE) NO_DIR_CHECK=1 PROFILE=moonlight_raw
-
-moon-do-basic-clean:
-       cd $(mcs_topdir)/ && $(MAKE) NO_DIR_CHECK=1 PROFILE=moonlight_raw clean
-endif
-
 if ONLY_MONOTOUCH
 build_profiles = monotouch
 else
-if ONLY_MOONLIGHT
-build_profiles = moonlight_raw
-test_profiles = moonlight_raw
-else
-
 build_profiles = 
 
-if MOONLIGHT
-build_profiles += moonlight_raw
-
-moon-do-moonlight-raw: Makefile $(SUPPORT_FILES)
-       cd $(mcs_topdir) && $(MAKE) NO_DIR_CHECK=1 PROFILES='moonlight_raw' CC='$(CC)' all-profiles
-
-moon-do-moonlight-raw-clean:
-       cd $(mcs_topdir) && $(MAKE) NO_DIR_CHECK=1 PROFILES='moonlight_raw' CC='$(CC)' clean-profiles
-
-moon-do-build: moon-do-moonlight-raw moon-do-basic
-moon-do-clean: moon-do-moonlight-raw-clean moon-do-basic-clean
-
-endif
-
 if INSTALL_2_0
 build_profiles += net_2_0 net_3_5
 al_profile = net_2_0
@@ -80,7 +55,6 @@ endif
 
 test_profiles = $(build_profiles)
 
-endif
 endif
 
 if BUILD_MCS
@@ -186,7 +160,7 @@ etc/mono/config: ../data/config Makefile $(symlinks)
        d=`cd ../support && pwd`; \
        sed 's,target="libMonoPosixHelper[^"]*",target="'$$d/libMonoPosixHelper.la'",' ../data/config > $@t
        if test -z "$(libgdiplus_loc)"; then :; else \
-         sed 's,<configuration>,& <dllmap dll="gdiplus.dll" target="$(libgdiplus_loc)" />,' $@t > $@tt; \
+         sed 's,<configuration>,& <dllmap dll="gdiplus.dll" target="$(libgdiplus_loc)" os="!windows"/>,' $@t > $@tt; \
          mv -f $@tt $@t; fi
        mv -f $@t $@
 
old mode 100644 (file)
new mode 100755 (executable)
index 716c1ac..e59bacf
@@ -1,2 +1,2 @@
 #!/bin/sh
-mcs -sdk:4 "$@"
+exec @bindir@/mono $MONO_OPTIONS @mono_instdir@/4.5/mcs.exe -sdk:4 "$@"
old mode 100644 (file)
new mode 100755 (executable)
index df33e6c..64005f5
@@ -1,2 +1,2 @@
 #!/bin/sh
-mcs -sdk:2 "$@"
+exec @bindir@/mono $MONO_OPTIONS @mono_instdir@/4.5/mcs.exe -sdk:2 "$@"
index af0727f9844d09b6258fd3927fd8f9792664e2c8..3c1f74a88924a472fad802fc33de358e0e1faddb 100755 (executable)
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
 #
 # Does various checks for people that we can use to diagnose
 # an end user installation
@@ -174,4 +174,4 @@ if mcs $temp_cs >& /dev/null; then
 else
     echo Failed to compile sample test program, your installation is broken
     exit 1
-fi
\ No newline at end of file
+fi
index b24739fa686de7d203056aa7670c081f7abaab4f..c339ebced737526b4eed078345d66c4f46d9ae61 100644 (file)
@@ -32,7 +32,6 @@ MPH_UNIX_SOURCE =                             \
        fstab.c                                 \
        grp.c                                   \
        macros.c                                \
-       mac-reachability.c                      \
        nl.c                                    \
        nl.h                                    \
        old-map.c                               \
@@ -116,10 +115,6 @@ libMonoPosixHelper_la_LIBADD =                     \
 libMonoPosixHelper_la_LDFLAGS = -no-undefined -avoid-version
 libMonoSupportW_la_LDFLAGS = -no-undefined -avoid-version
 
-if PLATFORM_DARWIN
-libMonoPosixHelper_la_LDFLAGS += -framework CoreFoundation -framework SystemConfiguration
-endif
-
 libMonoSupportW_la_SOURCES =                   \
                supportw.c                      \
                support-heap.c                  \
diff --git a/support/mac-reachability.c b/support/mac-reachability.c
deleted file mode 100644 (file)
index c2499f5..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-//
-// mac-reachability.c: System.Net.NetworkingInformation.NetworkChange
-// implementation for Mac OS X using SystemConfiguration's
-// NetworkReachability API.
-//
-// Authors:
-//  Aaron Bockover (abock@xamarin.com)
-//
-// Copyright (c) 2013 Xamarin, Inc. (http://www.xamarin.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-#if HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-int mono_sc_reachability_enabled (void);
-
-#if defined(PLATFORM_MACOSX) || defined(TARGET_IOS)
-
-int
-mono_sc_reachability_enabled (void)
-{
-       return 1;
-}
-
-#include <SystemConfiguration/SCNetworkReachability.h>
-#include <netinet/in.h>
-
-typedef void (*mono_sc_reachability_callback)(int);
-
-typedef struct {
-       SCNetworkReachabilityRef reachability;
-       mono_sc_reachability_callback callback;
-} mono_sc_reachability;
-
-mono_sc_reachability * mono_sc_reachability_new (mono_sc_reachability_callback callback);
-void mono_sc_reachability_free (mono_sc_reachability *reachability);
-int mono_sc_reachability_is_available (mono_sc_reachability *reachability);
-
-static int
-_mono_sc_reachability_is_available (SCNetworkReachabilityFlags flags)
-{
-       return (flags & kSCNetworkFlagsReachable) && (flags & kSCNetworkFlagsConnectionRequired) == 0;
-}
-
-static void
-_mono_sc_reachability_callback (SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *user)
-{
-       mono_sc_reachability *reachability;
-       
-       if (user == NULL) {
-               return;
-       }
-
-       reachability = (mono_sc_reachability *)user;
-       if (reachability->callback == NULL) {
-               return;
-       }
-
-       reachability->callback (_mono_sc_reachability_is_available (flags));
-}
-
-mono_sc_reachability *
-mono_sc_reachability_new (mono_sc_reachability_callback callback)
-{
-       struct sockaddr_in zero;
-       SCNetworkReachabilityRef reachability;
-       SCNetworkReachabilityContext context;
-       mono_sc_reachability *instance;
-
-       if (callback == NULL) {
-               return NULL;
-       }
-
-       bzero (&zero, sizeof (zero));
-       zero.sin_len = sizeof (zero);
-       zero.sin_family = AF_INET;
-
-       reachability = SCNetworkReachabilityCreateWithAddress (NULL, (const struct sockaddr *)&zero);
-       if (reachability == NULL) {
-               return NULL;
-       }
-
-       instance = (mono_sc_reachability *)malloc (sizeof (mono_sc_reachability));
-       instance->reachability = reachability;
-       instance->callback = callback;
-
-       bzero (&context, sizeof (context));
-       context.info = instance;
-
-       if (!SCNetworkReachabilitySetCallback (reachability, _mono_sc_reachability_callback, &context) ||
-               !SCNetworkReachabilityScheduleWithRunLoop (reachability, CFRunLoopGetCurrent (), kCFRunLoopDefaultMode)) {
-               mono_sc_reachability_free (instance);
-               return NULL;
-       }
-
-       return instance;
-}
-
-void
-mono_sc_reachability_free (mono_sc_reachability *reachability)
-{
-       if (reachability != NULL) {
-               if (reachability->reachability != NULL) {
-                       SCNetworkReachabilityUnscheduleFromRunLoop (reachability->reachability,
-                               CFRunLoopGetCurrent (), kCFRunLoopDefaultMode);
-                       CFRelease (reachability->reachability);
-                       reachability->reachability = NULL;
-               }
-
-               reachability->callback = NULL;
-               free (reachability);
-               reachability = NULL;
-       }
-}
-
-int
-mono_sc_reachability_is_available (mono_sc_reachability *reachability)
-{
-       SCNetworkReachabilityFlags flags;
-       return reachability != NULL && reachability->reachability != NULL &&
-               SCNetworkReachabilityGetFlags (reachability->reachability, &flags) &&
-               _mono_sc_reachability_is_available (flags);
-}
-
-#else
-
-int
-mono_sc_reachability_enabled (void)
-{
-       return 0;
-}
-
-#endif
index a78caf0ef9e478cc30e1f40e3a8afa6b90f73aa2..233c2b113148075a1a03e3ebf5dc99a4d3723801 100644 (file)
@@ -1780,8 +1780,8 @@ gint64 Mono_Posix_Syscall_pwritev (int fd, struct Mono_Posix_Iovec* iov, int iov
 gint64 Mono_Posix_Syscall_read (int fd, void* buf, guint64 count);
 int Mono_Posix_Syscall_readdir (void* dir, struct Mono_Posix_Syscall__Dirent* dentry);
 int Mono_Posix_Syscall_readdir_r (void* dirp, struct Mono_Posix_Syscall__Dirent* entry, void** result);
-int Mono_Posix_Syscall_readlink (const char* path, char* buf, guint64 bufsiz);
-int Mono_Posix_Syscall_readlinkat (int dirfd, const char* pathname, char* buf, guint64 bufsiz);
+gint64 Mono_Posix_Syscall_readlink (const char* path, unsigned char* buf, guint64 bufsiz);
+gint64 Mono_Posix_Syscall_readlinkat (int dirfd, const char* pathname, unsigned char* buf, guint64 bufsiz);
 gint64 Mono_Posix_Syscall_readv (int fd, struct Mono_Posix_Iovec* iov, int iovcnt);
 int Mono_Posix_Syscall_remap_file_pages (void* start, guint64 size, int prot, gint64 pgoff, int flags);
 int Mono_Posix_Syscall_removexattr (const char* path, const char* name);
diff --git a/support/minizip/.gitignore b/support/minizip/.gitignore
new file mode 100644 (file)
index 0000000..7306553
--- /dev/null
@@ -0,0 +1,3 @@
+/*.lo
+/*.la
+
index f885d11b82195f45ff638b940222c82000e1882b..ce804ef6fb5761f85393591ba8562ca9df08df57 100644 (file)
@@ -7,6 +7,8 @@
  * Copyright (C) 2004-2006 Jonathan Pryor
  */
 
+#include <config.h>
+
 #define _XOPEN_SOURCE 600
 
 #ifdef PLATFORM_MACOSX
index da2750abe8a35758ca832e5cc760bbf06dac02ca..1123f2bc0fac9112b60e8f398e11b685eb59783c 100644 (file)
@@ -7,6 +7,8 @@
  * Copyright (C) 2004-2006 Jonathan Pryor
  */
 
+#include <config.h>
+
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
 #endif /* ndef _GNU_SOURCE */
@@ -136,24 +138,24 @@ Mono_Posix_Syscall_ttyname_r (int fd, char *buf, mph_size_t len)
 }
 #endif /* ndef HAVE_TTYNAME_R */
 
-gint32
-Mono_Posix_Syscall_readlink (const char *path, char *buf, mph_size_t len)
+gint64
+Mono_Posix_Syscall_readlink (const char *path, unsigned char *buf, mph_size_t len)
 {
-       int r;
+       gint64 r;
        mph_return_if_size_t_overflow (len);
-       r = readlink (path, buf, (size_t) len);
+       r = readlink (path, (char*) buf, (size_t) len);
        if (r >= 0 && r < len)
                buf [r] = '\0';
        return r;
 }
 
 #ifdef HAVE_READLINKAT
-gint32
-Mono_Posix_Syscall_readlinkat (int dirfd, const char *path, char *buf, mph_size_t len)
+gint64
+Mono_Posix_Syscall_readlinkat (int dirfd, const char *path, unsigned char *buf, mph_size_t len)
 {
-       int r;
+       gint64 r;
        mph_return_if_size_t_overflow (len);
-       r = readlinkat (dirfd, path, buf, (size_t) len);
+       r = readlinkat (dirfd, path, (char*) buf, (size_t) len);
        if (r >= 0 && r < len)
                buf [r] = '\0';
        return r;
index 11b0980667bb2a806455e8665393569e3f9bcede..16368ce288f292eeb27107411d3be8bf897762d2 100644 (file)
@@ -1082,8 +1082,14 @@ namespace Mono.Tools.LocaleBuilder
                                        ni.PositiveSign = el.InnerText;
 
                                el = node.SelectSingleNode ("minusSign");
-                               if (el != null)
-                                       ni.NegativeSign = el.InnerText;
+                               if (el != null) {
+                                       // CLDR uses unicode negative sign for some culture (e.g sv, is, lt, don't kwnow why) but .net always
+                                       // uses simple - sign
+                                       if (el.InnerText == "\u2212")
+                                               ni.NegativeSign = "-";
+                                       else
+                                               ni.NegativeSign = el.InnerText;                                 
+                               }
 
                                el = node.SelectSingleNode ("infinity");
 
index 3dfda20fa21b18e249a2f34a8b6ef0de1515d47a..32b3777d85aadfb0b62d5397ef7601106cff3d0e 100644 (file)
@@ -44,6 +44,10 @@ read_entry (FILE *in, void **data)
        case SGEN_PROTOCOL_CEMENT: size = sizeof (SGenProtocolCement); break;
        case SGEN_PROTOCOL_CEMENT_RESET: size = 0; break;
        case SGEN_PROTOCOL_DISLINK_UPDATE: size = sizeof (SGenProtocolDislinkUpdate); break;
+       case SGEN_PROTOCOL_DISLINK_UPDATE_STAGED: size = sizeof (SGenProtocolDislinkUpdateStaged); break;
+       case SGEN_PROTOCOL_DISLINK_PROCESS_STAGED: size = sizeof (SGenProtocolDislinkProcessStaged); break;
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN: size = sizeof (SGenProtocolDomainUnload); break;
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_END: size = sizeof (SGenProtocolDomainUnload); break;
        default: assert (0);
        }
 
@@ -185,13 +189,37 @@ print_entry (int type, void *data)
        }
        case SGEN_PROTOCOL_DISLINK_UPDATE: {
                SGenProtocolDislinkUpdate *entry = data;
-               printf ("dislink_update link %p obj %p", entry->link, entry->obj);
+               printf ("dislink_update link %p obj %p staged %d", entry->link, entry->obj, entry->staged);
                if (entry->obj)
                        printf (" track %d\n", entry->track);
                else
                        printf ("\n");
                break;
        }
+       case SGEN_PROTOCOL_DISLINK_UPDATE_STAGED: {
+               SGenProtocolDislinkUpdateStaged *entry = data;
+               printf ("dislink_update_staged link %p obj %p index %d", entry->link, entry->obj, entry->index);
+               if (entry->obj)
+                       printf (" track %d\n", entry->track);
+               else
+                       printf ("\n");
+               break;
+       }
+       case SGEN_PROTOCOL_DISLINK_PROCESS_STAGED: {
+               SGenProtocolDislinkProcessStaged *entry = data;
+               printf ("dislink_process_staged link %p obj %p index %d\n", entry->link, entry->obj, entry->index);
+               break;
+       }
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN: {
+               SGenProtocolDomainUnload *entry = data;
+               printf ("dislink_unload_begin domain %p\n", entry->domain);
+               break;
+       }
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_END: {
+               SGenProtocolDomainUnload *entry = data;
+               printf ("dislink_unload_end domain %p\n", entry->domain);
+               break;
+       }
        default:
                assert (0);
        }
@@ -215,6 +243,8 @@ is_match (gpointer ptr, int type, void *data)
        case SGEN_PROTOCOL_THREAD_REGISTER:
        case SGEN_PROTOCOL_THREAD_UNREGISTER:
        case SGEN_PROTOCOL_CEMENT_RESET:
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_BEGIN:
+       case SGEN_PROTOCOL_DOMAIN_UNLOAD_END:
                return TRUE;
        case SGEN_PROTOCOL_ALLOC:
        case SGEN_PROTOCOL_ALLOC_PINNED:
@@ -280,11 +310,70 @@ is_match (gpointer ptr, int type, void *data)
                SGenProtocolDislinkUpdate *entry = data;
                return ptr == entry->obj || ptr == entry->link;
        }
+       case SGEN_PROTOCOL_DISLINK_UPDATE_STAGED: {
+               SGenProtocolDislinkUpdateStaged *entry = data;
+               return ptr == entry->obj || ptr == entry->link;
+       }
+       case SGEN_PROTOCOL_DISLINK_PROCESS_STAGED: {
+               SGenProtocolDislinkProcessStaged *entry = data;
+               return ptr == entry->obj || ptr == entry->link;
+       }
        default:
                assert (0);
        }
 }
 
+static gboolean
+is_vtable_match (gpointer ptr, int type, void *data)
+{
+       switch (type) {
+       case SGEN_PROTOCOL_ALLOC:
+       case SGEN_PROTOCOL_ALLOC_PINNED:
+       case SGEN_PROTOCOL_ALLOC_DEGRADED: {
+               SGenProtocolAlloc *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_COPY: {
+               SGenProtocolCopy *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_PIN: {
+               SGenProtocolPin *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_SCAN_BEGIN: {
+               SGenProtocolScanBegin *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_WBARRIER: {
+               SGenProtocolWBarrier *entry = data;
+               return ptr == entry->value_vtable;
+       }
+       case SGEN_PROTOCOL_GLOBAL_REMSET: {
+               SGenProtocolGlobalRemset *entry = data;
+               return ptr == entry->value_vtable;
+       }
+       case SGEN_PROTOCOL_PTR_UPDATE: {
+               SGenProtocolPtrUpdate *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_CLEANUP: {
+               SGenProtocolCleanup *entry = data;
+               return ptr == entry->vtable;
+       }
+       case SGEN_PROTOCOL_MISSING_REMSET: {
+               SGenProtocolMissingRemset *entry = data;
+               return ptr == entry->obj_vtable || ptr == entry->value_vtable;
+       }
+       case SGEN_PROTOCOL_CEMENT: {
+               SGenProtocolCement *entry = data;
+               return ptr == entry->vtable;
+       }
+       default:
+               return FALSE;
+       }
+}
+
 static gboolean dump_all = FALSE;
 
 int
@@ -294,13 +383,19 @@ main (int argc, char *argv[])
        void *data;
        int num_args = argc - 1;
        int num_nums = 0;
+       int num_vtables = 0;
        int i;
        long nums [num_args];
+       long vtables [num_args];
 
        for (i = 0; i < num_args; ++i) {
                char *arg = argv [i + 1];
+               char *next_arg = argv [i + 2];
                if (!strcmp (arg, "--all")) {
                        dump_all = TRUE;
+               } else if (!strcmp (arg, "-v") || !strcmp (arg, "--vtable")) {
+                       vtables [num_vtables++] = strtoul (next_arg, NULL, 16);
+                       ++i;
                } else {
                        nums [num_nums++] = strtoul (arg, NULL, 16);
                }
@@ -314,6 +409,14 @@ main (int argc, char *argv[])
                                break;
                        }
                }
+               if (!match) {
+                       for (i = 0; i < num_vtables; ++i) {
+                               if (is_vtable_match ((gpointer) vtables [i], type, data)) {
+                                       match = TRUE;
+                                       break;
+                               }
+                       }
+               }
                if (dump_all)
                        printf (match ? "* " : "  ");
                if (match || dump_all)
index dd3d69b0a55858120ef2161c6dda449d45a25143..834bbe7bfae22c1dc8d974154daecdadff1fec7b 100644 (file)
 /* Define to 1 if you have the <curses.h> header file. */
 /* #undef HAVE_CURSES_H */
 
+/* Define to 1 if you have the declaration of `InterlockedCompareExchange64',
+   and to 0 if you don't. */
+#define HAVE_DECL_INTERLOCKEDCOMPAREEXCHANGE64 1
+
 /* Define to 1 if you have the <dirent.h> header file. */
 /* #define HAVE_DIRENT_H 1 */